]> gitweb.factorcode.org Git - factor.git/commitdiff
combinators.extras: adding plox-if
authorJohn Benediktsson <mrjbq7@gmail.com>
Sat, 6 Aug 2022 16:49:29 +0000 (09:49 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sat, 6 Aug 2022 16:49:29 +0000 (09:49 -0700)
extra/combinators/extras/extras-tests.factor
extra/combinators/extras/extras.factor

index 0f70125a27691f02386083e1a8682117e9e63bbf..b700de0dc4c81be69a5a7425ce3cb88c5dc5b721 100644 (file)
@@ -187,3 +187,8 @@ IN: combinators.extras.tests
 { 103 203 { { 1 1 } { 2 2 } { 3 3 } } }
 [ 100 200 { { 1 1 } { 2 2 } { 3 3 } } [ [ 1 + ] bi@ ] 2temp2d assoc-map ] unit-test
 
+{ 10 } [ 5 [ 2 * ] plox ] unit-test
+{ f } [ f [ 2 * ] plox ] unit-test
+
+{ 12 } [ 12 [ odd? ] [ 2/ ] plox-if ] unit-test
+{ 6 } [ 13 [ odd? ] [ 2/ ] plox-if ] unit-test
index ec0da1bfc1cac725230b802f5a7312f6c10d9657..600716db5a861815a06dd6cd28d0799b23b27300 100644 (file)
@@ -58,6 +58,9 @@ MACRO: cleave-array ( quots -- quot )
 : plox ( ... x/f quot: ( ... x -- ... y ) -- ... y/f )
     dupd when ; inline
 
+: plox-if ( ... x quot: ( ... x -- ... ? ) quot: ( ... x -- ... y ) -- ... y/f )
+    [ keep swap ] dip when ; inline
+
 MACRO: smart-plox ( true -- quot )
     [ inputs [ 1 - [ and ] n*quot ] keep ] keep swap
     '[ _ _ [ _ ndrop f ] smart-if ] ;