小编Ita*_*man的帖子

使用类型相等约束修复的歧义类型变量

我正在研究一个monadic流媒体库,我遇到了一个我不理解的类型.我已设法将其减少到以下示例:

{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}

class Foo a b where
  type E a b :: *
  (>->) :: a -> b -> E a b

data Bar x

instance Foo (Bar x) (Bar x) where
  type E (Bar x) (Bar x) = Bar x
  (>->) = undefined

x = undefined :: Bar a
y = undefined :: Bar Int

z = x >-> y
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我得到:

No instance for (Foo (Bar a0) (Bar Int))
  arising from a …
Run Code Online (Sandbox Code Playgroud)

haskell

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

标签 统计

haskell ×1