2016-04-10 55 views
0

例如我有一個表tab = [(1,11), (2,22), (3,33)]和兩個函數。第一個參數是表和Integer的參數,並用表中的值代替Integer。我們假設整數將在桌面上。是否可以在Haskell中編寫沒有顯式參數的函數?

replace :: [(Int, Int)] -> Int -> Int 
replace t i = snd $ head [x | x <- t, fst x == i] 

第二個功能將取代1, 2, 3所有出現與從表中的值的列表。

replaceAll :: [(Int, Int)] -> [Int] -> [Int] 

首先我:

replaceAll = \tab lst -> foldl(\acc x -> acC++ [replace tab x]) [] lst 

然後,

replaceAll = \tab -> foldl(\acc x -> acC++ [replace tab x]) [] 

有沒有寫這個沒有lambda函數的方法嗎?編輯:不需要使用摺疊功能。

+4

你真的不想要一個[無代碼版本的代碼](http://pointfree.io/):'replaceAll = flip foldl([])。翻轉((。)。(++))。翻轉([])。 ((:)。)。 replace' – Zeta

回答

2

這對我的作品

replaceAll = map . replace 

雖然我也很喜歡刪除PARAMS,我覺得這是一個更容易一點,如果你填寫他們的這一定義的PARAMS理解....

replaceAll index vals = map (replace index) vals 
相關問題