我正在玩一点 Haskell,但在使用带有元组(字符串、列表)的 snd 函数时遇到了这个错误。
snd ("Felix Felices",[("Escarabajos Machacados",52,[f1,f2]),("Ojo de Tigre Sucio",2,[f2])])
ERROR - Cannot find "show" function for:
*** Expression : snd ("Felix Felices",[("Escarabajos Machacados",52,[f1,f2]),("Ojo de Tigre Sucio",2,[f2])])
*** Of type : [([Char],Integer,[(Integer,Integer,Integer) -> (Integer,Integer,Integer)])]
问题是,如果我删除 f1、f2 和 f3 (它们是函数),代码就可以正常工作,它会返回列表。为什么会发生这种情况,为什么我不能将函数放在元组的第二个位置中?
最佳答案
您可以将函数放入元组中。但您无法显示它们 - ghci 想要显示
结果并打印它。它应该如何显示
(转换为字符串)函数?它不能,或者至少没有人愿意选择一种方法来做到这一点(无论如何,这可能是有缺陷的 - 至少我想不出任何没有巨大漏洞的方法,即使我能看到它们)。因此,您无法在 ghci
中计算返回函数或函数集合的内容。
关于haskell - Haskell 中元组内的函数出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5034270/