我無法真正瞭解它。我們爲什麼需要它?我的意思是如果我使用相同的類型參數,我認爲這意味着它們應該是相同的類型。Haskell的函數依賴關係
我聽說它可以幫助編譯器避免無限循環。有人能告訴我更多關於這方面的細節嗎?最後,在真實世界的Haskell中,我們應該遵循什麼樣的模式和實踐來使用函數依賴嗎?
[後續問題]
class Extract container element where
extract :: container -> element
instance Extract (a,b) a where
extract (x,_) = x
在上面的代碼中,我使用的相同類型變量「a」爲兩個容器和元件,我想因此,編譯器可以推斷,這兩種類型的是同一類型。
但是,當我在GHCI嘗試這種代碼,我得到了以下意見:
*Main> extract('x',3)
<interactive>:1:0:
No instance for (Extract (Char, t) element)
arising from a use of `extract' at <interactive>:1:0-13
Possible fix:
add an instance declaration for (Extract (Char, t) element)
In the expression: extract ('x', 3)
In the definition of `it': it = extract ('x', 3)
當其中一人已被指定爲類型「字符」,爲什麼另一種是仍然沒有得到解決型「元素「?
確實http://www.haskell.org/haskellwiki/Functional_dependencies有幫助嗎? – lijie 2010-11-25 14:36:19