scheme中是否有((lambda ()))
的简写?例如,不用
((lambda ()
(define x 1)
(display x)))
我希望能够做一些像
(empty-lambda
(define x 1)
(display x))
通常的习惯用法是
(let ()
(define x 1)
(display x))
你当然可以把它变成一个快速宏:
(define-syntax-rule (block E ...) (let () E ...))
为什么不直接
(let
((x 1))
(display x))
Racket提供了block
表单,其工作原理如下:
#lang racket
(require racket/block)
(block
(define x 1)
(display x))
(define-syntax empty-lambda
(syntax-rules ()
((empty-lambda body ...)
((lambda () body ...)))))