From c9e04cd8f5f79a3b7a5f8011c18586333a4ddb02 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 4 Sep 2009 06:11:28 -0500 Subject: [PATCH] match: cleanup --- basis/match/match.factor | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/basis/match/match.factor b/basis/match/match.factor index ec0cb8c9e6..b6369249b3 100644 --- a/basis/match/match.factor +++ b/basis/match/match.factor @@ -69,10 +69,9 @@ MACRO: match-cond ( assoc -- ) dup length zero? not [ rest ] [ drop f ] if ; : (match-first) ( seq pattern-seq -- bindings leftover/f ) - 2dup [ length ] bi@ < [ 2drop f f ] - [ + 2dup shorter? [ 2drop f f ] [ 2dup length head over match - [ nip swap ?1-tail ] [ [ rest ] dip (match-first) ] if* + [ swap ?1-tail ] [ [ rest ] dip (match-first) ] ?if ] if ; : match-first ( seq pattern-seq -- bindings ) @@ -80,10 +79,7 @@ MACRO: match-cond ( assoc -- ) : (match-all) ( seq pattern-seq -- ) [ nip ] [ (match-first) swap ] 2bi - [ - , [ swap (match-all) ] [ drop ] if* - ] [ 2drop ] if* ; + [ , [ swap (match-all) ] [ drop ] if* ] [ 2drop ] if* ; : match-all ( seq pattern-seq -- bindings-seq ) [ (match-all) ] { } make ; -