packages feed

egison-1.0: etc/lib/number.egi

(define $Integer
  (type
    {[$var-match (lambda [$tgt] {tgt})]
     [$equal? (lambda [$val $tgt] (= val tgt))]}))

(define $Double
  (type
    {[$var-match (lambda [$tgt] {tgt})]
     [$equal? (lambda [$val $tgt] (=f val tgt))]}))

(define $Nat
  (type
    {[$var-match (lambda [$tgt] {tgt})]
     [$inductive-match
      (destructor
        {[o []
          {[0 {[]}]
           [_ {}]}]
         [s [Nat]
          {[$tgt (match (compare-integer tgt 0) Order
                   {[<greater> {(- tgt 1)}]
                    [_ {}]})]}]})]
     [$equal? (lambda [$val $tgt] (= val tgt))]}))