fungi-lang 0.1.62

Fungi: A typed, functional language for programs that name their cached dependency graphs
Documentation
# <img src="http://adapton.org/fungi-lang-logo/Fungi-lang-logo-64.png" alt="Logo" style="width: 64px;"/> Fungi: Typed incremental computation with names [![Travis]https://api.travis-ci.org/Adapton/fungi-lang.rust.svg?branch=master]https://travis-ci.org/Adapton/fungi-lang.rust

Fungi is a Rust-based DSL that offers a **_typed functional language_ for _incremental computation with names_**.

## [Example programs in Fungi]https://docs.rs/fungi-lang/0/fungi_lang/examples/index.html

## Fungi Developer Resources:
 - Rust Implementation of Fungi:
    - [Documentation]https://docs.rs/fungi-lang  
    - [Crate website]https://crates.io/crates/fungi-lang  
 - [Visualization tools for Fungi programs]https://github.com/Adapton/fungi-vis  

# Background

(See also: [Fungi technical report](https://arxiv.org/abs/1808.07826))

**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]http://adapton.org provides the semantic foundation for Fungi's approach to incremental computation.  
 - [IODyn]https://github.com/cuplv/iodyn-lang.rust is an implicitly-incremental language, targetting Fungi via a type-directed translation