e6464dbe5c
commit 94803421acd2e5cb3a0f88e10f9244d374fab20b Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 08:48:33 2022 +0200 note on old habbits commit 2c47f80fce8fa6c12cb53b97f7150758eaa74b88 Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 08:18:16 2022 +0200 getTag returns enum value commit 733b9a820f1d01b618708896451a112d638ee811 Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 07:07:30 2022 +0200 result commit 64698f4a930182b3ccf122849824e4b6df251a9f Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 06:48:30 2022 +0200 return tags as ts enum commit 8ac802428a7aaac5367f5e8a9aaa592b89e305eb Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 06:16:26 2022 +0200 export tags commit 6c843e475a98ca1fcfa893d09d45ac9ad7c633ee Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 06:11:00 2022 +0200 distribution tag commit 9a43ec30fcaf967a672475431243949748d00bc7 Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 05:46:24 2022 +0200 opaque result commit f89bdd47c41135135baac99b18faf1c418cc4142 Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 05:24:18 2022 +0200 make ts compilable commit 6609bb3691b08405639e6f20da0fad309f2f232e Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 05:21:34 2022 +0200 compiles commit bace3eca63079de8f285069c65b219601e7310bf Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 04:33:34 2022 +0200 rescript compiles commit cd095f605c543902edec08fdcd407600296ec0cb Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 02:40:31 2022 +0200 squiggleValue commit 9b78b5d6c8b69287458fe392f142ceb3bca99407 Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 02:37:11 2022 +0200 project commit 20c8693b1eb6492f1662bedbb26b469aac11f8ff Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 00:59:44 2022 +0200 compiles |
||
---|---|---|
.. | ||
__tests__ | ||
benchmark | ||
src | ||
.gitignore | ||
.npmignore | ||
.prettierignore | ||
bsconfig.json | ||
jest.config.js | ||
lint.sh | ||
package.json | ||
README.md | ||
tsconfig.json | ||
webpack.config.js |
Squiggle language
An estimation language
Use the npm
package
For instance, in a javascript project, you can
yarn add @quri/squiggle-lang
The @quri/squiggle-lang
package exports a single function, run
, which given
a string of Squiggle code, will execute the code and return any exports and the
environment created from the squiggle code.
import { run } from "@quri/squiggle-lang";
run(
"normal(0, 1) * SampleSet.fromList([-3, 2,-1,1,2,3,3,3,4,9])"
).value.value.toSparkline().value;
However, for most use cases you'll prefer to use our library of react components, and let your app transitively depend on @quri/squiggle-lang
.
run
has two optional arguments. The first optional argument allows you to set
sampling settings for Squiggle when representing distributions. The second optional
argument allows you to pass an environment previously created by another run
call. Passing this environment will mean that all previously declared variables
in the previous environment will be made available.
The return type of run
is a bit complicated, and comes from auto generated js
code that comes from rescript. We highly recommend using typescript when using
this library to help navigate the return type.
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
# where o := open in osx and o := xdg-open in linux,
yarn coverage:rescript; o _coverage/index.html # produces coverage report and opens it in browser
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.
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.