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
在不进行更改的情况下执行您想要的操作吗?不,这是没有办法的。这个问题有点像问是否可以用“我讨厌咖啡”的方式说“我喜欢苹果”