1
(define-syntax let  
  (syntax-rules ()  
    [(_ ((x e) ...) b1 b2 ...)  
     ((lambda (x ...) b1 b2 ...) e ...)]))  

let の定義における 1 つの規則は、かなり自明のはずですが、言及する価値のある点がいくつかあります。まず、let の構文では、本体に少なくとも 1 つのフォームが含まれている必要があります。したがって、b ... の代わりに b1 b2 ... を指定しました。これはより自然に見えるかもしれません。

(b1 b2 ...) を使用してフォーム上でリースを表すのはなぜですか? その使用は (b ...) より自然ですか?

4

1 に答える 1

4

b ...for はゼロ以上の式を許可しますが、 forは式b1 b2 ...b1ある必要があり、 whileb2 ...はゼロ以上の式である必要があります。bodyless を書く人を望まないのでletb1 b2 ...フォームは少なくとも 1 つの body 式を強制します。

正規表現を知っていますか?はにb ...似ていると考えてください。.*b1 b2 .....*

于 2013-04-08T15:19:37.900 に答える