| Crates.io | fungi-lang |
| lib.rs | fungi-lang |
| version | 0.1.63 |
| created_at | 2018-02-10 15:44:52.958621+00 |
| updated_at | 2018-10-21 17:05:40.868797+00 |
| description | Fungi: A typed, functional language for programs that name their cached dependency graphs |
| homepage | http://adapton.org |
| repository | https://github.com/Adapton/fungi-lang.rust/ |
| max_upload_size | |
| id | 50546 |
| size | 739,160 |
Fungi: Typed incremental computation with names Fungi is a Rust-based DSL that offers a typed functional language for incremental computation with names.
(See also: Fungi technical report)
Fungi is a typed functional language for incremental computation with names.
Incremental computations attempt to exploit input similarities over time, reusing work that is unaffected by input changes. To maximize this reuse in a general-purpose programming setting, programmers need a mechanism to identify dynamic allocations (of data and subcomputations) that correspond over time. Fungi offers a notion of names, which is formal, general, and statically verifiable.
Fungi's type-and-effect system permits the programmer to encode (program-specific) local invariants about names, and to use these invariants to establish global uniqueness for their composed programs, the property of using names correctly. We prove (on paper) that well-typed Fungi programs respect global uniqueness. We implement Fungi in Rust, as a "deeply-embedded" language, including Fungi's bidirectional type system and incremental evaluation semantics.