数据构造函数不在范围内-Haskell
我是Haskell的新手,所以如果这对某些人来说是一个明显的错误,我道歉。我一直在尝试向元组列表中添加元组,但是在GHCi中输入:数据构造函数不在范围内-Haskell,haskell,constructor,Haskell,Constructor,我是Haskell的新手,所以如果这对某些人来说是一个明显的错误,我道歉。我一直在尝试向元组列表中添加元组,但是在GHCi中输入:addRecord tData Hello Adelle时,我遇到了一个错误,例如数据构造函数不在范围内:Adelle::String和数据构造函数不在范围内:Hello::String 我做了一些研究,一些人建议其他人,他们的变量必须是小写,我的是小写。所以我不确定是什么导致了这个问题。非常感谢您的帮助 我的代码如下: type Sales=(字符串,字符串,Int
addRecord tData Hello Adelle
时,我遇到了一个错误,例如数据构造函数不在范围内:Adelle::String
和数据构造函数不在范围内:Hello::String
我做了一些研究,一些人建议其他人,他们的变量必须是小写,我的是小写。所以我不确定是什么导致了这个问题。非常感谢您的帮助
我的代码如下:
type Sales=(字符串,字符串,Int)
tData::[销售]
tData=[(“没有谎言”,“肖恩·保罗壮举,杜阿·利帕”,100),
(《恐惧与喜悦》,《通讯员》,120)]
addRecord::[Sales]->String->String->[Sales]
addRecord数据集songName艺术家=数据集+[(songName,艺术家,1)]
您需要在字符串周围加上双引号:
addRecord tData "Hello" "Adelle"
我觉得这有点愚蠢。非常感谢@Aplet123。有没有一种方法可以将addRecord返回的结果实际保存到tData中,这样列表就会改变,而不仅仅是在末尾添加用户输入来打印tData列表。在Haskell中,变量是不可变的。这是核心语言设计的一部分。如果要更改数据,可以使用IORef/STRef(每次要编辑/检索值时都会涉及一个monad),也可以使用更简单的方法保存到不同的变量。