gpt4 book ai didi

haskell - 模板 Haskell 引用中的独立派生声明

转载 作者:行者123 更新时间:2023-12-04 11:55:12 25 4
gpt4 key购买 nike

为什么模板 Haskell 忽略引用中的独立派生声明?

{-# LANGUAGE TemplateHaskell, StandaloneDeriving #-}
data Test a = Test a
$([d| deriving instance Show a => Show (Test a); f x = x |])
ghci> :l Test.hs 
[1 of 1] Compiling Main ( Test.hs, interpreted )
Ok, modules loaded: Main.
ghci> :t f
f :: t -> t
ghci> Test 1 :: Test Int

<interactive>:18:1:
No instance for (Show (Test Int)) arising from a use of `print'
Possible fix: add an instance declaration for (Show (Test Int))
In a stmt of an interactive GHCi command: print it

最佳答案

这曾经是编译器的一个缺点,其中用于声明的 Template Haskell 数据类型甚至无法存储独立的派生实例(参见 http://hackage.haskell.org/packages/archive/template-haskell/2.8.0.0/doc/html/Language-Haskell-TH-Syntax.html#t:Dec)。

不过,从 7.10 开始,this bug已修复。 (感谢@VladimirStill 在下面的评论中指出这一点。)

关于haskell - 模板 Haskell 引用中的独立派生声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14316656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com