これは SICP の例です。入力しましたが、エラーが発生しました。
(define (sum term a next b)
(if (> a b)
0
(+ (term a)
(sum term (next a) next b))))
これはエラーです:
関数呼び出し: 左括弧の後に関数が必要ですが、変数が見つかりました
DrRacket を使用している場合、DrRacket を「初心者向け言語」モードで実行している可能性があります。入門 CS レベルでは、その特定の言語レベル モードが高次機能を無効にします。 一方、 SICPは、より高次の手続きが可能な言語レベルを想定しています。
これが事実であると仮定すると、 DrRacket を調整して、 #lang racketなどの高次の手順を許可する言語レベルを使用することで、これを修正できます。
言語の選択を参照してください: DrRacket を「ソースで宣言された言語を使用する」に切り替え、プログラムの一番上の行を作成します。
#lang racket
これで、関数を記述できるようになります。
ちなみに、DrRacketの SICP には特別なサポートがあります。SICP を使用する場合は、おそらくこれを使用することをお勧めします。このサポートを有効にするには、先頭の#lang行を次のように変更します。
#lang planet neil/sicp
これでプログラムを初めて実行するときは、サポート ソフトウェアが自動的にインストールされるため、少し時間がかかります。その後のパッケージの使用は高速である必要があります。
プロシージャを呼び出す方法に問題があると思います。たとえば、これは上記のコードで正常に機能します。
(sum values 1 add1 10)
> 55