gpt4 book ai didi

templates - Haskell - 自动使用导入模块中的变量

转载 作者:行者123 更新时间:2023-12-05 00:31:52 26 4
gpt4 key购买 nike

假设我有一个名为 Item 的模块其中包含:

module Item
( routes ) where
routes = ["test1","test2","test3"]

Main我有的模块:
import qualified Item as I
routes = I.routes ++ ["test4", "test5"]

我想知道是否有可能在编译时, make ghc动态检查所有导入的模块,如果它们导出一个名为 routes 的变量,请将其附加到 Main 中的 routes 变量中。模块。所以基本上是这样的:
import qualified Item as I
import qualified User as U --this one exports routes also
import qualified NoRoutes as NR --this one doesn't have any routes
routes = ["test4","test5"]

编译后,最终结果将是 routes = I.routes ++ U.routes ++ ["test4","test5"]
我不确定 Template Haskell 是否会这样做。
谢谢你的帮助!

最佳答案

模板 Haskell 可能是最简单的方法。

TH 允许您向编译器询问诸如“模块 X 是否导出名为 Y 的东西?”之类的问题。它允许您自动生成代码以将所有路由附加在一起。

另一种方法是编写一个 Haskell 程序,该程序读取您的 Haskell 源代码并输出包含您的 Main 模块的文本文件。除非你的所有模块都定义了routes,否则这很棘手。以一种相当具体的方式(例如,如果存在,则始终在第 5 行)。 TH 可能会容易得多。

关于templates - Haskell - 自动使用导入模块中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14145598/

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