Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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
Variables 非常简单的Haskell代码没有';“不工作”;变量不在范围内“;_Variables_Haskell_Scope - Fatal编程技术网

Variables 非常简单的Haskell代码没有';“不工作”;变量不在范围内“;

Variables 非常简单的Haskell代码没有';“不工作”;变量不在范围内“;,variables,haskell,scope,Variables,Haskell,Scope,我是哈斯克尔的新手,正在做一些简单的练习。在本练习中,我将编写一个函数,使用递归检查一个列表是否是另一个列表的子集 代码如下: subset [] xs = True subset (x:xs) ys = if elem x ys == False then False else subset (tail xs) (delete x ys) 我收到以下错误消息: C:\Functioneel programmeren\week4.hs:9:43: err

我是哈斯克尔的新手,正在做一些简单的练习。在本练习中,我将编写一个函数,使用递归检查一个列表是否是另一个列表的子集

代码如下:

subset [] xs = True

subset (x:xs) ys = if elem x ys == False then False
                   else subset (tail xs) (delete x ys)
我收到以下错误消息:

C:\Functioneel programmeren\week4.hs:9:43: error:
    Variable not in scope: delete :: t1 -> t t1 -> t t1
这到底是什么意思

这个程序只有在我将“(delete x ys)”更改为“ys”时才起作用,但它并没有完成它应该做的事情


任何帮助都会很好,提前谢谢。

需要导入删除。根据,您应该在开头添加
import Data.List


此外,我猜你的函数
子集
是错误的。
子集[1,2,1][1,2,3]
的结果为
False

删除
需要导入。根据,您应该在开头添加
import Data.List


此外,我猜你的函数
子集
是错误的。
subset[1,2,1][1,2,3]
的结果是
False

在哪里定义了
delete
?我的印象是这是Haskell中的一个内置函数:顺便说一句,你的
if
可以以更可读的形式重写为
elem x ys&&subset…
。通常,在Haskell中,我们倾向于避免
==False
if..then False
。另外,
tail xs
看起来是错误的,你确定你不想改成
xs
吗?
delete
定义在哪里?我的印象是这是Haskell中的一个内置函数:顺便说一句,你的
if
可以以更可读的形式重写为
elem x ys&&subset…
。通常,在Haskell中,我们倾向于避免
==False
if..then False
。另外,
tail xs
看起来有问题,你确定不想用
xs
来代替吗?谢谢,我不知道我必须导入它。我认为结果应该是错误的,因为在你的例子的第二个列表中只有一个1,我不知道子集应该做什么,所以我只是猜测。我猜错了。@Meurth从数学上讲,一个集合不能包含重复项。在这种情况下,
子列表
可能是函数的更好名称,因为列表/序列可能包含重复项。从数学的角度来看,{1,1,1}等于{1,1}等于{1}。@Polygenome谢谢你的回答,我想我的老师可以从中学到一些东西!:汉克斯,我不知道我必须导入它。我认为结果应该是错误的,因为在你的例子的第二个列表中只有一个1,我不知道子集应该做什么,所以我只是猜测。我猜错了。@Meurth从数学上讲,一个集合不能包含重复项。在这种情况下,
子列表
可能是函数的更好名称,因为列表/序列可能包含重复项。从数学的角度来看,{1,1,1}等于{1,1}等于{1}。@Polygenome谢谢你的回答,我想我的老师可以从中学到一些东西!:D