squiggle/packages/squiggle-lang
Umur Ozkul db050668d1 parser
toFunction

additive multiplicative

compact

whitespace

pow

relational equality

boolean

whitespace separator

left associative operators

expression

not

identifier

function call

array constructor

string

indexed values

ident

priority

block

outerBlock

optional final expression

statement separator

outerBlock

innerBlock

better errors

note xor

white space and record

unary minus

inner/outer block

statement

lambda

sort

lambda is a value constructor

lambdaCall

ternary

ternary

basicValue

cleanup

quotes

chained Functions

dot operators

unify unary operators

unify unary operatos

notes

notes

notes

notes

parser

priorities set

white space or newline defined

allow newlines

notes

function call has become a post operator

recordElement

recursive index

postOperatorToFunction

better integer

comments

notes

record priority

comment

atom

finalComment

generated parser

type cast

format

initiate test file

test initiated; todo nodeCall; nodeExpression

callIdentifier

recover extra

initiate testing

initial tests pass

tests pass

remove function node

ternary

test parse passed

to

tests pass

notes

sort

toExpression

format

notes

remove unused modules

remove unnecessary nodeLambdaCall

notes

note

fix construct array

comment test

todo

elixir pipe

fix toString

notes

initial to expression test

value test

parsing records

records

comments

ternary

ifthenelse

inner block passed

inner block

lambda

lambda

new parser tested

now test tricks

ternary in expression

to test lambda as argument

to test lambda in structures

Use peggy Parser

expectEvalError

macros tested

remove mathjs parse

reducer test

comparison operator
2022-05-19 01:23:43 +02:00
..
__tests__ parser 2022-05-19 01:23:43 +02:00
benchmark Fix inv tests always checking 0 2022-04-26 18:59:27 -04:00
src parser 2022-05-19 01:23:43 +02:00
.gitignore factored into TestHelpers.ts file 2022-04-19 23:42:24 -04:00
.npmignore v0.2.6: packaging fixed 2022-04-28 15:20:58 -04:00
.prettierignore Fixed the linting of reducer files 2022-04-23 12:25:33 -04:00
bsconfig.json Removed rationale (#410) 2022-04-28 13:19:15 -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 parser 2022-05-19 01:23:43 +02:00
README.md v0.2.16: jsImports prop and incremented minimal squiggle-lang 2022-04-30 12:04:03 -04: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

npm version License: MIT

Squiggle language

An estimation language

Use the npm package

For instance, in a javascript project, you can

yarn add @quri/squiggle-lang
import { run } from "@quri/squiggle-lang";
run(
  "normal(0, 1) * fromSamples([-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.

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.mds, 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.