In Dylan, you can write a strict version, which checks the argument and the return type:
define method double (thing :: <number>)Or leave it completely open:
=> another-thing :: <number>;
thing + thing;
end method;
define method double (thing)Sometimes you don't care what kind of argument you get, you just pass it on. But sometimes you do, and it's nice when the system can tell you exactly where you went wrong.
thing + thing;
end method;