Haskell的函数列表

4

据说我在Haskell中有这些类型和结果相同的函数:

add_one :: Integer -> Integer
add_one n = n + 1

multiply_by_five :: Integer -> Integer
multiply_by_five n = n * 5

subtract_four :: Integer -> Integer
subtract_four n = n - 4

add_ten :: Integer -> Integer
add_ten n = n + 10

如何将它们制作成列表,以便可以将其应用于单个整数类型参数,例如:
map ($ single_argument) list_of_functions  

?


你想要什么样的结果?是一系列结果的列表,还是你想要对函数进行排序? - bennofs
1
在 Haskell 中,您可以通过在方括号内列出元素来创建列表,例如 [1,2,3]。 - Ingo
为什么不使用点符号将“字符串”函数连接起来? - Rob Audenaerde
1个回答

10

Haskell中构建列表是通过使用(:)和[]列表构造器完成的,如下所示:

fList :: [Integer -> Integer]
fList = add_one : multiply_by_five : subtract_four : add_ten : []

-- or by using some syntactic sugar
fList' = [add_one, multiply_by_five, subtract_four, add_ten]

您确实可以映射应用程序:

map ($ 3) fList

map ($ 3) fs == ($ 3) <$> fs == [($ 3)] <*> fs == fs <*> [3] == sequenceA fs <*> pure 3,同时需要使用 Control.Applicative - Will Ness

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接