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预处理器。