TTyped

From Esolang
Jump to navigation Jump to search

TTyped is a simple typed language, consisting of only function definitions. It is loosely based on System F. It consists entirely of a series of function definitions. Each definition has the general form of

name args : type = expr ;

Notes

  • Every symbol in a function type is assumed to be polymorphic.
  • All functions are curried.
  • -> and →, are both parsed the same.

Examples

id x : a -> a = x ;

const x y : a -> b -> a = x ;

one f x : (a -> a) -> a -> a = f x ;

add m n f x : ((a -> a) -> a -> a)
           -> ((a -> a) -> a -> a)
           -> (a -> a) -> a -> a
  = m f (n f x)

EBNF

fundec = sym , {sym} , ":" , type , "=" , expr , ";" ;

expr = expr' , { expr' } ;

expr' = sym
      | "(" , expr , ")" ;

type = type' , { "->" , type' } ;

type' = sym
      | "(" , type , ")" ;

sym = alpha , {alpha | digit} ;

External resources