> 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