]> gitweb.factorcode.org Git - factor.git/blob - extra/backtrack/backtrack.factor
Merge branch 'master' of git://factorforge.org/git/littledan
[factor.git] / extra / backtrack / backtrack.factor
1 ! Copyright (C) 2008 William Schlieper\r
2 ! See http://factorcode.org/license.txt for BSD license.\r
3 \r
4 USING: kernel continuations sequences namespaces fry ;\r
5 \r
6 IN: backtrack\r
7 \r
8 SYMBOL: failure\r
9 \r
10 : amb ( seq -- elt )\r
11     failure get\r
12     '[ , _ '[ , '[ failure set , , continue-with ] callcc0 ] each\r
13        , continue ] callcc1 ;\r
14 \r
15 : fail ( -- )\r
16     f amb drop ;\r
17 \r
18 : require ( ? -- )\r
19     [ fail ] unless ;\r
20 \r