填寫沒有答案關鍵字的學習指南。我需要的功能(FS)的列表應用的每個功能至(v)使用地圖的值在一行如何在函數列表中將函數列表中的每個函數應用到Haskell中的一行中的值
applyEach :: [a->b] -> a -> [b]
applyEach fs v = map (\v -> fs v) fs
這是據我可以得到的。據我所知,因爲FS是在功能列表中我不能申請FS的值,但我不知道如何使用每個功能列表
填寫沒有答案關鍵字的學習指南。我需要的功能(FS)的列表應用的每個功能至(v)使用地圖的值在一行如何在函數列表中將函數列表中的每個函數應用到Haskell中的一行中的值
applyEach :: [a->b] -> a -> [b]
applyEach fs v = map (\v -> fs v) fs
這是據我可以得到的。據我所知,因爲FS是在功能列表中我不能申請FS的值,但我不知道如何使用每個功能列表
您可以使用該$
(f $ x = f x
):
Prelude> let fs = [(+1), (+2)]
Prelude> map (\f -> f 2) fs
[3,4]
Prelude> map ($ 2) fs
[3,4]
這工作,因爲($ x)
相當於一個section到\f -> f $ x
這相當於\f -> f x
(地圖中的功能)
或者,你可以導入Control.Applicative
和使用<*>
和列表Applicative
實例:
Prelude Control.Applicative> let fs = [(+1), (+2)]
Prelude Control.Applicative> map (\f -> f 2) fs
[3,4]
Prelude Control.Applicative> fs <*> [2]
[3,4]
這實際上是一個填充在 - 空白問題:applyEach :: [a-> b] - > a - > [b] applyEach fs v = map(__________)編輯:沒關係,我明白你在說什麼。 – Mdomin45
($ v)
是,給定一個功能f
的函數,計算f v
。所以,只是映射過fs
:
map ($ v) fs
你的意思是,'[a-> b] - > a - > [b]'? (不是一個'b',而是它們的一個列表?) –
你想象'map($ v)fs'那樣'applyEach fs v = map(\ f - > f v)fs',正如其他人所說的那樣。 –
[在Haskell中應用函數列表]的可能的重複(http://stackoverflow.com/questions/28400825/applying-a-list-of-functions-in-haskell) –