Skip to content

Latest commit

 

History

History
38 lines (32 loc) · 744 Bytes

README.md

File metadata and controls

38 lines (32 loc) · 744 Bytes

Small-lang

A minimal compiler using the mlsub type system

Features

Record types

let record = { field: 1 }
in record.field

Enum types

let enum = [some: 1]
in match enum with [
  some: val => val,
  none => 0,
]

Recursive functions

let cmp = import "cmp" in
let math = import "math" in

let rec fibonacci = func n =>
  if cmp.eq n 0 then 0
  else if cmp.eq n 1 then 1
  else math.add
    (fibonacci (math.sub n 1))
    (fibonacci (math.sub n 2))
in fibonacci 14