2011-02-17 64 views
1

嗨我想寫一個函數,將返回一個表達式是可變的,可以用作一個過程。返回Scheme中一個可變對象的表達式?

例如:

(fooeq 1 2)將返回(eq? 1 2)

((fooeq 1 2))將返回#f

是否有編寫是可以轉換成一個符號的表達式的方式程序?

編輯:我明白了,謝謝你的迴應。如果其他人想知道這是(eval p)。

+0

計算機如何神奇地將`fooeq`變成`eq?`? – Mehrdad 2011-02-17 05:37:49

+0

這只是一個任意的例子。對不起,讓我更清楚一點。我想要我的原始函數,讓我們把它稱爲foo,實際返回一個任意的值,然後可以像過程一樣進行評估。所以我想知道我怎樣才能像'(eq 1 2)這樣的價值並且實際上像一個過程那樣對待它。 – Brian 2011-02-17 06:44:46

回答

1

我猜你想fooeq評估的功能:

> (define (fooeq a b) 
    (lambda() (eq? a b))) 

> ((fooeq 1 2)) 
#f 
> ((fooeq 1 1)) 
#t 
> 

,它使用一個或多個功能的輸入或輸出功能被稱爲higher-order function的功能。