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)
?您提供的代码实际上不会产生任何错误。当提出问题时,请提供足够的信息,以便其他人重现您遇到的确切问题。