• R/O
  • HTTP
  • SSH
  • HTTPS

Source Tree

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

A categorical programming language


名称 大小 Rev. 时间 作者 Log Message
bk
hive
jelly
movelist
sampler
schemata
wallpapers
.envrc 186 f47e44b 2023-04-25 13:48:29 Corbin Become a Nix flake. I had to use nix...
.gitignore 807 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
.ocamlformat 16 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
2to3.py 2.64 k 8b60dc0 2024-04-25 10:34:53 Corbin Get 2to3.py to build a v3 hive. I ha...
LICENSE 33.71 k 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
README.txt 1.51 k be70233 2023-03-24 19:03:47 Corbin Implement trees in REPL and typecheck...
bench.py 940 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
bench.sh 253 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
checklist.txt 5.46 k 530f14a 2024-03-12 06:21:52 Corbin Include zaha.
flake.lock 2.05 k 530f14a 2024-03-12 06:21:52 Corbin Include zaha.
flake.nix 2.77 k 3695ea1 2024-04-24 15:50:56 Corbin Start hacking up a proper migration f...
groom.sh 130 684744a 2023-03-19 11:50:58 Corbin Start a tool for updating hives.
hive.json 97.12 k 34b5bd0 2023-06-05 03:05:20 Corbin cammyo: Fix a typo.
make-demos.sh 535 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
make-kleisli-cat.sh 656 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
proof.txt 680 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
ski2cammy.py 1.01 k 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
start-repl.sh 156 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
todo.txt 22.54 k 3695ea1 2024-04-24 15:50:56 Corbin Start hacking up a proper migration f...
tools.dot 205 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....
update-jelly.sh 131 3b77fb5 2023-03-24 16:24:46 Corbin Update jelly and prepare for future j...
update-openapi.sh 122 3c16c3b 2023-01-10 09:15:42 Corbin Use a macro to simplify some append°....

README.txt

## Cammy

"[Cammy is] really not a good language for anything." ~ [Me](https://lobste.rs/s/ftqp21/whatever_happened_elm_anyway#c_8fnjr6)

# How to add new primitives/jets

* Jet definitions in jets.json
* New primitive arrows in prims.json
* CAM operations in cammylib/cam.py
* Parser/compiler to CAM in cammylib/arrows.py
* Typechecker in cammyo.scm
* Interpreters in cammyo.scm and cammy.scm
* Algebraic laws (optimizations, jet introduction) in jelly/src/main.rs

# 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:

    $ ./update-jelly.sh

# 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.