packages feed

egison-3.8.0: sample/order.egi

(define $lexical-compare
  (lambda [$xs $ys]
    (match [xs ys] [(list ordering) (list ordering)]
      {[[<nil> <nil>] <Equal>]
       [[<nil> _] <Less>]
       [[_ <nil>] <Greater>]
       [[<cons $x $xs'> <cons ,x $ys'>] (lexical-compare xs' ys')]
       [[<cons $x _> <cons $y _>] (compare x y)]})))


(define $lexical-compare
  (lambda [$xs $ys]
    (match [xs ys] [(list ordering) (list ordering)]
      {[(loop $i [1 _]
          {[<cons $x_i #> <cons ,x_i #>]
           @...}
          (& ![<cons $y _> <cons ,y _>]
             [$xs' $ys']))
        (match [xs' ys'] [(list ordering) (list ordering)]
          {[[<nil> <nil>] <Equal>]
           [[<nil> _] <Less>]
           [[_ <nil>] <Greater>]
           [[<cons $x _> <cons $y _>] (compare x y)]})]})))