什麼是Haskell中'嵌套'模式。我在任何地方都能聽到這個詞,但我不確定它的實際含義。你如何定義它?任何例子?什麼是Haskell中的嵌套模式?
在此先感謝。
編輯補充:
「模式可以包含文本和嵌套的圖案,如在實施例中(如在課本上請求的引用):
addPair (0,y) = y
addPair (x,y) = x+y
shift :: ((Int,Int),Int) -> (Int,(Int,Int))
shift ((x,y),z) = (x,(y,z))
什麼是Haskell中'嵌套'模式。我在任何地方都能聽到這個詞,但我不確定它的實際含義。你如何定義它?任何例子?什麼是Haskell中的嵌套模式?
在此先感謝。
編輯補充:
「模式可以包含文本和嵌套的圖案,如在實施例中(如在課本上請求的引用):
addPair (0,y) = y
addPair (x,y) = x+y
shift :: ((Int,Int),Int) -> (Int,(Int,Int))
shift ((x,y),z) = (x,(y,z))
這意味着可以匹配針對圖案在您的示例中,(x, y)
圖案包含在較大的((x, y), z)
圖案內。嵌套可以是任意深的,例如以下所有內容都是合法的:
f ((x2,x0),x1) =()
f' (((x3, x2),x0),x1) =()
f'' ((((x4,x3), x2),x0),x1) =()
f''' (((((x5,x4),x3), x2),x0),x1) =()
等。這也延伸到列表和代數數據類型:
f [[x]] =()
f' [[[x]]] =()
g (Just (Just x)) =()
g' (Just (Just (Just x))) =()
這裏,f
需要列出清單,f'
採用列表的列表清單,g
需要一個Maybe
包含其他Maybe
(即Maybe (Maybe a)
),和g'
需要Maybe (Maybe (Maybe a))
雖然我可能是錯的,我只能從上下文中的「嵌套的」模式會是這樣的addPair x = x
或addPair x y = x+y
承擔。我相信你的論點是一種模式。在大多數編程語言中,這將是一個簡單的x y
。而在這種情況下,你的論點模式可能更復雜,例如(x, y)
或((x, y), z)
。
嵌套可能意味着「元組或列表」或「非平面元組或列表」。
我猜測它可能與Haskell中大量使用的遞歸邏輯有關。 – Pieter 2011-05-08 10:44:05
@Pieter應該比這更簡單 – maclunian 2011-05-08 10:47:52
小心舉一個你聽到的例子嗎?據我所知,這個詞沒有規範意義。 – Ingo 2011-05-08 10:54:52