]> gitweb.factorcode.org Git - factor.git/commitdiff
combinators.cleave.enhanced: Cleavers and spreaders which accept words
authorEduardo Cavazos <dharmatech@finkelstein.stackeffects.info>
Sat, 29 Nov 2008 18:07:35 +0000 (12:07 -0600)
committerEduardo Cavazos <dharmatech@finkelstein.stackeffects.info>
Sat, 29 Nov 2008 18:07:35 +0000 (12:07 -0600)
extra/combinators/cleave/enhanced/enhanced.factor [new file with mode: 0644]

diff --git a/extra/combinators/cleave/enhanced/enhanced.factor b/extra/combinators/cleave/enhanced/enhanced.factor
new file mode 100644 (file)
index 0000000..b55979a
--- /dev/null
@@ -0,0 +1,31 @@
+
+USING: combinators.cleave fry kernel macros parser quotations ;
+
+IN: combinators.cleave.enhanced
+
+: \\
+  scan-word literalize parsed
+  scan-word literalize parsed ; parsing
+
+MACRO: bi ( p q -- quot )
+  [ >quot ] dip
+    >quot
+  '[ _ _ [ keep ] dip call ] ;
+
+MACRO: tri ( p q r -- quot )
+  [ >quot ] 2dip
+  [ >quot ] dip
+    >quot
+  '[ _ _ _ [ [ keep ] dip keep ] dip call ] ;
+
+MACRO: bi* ( p q -- quot )
+  [ >quot ] dip
+    >quot
+  '[ _ _ [ dip ] dip call ] ;
+
+MACRO: tri* ( p q r -- quot )
+  [ >quot ] 2dip
+  [ >quot ] dip
+    >quot
+  '[ _ _ _ [ [ 2dip ] dip dip ] dip call ] ;
+