如何使用haskell中列表中的高阶函数?

时间:2018-05-26 22:28:21

标签: haskell

我自己学习haskell,我对如何

有很多疑问
[f x | ......]

的工作原理。例如,我有这个表达式:

[ f x | f<- [(+1),(*2),(3-)], x<-[1..(f 1)]]

它返回:

[2,3,2,4,2,1]

但我真的不明白这个结论是怎么回事。

有人可以帮我解释一下吗?我已多次阅读文档,但我不明白。

谢谢!

1 个答案:

答案 0 :(得分:4)

if let button2 = statusItem2.button {
        button2.addSubview(statusBarView())
    }

说&#34;选择f <- [(+1), (*2), (3-)] &#34;的任何值从列表中。

f

表示&#34;从列表x <- [1..(f 1)] 中选择任何x,对于我们选择的[1..f 1]&#34;。如果f被选为例如。在第1步中f,此列表将为(3-)

[1,2]

表示&#34;在输出列表中为我们之前选择的[ f x | ... ] f x&#34;生成值f,例如。如果xf = (3-),则我们会在列表中加入x = 2。这恰好是您作为输出获得的列表中的最终值。

这是针对所有f x = 3 - 2 = 1f组合完成的,直到我们获得最终输出。

下图说明了xf的组合如何产生输出。

x

将其作为自下而上的选项阅读:我们选择[ 2 , 3 , 2 , 4 , 2 , 1 ] x=1 x=2 x=1 x=2 x=1 x=2 f=(+1) f=(*2) f=(3-) ,然后选择f,然后在输出中加入x