Skip to content

samanpa/babel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Babel is an exercise to understand expressive type systems. The goal is to build an expressive, call by value programming language which does not have a runtime system.

Design goals

  • Keep the language/compiler simple
  • Keep semantics clear
  • Be as UNORIGINAL as possible

Features

  • static typing
  • parametric polymorphism
  • type inference
  • value restriction
  • monomorphization
  • C based ABI
  • C interoperability
  • Records
  • constrained parametric polymorphism (type classes)
  • affine types
  • references
  • pattern matching
  • functors
  • metaprgramming

Unsupported

  • Mutually recursive functions that are not at the top level. In theory we can do dependency analysis o detect mutual recursion and then group the mutually recursive functions. Creating the groups can reorder side effects and so is not safe to do in an impure language.

Where I diverge from literature

  • Type constructors and expr applications have arity this is to allow uncurrying to work.

About

A simple impure language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages