8

時々、Haskell がインスタンス ヘッドのみに一致するという「機能」に出くわします。つまり、

instance (a ~ NewDataTyp b) => C a

はどのような型にも一致するようになりました。つまりC、プログラム内で willの別のインスタンス宣言を書くと、コンテキストのために競合する可能性がない場合でも、エラーになります。時には、克服するのに多くの努力が必要です。この制限を回避するために、何百行ものコードを再構築する必要がありました。a ~ NewDataTyp b

表現力を優先して設計された言語拡張または派生言語 (Curry? Agda?) はありますか? これにより、(a) 型クラスの世界の開放性 (b) 多項式時間型チェックが犠牲になる可能性があります。

編集-- 質問に興味がある人は、このページも興味深いかもしれません: http://www.haskell.org/haskellwiki/Future_of_Haskell

4

1 に答える 1

1

それだけの価値はありますが、Scala は、あなたが書いたものの多かれ少なかれ文字通りの翻訳を受け入れます。それがどれほど役立つかはわかりません。

trait C[T]
case class NewDataType[T]()

implicit def letItBeInjectiveWhyNot[K[_],T]: K[T] =:= K[T]

implicit def cIsh[A,S](implicit ev: A =:= NewDataType[S]): C[A]
implicit def another: C[Int]

implicitly[C[NewDataType[String]]]
implicitly[C[Int]]
于 2013-01-15T06:27:29.680 に答える