0.0.4 • Published 4 years ago

@calcit/pure-run v0.0.4

Weekly downloads
-
License
MIT
Repository
-
Last release
4 years ago

Toy interpreter

...on top of PureScript. It's using the compact.cirru from calcit-editor.

Highlights

  • trying to follow basic APIs from http://apis.calcit-lang.org/
  • to be different, operands in expression like map ([] 1 2 3) inc will be placed at first. Calcit does use curried functions, so maybe we should not follow Haskell.

Usages

yarn global add @calcit/pure-run

pure-run compact.cirru

Notice that compact.cirru is generated from calcit-editor. It could also be written manually by following the format. Find an example in example/compact.cirru.

Features:

  • some basic math, string, array.
  • tail recursion with recur.
  • some hygienic macros.

Bundler usages

With help of bundle command, you may write main.cirru just like:

ns demo.main
  :require
    demo.lib :as lib

defn main ()
  echo "|main file..."
  lib/f1
  echo lib/lib-x

with other files under src/:

=>> tree
.
├── bundled.cirru # <-- generated file like compact.cirru
└── src
    └── demo
        ├── lib.cirru
        └── main.cirru

then use the command to combine into a single snapshot:

pure-run-bundle --from src --to bundled.cirru

The CLI really dumb and it detects names by reading Cirru tree. Be careful to use it. And you may also need to fix init-fn in the configs field.

Development

Dependencies: PureScript, spago, nodejs, yarn.

In dev mode:

yarn r # to run spago to call Main function

yarn build # to build bundle into dist/index.js
./bin/command.js example/compact.cirru # run bundled script

spago test # test running

License

MIT