<commit_before>NOTE: THIS REPO IS PRIVATE BUT HAS PUBLIC CONTRIBUTORS!
=======================================================

-----

Reason: Meta Language Utility
=========================================

- Approachable ES6 style syntax.
- Powerful, automatic source code formatting.
- Adopt Incrementally with straightforward `JavaScript/C` interop.
- Bare metal compilation - *No Virtual Machine*.
- Type inference, pattern matching, immutable by default.

Install/Build
----------
```sh
brew install opam --HEAD
opam init
# Add this to your ~/.bashrc (or ~/.zshrc):
#   eval `opam config env`

opam switch 4.02.1
opam install utop
opam pin add -y BetterErrors <EMAIL>:chenglou/ocaml-better-errors.git
opam pin add -y reason git<EMAIL>:facebook/Reason.git
```

Get Started Now
---------------
Download the up-to-date [docs](https://github.com/facebook/Reason/archive/docs.zip) which guide you through the basic syntax and toolchain features.

Contribute back to that documentation in the [`docs` branch](https://github.com/facebook/Reason/tree/docs).



Integrating with Existing Languages.
------------------------

 **`JavaScript` and `CommonJS`**:

Comming Soon.


**`clang`/`ocamlc`/`ocamlopt`**:

Though the easiest way to use `Reason` with `ocamlc/opt` is by running the compiler with the following flags:
```sh
# intf-suffix tells the compiler where to look for corresponding interface files
ocamlopt -pp refmt -intf-suffix rei -impl myFile.re<commit_msg>clarify readme bleeding edge vs. stable.<commit_after>NOTE: THIS REPO IS PRIVATE BUT HAS PUBLIC CONTRIBUTORS!
=======================================================

-----

Reason: Meta Language Utility
=========================================

- Approachable ES6 style syntax.
- Powerful, automatic source code formatting.
- Adopt Incrementally with straightforward `JavaScript/C` interop.
- Bare metal compilation - *No Virtual Machine*.
- Type inference, pattern matching, immutable by default.

Install Stable
----------

> Stable: Not as many features

```sh
brew install opam --HEAD
opam init
# Add this to your ~/.bashrc (or ~/.zshrc):
#   eval `opam config env`

opam switch 4.02.3
opam pin add -y reason git@github.<EMAIL>:facebook/Reason.git#cf964becc9969ce16175fcdea52e0c95cc8b2056
opam pin add -y merlin git<EMAIL>:the-lambda-church/merlin.git#7f2f29ba85e07c9d0367456649e626d6ea6d037d

```

Install Bleeding Edge
----------
> Bleeding Edge: (More features, probably some bugs)

```sh
# Remove your previous pins from above
opam pin remove merlin
opam pin remove merlin_extend
opam pin remove reason
# Pin bleeding edge packages
opam pin add -y merlin git@github.com:the-lambda-church/merlin.git#df48da122f02e2276b14bcab58490350749215fa
opam pin add -y merlin_extend git@github.com:def-lkb/merlin-extend.git#ef634252a793542b05ec00a90f3c17de8fe0a357
opam pin add -y reason git@github.<EMAIL>:facebook/reason.git#a3c919738fbb0ff227b3c9f205b44957b003f744

```

Get Started Now
---------------
Download the up-to-date [docs](https://github.com/facebook/Reason/archive/docs.zip) which guide you through the basic syntax and toolchain features.

Contribute back to that documentation in the [`docs` branch](https://github.com/facebook/Reason/tree/docs).



Integrating with Existing Languages.
------------------------

 **`JavaScript` and `CommonJS`**:

Comming Soon.


**`clang`/`ocamlc`/`ocamlopt`**:

Though the easiest way to use `Reason` with `ocamlc/opt` is by running the compiler with the following flags:
```sh
# intf-suffix tells the compiler where to look for corresponding interface files
ocamlopt -pp refmt -intf-suffix rei -impl myFile.re
{'fraction_non_alphanumeric': 0.17231872070581747, 'fraction_numerical': 0.03832368348497381, 'mean_word_length': 4.227665706051873, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 10, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7160830', 'n_tokens_mistral': 1216, 'n_tokens_neox': 1079, 'n_words': 360}