Haskell中的预处理器

Haskell中的预处理器,haskell,preprocessor,template-haskell,Haskell,Preprocessor,Template Haskell,我想在编译时自动生成将合格的Aaaa.Bbb.Ccc导入为Ccc 有办法吗?可能是通过模板Haskell或其他任何扩展?我认为它类似于C中的宏和Tempalte Haskell中的函数$(…)。如果您试图实现的是缩短导入列表,您可以尝试以下技巧。创建新模块(Foo): 然后导入此模块以获取A、B和C的所有成员: module Bar where import qualified Foo as X 通过这种方式,您可以组合在整个项目中常用的模块 如果您仍然需要自动生成导入,至少您只需要生成模块F

我想在编译时自动生成
将合格的Aaaa.Bbb.Ccc导入为Ccc


有办法吗?可能是通过模板Haskell或其他任何扩展?我认为它类似于C中的宏和Tempalte Haskell中的函数
$(…)

如果您试图实现的是缩短导入列表,您可以尝试以下技巧。创建新模块(
Foo
):

然后导入此模块以获取
A
B
C
的所有成员:

module Bar where
import qualified Foo as X
通过这种方式,您可以组合在整个项目中常用的模块


如果您仍然需要自动生成导入,至少您只需要生成模块
Foo
,而不需要生成
Bar
。因此,自动生成的代码和手动生成的代码被清晰地分开。

如果您试图实现的是缩短导入列表,您可以尝试以下技巧。创建新模块(
Foo
):

然后导入此模块以获取
A
B
C
的所有成员:

module Bar where
import qualified Foo as X
通过这种方式,您可以组合在整个项目中常用的模块


如果您仍然需要自动生成导入,至少您只需要生成模块
Foo
,而不需要生成
Bar
。因此,自动生成的代码和手动生成的代码完全分开。

您想实现什么?您是否有一些导入语句要为不同的软件包版本进行更改?可能是有用的条件编译您可以启用CPP预处理器,如在C中一样。在文件顶部使用
{-#语言CPP#-}
#define
#include
宏。不过,我想知道这是否真的有必要。TH无法生成导入语句,所以您只能使用c预处理器。您想实现什么?您是否有一些导入语句要为不同的软件包版本进行更改?可能是有用的条件编译您可以启用CPP预处理器,如在C中一样。在文件顶部使用
{-#语言CPP#-}
#define
#include
宏。不过,我想知道这是否真的有必要。TH无法生成导入语句,所以您只能使用c预处理器。