> For example, you can't get a count of the number of elements in a junction

Well, if you're willing to stoop to ugly enough hacks, there's _always_ a 
way :D 

any('a', 'b').raku.substr(3).EVAL.elems # OUTPUT «3»

> My guess would be that the `ACCEPTS` method for a Junction
is special cased to handle the junction

I'm not sure that it's all _that_ much of a special case – it seems like
it mostly follows from the fact that ~~ *both* calls .ACCEPT *and* creates
a boolean context 
(https://docs.raku.org/language/contexts#index-entry-Boolean_context)

In other words, `'e' ~~ 'e'` is _not_ technically equivalent to `'e' eq 'e'`
– it's actually equivalent to `?('e' eq 'e')`.  Of course, in that case the
boolean context didn't make a difference because the comparison already 
returned a Bool.  But it does make a difference in the Junction case:

any('d', 'e', 'f') ~~ 'e';
# is the same as
?(any('d', 'e', 'f') eq 'e');

And, indeed, both return True.

Hope that helps at least a bit!

– codesections

Reply via email to