Haskell 中的 Prelude 函式map將函式應用于輸入串列:
map :: (a -> b) -> [a] -> [b]
如果我們想將一個元素應用到一個函式串列中,我們可以通過遞回來做到這一點:
functionMap :: a -> [a -> b] -> [b]
functionMap element functions = case functions of
[] -> []
x:xs -> x element : functionMap element xs
如果可能的話,我們如何使用高階函式(例如foldl、foldr或)來簡化上述遞回map?
uj5u.com熱心網友回復:
您可以map將functions每個應用到element:
functionMap :: a -> [a -> b] -> [b]
functionMap element functions = map (\f -> f element) functions
可以使用$運算子將??其縮短為:
functionMap :: a -> [a -> b] -> [b]
functionMap element functions = map ($ element) functions
要不就:
functionMap :: a -> [a -> b] -> [b]
functionMap element = map ($ element)
(又作functionMap = map . flip id:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/487890.html
標籤:哈斯克尔
上一篇:寫一個沒有大小寫的空殼函式
下一篇:我怎么能操縱串列理解?
