julmue / poly

Hindley-Milner type system with extensible records and variants, implemented in Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

package poly

import "github.com/wdamron/poly"

poly provides inference for a polymorphic type-system with extensible records and variants.

The type-system is an extension of Hindley-Milner based on Daan Leijen's paper: Extensible Records with Scoped Labels (Microsoft Research).

The core of the implementation is based on an OCaml library by Tom Primozic.

Supported Features

  • Extensible records and variants with scoped labels
  • Generic type classes, constructor classes, and parametric overloading
  • Limited/explicit (type class) subtyping with multiple inheritance
  • Mutually-recursive (generic) function expressions within grouped let bindings
  • Mutually-recursive (generic) data types
  • Transparently aliased (generic) types
  • Control-flow graph expressions
  • Mutable references with the value restriction
  • Size-bound type variables

More Info

About

Hindley-Milner type system with extensible records and variants, implemented in Go

License:MIT License


Languages

Language:Go 100.0%