簡體   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