-1

我想编写一个采用文字的方法,可以说

turn

end 返回类似这样的东西

(my turn)

所以,在那之后,如果我调用eval,scheme 将调用my带有参数的定义方法turn

我确实设法返回了另一个文字或字符串,但我没有设法做我想做的事。而且我没有找到任何关于这样的规范。

我想我必须以某种方式使用这样的东西:`(my,@param) 但它不起作用。

turn是一个符号

4

1 回答 1

1

对我来说听起来像是一个XY 问题,也许有一种更简单的方法可以实现你真正想要做的事情......无论如何,回答这个问题:

; we need to prevent the evaluation of the parameter,
; a normal procedure won't work here - we need a macro
(define-syntax method
  (syntax-rules ()
    ((_ x) '(my x))))

; sample input
(define turn 9)
(define (my param) (+ 1 param))

; setup the evaluation namespace
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))

; first test: `method` returns a non-evaluated expression
(method turn)
=> '(my turn)

; second test: evaluate the returned expression
(eval (method turn) ns)
=> 10
于 2014-03-22T12:40:51.617 回答