【发布时间】:2014-05-08 02:10:58
【问题描述】:
当我尝试以 proc 语法(使用 Netwire 和 Vinyl)对 GADT 进行模式匹配时:
sceneRoot = proc inputs -> do
let (Identity camera :& Identity children) = inputs
returnA -< (<*>) (map (rGet draw) children) . pure
我收到了来自 ghc-7.6.3 的(相当奇怪的)编译器错误
我的大脑刚刚爆炸 我无法处理存在或 GADT 数据构造函数的模式绑定。 相反,使用 case-expression 或 do-notation 来解压缩构造函数。 在模式中: Identity cam :& Identity childs当我将模式放入 proc (...) 模式时,我得到了类似的错误。为什么是这样?它是不健全的,还是只是未实现?
【问题讨论】:
-
我认为
->应该是$。 -
@bisserlis:不,是arrow syntax。
-
@DanielWagner:我会,但我不确定我自己是否理解,而且我不愿意发布我无法解释的答案。