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

能否在GHCi中查看Haskell类型族函数的应用结果?

查看Haskell类型族应用结果的方法

当然可以查看类型族函数的应用结果啦!不过默认的:t命令不会自动展开类型族的定义,我们可以用GHCi里专门的命令来直接获取完全展开后的结果。

最直接的操作方式

  1. 先在GHCi中加载你的类型族代码:
    {-# LANGUAGE TypeFamilies #-}
    type family WeirdFamily a
    type instance WeirdFamily () = Int
    type instance WeirdFamily (a, b) = (a, WeirdFamily b)
    
  2. 输入带感叹号的:kind!命令,跟上你要计算的类型族应用:
    :kind! WeirdFamily (Bool, (Char, ()))
    
  3. GHCi会立刻输出完全展开后的最终类型:
    WeirdFamily (Bool, (Char, ())) :: *
    = (Bool, (Char, Int))
    

补充说明

  • :kind!和普通的:kind命令有本质区别::kind只会显示类型的“种类”(比如*代表普通类型),而:kind!会递归展开所有类型族、类型同义词的定义,给出最具体的结果。
  • 如果非要用:t命令,也可以通过辅助的Proxy类型来触发展开,但这种方式更繁琐:
    import Data.Proxy
    type TestResult = WeirdFamily (Bool, (Char, ()))
    
    然后在GHCi中输入:
    :t Proxy :: Proxy TestResult
    
    输出会显示Proxy :: Proxy (Bool, (Char, Int)),同样能看到结果,但显然不如:kind!直接高效。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:42:36