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