3

((lambda () )) 的方案中是否有简写

例如,而不是

((lambda ()
    (define x 1)
    (display x)))

我希望能够做类似的事情

(empty-lambda
    (define x 1)
    (display x))
4

4 回答 4

10

The usual idiom for that is

(let ()
  (define x 1)
  (display x))

which you can of course turn into a quick macro:

(define-syntax-rule (block E ...) (let () E ...))
于 2011-10-18T03:22:11.390 回答
3

为什么不只是

(let
    ((x 1))
    (display x))
于 2011-10-18T07:10:15.770 回答
3

Racket 提供了block表单,其工作方式如下:

#lang racket
(require racket/block)
(block
 (define x 1)
 (display x))
于 2011-10-18T15:32:28.987 回答
2
(define-syntax empty-lambda
  (syntax-rules ()
    ((empty-lambda body ...)
      ((lambda () body ...)))))
于 2011-10-18T03:21:04.837 回答