2011-07-17 13 views
3

假設有兩個函數f和v。進一步假設v返回一個長度爲n的列表,而f期望恰好有n個參數。我要尋找一個在方案的正確語法將f應用到用V返回的列表。如何將Scheme中的函數應用於另一個函數返回的參數列表?

如果我使用的語法(f (v v-arguments))然後我得到一個錯誤有關F- expectsing n個參數,但只接受一個參數(這是返回的列表由v)。

如果我使用語法(f . (v v-arguments)),那麼問題是傳遞給f的參數太多。

我可以(爲的情況下當f需要兩個參數)做的最好的是這樣的:

(let ((output-of-v (v v-arguments))) 
    (f (car output-of-v) (cadr output-of-v))) 

我相信必須有一個更好的辦法,我會爲任何建議感激!

回答

9

看來你正在尋找apply

(apply f (v v-arguments)) 

至於解釋here,在apply功能適用一個函數的參數列表,有效地傳遞它們的位置參數給這個函數。

+0

是的的的確的!非常感謝! – alex

+1

@alex:您應該點擊此答案旁邊的複選標記以接受它作爲正確答案。 – acfoltzer

相關問題