Lambda Discipline

Examples

Lazy evaluation

tests/golden/programs/lazy_evaluation.lbd

-- Arguments are only evaluated when needed.
divide : Number -> Number -> Number = \a. \b.
    (if (eq b 0) (error "division by zero") (div a b))

safeDivide : Number -> Number -> Number = \dividend. \divisor.
    (if (eq divisor 0) 0 (divide dividend divisor))

const : a -> b -> a = \x. \unused. x

(println (safeDivide 10 0))
(println (safeDivide 10 2))
(println (const 1 (divide 1 0)))

Output

0
5
1

Run it yourself from the repository root: lbd run tests/golden/programs/lazy_evaluation.lbd