RosettaCodeData/Task/Amb/Smalltalk/amb-7.st

16 lines
530 B
Smalltalk

tryAll:valuesCollection in:aBlock
"try each set of values in aBlock;
aBlock's number of args must be the number of elements in valuesCollection"
|tryAll|
tryAll :=
[:valuesCollection :argsIn |
valuesCollection isEmpty ifTrue:[
aBlock valueWithArguments:argsIn
] ifFalse:[
self try:(valuesCollection first) in:[:arg |
tryAll value:(valuesCollection from:2) value:argsIn,{arg} ]]].
^ tryAll value:valuesCollection value:#()