4

現在、sicp book の演習 1.3 を実行しています。問題の説明は次のとおりです。

3 つの数値を引数として取り、2 つの大きい数値の 2 乗和を返すプロシージャを定義します。

次のコードで解決しようとしました

(define (square x) (* x x))

(define (sq2largest a b c)
        ((define large1 (if (> a b) a b)) 
         (define small  (if (= large1 a) b a))
         (define large2 (if (> c small) c small))
         (+ (square large1) (square large2))))

mit-scheme で実行すると、次のエラーが発生しました。

; null 構文環境では名前をバインドできません: large1 #[予約名項目 13]

このエラーをグーグルで調べても、多くの結果は得られません。私のコードの何が問題なのか誰か知っていますか? (私はスキームに精通していません)

4

2 に答える 2

3

角かっこが多すぎます。内部定義の周りの余分な括弧を取り除いた場合、物事ははるかにうまくいくはずです。

于 2013-02-16T07:17:05.707 に答える