私は本当にそれを得ることができません。なぜ私たちはそれを必要としますか?つまり、同じ型パラメータを使用すると、同じ型のパラメータでなければならないということです。ハスケルの機能依存性
コンパイラが無限ループを回避するのに役立つと聞きました。誰かがそれについてもっと詳細を教えてもらえますか?
最後に、Real World Haskellの関数依存性の使用法に従わなければならない「パターンと実践」はありますか?
[フォローアップ質問]上記のコードで
class Extract container element where
extract :: container -> element
instance Extract (a,b) a where
extract (x,_) = x
、I「」は、容器と素子の両方について、私は、コンパイラは、このようにこれらの2つのタイプことを推測することができると思う同じタイプの変数を使用同じタイプです。私はGHCiの中で、このコードをしようとしたとき
はしかし、私は次のようなフィードバックを得ました。そのうちの一つが、他の1はまだ未解決のタイプ「要素である理由タイプ「シャア、に指定されてい
*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 help? – lijie