Haskell:不在范围内:数据构造函数

时间:2011-11-04 14:32:53

标签: haskell

今天开始学习haskell for school,我遇到了功能问题。我不明白为什么它不在范围内..

下面是代码:

ff :: [[Char]] -> [[Char]] -> [Char]
ff A B = [[x !! 0, y !! 1] | x <- A, y <- B, (x !! 1) == (y !! 0)]

错误:

md31.hs:2:4: Not in scope: data constructor `A'

md31.hs:2:6: Not in scope: data constructor `B'

md31.hs:2:38: Not in scope: data constructor `A'

md31.hs:2:46: Not in scope: data constructor `B'

提前致谢:)

2 个答案:

答案 0 :(得分:7)

函数参数必须以Haskell中的小写字母开头。

因此,您需要在函数定义中设置AB小写(ab)。

如果标识符的第一个字母是大写的,则假定它是data constructor

答案 1 :(得分:6)

在Haskell中,大写字母表示值是数据构造函数,如:

data Test = A | B

如果您需要变量使用小写:

ff a b = [[x !! 0, y !! 1] | x <- a, y <- b, (x !! 1) == (y !! 0)]