GHC 9.12.1中如何用正确语法替代已弃用的void#?
GHC 9.12.1中TemplateHaskell引用未装箱单元元组的正确语法
GHC 9.12里void#已被弃用,官方推荐用未装箱单元元组(# #)替代,但TemplateHaskell的引号语法'foo无法直接解析(# #)这种特殊语法,你需要通过mkName手动构造它对应的内部名称Unit#。
修改后的代码如下:
{-# LANGUAGE MagicHash #-} {-# LANGUAGE TemplateHaskellQuotes #-} import GHC.Prim import Language.Haskell.TH ts :: [Name] ts = [mkName "Unit#"]
原因是:GHC内部将未装箱单元元组(# #)映射为名称Unit#,而TH的引号语法仅支持常规标识符,不能直接处理(# #)这种语法结构,因此必须用mkName来生成对应的Name值。
内容的提问来源于stack exchange,提问作者alias
相关产品推荐
相关产品推荐

