egison-3.3.11: lib/core/math.egi
;;;;;
;;;;;
;;;;; Math
;;;;;
;;;;;
(define $fact
(lambda [$n]
(letrec {[$fact1 (lambda [$n $ret]
(match n integer
{[,0 ret]
[_ (fact1 (- n 1) (* n ret))]}))]}
(fact1 n 1))))
(define $perm
(lambda [$n $r]
(foldl * 1 (between (- n (- r 1)) n))))
(define $comb
(lambda [$n $r]
(/ (perm n r)
(fact r))))