Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/omentic/mechanicals
Various implementations of the lambda calculus and friends
https://github.com/omentic/mechanicals
bidirectional-typechecking lambda-calculus
Last synced: 5 days ago
JSON representation
Various implementations of the lambda calculus and friends
- Host: GitHub
- URL: https://github.com/omentic/mechanicals
- Owner: omentic
- License: 0bsd
- Created: 2024-05-15T01:33:05.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-10-24T01:10:09.000Z (15 days ago)
- Last Synced: 2024-10-24T16:16:05.024Z (14 days ago)
- Topics: bidirectional-typechecking, lambda-calculus
- Language: Racket
- Homepage:
- Size: 161 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# the mechanicals
Various implementations of the lambda calculus (and friends).
The code here is hopefully pretty readable: but makes heavy use of quasiquoting, and contracts. \
For an introduction to quasiquoting, see [*Explaining Lisp's quoting without getting tangled*](quasiquoting). For an introduction to contracts, see [*Simple contracts on functions*](https://docs.racket-lang.org/guide/contract-func.html).* untyped
* [ ] lc.rkt: The untyped lambda calculus.
* [ ] ski.rkt: The SKI combinator calculus.
* [ ] iota.rkt, jot.rkt, zot.rkt: Implementations of Chris Barker's combinator languages.
* [ ] aviary.rkt: Various combinators and constructions of equivalence.
* simple
* [x] stlc.rkt: The simply-typed lambda calculus.
* [x] ext.rkt: Simple extensions. Sums, products, lists, ascryptions.
* [x] fix.rkt: General recursion.
* [x] rec.rkt: Iso-recursive types.
* [x] ref.rkt: References. No garbage collection. Nonterminating.
* research
* [x] hor.rkt: Higher-order im/predicative references. Terminating.
* [x] dll.rkt: Doubly-linked lists via sums, products, ascryption, recursive types, and impredicative references. Terminating?
* [x] levels.rkt: Higher-order im/predicative references with an algebraic level system. Terminating?[quasiquoting]: https://cadence.moe/blog/2022-10-17-explaining-lisp-quoting-without-getting-tangled