values s = [3,8,5,2,9,3,4,5,6,7,1]; functions filter[@a] : (@a -> bool) * seq of @a -> seq of @a filter(p,l) == cases l: [] -> [], [h]^t -> if p(h) then [h]^filter[@a](p,t) else filter[@a](p,t) end; lessSix: int -> bool lessSix(x) == (x < 6); prefixA: seq of char -> bool prefixA(x) == (hd x = 'a'); fmap[@a,@b] : (@a -> @b) * seq of @a -> seq of @b fmap(f,l) == cases l: [] -> [], [h]^t -> [f(h)]^fmap[@a,@b](f,t) end; dups: int -> int dups(x) == x * x; values -- Lambda-expressions Inc = lambda n:int & n+1; Mul = lambda n:nat & lambda m:nat & n+m;