Clone wiki

enamel / Home

(For help editing this wiki, see WikiHelp)


Enamel is (or rather, will be) a functional language with

  • streamlined ML-style modules a la F-ing Modules
  • Racket-style macros
  • Type-error slicing for precise error "messages"
  • Anonymous (i.e. first class) variant/record/recursive types a la SML#


  • 2012-10-22: ML-style modules are implemented here. Type-error slicing is implemented elsewhere. I intend to mix in the type-error slicing work after trying to add macros. The anonymous record/variant/recursive types stuff will come in later.


  • Stephanie Weirich, Brent A. Yorgey, Tim Sheard: Binders unbound. ICFP 2011: 333-345
  • Andreas Rossberg, Claudio V. Russo, Derek Dreyer. F-ing Modules. TLDI 2010: 89-102
  • Matthew Flatt. Composable and compilable macros: you want it when? ICFP 2002: 72-83
  • Atsushi Ohori. A polymorphic record calculus and its compilation. TOPLAS '95, 17(6):844–895, 1995.