3

例えば ​​をやってみるとしたら(+ 3 4)、具体的にソースではどのように分解・計算されているのでしょうか。で再帰を使用しadd1ますか?

4

2 に答える 2

8

の実装は+、Racket では算術が一般的であるため、実際には予想よりもはるかに複雑です。整数、有理数、複素数などで機能します。これらの種類の数字を組み合わせて一致させることもでき、正しいことを行います。最終的には、ランタイム システムが記述されている C で算術演算を使用することになります。

興味があれば、ここで数値タワーの詳細を見つけることができます: https://github.com/plt/racket/blob/master/src/racket/src/numarith.c

その他のポインタ: Bignum 算術、Scheme数値タワー、数値に関する Racket リファレンス。

于 2012-10-30T23:00:10.373 に答える
6

+演算子は基本的な操作であり、コア言語の一部です。効率上の理由から、これを再帰的な手順として実装するのはあまり意味がありません。

于 2012-10-30T21:55:46.180 に答える