【发布时间】:2018-08-24 07:12:58
【问题描述】:
当我刚接触 Haskell 时,我很难找到各种类型的实例。
受此启发,很久以后我才注意到reifyInstances。虽然我对 Template Haskell 知之甚少,但使用这个技巧,我们似乎可以发现比平常更多的实例 :info 可以提供:
putStrLn $(stringE . pprint =<< reify ''Functor)
TH 是否有意“放松”地进入环境? reifyInstances 的正确用法是什么,它与其他形式有何不同?
【问题讨论】:
-
你能举一个例子,它比
:i提供更多信息吗?例如如果我只是启动ghci -XTemplateHaskell,导入Language.Haskell.TH,然后运行它,我会从putStrLn $(...)获得6 个实例,从:i获得7 个实例(由于某种原因,TH 缺少Either a实例)。