このコードはシンプルスキーム(コードhere)のコードであり、私たちがエクササイズと一緒にロードして使用するようになっています。 (注:私は、個人が自分だけのためにこれをやっている)なぜScheme内部で関数を再割り当てするのですか?
(define first
(let ((pair? pair?)
(char->word char->word)
(string-ref string-ref)`
(word->string word->string)
(car car)
(empty? empty?)
(whoops whoops)
(word? word?))
(define (word-first wd)
(char->word (string-ref (word->string wd) 0)))
(lambda (x)
(cond ((pair? x) (car x))
((empty? x) (whoops "Invalid argument to FIRST: " x))
((word? x) (word-first x))
(else (whoops "Invalid argument to FIRST: " x))))))
私はこの機能でlet
とlambda
の一般的な使用を理解するために沿って十分だけど、私は理解していないが理由です(pair? pair?)
および(car car)
のように、それぞれのサポート機能(手作りのもの、バッテリに含まれているものなど)が繰り返されている形式のlet
です。これらはなぜlet
の中に準再割当てされていますか?