相关疑难解决方法(0)

为什么长度为包含2个元素的元组返回1,并为具有更多元素的元组提供错误?

我正在使用" 第一原理的Haskell编程 " 书来学习Haskell ,并且在第4章"基本数据类型"的末尾,我遇到了让我感到困惑的事情.这本书提到了一个功能,length并说它适用于Listss.一切都很好,但是当我length用各种Tuples 尝试这个功能时,我看到的东西让我很困惑:

首先,让我们看看类型length:

:t length
length :: Foldable t => t a -> Int
Run Code Online (Sandbox Code Playgroud)

好的,所以我在上面读到"带一个可折叠的,我认为这是一个方便的列表,并返回一个Int,即列表中元素的数量." 因此,我的第一个困惑:为什么以下工作:

length (1, 1)
1
Run Code Online (Sandbox Code Playgroud)

因为对我而言,似乎我刚刚传递了一个带有两个元素的元组length,它返回1.是元组列表吗?元组是否可折叠?当然,为什么1呢?

现在我更进一步:

length (1, 1, 1)

<interactive>:6:1:
    No instance for (Foldable ((,,) t0 t1))
      arising from a use of ‘length’
    In the expression: length (1, 1, 1)
    In an equation for ‘it’: it = length (1, 1, 1)

<interactive>:6:9:
    No instance …
Run Code Online (Sandbox Code Playgroud)

haskell

26
推荐指数
2
解决办法
1858
查看次数

标签 统计

haskell ×1