fungi-lang

Crates.iofungi-lang
lib.rsfungi-lang
version0.1.63
sourcesrc
created_at2018-02-10 15:44:52.958621
updated_at2018-10-21 17:05:40.868797
descriptionFungi: A typed, functional language for programs that name their cached dependency graphs
homepagehttp://adapton.org
repositoryhttps://github.com/Adapton/fungi-lang.rust/
max_upload_size
id50546
size739,160
Matthew Hammer (matthewhammer)

documentation

https://docs.rs/fungi-lang

README

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
Commit count: 826

cargo fmt