5
A
回答
6
(apply (eval '+) '(1 2 3))
應該這樣做。
2
0
怎麼樣的計劃 「應用」
(apply + `(1 2 3)) => 6
我希望那是什麼你問:)
4
在R5RS你需要
(apply (eval '+ (scheme-report-environment 5)) '(1 2 3))
「相當大的」路線博士語言允許:
(apply (eval '+) '(1 2 3))
2
;; This works the same as funcall in Common Lisp:
(define (funcall fun . args)
(apply fun args))
(funcall + 1 2 3 4) => 10
(funcall (lambda (a b) (+ a b) 2 3) => 5
(funcall newline) => *prints newline*
(apply newline) => *ERROR*
(apply newline '()) => *prints newline*
順便說一句,這是怎麼回事這個‘語法高亮’?
1
球拍的方案將是
#lang scheme
(define ns (make-base-namespace))
(apply (eval '+ ns) '(1 2 3))
我得到了一個錯誤「編譯:綁定標識符(無#%頂語法變壓器必將)在:+」 – unj2 2009-06-25 18:04:47
什麼方案的版本?我在發佈之前在博士計劃中測試了這個 – 2009-06-25 18:33:09
這很有趣。該聲明本身不會編譯。它需要在一個函數中,或者可以在REPL中進行評估。是否存在對eval綁定的限制? – unj2 2009-06-25 18:59:10