]> gitweb.factorcode.org Git - factor.git/commitdiff
combinators.extras: change sequence-case to not use a generic
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 11 Sep 2023 00:34:46 +0000 (17:34 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 11 Sep 2023 00:35:02 +0000 (17:35 -0700)
extra/combinators/extras/extras.factor

index 7205616b17daafbb5f9083c02b53fa3e29a57293..df95b546476a50a17eeb41404de572521763efc0 100644 (file)
@@ -19,24 +19,22 @@ PRIVATE>
 
 MACRO: cond-case ( assoc -- quot )
     [
-        dup callable? not [
+        dup callable? [
             [ first '[ dup @ ] ]
             [ second '[ drop @ ] ] bi 2array
-        ] when
+        ] unless
     ] map '[ _ cond ] ;
 
-<PRIVATE
-GENERIC: sequence-case-contains? ( elt obj -- ? )
-M: object sequence-case-contains? = ;
-M: sequence sequence-case-contains? member? ;
-M: sets:set sequence-case-contains? in? ;
-PRIVATE>
-
 MACRO: sequence-case ( assoc -- quot )
     [
         dup callable? [
-            [ first '[ dup _ sequence-case-contains? ] ]
-            [ second '[ drop @ ] ] bi 2array
+            [
+                first {
+                    { [ dup set? ] [ [ in? ] ] }
+                    { [ dup sequence? ] [ [ member? ] ] }
+                    [ [ = ] ]
+                } cond '[ dup _ @ ]
+            ] [ second '[ drop @ ] ] bi 2array
         ] unless
     ] map [ cond ] curry ;