I may be misunderstanding something. I haven't really looked into list searching much, but there seem to be some very odd and unexpected results, here.
On Thu, Jul 29, 2010 at 7:52 PM, Jonathan Worthington <jonat...@jnthn.net> wrote: >> my @x = 1,2,3; say ?...@x.grep(2); say ?...@x.grep(4); > 1 > 0 > > Though more efficient would be: > >> my @x = 1,2,3; say ?...@x.first(2); say ?...@x.first(4); > 1 > 0 The above only works if the value that you are searching for does something sane when it's the RHS of a smart-match. Try searching for False this way and you'll be sad, just for example (PS: I think the behavior of False ~~ False is unsmart). Actually, it looks like === is the right way to do this for value types like 2 and True, but right now Rakudo doesn't do the right thing: my @x = 1,2,3,False; say ?...@x.first: * === 2; say ?...@x.first: * === False; say ?...@x.first: * === True; 1 0 1 I think it's just smart-matching, which is definitely not correct (False === False does do the right thing when you executed it on its own, though). If you really want odd, try: say [1,2,3].first: * === True; Result: 1 and say [5,2,3].first: * === True; Result: Rakudo exits silently with no newline So, the right way to search for value types in a list... is highly questionable right now. ;-) -- Aaron Sherman Email or GTalk: a...@ajs.com http://www.ajs.com/~ajs