关闭 AutoDeriveTypeable

问题描述

最近版本的 GHC 自动为所有数据类型派生 Timber.plant() 实例。我想关闭它。以前,Typeable 语言扩展用于启用此功能,因此我认为如果我使用 AutoDeriveTypeable 语言编译指示,就可以解决问题。然而,即使 GHC 没有发出关于未知语言编译指示的错误NoAutoDeriveTypeable 似乎没有任何影响,因为我可以在生成的 Core 中看到与 NoAutoDeriveTypeable 相关的 CAF。

解决方法

There is a DynFlag for this,结果是 it can be turned on with the -dno-typeable-binds compile-time flag。根据文档,此标志仅用于调试目的:

-dno-typeable-binds

这避免为模块和类型生成与 Typeable 相关的绑定。这在调试时很有用,因为它给出了 较小的模块和转储,但如果你尝试编译器会恐慌 使用您使用此标志构建的事物的 Typeable 实例。