Haskell:添加修复这些类型变量的类型签名?
我试图得到两个列表的对称差: 例如:Haskell:添加修复这些类型变量的类型签名?,haskell,signature,Haskell,Signature,我试图得到两个列表的对称差: 例如: [1,2,3] [2,3,5] 结果是[1] 这是我的代码: getlist _ []=[] getlist [] _ = [] getlist (x:xs) ys = if isexist x ys then x++ getlist xs ys else getlist xs ys isexist a [] = False isexist
[1,2,3] [2,3,5]
结果是[1]
这是我的代码:
getlist _ []=[]
getlist [] _ = []
getlist (x:xs) ys = if isexist x ys
then x++ getlist xs ys
else
getlist xs ys
isexist a [] = False
isexist a (x:xs) = if a == x
then True
else isexist a xs
有一个错误:
类型变量“a0”不明确可能的修复:添加修复这些类型变量的类型签名
这是什么意思?如何修复它?要修复错误,正如@Joker\u vD所指出的,您所要做的就是将您的
++
替换为:
要了解两者之间的区别,您应该查看类型签名:
(:) :: a -> [a] -> [a]
(++) :: [a] -> [a] -> [a]
如您所见,:
获取一个元素和一个列表并返回一个列表<另一方面,代码>++有两个列表
如果要更有效地设置交叉点/差异,您应该查看数据。设置和数据。列出包
请注意,修复错误后,程序的输出将与您想要的不匹配。你应该调查为什么会发生这种情况,并且应该是一个简单的解决办法 要纠正错误,正如@Joker\u vD指出的那样,您只需将++
替换为:
要了解两者之间的区别,您应该查看类型签名:
(:) :: a -> [a] -> [a]
(++) :: [a] -> [a] -> [a]
如您所见,:
获取一个元素和一个列表并返回一个列表<另一方面,代码>++
有两个列表
如果要更有效地设置交叉点/差异,您应该查看数据。设置和数据。列出包
请注意,修复错误后,程序的输出将与您想要的不匹配。你应该调查为什么会发生这种情况,并且应该是一个简单的解决办法 要纠正错误,正如@Joker\u vD指出的那样,您只需将++
替换为:
要了解两者之间的区别,您应该查看类型签名:
(:) :: a -> [a] -> [a]
(++) :: [a] -> [a] -> [a]
如您所见,:
获取一个元素和一个列表并返回一个列表<另一方面,代码>++
有两个列表
如果要更有效地设置交叉点/差异,您应该查看数据。设置和数据。列出包
请注意,修复错误后,程序的输出将与您想要的不匹配。你应该调查为什么会发生这种情况,并且应该是一个简单的解决办法 要纠正错误,正如@Joker\u vD指出的那样,您只需将++
替换为:
要了解两者之间的区别,您应该查看类型签名:
(:) :: a -> [a] -> [a]
(++) :: [a] -> [a] -> [a]
如您所见,:
获取一个元素和一个列表并返回一个列表<另一方面,代码>++
有两个列表
如果要更有效地设置交叉点/差异,您应该查看数据。设置和数据。列出包
请注意,修复错误后,程序的输出将与您想要的不匹配。你应该调查为什么会发生这种情况,并且应该是一个简单的解决办法 然后x:(getlist xs ys)
?您提供的代码实际上不会产生任何错误。提问时,请提供足够的信息,让其他人重现您遇到的确切问题。然后x:(getlist xs ys)
?您提供的代码实际上不会产生任何错误。提问时,请提供足够的信息,让其他人重现您遇到的确切问题。然后x:(getlist xs ys)
?您提供的代码实际上不会产生任何错误。提问时,请提供足够的信息,让其他人重现您遇到的确切问题。然后x:(getlist xs ys)
?您提供的代码实际上不会产生任何错误。当提出问题时,请提供足够的信息,以便其他人重现您遇到的确切问题。