Haskell函数定义没有 - >

时间:2015-05-24 11:14:26

标签: function haskell declaration definition

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

maxCollatz :: (Integer, Integer)

我感到困惑,因为我不确定参数是什么,因此产生了什么。因为通常函数定义中有->。 E. g。 Int -> Int

P.S。再次抱歉这类问题。

4 个答案:

答案 0 :(得分:8)

maxCollatz是一对整数(Integer, Integer)。它不是一个功能,它不需要任何参数,也不会被称为产生任何东西;它只是 一对整数。

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

答案 1 :(得分:1)

代码行是有效的函数签名,因为理解函数不必接受任何参数非常重要。

函数所采用的参数数量称为arity.

  

在逻辑学,数学和计算机科学中,函数或操作的优点是函数或操作接受的参数或操作数的数量。

在这种情况下,函数接受0个参数并且是arity 0.具有arity 0的函数通常被称为常量或nullary函数。

在Python中,类似的函数看起来像这样

def pair():
    return (1,1)

如果您熟悉Python,很明显该函数不带参数并返回一对数字。这正是您提供的功能签名所描述的内容。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这是一个函数签名,而不是整个函数定义。

这是一个常数,而不是一个真正的功能" (我已经看过辩论了)。它返回2个整数的元组,但不会取任何东西。