Есть ли в схеме сокращение для ((лямбда ()))
Например, вместо
((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 ...))
Racket предоставляет форму block, которая работает следующим образом:
block
#lang racket (require racket/block) (block (define x 1) (display x))
Почему не просто
(let ((x 1)) (display x))
(define-syntax empty-lambda (syntax-rules () ((empty-lambda body ...) ((lambda () body ...)))))