Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 错误:不明确的类出现“;Ord"; data(Ord a)=>Stree a=Null |叉子(应力a)a(应力a) mkStree::(Ord a)=>[a]->a街 mkStree[]=Null mkStree(x:xs)=叉子(mkStree较小)x(mkStree较大) 其中(较小,较大)=分区(Bool)->[a]->([a],[a]) 分区pxs=([x | x_Haskell_Hugs - Fatal编程技术网

Haskell 错误:不明确的类出现“;Ord"; data(Ord a)=>Stree a=Null |叉子(应力a)a(应力a) mkStree::(Ord a)=>[a]->a街 mkStree[]=Null mkStree(x:xs)=叉子(mkStree较小)x(mkStree较大) 其中(较小,较大)=分区(Bool)->[a]->([a],[a]) 分区pxs=([x | x

Haskell 错误:不明确的类出现“;Ord"; data(Ord a)=>Stree a=Null |叉子(应力a)a(应力a) mkStree::(Ord a)=>[a]->a街 mkStree[]=Null mkStree(x:xs)=叉子(mkStree较小)x(mkStree较大) 其中(较小,较大)=分区(Bool)->[a]->([a],[a]) 分区pxs=([x | x,haskell,hugs,Haskell,Hugs,我无法重现此错误,但我可以进行一些猜测。“不明确类出现”错误意味着范围中有多个“Ord”定义,因此真正的问题不在您包含的代码中。问题是您正在导入的某个模块重新定义了“Ord”出于某种原因,或者您正在代码中重新定义它。无论哪种方式,唯一可行的方法是隐藏或限定其他定义(如Prelude中的默认定义)。如果您尝试使用非标准Ord实现,则需要导入Prelude隐藏Ord: data (Ord a) => Stree a = Null | Fork (Stree a) a (Stree a) m

我无法重现此错误,但我可以进行一些猜测。“不明确类出现”错误意味着范围中有多个“Ord”定义,因此真正的问题不在您包含的代码中。问题是您正在导入的某个模块重新定义了“Ord”出于某种原因,或者您正在代码中重新定义它。无论哪种方式,唯一可行的方法是隐藏或限定其他定义(如Prelude中的默认定义)。如果您尝试使用非标准Ord实现,则需要导入Prelude隐藏Ord:

data (Ord a) => Stree a = Null 
| Fork (Stree a) a (Stree a)

mkStree :: (Ord a) => [a] -> Stree a
mkStree [] = Null
mkStree (x:xs) = Fork (mkStree smaller) x (mkStree larger)
               where (smaller,larger) = partition (<= x) xs                    
partition :: (a->Bool) -> [a] -> ([a],[a])
partition p xs = ([ x | x <- xs, p x],
                  [ y | y <- xs, (not . p) y])

如果您不是有意使用非标准作战需求文件,那么您需要找出第二个作战需求文件的来源,并将其删除或隐藏。但是,您的问题中没有足够的信息让我能够说明如何执行。我希望错误消息也比您在此处列出的要长,因为它应该显示locat对Ord的两个定义进行了重新定义。

我无法重现此错误,但我可以进行一些猜测。“类出现不明确”错误意味着范围中有多个“Ord”定义,因此真正的问题不在您包含的代码中。问题是您正在导入的某个模块重新定义了“Ord”出于某种原因,或者您正在代码中重新定义它。无论哪种方式,唯一可行的方法是隐藏或限定其他定义(如Prelude中的默认定义)。如果您尝试使用非标准Ord实现,则需要导入Prelude隐藏Ord:

data (Ord a) => Stree a = Null 
| Fork (Stree a) a (Stree a)

mkStree :: (Ord a) => [a] -> Stree a
mkStree [] = Null
mkStree (x:xs) = Fork (mkStree smaller) x (mkStree larger)
               where (smaller,larger) = partition (<= x) xs                    
partition :: (a->Bool) -> [a] -> ([a],[a])
partition p xs = ([ x | x <- xs, p x],
                  [ y | y <- xs, (not . p) y])

如果您不是有意使用非标准作战需求文件,那么您需要找出第二个作战需求文件的来源,并将其删除或隐藏。但是,您的问题中没有足够的信息让我能够说明如何执行。我希望错误消息也比您在此处列出的要长,因为它应该显示locat删除Ord的两个定义。

如果从数据声明中删除Ord上下文,会发生什么

import Prelude hiding(Ord)
数据声明上的类上下文非常不直观,我怀疑这可能会导致Hugs出错


在任何情况下,都不应该在数据或新类型声明上添加上下文。它们对于某些GHC扩展都很有用,但我认为Hugs不支持这些情况。

如果从数据声明中删除Ord上下文,会发生什么

import Prelude hiding(Ord)
数据声明上的类上下文非常不直观,我怀疑这可能会导致Hugs出错


在任何情况下,您都不应该在数据或新类型声明上添加上下文。它们对于某些GHC扩展都很有用,但我认为Hugs不支持任何这些情况。

哪一行给了您这个错误?
数据
行?
mkStree
行?两者都有?这段代码似乎没有任何类型错误。哪一行给了您这个错误错误?
data
行?
mkStree
行?两者都有?此代码似乎没有任何类型错误。在即将发布的haskell prime版本中,人们强烈希望删除数据decls上的类上下文。就我个人而言,我希望看到它们正式更改为GHC开发人员为GAD上的类上下文提供的语义T构造函数(其中上下文是构造所必需的,并通过模式匹配重新引入)。在即将发布的haskell prime版本中,人们强烈希望删除数据decls上的类上下文。就个人而言,我希望看到它们正式更改为GHC开发人员为GADT构造函数上的类上下文提供的语义(构建时需要上下文,并通过模式匹配重新引入)。