以下代码段编译:
{-# LANGUAGE TypeFamilies #-}
type family Foo a b
f :: (Foo a b ~ Int) => a -> b -> b
f = error ""
Run Code Online (Sandbox Code Playgroud)
但是中缀类型操作符似乎表现不同:
{-# LANGUAGE TypeFamilies #-}
type family a \\ b
f :: (a \\ b ~ Int) => a -> b -> b
f = error ""
Run Code Online (Sandbox Code Playgroud)
GHC抱怨第二个论点\\应该是善意的*,但是b ~ Int有点善意Constraint.当然这可以用parens修复,但我想知道是否还有另一种方法.
我试过设置我的运营商与固定性声明的优先级infixl 9 \\,但这并不解决问题,这表明的优先级~是至少9(如果我解释是正确的).我尝试使用这个答案中的技巧让GHCi告诉我优先级~,但它没有用.
从技术上讲,~可能不是一个类型操作符,它更像是一个类似的词法结构,,但问题仍然存在:
~绑这么紧?(注意:这个问题询问类型函数的优先级,但它没有说明任何内容~.)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |