(define $fib (lambda [$n] (match n Nat {[ 1] [> 1] [> (+ (fib (+ n1 1)) (fib n1))]}))) (test (fib 10)) (define $fact (lambda [$n] (match n Nat {[ 1] [ (* n (fact n1))]}))) (test (fact 10)) (define $min (lambda [$ns] (match ns (List Int) {[> n] [ (let {[$r (min Rs)]} (match (compare-number n r) Order {[ n] [_ r]}))]}))) (define $gcd (lambda [$ns] (let {[$ns2 ((remove-all Int) ns 0)]} (match ns2 (Set Int) {[> n] [ (gcd {n @(map (lambda [$r] (mod r n)) rs)})]}))))