3

クラス制約が暗示されるように、データカインドのすべてのメンバーが型クラスを満たすように指定することは可能ですか? 例えば

data AB = A | B
class Foo (a :: AB) where get :: proxy a -> String
instance Foo A where get _ = "A"
instance Foo B where get _ = "B"

-- note lack of constraint here
get' :: proxy (a :: AB) -> String
get' = get

基本的aに は であるABため、 for のインスタンスがあると確信してFooいます。ありそうにないと思いますが、どこでFoo辞書を入手するのでしょうか? -- しかし、私は私の日にいくつかの魔法を見てきました.

4

1 に答える 1

6

いいえ、できません。主な問題は、あなたが言及したように、辞書を取得するものがないことです。ABしかし、他の問題は、すべての型がのインスタンスであるというあなたの主張Fooが間違っていることです。

type family Broken :: AB where
于 2016-12-13T23:04:58.327 に答える