((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))
ラケットは次のように機能するblock
フォームを提供します。
#lang racket
(require racket/block)
(block
(define x 1)
(display x))
(define-syntax empty-lambda
(syntax-rules ()
((empty-lambda body ...)
((lambda () body ...)))))