Skip to content
/ poly Public

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

License

Notifications You must be signed in to change notification settings

wdamron/poly

Repository files navigation

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages