2010-05-16 29 views
2

G'day guys,使用Map應用具有多個輸入的功能? (Haskell)

嘗試完成一些我正在做的作業,並且遇到了一個問題,我試圖在接受多個輸入的函數上應用地圖。

所以在情況下,我使用PROCESSLIST F(X:XS)=地圖accelerateList˚FXS X XS

PROCESSLIST被賦予一個浮點值(f)和其分類成另一個列表

列表

加速列表採用浮動值(f)列表和列表對象通過它返回另一個列表對象

我知道我的加速列表代碼是正確的,但我不能爲我的生活獲取此語法代碼工作:

processList :: Float -> [Object] -> [Object] 
accelerate f [] = [] 
accelerate f [x] = [(accelerateForce f x x)] 
accelerate f (x:xs) = map accelerateList f xs x xs 

任何想法?我一直在撓頭約3個小時。我知道這是真的簡單。

回答

5

,你首先可能會需要使用一些括號這裏:

map accelerateList f xs x xs 

功能map恰恰兩個參數(不是5個),所以你應該例如做這樣的事情:

map (accelerateList f xs x) xs 

但另一方面,這不符合您的功能簽名。問題可能是您沒有以足夠好的方式來構建您的解決方案。可能是一個單獨的問題,但解釋你正在試圖用加速功能來完成(或者哪一個是「頂級」功能)肯定會有所幫助。

+0

我絕對認爲這是一個結構錯誤,謝謝。 我試圖映射一個函數,它比較列表中的兩個元素,跨整個對象列表。 因此,對於每個對象,我必須將它與列表中的每個其他對象進行比較以計算它的運動。 – Schroedinger 2010-05-16 09:35:58

+1

隨着一些buggerising我實際上有地圖工作正常,我已經測試它的功能適當地工作: 加速f(x:xs)=地圖(speedsList f xs)xs 奇妙地工作。謝謝你們的幫助! – Schroedinger 2010-05-16 10:25:01

相關問題