ivy
Ivy is a statically typed functional programming language — friendly enough for beginners, robust enough for experienced programmers. built to be inspected, reasoned about, and trusted.
01 -- algebraic data types 02 type Tree<a> = 03 | Empty 04 | Node(a, Tree<a>, Tree<a>); 05 06 -- type inferred; no annotation required 07 fn map(f, Empty) => Empty; 08 fn map(f, Node(x, l, r)) => Node(f(x), map(f, l), map(f, r)); 09 10 let tree = Node(1, Node(2, Empty, Empty), Node(3, Empty, Empty)); 11 let squared = map(fn (x) => x * x, tree);