Guards上的解析错误(Haskell)

时间:2017-04-27 20:45:52

标签: parsing haskell input indentation

我有以下代码

reconocerCliente :: Cliente -> Cliente -> Cliente
reconocerCliente cliente otroCliente
       | verificarCliente cliente otroCliente = cliente {amigos = otroCliente : amigos}
       | otherwise = id cliente

这是使用过的功能:

verificarCliente :: Cliente -> Cliente -> Bool
verificarCliente cliente otroCliente = (esElMismo cliente otroCliente) && not(any(== otroCliente) amigos)

esElMismo :: Cliente -> Cliente -> Bool
esElMismo (Uncliente nombre _ _ _) (Uncliente otroNombre _ _ _) = nombre /= otroNombre

每次编译时我都会得到“错误:输入错误:解析'|'”

正好在这一行:

   | verificarCliente cliente otroCliente = cliente {amigos = otroCliente : amigos}

我不知道我的问题是否是缩进(使用空格而不是制表符)或我的警卫

1 个答案:

答案 0 :(得分:0)

您粘贴的代码没有语法错误:当我将其粘贴到.hs文件中时,它的工作正常,并且Cliente具有适当的定义。

您遇到的一个错误不会导致您收到错误消息:

cliente {amigos = otroCliente : amigos}

此处第二次出现amigos的类型错误:请记住amigos是您的记录定义的函数。它与cliente没有隐式模式匹配。相反,你可以写一些类似的东西:

cliente {amigos = otroCliente : amigos cliente}