我試圖從Haskell Road to Logic 學習Haskell和跨越這個例子就是:模式匹配遍歷列表
mnmInt :: [Int] -> Int
mnmInt [] = error "empty list"·
mnmInt [x] = x
mnmInt (x:xs) = min x (mnmInt xs)
我瞭解的功能需要的Int
列表 - 檢查是否爲空 如果不是 檢查它是否爲帶有1個int的列表,如果是的話返回x 如果不是的話 插入mnmInt並將xs參數設置爲min。
它是如何到達基本情況? xs代表什麼?
分鐘實現:
min' :: Int -> Int -> Int
min' x y | x <= y = x
| otherwise = y
不採取的陣列。
我明白遞歸。我想我沒有得到模式匹配 匹配每個元素分離地類似於grep。 (或者它是一個正則表達式的東西?) – raam86
好吧,我不確定你是否明白這一點。模式匹配與正則表達式無關,儘管您可以通過使用'case'來匹配正則表達式匹配的結果。它只是試圖尋找一種與你寫的模式相匹配的類型。 – Wes
所以(x:xs)結構與頭部和尾部匹配的任何列表? 如果是這樣 - 什麼花費名單?它如何知道迭代? – raam86