A categorical programming language
Rev. | Time | Author | Message |
---|---|---|---|
23bcde0 | 2023-02-02 14:41:01 | Corbin | master Debug FP multiplication somewhat. For some reason, groun... |
ec5a068 | 2023-02-02 13:32:51 | Corbin | Finish implementing FP. Does it work? Kind of! We can ev... |
65b06ab | 2023-01-30 16:33:19 | Corbin | Clean up imports, fix FP unifications. FP values are sti... |
6209f4c | 2023-01-30 15:50:21 | Corbin | More FP. Strangely, these relations don't want to run fo... |
bacf8c1 | 2023-01-30 15:03:37 | Corbin | Really start implementing FP. 1.0 becomes 4.0, which is ... |
dee936e | 2023-01-30 12:54:38 | Corbin | Make jelly acceptance jelly-specific. |
455bde1 | 2023-01-30 12:08:19 | Corbin | Factor eval° more; make n-pred-maybe reversible. I'm sta... |
b5d326f | 2023-01-30 11:08:39 | Corbin | Implement sums; start implementing floats. |
c8cc966 | 2023-01-29 14:08:36 | Corbin | Implement relational currying. I was worried about this,... |
0f322ce | 2023-01-28 14:30:24 | Corbin | Search backwards through eval° and cammy°. I figured it ... |
Name | Rev. | Time | Author | Message |
---|---|---|---|---|
master | 23bcde0 | 2023-02-02 14:41:01 | Corbin | Debug FP multiplication som... |
# 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.