Giter VIP home page Giter VIP logo

lambdaf's Introduction

Experiments with modularisation of lambda calculus interpreter using datatypes à la carte.

Parts

  • Expr.hs – bare lambda calculus
  • Prim/Base.hs – base primitives and values (unit, pair, double)
  • Prim/Kappa.hs – primitives and values for kappa calculus residual program of a two-level language
  • Prim/Record.hs – support of records (create, extend, select)
  • Prim/Variant.hs – support of variants (create, eliminate)
  • Prim/IO.hs – support of IO (read line from stdin, write line to stdout)
  • Prim/Exception.hs – support of exceptions (raise, catch)
  • Prim/Link.hs – support of dynamic loading of expressions from other files, typechecking them and running in the same runtime context as the parent program runs

Checklist

  • [X] Modularised evaluation, typechecking, side-effecting, and pretty-printing aspects of sublanguages
  • [X] Add variant construction and elimination (case expressions)
  • [X] Make exceptions use variants
  • [X] Type system with higher-rank polymorphism and bidirectional type-checker
  • [ ] Add Koka-style extensible effects to bidirectional type-checker
  • [ ] Add isorecursive types (μ-types)
  • [ ] Add paramorphisms (== primitive recursion) for elimination of μ-types
  • [ ] Add type variable constraints; needed for overloaded literals and operations on numbers
  • [ ] Add lists and on-the-fly μ-type/paramorphisms machinery for elimination
  • [ ] Use subsumption checking and coercion for dynamically loaded expressions
  • [ ] Add vector type and vector sublanguage (and the Nat kind?)
  • [ ] Patterns and pattern-matching

lambdaf's People

Contributors

esmolanka avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.