Есть ли в схеме сокращение для ((лямбда()))
Например, вместо
((lambda ()
(define x 1)
(display x)))
Я хотел бы иметь возможность сделать что-то вроде
(empty-lambda
(define x 1)
(display x))
Есть ли в схеме сокращение для ((лямбда()))
Например, вместо
((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 ...))
begin
, например: (begin (define x 1) (display x))
оказывается очевидным и неправильным, см. stackoverflow.com/questions/1683796/.
- person Shannon Severance; 19.10.2011
Почему бы просто не
(let
((x 1))
(display x))
Racket предоставляет форму block
, которая работает следующим образом:
#lang racket
(require racket/block)
(block
(define x 1)
(display x))