• R/O
  • HTTP
  • SSH


No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#objective-cqt誰得cocoawindowspythonphprubygameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdombtronvb.netdirectxarduinopreviewerゲームエンジン

A categorical programming language

Recent Commits RSS

Rev. 时间 作者 Message
5452910 2022-07-25 06:28:24 Corbin master Damn you're fast.
fa785ac 2022-07-13 00:40:27 Corbin Display trails in the REPL when available.
57f5967 2022-07-12 09:35:51 Corbin Teach movelist about app, and improve jelly in tandem.
5fd12d1 2022-07-10 12:56:20 Corbin Specialize (uncurry id) to app.
b5514df 2022-07-03 23:20:13 Corbin Add the ability to display sequences, not just elements.
c7ccf92 2022-07-02 14:49:58 Corbin Implement the remainder function.
dbe659e 2022-07-02 12:06:13 Corbin Logarithms for floats.
f34cbf0 2022-06-26 12:00:46 Corbin Add another demo.
76b698c 2022-06-24 14:26:09 Corbin Implement left-shifting for bits.
714d4c0 2022-06-20 14:10:40 Corbin Let the viewport for drawings automatically scale.


名称 Rev. 时间 作者 Message
master 5452910 2022-07-25 06:28:24 Corbin Damn you're fast.


# 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

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.