2011-10-18 27 views
3

是否有计划的简写为((拉姆达()))简写为((拉姆达()))

例如,而不是

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

我希望能够做到像

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

回答

10

通常的成语是

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

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

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

啊完美。谢谢! – Cam

+2

我认为显而易见的答案是使用'begin',如:'(begin(define x 1)(display x))'原来是明显的错误,请参阅http://stackoverflow.com/questions/1683796 /如何可任意你重写 - 开始 - 在-方案/ 1683842#1683842。 –

+0

对于let和define都是+1。美丽。 – djhaskin987

2
(define-syntax empty-lambda 
    (syntax-rules() 
    ((empty-lambda body ...) 
     ((lambda() body ...))))) 
+0

是我意识到,但我想要内置的东西。虽然谢谢! – Cam

3

为什么不

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

球拍提供block形式,它的工作原理是这样的:

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