为什么我可以在Haskell中打印带有5个元素而不是6个元素的元组?

was*_*stl 2 haskell hugs

我试着打印下面的元组

(1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误

ERROR - Cannot find "show" function for:
*** Expression : (1,2,3,4,5,6)
*** Of type    : (Integer,Integer,Integer,Integer,Integer,Integer)
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用以下元组

(1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

一切都像一个魅力.

我的猜测是Haskell只Show为元组定义了最多五个元素(因为具有5个元素的元组显然是另一种类型而不是具有6个元素的元组).但不知何故,我很愚蠢地找到证据.

所以我的问题是:

为什么会如此,如何打印一个包含6个元素的元组(因为我似乎无法将元组放在instance定义的头部)?

编辑:我正在使用Hugs

Mat*_*hid 7

不要使用Hugs.

它已经多年没有维护,并且不支持现代Haskell实现应该支持的一半.(Hugs支持"大部分"Haskell '98,这是语言规范的先前版本.)

您可能会在互联网上找到与GHC完美配合的示例代码,但与Hugs一起失败.您将花费数年时间来弄清楚为什么您的代码不起作用,只是最终意识到"哦,它确实有用 - 只是没有Hugs".