Method (and etc.) dispatch

((object 'symbol) args...)
=> (method args...)
=> returnValue

ここではobjectとmethodの双方に対してほぼ等価な構文を利用している。objectはシンボルを受け取り、methodは引数のリストを受け取るという点だけが唯一異なっており、Method dispatchによって両者を切り替えているということになる。
さて、このようなMethod dispatchでは引数の判定手法が重要だろう。Java的なobjectの場合を考えると、シンボルを受け取る場合にはその値から、引数のリストを受け取る場合にはその型から分岐判定を行う必要がある。
問題はこの分岐判定がそれなりに重い処理だということ。強い型付けをしておけばこの判定を事前に行うことが出来るので実行速度が大きく向上するはずだ。*1

*1:この辺の実装は後回し。