「48時間でSchemeを書こう/Scheme関数の定義」の版間の差分
削除された内容 追加された内容
M編集の要約なし |
M編集の要約なし |
||
7 行
body :: [LispVal], closure :: Env}
私たちはprimitivesにセパレータコンストラクタを追加しました。というのも、私たちは +やeqv?等のように、扱いたいからです。変数は、関数に渡されます。PrimitiveFuncコンストラクタはThrowsError LispValに対して、引数のリストを取るような関数を扱います。それはprimitiveリストで扱われているのと同じタイプです。
私たちは同様に、ユーザー定義型関数を扱うためのコンストラクタが欲しい。私たちは4つの情報を扱います。
34 行
apply (PrimitiveFunc func) args = liftThrows $ func args
私たちがユーザー定義型関数にはちあわせたとき、この興味深いコードが起き
apply (Func params varargs body closure) args =
|