quiltro.org

Growl

Growl is an experimental, statically-typed, stack-based concatenative programming language influenced by Kitten and Factor, written in OCaml.

It is my current vehicle of research on typing concatenative languages, with a type inference algorithm greatly inspired by Lionel Parreaux’s SimpleSub.

$ cat factorial.grr
def ifte { choose call }

def fact {
  dup 2 < [drop 1] [dup 1 - fact *] ifte
}

$ dune exec -- growl check factorial.grr
ifte :: `(..r, bool, (..r -> ..s), (..r -> ..s) -> ..s)`
fact :: `(..r, int -> ..r, int)`

Growl is being actively worked on, you can find the source code in Codeberg.