Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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

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
List 我的Haskell程序将集合转换为列表时出错_List_Haskell_Types_Set - Fatal编程技术网

List 我的Haskell程序将集合转换为列表时出错

List 我的Haskell程序将集合转换为列表时出错,list,haskell,types,set,List,Haskell,Types,Set,我是一个初学者程序员,我已经为我的集合创建了一个数据类型。然后,我编写了一个函数将它们转换为列表,但我一直收到表达式的以下错误消息: toList 3 :-: 4 :-: 5 :-: Empty 约束中的非类型变量参数:Num(设置a) (使用flexibleContext允许此操作) 检查推断类型时 对所有a。(Num(Set a),Num[a])=>Set[a] 这是我的密码: infixr 5 :-: data Set a = Empty | a :-: (Set a) derivi

我是一个初学者程序员,我已经为我的集合创建了一个数据类型。然后,我编写了一个函数将它们转换为列表,但我一直收到表达式的以下错误消息:

toList 3 :-: 4 :-: 5 :-: Empty 
约束中的非类型变量参数:Num(设置a) (使用flexibleContext允许此操作) 检查推断类型时 对所有a。(Num(Set a),Num[a])=>Set[a] 这是我的密码:

infixr 5 :-:
data Set a = Empty | a :-: (Set a) deriving (Show, Read, Eq, Ord)

toList :: Set a -> [a]
toList Empty = []
toList (x :-: xs) =  x : toList xs

问题是
toList 3:-:4:-:5:-:Empty
被解析为
(toList 3:-:4:-:5:-:Empty
,但您实际上想要
toList(3:-:4:-:5:-:Empty)
。要使其工作,您需要编写后者,或者使用
$
,如下所示:
toList$3:-:4:-:5:-:Empty

我无法复制。此代码根本没有提到
Num
,因此不清楚错误来自何处。我尝试将函数toList应用于集合3:-:4:-:5:-:Empty。我不知道这是否有帮助?请发布您在GHCitoList 3:-:4:-:5:-:Empty中键入的确切文本,该文本将被解析为
(toList 3):-:4:-:5:-:Empty
,因此
4
参数设置为
。请尝试使用
toList(3:-:4:-:5:-:Empty)
。谢谢,这样做非常有效。我可以在代码中更改任何内容以使程序按预期运行吗?您的意思是希望
toList 3:-:4:-:5:-:Empty
在不进行更改的情况下执行您想要的操作吗?不,这是没有办法的。这个问题有点像问是否可以用“我讨厌咖啡”的方式说“我喜欢苹果”