繁体   English   中英

没有 - >的Haskell函数定义

[英]Haskell Function Definition without ->

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

maxCollatz :: (Integer, Integer)

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

PS再次抱歉这类问题。

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

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

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

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

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

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


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

def pair():
    return (1,1)

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM