A statically and implicitly typed functional programming language.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc
examples
src
.gitignore
CMakeLists.txt
LICENSE
README.md

README.md

darlang

Documentation Status

darlang is a functional, statically typed language that compiles to LLVM IR.

This project exists as a playground to experiment with complex type systems. The current implementation is quite rough around the edges, and lacks critical primitives that are required to construct meaningful software. In lieu of these, however, are elegant typing semantics with a fun syntax.

# A simple implementation of the euclidean algorithm.
euclid(a, b) -> {
    is(b, 0) : a;
           * : euclid(b, mod(a, b));
}

Interesting features

  • Type inference (module-level)
  • Implicit parameter polymorphism (generics)
  • Static typechecking
  • Algebraic types (e.g. disjoint unions, product types)
  • Structural typing
  • Recursive typing

Examples

See the examples folder.