]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://tiodante.com/git/factor
authorU-WSCHLIEP-PC\wschliep <wschliep@wschliep-pc.(none)>
Thu, 10 Jul 2008 01:54:03 +0000 (21:54 -0400)
committerU-WSCHLIEP-PC\wschliep <wschliep@wschliep-pc.(none)>
Thu, 10 Jul 2008 01:54:03 +0000 (21:54 -0400)
extra/backtrack/authors.txt [new file with mode: 0755]
extra/backtrack/backtrack.factor [new file with mode: 0755]
extra/backtrack/description.txt [new file with mode: 0755]
extra/bake/bake.factor
extra/bake/fry/fry-tests.factor
extra/bake/fry/fry.factor

diff --git a/extra/backtrack/authors.txt b/extra/backtrack/authors.txt
new file mode 100755 (executable)
index 0000000..50c9c38
--- /dev/null
@@ -0,0 +1 @@
+William Schlieper
\ No newline at end of file
diff --git a/extra/backtrack/backtrack.factor b/extra/backtrack/backtrack.factor
new file mode 100755 (executable)
index 0000000..7ab11ab
--- /dev/null
@@ -0,0 +1,20 @@
+! Copyright (C) 2008 William Schlieper\r
+! See http://factorcode.org/license.txt for BSD license.\r
+\r
+USING: kernel continuations sequences namespaces fry ;\r
+\r
+IN: backtrack\r
+\r
+SYMBOL: failure\r
+\r
+: amb ( seq -- elt )\r
+    failure get\r
+    '[ , _ '[ , '[ failure set , , continue-with ] callcc0 ] each\r
+       , continue ] callcc1 ;\r
+\r
+: fail ( -- )\r
+    f amb drop ;\r
+\r
+: require ( ? -- )\r
+    [ fail ] unless ;\r
+\r
diff --git a/extra/backtrack/description.txt b/extra/backtrack/description.txt
new file mode 100755 (executable)
index 0000000..d2d3918
--- /dev/null
@@ -0,0 +1 @@
+Simple non-determinism
\ No newline at end of file
index 0834c84c9a76b4c8d5004e3db238945306a72225..748a811b34d56f1829cb6f2027a1cb14cdd93ece 100644 (file)
@@ -92,5 +92,6 @@ MACRO: bake ( seq -- quot ) [bake] ;
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-: `{  \ } [ >array     ] parse-literal \ bake parsed ; parsing
+:  `{ \ } [ >array     ] parse-literal \ bake parsed ; parsing
 : `V{ \ } [ >vector    ] parse-literal \ bake parsed ; parsing
+:  `[ \ } [ >quotation ] parse-literal \ bake parsed ; parsing
\ No newline at end of file
index 13202a78f51ad44276c5ce2188a1247e14a89c09..74408dc9f98cc5e6cd2a8cda6cf8fddf473d0261 100755 (executable)
@@ -13,74 +13,74 @@ IN: bake.fry.tests
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-[ [ 3 + ] ] [ 3 `[ , + ] ] unit-test
+[ [ 3 + ] ] [ 3 '[ , + ] ] unit-test
 
-[ [ 1 3 + ] ] [ 1 3 `[ , , + ] ] unit-test
+[ [ 1 3 + ] ] [ 1 3 '[ , , + ] ] unit-test
 
-[ [ 1 + ] ] [ 1 [ + ] `[ , @ ] ] unit-test
+[ [ 1 + ] ] [ 1 [ + ] '[ , @ ] ] unit-test
 
-[ [ 1 + . ] ] [ 1 [ + ] `[ , @ . ] ] unit-test
+[ [ 1 + . ] ] [ 1 [ + ] '[ , @ . ] ] unit-test
 
-[ [ + - ] ] [ [ + ] [ - ] `[ @ @ ] ] unit-test
+[ [ + - ] ] [ [ + ] [ - ] '[ @ @ ] ] unit-test
 
 [ [ "a" write "b" print ] ]
-[ "a" "b" `[ , write , print ] ] unit-test
+[ "a" "b" '[ , write , print ] ] unit-test
 
 [ [ 1 2 + 3 4 - ] ]
-[ [ + ] [ - ] `[ 1 2 @ 3 4 @ ] ] unit-test
+[ [ + ] [ - ] '[ 1 2 @ 3 4 @ ] ] unit-test
 
 [ 1/2 ] [
-    1 `[ , _ / ] 2 swap call
+    1 '[ , _ / ] 2 swap call
 ] unit-test
 
 [ { { 1 "a" "A" } { 1 "b" "B" } { 1 "c" "C" } } ] [
-    1 `[ , _ _ 3array ]
+    1 '[ , _ _ 3array ]
     { "a" "b" "c" } { "A" "B" "C" } rot 2map
 ] unit-test
 
 [ { { 1 "a" } { 1 "b" } { 1 "c" } } ] [
-    `[ 1 _ 2array ]
+    '[ 1 _ 2array ]
     { "a" "b" "c" } swap map
 ] unit-test
 
 [ 1 2 ] [
-    1 2 `[ _ , ] call
+    1 2 '[ _ , ] call
 ] unit-test
 
 [ { { 1 "a" 2 } { 1 "b" 2 } { 1 "c" 2 } } ] [
-    1 2 `[ , _ , 3array ]
+    1 2 '[ , _ , 3array ]
     { "a" "b" "c" } swap map
 ] unit-test
 
-: funny-dip `[ @ _ ] call ; inline
+: funny-dip '[ @ _ ] call ; inline
 
 [ "hi" 3 ] [ "h" "i" 3 [ append ] funny-dip ] unit-test
 
 [ { 1 2 3 } ] [
-    3 1 `[ , [ , + ] map ] call
+    3 1 '[ , [ , + ] map ] call
 ] unit-test
 
 [ { 1 { 2 { 3 } } } ] [
-    1 2 3 `[ , [ , [ , 1array ] call 2array ] call 2array ] call
+    1 2 3 '[ , [ , [ , 1array ] call 2array ] call 2array ] call
 ] unit-test
 
-{ 1 1 } [ `[ [ [ , ] ] ] ] must-infer-as
+{ 1 1 } [ '[ [ [ , ] ] ] ] must-infer-as
 
 [ { { { 3 } } } ] [
-    3 `[ [ [ , 1array ] call 1array ] call 1array ] call
+    3 '[ [ [ , 1array ] call 1array ] call 1array ] call
 ] unit-test
 
 [ { { { 3 } } } ] [
-    3 `[ [ [ , 1array ] call 1array ] call 1array ] call
+    3 '[ [ [ , 1array ] call 1array ] call 1array ] call
 ] unit-test
 
-! [ 10 20 30 40 `[ , V{ , { , } } , ] ] [ [ 10 V{ 20 { 30 } } 40 ] ] unit-test*
+! [ 10 20 30 40 '[ , V{ , { , } } , ] ] [ [ 10 V{ 20 { 30 } } 40 ] ] unit-test*
 
-[ 10 20 30 40 `[ , V{ , { , } } , ] ]
+[ 10 20 30 40 '[ , V{ , { , } } , ] ]
 [ [ 10 20 30 >r r> 1 narray >r >r r> r> 2 narray >vector 40 ] ]
 unit-test*
 
-[ { 1 2 3 } { 4 5 6 } { 7 8 9 } `[ , { V{ @ } { , } } ] call ]
+[ { 1 2 3 } { 4 5 6 } { 7 8 9 } '[ , { V{ @ } { , } } ] call ]
 [
   { 1 2 3 }
   { V{ 4 5 6 } { { 7 8 9 } } }
index 6b069334e65a227d1cd0a5fc5e626433f32b23e5..b9f9882e88d935b4cd00480c0b64a3777b6cc06c 100644 (file)
@@ -77,4 +77,4 @@ DEFER: shallow-fry
 
 MACRO: fry ( seq -- quot ) [fry] ;
 
-: `[ \ ] [ >quotation ] parse-literal \ fry parsed ; parsing
\ No newline at end of file
+: '[ \ ] [ >quotation ] parse-literal \ fry parsed ; parsing
\ No newline at end of file