the ivy programming language v0.2 · work in progress

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.

tree.ivy
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);