39 lines
2.4 KiB
Markdown
39 lines
2.4 KiB
Markdown
# Squiggle language
|
|
|
|
## Build for development
|
|
We assume that you ran `yarn` at the monorepo level.
|
|
``` sh
|
|
yarn build
|
|
```
|
|
|
|
`yarn bundle` is needed for a deployment.
|
|
|
|
Other:
|
|
``` sh
|
|
yarn start # listens to files and recompiles at every mutation
|
|
yarn test
|
|
yarn test:watch # keeps an active session and runs all tests at every mutation
|
|
|
|
# where o := open in osx and o := xdg-open in linux,
|
|
yarn coverage; o _coverage/index.html # produces coverage report and opens it in browser
|
|
```
|
|
|
|
## Information
|
|
Squiggle is a language for representing probability distributions, as well as functions that return probability distributions. Its original intended use is for improving epistemics around EA decisions.
|
|
|
|
This package, `@quri/squiggle-lang`, contains the core language of squiggle. The main feature revolves around evaluating squiggle expressions. Currently the package only exports a single function, named "run", which from a squiggle string returns an object representing the result of the evaluation.
|
|
|
|
If using this package for tests or as a dependency, typescript typings are available and recommended to be used.
|
|
|
|
This package is mainly written in [ReScript](https://rescript-lang.org/), but has a typescript interface.
|
|
|
|
ReScript has an interesting philosophy of not providing much in the way of effective build tools. Every ReScript file is compiled into `.bs.js` and `.gen.ts` files with the same name and same location, and then you can use these files in other `.js` files to create your program. To generate these files to build the package, you run `yarn build`.
|
|
|
|
`.gen.ts` files are created by the [`@genType`](https://rescript-lang.org/docs/gentype/latest/getting-started) decorator, which creates typescript typings for needed parts of the codebase so that they can be easily used in typescript. These .gen.ts files reference the .bs.js files generated by rescript.
|
|
|
|
### Errors regarding the `rationale` package
|
|
You may notice sometimes, that there are errors about the `rationale` package. If you ever get these errors, `yarn build` should fix this issue. These errors occur because `yarn build` also needs to create build files that are in `node_modules`. So if you replace `node_modules` you may need to rebuild to get those files back.
|
|
|
|
## Distributing this package or using this package from other monorepo packages
|
|
As it says in the other `packages/*/README.md`s, building this package is an essential step of building other packages.
|