Kudos to all(@Larry)! How does automatic coercion work? Like, when a routine wants a parameter of a certain type, and is called with an argument of a different type that C<does>
(For instance, is it something a little like this? multi sum ( Num $addend1, Num $addend2 --> Num ) { ... } multi say ( Str [EMAIL PROTECTED] ) { ... } class Str does Num { ... } class Num does Str { ... } say sum "3", "4"; 1. C<sum()> automatically coerces its C<Str> arguments into C<Num> parameters because C<Str.does: Num>. 2. C<say()> then automatically coerces its C<Num> arguments into C<Str> parameters because C<Num.does: Str>. ...Or am I completely off the mark?) Joshua Choi