给定Haskell表示法的含义

时间:2013-10-04 13:51:05

标签: haskell functional-programming

什么是

squares xs = [x*x|x<-xs]

平均值

就像我理解[x*x|x<-[1,2,3]]

一样

准确地说's'来自哪里

3 个答案:

答案 0 :(得分:3)

xs是传递给squares函数的列表参数。通常,在haskell中的变量名称之后使用s来表示列表(IE,将名称复数化以表示参数中的多个值)。

答案 1 :(得分:1)

根据Philip Walder的说法,这份名单是一种奇怪的动物,只有头部和尾部。尾部由头部和尾部组成,依此类推,直到它为空。

例如功能:

squareRec :: [Integer] -> [Integer]
squareRec [] = []
squareRec (x:xs) = x*x : squareRec xs

解决方案的工作方式如下:

squareRec[1,2,3]
= squareRec(1 : (2 : (3 : [])))
= 1*1 : squareRec(2 : (3 : []))
= 1*1 : (2*2 : squareRec(3 : []))
= 1*1 : (2*2 : (3*3 : squareRec []))
= 1*1 : (2*2 : (3*3 : []))
= 1 : (4 : (9 : []))

此处头部为x(元素),尾部为列表的其余部分(列表)。返回的列表在squareRec函数中传递,而我们得到一个空列表,定义为squareRec [] = []

我们知道1:(4:(9:[])) = [1,4,9]

答案 2 :(得分:0)

xs只是一个变量(传递给squares的参数)。在您的第二个示例中,您只需将xs替换为[1,2,3]