Skip to content
Fungi: Typed incremental computation with names
Branch: master
Clone or download
Matthew Hammer Matthew Hammer
Matthew Hammer and Matthew Hammer bump
Latest commit 3e9a5a1 Oct 21, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src concrete syntax for run-time values Oct 21, 2018
tests in verbose reduce output, print 'seams' between adapton::engine and f… Aug 3, 2018
.gitignore Rust documentation, of Fungi syntax Feb 10, 2018
.travis.yml travis stuff, slack integration Jan 27, 2018
Cargo.toml bump Oct 21, 2018
LICENSE Initial commit Sep 27, 2017
README.md Update README.md Sep 1, 2018
travis.sh polished db output Jul 29, 2018

README.md

Logo Fungi: Typed incremental computation with names Travis

Fungi is a Rust-based DSL that offers a typed functional language for incremental computation with names.

Example programs in Fungi

Fungi Developer Resources:

Background

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

Related Projects:

  • Adapton provides the semantic foundation for Fungi's approach to incremental computation.
  • IODyn is an implicitly-incremental language, targetting Fungi via a type-directed translation
You can’t perform that action at this time.