Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据构造函数不在范围内-Haskell_Haskell_Constructor - Fatal编程技术网

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

数据构造函数不在范围内-Haskell,haskell,constructor,Haskell,Constructor,我是Haskell的新手,所以如果这对某些人来说是一个明显的错误,我道歉。我一直在尝试向元组列表中添加元组,但是在GHCi中输入:addRecord tData Hello Adelle时,我遇到了一个错误,例如数据构造函数不在范围内:Adelle::String和数据构造函数不在范围内:Hello::String 我做了一些研究,一些人建议其他人,他们的变量必须是小写,我的是小写。所以我不确定是什么导致了这个问题。非常感谢您的帮助 我的代码如下: type Sales=(字符串,字符串,Int

我是Haskell的新手,所以如果这对某些人来说是一个明显的错误,我道歉。我一直在尝试向元组列表中添加元组,但是在GHCi中输入:
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),也可以使用更简单的方法保存到不同的变量。