Since the rest of the comments are about the language, I guess mine may as well be too.
I was wondering why, in your coding style, you always use $y.ACCEPTS($x) instead of $x ~~ $y?
I was wondering why, in your coding style, you always use $y.ACCEPTS($x) instead of $x ~~ $y?
$x ~~ $y is basically syntactic sugar for $y.ACCEPTS($x). Using ~~ involves an additional subroutine call, so there's a short-term efficiency issue (as in programs running more than a second or so the extra call will have been inlined).
But personally, I like the verbosity of $y.ACCEPTS($x) as it reads better for me, having been burnt by ~~ semantics in Perl, which was symmetrical.