3

((lambda()))のスキームに省略形はありますか

たとえば、代わりに

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

私は次のようなことができるようになりたいです

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

4 に答える 4

10

そのための通常のイディオムは

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

もちろん、これを簡単なマクロに変えることができます。

(define-syntax-rule (block E ...) (let () E ...))
于 2011-10-18T03:22:11.390 に答える
3

なぜだけではないのですか

(let
    ((x 1))
    (display x))
于 2011-10-18T07:10:15.770 に答える
3

ラケットは次のように機能するblockフォームを提供します。

#lang racket
(require racket/block)
(block
 (define x 1)
 (display x))
于 2011-10-18T15:32:28.987 に答える
2
(define-syntax empty-lambda
  (syntax-rules ()
    ((empty-lambda body ...)
      ((lambda () body ...)))))
于 2011-10-18T03:21:04.837 に答える