\r
<PRIVATE\r
\r
+: preserve ( quot var -- ) [ get [ call ] dip ] keep set ; inline\r
+\r
+: amb-preserve ( quot -- ) failure preserve ; inline\r
+\r
: unsafe-number-from-to ( to from -- to from+n )\r
2dup = [ [ 1 + unsafe-number-from-to ] checkpoint ] unless ;\r
\r
[ length 1 - ] [ <enum> [ 1quotation ] assoc-map ] bi\r
'[ _ 0 unsafe-number-from-to nip _ case ] ;\r
\r
-: if-amb ( true false -- )\r
+: if-amb ( true false -- ? )\r
[\r
[ { t f } amb ]\r
[ '[ @ require t ] ]\r
[ '[ @ f ] ]\r
tri* if\r
- ] with-scope ; inline\r
+ ] amb-preserve ; inline\r
\r
: cut-amb ( -- )\r
f failure set ;\r