Crates.io | fungi-lang |
lib.rs | fungi-lang |
version | 0.1.63 |
source | src |
created_at | 2018-02-10 15:44:52.958621 |
updated_at | 2018-10-21 17:05:40.868797 |
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 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.