[英]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.