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)]})]})))