A Scheme-like language with a form of Hindley-Milner-Damas Type Inference
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.


HMD Scheme


A little Scheme implementation (for certain definitions of 'Scheme') using a form of Hindley-Milner-Damas type inference. Right now evalS kind of works, and it passes some type checking tests. I will be further expanding this and supply a live web demo whenever I have time. Also hopefully I'll start writing some sort of a compiler for this in Haskell at some point.


This takes a lot of influence/code-adaptation from:

Currently Supports

  • Type infers non-polymorphic algebraic data types (poly's to add).
  • Type infers def/defn/lambdas.
  • Type infers atoms.
  • Type infers function application.
  • Type infers let and let* (thinking about removing let and just making let* let).
  • Type infers non-polymorphic lists (polymorphic lists are illegal).


  • Add better errors.
  • Add polymorphic algebraic data types.
  • Add pattern matching.
  • Add type annotations.
  • Fix up the web demo.