我遇到了由 Happy 生成的看似无效的代码。问题归结为 GHC 没有为函数推断出多类型签名。这是一个例子:
{-# Language MagicHash #-}
f x = ()
main = pure (f 1#)
由于 GHC 正在推断f :: a -> ()
where a :: *
,因此失败了
• Couldn't match a lifted type with an unlifted type
When matching the kind of ‘GHC.Prim.Int#’
• In the first argument of ‘f’, namely ‘1#’
In the first argument of ‘pure’, namely ‘(f 1#)’
In the expression: pure (f 1#)
我可以打开任何语言编译指示来编译此代码吗?我知道理论上我可以只添加类型签名,但是因为这是由 Happy 生成的代码,我不想手动修改任何内容。