sub infix: ($a,$b) { next unless try $a.substr(*-1,1) eq $b.substr(0,1); "$a $b"; } multi dethunk(Callable $x) { try take $x() } multi dethunk( Any $x) { take $x } sub amb (*@c) { gather @c».&dethunk } say first *, do amb(, { die 'oops'}) Xlf amb('frog',{'elephant'},'thing') Xlf amb() Xlf amb { die 'poison dart' }, {'slowly'}, {'quickly'}, { die 'fire' };