我正在學習Haskell使用學習你一個Haskell。在第54頁是 實現負責的,像這樣:Haskell類型定義,=>等
take' :: (Num i, Ord i) => i -> [a] -> [a]
take' n _
| n <= 0 = []
take' _ [] = []
take' n (x:xs) = x : take' (n-1) xs
我瞭解所有的從第一行代碼分開。
::我明白這是一個類型定義的意思?
(Num i,Ord i)是一個元組。元組的第一個元素必須是 數字,足夠公平。第二個參數必須能夠被訂購。 參數是一樣的 - 都是我。這意味着 的類型必須相同?
爲什麼不是(Num i,Ord j)?是不是第二個元組元素 引用列表?哪些可以是任何類型?
=>是什麼意思?
i - > [a] - > [a]表示第一個參數是數字嗎?第二參數是任何 類型列表,第三參數是任何類型列表。所以這是說第一個參數 numeric,第二個參數是任何類型的列表,並且它返回任何 類型的列表。我想這是可以理解的。
您暗示了這一點,但爲了使它更加精確:比較中的n <='部分使用了'Ord',但是按照(heh)與'0'比較,我們需要'Num'。這就保證了'0'文字可以代表與'n'相同的類型(因爲'0'實際上是'fromInteger(0 :: Integer)',其中'fromInteger :: Num i => Integer - > i ')。 – 2013-04-10 19:19:16