Haskell 没有 -> 的函数定义

Haskell Function Definition without ->

以下函数定义/声明的含义:

maxCollatz :: (Integer, Integer)

我很困惑,因为我不确定参数采用什么以及产生什么。因为函数定义中通常有->。例如Int -> Int

P.S。再次抱歉提出此类问题。

此函数不接受任何参数,因此它只是两个整数的常量元组(或对)。

这是函数签名,不是完整的函数定义。

这是一个常量,而不是 "true function"(我看到它有争议)。它 returns 一个包含 2 个整数的元组,但不接受任何内容。

maxCollatz是一对整数(Integer, Integer)。它不是一个函数,它没有参数,也不会被调用来产生任何东西;它只是一对整数。

声明类型然后在Haskell中实现顶级声明的语法是定义值的语法。函数是值,因此它们包含在其中,但其他所有内容也是如此。

该行代码是一个有效的函数签名,因为了解函数不必采用任何参数很重要。

一个函数接受的参数数量被称为它的 arity.

In logic, mathematics, and computer science, the arity of a function or operation is the number of arguments or operands the function or operation accepts.

在这种情况下,该函数采用 0 个参数并且是 0 个参数。具有 0 个参数的函数通常被称为常量或 nullary 函数。


在 Python 中类似的函数如下所示

def pair():
    return (1,1)

如果您熟悉 Python,则很明显此函数不接受任何参数,并且 returns 是一对数字。这正是您提供的函数签名所描述的内容。