A categorical programming language
Name | Size | Rev. | Time | Author | Log Message |
---|---|---|---|---|---|
![]() |
|||||
![]() |
|||||
![]() |
|||||
![]() |
|||||
![]() |
|||||
![]() |
184 | 1822f7c | 2022-11-28 00:09:51 | Corbin | Get back up and running. Hooray for ... |
![]() |
807 | 38556f6 | 2022-09-11 09:52:35 | Corbin | Kind of switch to a JSON hive. |
![]() |
16 | fa785ac | 2022-07-13 00:40:27 | Corbin | Display trails in the REPL when avail... |
![]() |
33.71 k | fa785ac | 2022-07-13 00:40:27 | Corbin | Display trails in the REPL when avail... |
![]() |
1.13 k | fa785ac | 2022-07-13 00:40:27 | Corbin | Display trails in the REPL when avail... |
![]() |
940 | fa785ac | 2022-07-13 00:40:27 | Corbin | Display trails in the REPL when avail... |
![]() |
253 | fa785ac | 2022-07-13 00:40:27 | Corbin | Display trails in the REPL when avail... |
![]() |
5.46 k | fa785ac | 2022-07-13 00:40:27 | Corbin | Display trails in the REPL when avail... |
![]() |
785 | dee936e | 2023-01-30 12:54:38 | Corbin | Make jelly acceptance jelly-specific. |
![]() |
105.65 k | e30409a | 2022-12-27 08:22:20 | Corbin | Compile (pr zero succ) to WASM relati... |
![]() |
535 | fa785ac | 2022-07-13 00:40:27 | Corbin | Display trails in the REPL when avail... |
![]() |
656 | fa785ac | 2022-07-13 00:40:27 | Corbin | Display trails in the REPL when avail... |
![]() |
680 | 83402fc | 2022-09-12 01:49:26 | Corbin | Check in a bunch of random files that... |
![]() |
1.48 k | d901c37 | 2022-12-27 13:43:18 | Corbin | Friendship ended with OCaml, miniKanr... |
![]() |
1.01 k | 83402fc | 2022-09-12 01:49:26 | Corbin | Check in a bunch of random files that... |
![]() |
156 | fa785ac | 2022-07-13 00:40:27 | Corbin | Display trails in the REPL when avail... |
![]() |
15.83 k | 0f322ce | 2023-01-28 14:30:24 | Corbin | Search backwards through eval° and ca... |
![]() |
205 | bf529a6 | 2022-12-17 03:08:25 | Corbin | Diagram how the tools interact. |
![]() |
122 | caae86f | 2022-09-19 02:41:02 | Corbin | Honey can evaluate nat/256 in the bro... |
# Jelly The jelly optimizer is a Cammy-to-Cammy optimizer which uses e-graphs to search for the smallest equivalent expression. The rule engine is from the `egg` library. The rules are written in a DSL embedded in Rust, along with comments explaining their provenance and correctness. To update Cargo dependencies for jelly: $ nix-shell -p crate2nix cargo $ cd jelly/ $ cargo metadata $ crate2nix generate # Movelist The movelist is a relational typechecker written in CHICKEN Scheme's dialect of miniKanren. It can typecheck a Cammy expression, or take a type representation and synthesize Cammy expressions with the given type. To update eggs for movelist: $ egg2nix movelist/eggs.scm > movelist/eggs.nix # Shell Environment The environment for developing the Cammy toolchain is contained within `shell.nix`. To update eggs for the shell environment: $ egg2nix eggs.scm > eggs.nix # Compiling to Categories The second argument to cammy-frame applies a list of functors. Each functor corresponds to a path in the hive; functor `foo` corresponds to `cats/foo/`. The list is comma-separated and applied left-to-right.