以下代码段编译:
{-# 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 次 |
最近记录: |