squiggle/packages/squiggle-lang
2022-04-28 10:17:29 -04:00
..
__tests__ Fixed tests 2022-04-28 08:14:07 -04:00
benchmark Fix inv tests always checking 0 2022-04-26 18:59:27 -04:00
src Restructuring of E Sorted 2022-04-28 10:17:29 -04:00
.gitignore factored into TestHelpers.ts file 2022-04-19 23:42:24 -04:00
.npmignore hotfix: codecov stuff in .npmignore 2022-04-25 16:11:11 -04:00
.prettierignore Fixed the linting of reducer files 2022-04-23 12:25:33 -04:00
bsconfig.json Removed bs-json as a dependency 2022-04-22 10:23:27 -04:00
jest.config.js Ensure xyShape is ordered by x coordinates when multiplying by negatives 2022-04-25 11:44:50 -04:00
lint.sh fixed or bailed from failing tests; added typescript code coverage to codecov 2022-04-19 22:58:09 -04:00
package.json Merge develop into loss-testing 2022-04-27 15:25:26 +00:00
README.md Run prettier in squiggle-lang 2022-04-11 10:51:43 +10:00
tsconfig.json Colors for loss testing 2022-04-26 16:38:17 -04:00
webpack.config.js Run prettier in squiggle-lang 2022-04-11 10:51:43 +10:00

Squiggle language

Build for development

We assume that you ran yarn at the monorepo level.

yarn build

yarn bundle is needed for a deployment.

Other:

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, 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 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.mds, building this package is an essential step of building other packages.