;;;;; ;;;;; ;;;;; Number Library ;;;;; ;;;;; ;;; ;;; Integers ;;; (define $integer buildin-data-matcher) (define $min (lambda [$ns] (match ns (list integer) {[> n] [ (let {[$r (min rs)]} (match (compare n r) ordering {[ n] [_ r]}))]}))) (define $max (lambda [$ns] (match ns (list integer) {[> n] [ (let {[$r (max rs)]} (match (compare n r) ordering {[ n] [_ r]}))]}))) (define $min-and-max (lambda [$ns] (match ns (list integer) {[> [n n]] [ (let {[[$min-n $max-n] (min-and-max rs)]} (match (compare n min-n) ordering {[ [n max-n]] [_ (match (compare n max-n) ordering {[ [min-n n]] [_ [min-n max-n]]})]}))]}))) (define $power (lambda [$x $n] (foldl * 1 (take n (repeat1 x))))) (define $mod (lambda [$m] (matcher {[,$n [] {[$tgt (if (eq? (modulo tgt m) (modulo n m)) {[]} {})]}] [$ [something] {[$tgt {tgt}]}] }))) (define $even? (lambda [$n] (eq? 0 (modulo n 2)))) (define $odd? (lambda [$n] (eq? 1 (modulo n 2)))) (define $between? (lambda [$m $n $x] (and (lte? m x) (lte? x n)))) ;; ;; Float Numbers ;; (define $float buildin-data-matcher)