lortabac / ariel

A simple, purely-functional programming language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

We are such stuff as dreams are made on, and our little life is rounded with a sleep. - William Shakespeare

Ariel

A simple purely-functional programming language, mainly for educational purposes.

Features

These features are under development right now:

  • Strict (call-by-value) evaluation.

  • Purity through "monadic" IO.

  • Full type inference.

  • Polymorphism over both record fields and constructors.

  • Implicit parameters.

  • Pretty-printable core language (with the same syntax as the surface language) for easy inspection.

  • A rich REPL environment with runtime tracing and debugging facilities.

Wishlist

These features will be added sometime in the future:

  • Built-in structural polymorphism (like Haskell's Generic).

  • Native compilation via Scheme.

  • JavaScript backend.

Implementation

The evaluator uses nameless environments, similarly to the LETREC interpreter described in Friedman, Wand. 2008. Essentials of Programming Languages, MIT Press.

The type-checker is based on Peyton Jones, Vytiniotis, Weirich, Shields. 2007. Practical type inference for arbitrary-rank types, adapted to a query-based approach, as described in https://ollef.github.io/blog/posts/query-based-compilers.html.

Status

The project is still in a very early phase.

About

A simple, purely-functional programming language

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Haskell 100.0%