You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:54:51