fungi-lang 0.1.10

Fungi: A typed, functional language for programs that name their cached dependency graphs
Documentation

Fungi: A typed functional language for programs that name their own cached dependency graphs Travis

Fungi computes incrementally

Incremental computing consists of successively re-computing related outputs from related inputs.

Fungi provides a pair of related, complementary sub-languages for expressing the interactions of incremental computations, which it organizes into a pair of complementary computation roles:

  1. A functional language for the Archivist role, and
  2. An imperative language for the Editor role.

The archivist role computes incremental output from input on demand, and the editor role incrementally mutates this input over time, and may also change demand for output in the process (e.g., placing or removing focus on different outputs).

Fungi programs name their (incremental) data and subcomputations

The semantics of Fungi programs are effectful, as they allocate programmer-named values and computations, and read these objects from memory later. However, due to the Fungi type and effect system for names, the behavior of Fungi archivists is functional: the key invariant of its type-and-effects system.

In particular, Fungi provides language affordances for

Fungi is a core calculus, and target language

Fungi programs are demand-driven incremental computations, following the core calculi and run-time semantics of Adapton. Unlike prior Adapton-related projects, Fungi provides affordances, in the form of a type system, for reasoning about names statically.

Fungi serves as the target language for IODyn. Unlike IODyn, the incremental features of Fungi are explicit.

Status:

  • We have implemented the AST structure.
  • We have implemented big-step evaluation.
  • Currently, we implementing a bidirectional type system, and eventually, the refinement types and associated decision procedures.
    • For technical background and formal definitions, see the latest draft of the technical report.
    • We are presently implementing these formalisms; the deductive proof rules for index equivalence and apartness do not indicate an obvious algorithm, or obvious encoding into SMT. Creating these decision procedures is a key research challenge.

Resources:

Other links: