ソースコード
ステップ11 可変長の引数(順伝播編)
可変長引数を取り扱うため、call
やforward
のシグネチャを変更し、関数の入力も出力もリストとなるよう変更する。
総称関数の特性上影響が大きく、コンパイルエラーを参考に直していくことになる。
ステップ12 可変長の引数(改善編)
Common Lispの関数は、仮引数リストの中で&rest
を使うことで可変長引数を受け取れるようになる。
forward
は総称関数として実装しているので、すべてのクラスで同じシグネチャにしなければならない。
オリジナルを見ると、仮引数リストが異なる同名のメソッドが定義されており、これでも問題ないところに違いを感じた。
apply関数を使って、リストをアンパッキングし、可変長の引数を渡すようにする。
ステップ13 可変長の引数(逆伝播編)
<variable>
クラスのbackward
メソッドを直し、可変長引数に対応できるようにする。
また、<square>
クラスも可変長引数に対応させる。だんだんややこしいコードになってきた。