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

Tra*_*ac3 3 haskell

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

下面是代码:

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

和错误:

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'
Run Code Online (Sandbox Code Playgroud)

提前致谢 :)

Seb*_*olm 7

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

因此,你需要做AB小写字母(ab你的函数定义).

如果标识符的第一个字母是大写的,则假定它是数据构造函数.


Mac*_*tka 6

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

data Test = A | B
Run Code Online (Sandbox Code Playgroud)

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

ff a b = [[x !! 0, y !! 1] | x <- a, y <- b, (x !! 1) == (y !! 0)]
Run Code Online (Sandbox Code Playgroud)