小编Dmi*_*sky的帖子

为什么编译器无法将类型'a == a'与'True'匹配为类型系列?

是否有一些原因导致此代码未编译:

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)

编译得好吗? …

haskell type-families data-kinds

8
推荐指数
1
解决办法
187
查看次数

标签 统计

data-kinds ×1

haskell ×1

type-families ×1