]> gitweb.factorcode.org Git - factor.git/commitdiff
Refactor curry/compose a bit for upcoming frontend changes
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 20 Jul 2008 06:15:58 +0000 (01:15 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 20 Jul 2008 06:15:58 +0000 (01:15 -0500)
core/bootstrap/primitives.factor
core/quotations/quotations.factor

index a6ebf13f4de510d6b0893f181875b89c599c76eb..df1d7dfd1d9fa2a91b23954b7b9661b9ce984035 100755 (executable)
@@ -6,7 +6,8 @@ sequences strings vectors words quotations assocs layouts
 classes classes.builtin classes.tuple classes.tuple.private
 kernel.private vocabs vocabs.loader source-files definitions
 slots classes.union classes.intersection classes.predicate
-compiler.units bootstrap.image.private io.files accessors combinators ;
+compiler.units bootstrap.image.private io.files accessors
+combinators ;
 IN: bootstrap.primitives
 
 "Creating primitives and basic runtime structures..." print flush
@@ -310,9 +311,12 @@ tuple
 } prepare-slots define-tuple-class
 
 "curry" "kernel" lookup
-[ f "inline" set-word-prop ]
-[ ]
-[ tuple-layout [ <tuple-boa> ] curry ] tri
+{
+    [ f "inline" set-word-prop ]
+    [ make-flushable ]
+    [ ]
+    [ tuple-layout [ <tuple-boa> ] curry ] tri
+} cleave
 (( obj quot -- curry )) define-declared
 
 "compose" "kernel" create
@@ -323,9 +327,12 @@ tuple
 } prepare-slots define-tuple-class
 
 "compose" "kernel" lookup
-[ f "inline" set-word-prop ]
-[ ]
-[ tuple-layout [ <tuple-boa> ] curry ] tri
+{
+    [ f "inline" set-word-prop ]
+    [ make-flushable ]
+    [ ]
+    [ tuple-layout [ <tuple-boa> ] curry ] tri
+} cleave
 (( quot1 quot2 -- compose )) define-declared
 
 ! Sub-primitive words
index 9e7ded1836336177c03bfab1908032434af634bb..617dac33236e4bd6a96c2032ea084b3a7cc7e957 100755 (executable)
@@ -5,11 +5,19 @@ kernel kernel.private math assocs quotations.private
 slots.private ;
 IN: quotations
 
+<PRIVATE
+
+: uncurry dup 3 slot swap 4 slot ; inline
+
+: uncompose dup 3 slot swap 4 slot ; inline
+
+PRIVATE>
+
 M: quotation call (call) ;
 
-M: curry call dup 3 slot swap 4 slot call ;
+M: curry call uncurry call ;
 
-M: compose call dup 3 slot swap 4 slot slip call ;
+M: compose call uncompose slip call ;
 
 M: wrapper equal?
     over wrapper? [ [ wrapped>> ] bi@ = ] [ 2drop f ] if ;