是否有一些原因导致此代码未编译:
type family Foo a b :: Bool where
Foo a b = a == b
foo :: Foo a b ~ True => Proxy a -> Proxy b
foo _ = Proxy
bar :: Proxy a -> Proxy a
bar = foo
Run Code Online (Sandbox Code Playgroud)
有错误:
Couldn't match type ‘a == a’ with ‘'True’
Expected type: 'True
Actual type: Foo a a
Run Code Online (Sandbox Code Playgroud)
但如果我将类型族定义更改为
type family Foo a b :: Bool where
Foo a a = True
Foo a b = False
Run Code Online (Sandbox Code Playgroud)
编译得好吗? …