From 0d8ddd2a3c155d5a10d78987b67cab9fc2121534 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sun, 27 Apr 2008 22:44:42 -0500 Subject: [PATCH] fix multi-methods for <=> --- extra/multi-methods/multi-methods.factor | 16 ++++++++-------- .../multi-methods/tests/topological-sort.factor | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/extra/multi-methods/multi-methods.factor b/extra/multi-methods/multi-methods.factor index 07d110b01a..d5a698f5f8 100755 --- a/extra/multi-methods/multi-methods.factor +++ b/extra/multi-methods/multi-methods.factor @@ -73,7 +73,7 @@ SYMBOL: total ! Part II: Topologically sorting specializers : maximal-element ( seq quot -- n elt ) dupd [ - swapd [ call 0 < ] 2curry filter empty? + swapd [ call +lt+ = ] 2curry filter empty? ] 2curry find [ "Topological sort failed" throw ] unless* ; inline @@ -82,16 +82,16 @@ SYMBOL: total [ dupd maximal-element >r over delete-nth r> ] curry [ ] unfold nip ; inline -: classes< ( seq1 seq2 -- -1/0/1 ) +: classes< ( seq1 seq2 -- lt/eq/gt ) [ { - { [ 2dup eq? ] [ 0 ] } - { [ 2dup [ class< ] 2keep swap class< and ] [ 0 ] } - { [ 2dup class< ] [ -1 ] } - { [ 2dup swap class< ] [ 1 ] } - [ 0 ] + { [ 2dup eq? ] [ +eq+ ] } + { [ 2dup [ class< ] 2keep swap class< and ] [ +eq+ ] } + { [ 2dup class< ] [ +lt+ ] } + { [ 2dup swap class< ] [ +gt+ ] } + [ +eq+ ] } cond 2nip - ] 2map [ zero? not ] find nip 0 or ; + ] 2map [ zero? not ] find nip +eq+ or ; : sort-methods ( alist -- alist' ) [ [ first ] bi@ classes< ] topological-sort ; diff --git a/extra/multi-methods/tests/topological-sort.factor b/extra/multi-methods/tests/topological-sort.factor index cea7022759..f1618374ef 100644 --- a/extra/multi-methods/tests/topological-sort.factor +++ b/extra/multi-methods/tests/topological-sort.factor @@ -6,14 +6,14 @@ IN: multi-methods.tests { 6 4 5 1 3 2 } [ <=> ] topological-sort ] unit-test -[ -1 ] [ +[ +lt+ ] [ { fixnum array } { number sequence } classes< ] unit-test -[ 0 ] [ +[ +eq+ ] [ { number sequence } { number sequence } classes< ] unit-test -[ 1 ] [ +[ +gt+ ] [ { object object } { number sequence } classes< ] unit-test