什麼下面的函數定義/聲明表示:Haskell的功能定義,而不 - >
maxCollatz :: (Integer, Integer)
我很困惑,因爲我不知道需要什麼樣的參數,並因此產生了什麼。因爲通常在函數定義中有->
。例如, Int -> Int
。
P.S.再次爲這類問題感到抱歉。
什麼下面的函數定義/聲明表示:Haskell的功能定義,而不 - >
maxCollatz :: (Integer, Integer)
我很困惑,因爲我不知道需要什麼樣的參數,並因此產生了什麼。因爲通常在函數定義中有->
。例如, Int -> Int
。
P.S.再次爲這類問題感到抱歉。
maxCollatz
是一對整數(Integer, Integer)
。它不是一個函數,它不需要任何參數,也不會被調用來產生任何東西;它只是是的一對整數。
在Haskell中聲明類型然後實現頂層聲明的語法是定義值的語法。函數是值,所以它們包含在內,但其他所有內容都包含在內。
此函數不接受任何參數,因此它只是一個常量元組(或一對)的兩個整數。
這是一個函數簽名,而不是整個函數的定義。
這是一個常數,而不是一個「真正的函數」(我已經看到了它的爭論)。它返回一個2個整數的元組,但不需要任何東西。
代碼行是一個有效的函數簽名,因爲了解函數不必採用任何參數很重要。
的參數的數目的函數採用被稱爲其arity.
在邏輯,數學和計算機科學中,功能或操作的元數是參數的數量或操作數的功能或操作接受。
在這種情況下,該函數需要0個參數並且是arity0。具有arity0的函數通常被稱爲常量函數或nullary函數。
在Python有類似的功能應該是這樣的
def pair():
return (1,1)
如果你熟悉Python很顯然,這個函數沒有參數,並返回一對數字。這正是您提供的功能簽名描述的內容。
'maxCollatz'是一對'整型',不是函數。 Haskell中的函數總是隻有一個參數,所以沒有0個參數函數:http://conal.net/blog/posts/everything-is-a-function-in-haskell –
基於它的名字,我認爲它是一對整數或⊥,並且沒有人知道哪一個。 – dfeuer