((lambda())的简写

时间:2011-10-18 03:09:54

标签: lambda scheme racket r6rs

((lambda()))

的方案是否有简写

例如,而不是

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

我希望能够做一些像

这样的事情
(empty-lambda
    (define x 1)
    (display x))

4 个答案:

答案 0 :(得分:10)

通常的习惯用语是

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

你当然可以变成一个快速宏:

(define-syntax-rule (block E ...) (let () E ...))

答案 1 :(得分:3)

为什么不

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

答案 2 :(得分:3)

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

#lang racket
(require racket/block)
(block
 (define x 1)
 (display x))

答案 3 :(得分:2)

(define-syntax empty-lambda
  (syntax-rules ()
    ((empty-lambda body ...)
      ((lambda () body ...)))))