【发布时间】:2016-02-21 14:17:58
【问题描述】:
在一个项目中,我使用了一个模块,其中包含我在项目的其余部分中使用的全局(初始化后为常量)内容。我选择将它们放入一个模块中以避免传递大量参数。问题是这个模块必须在运行时使用程序执行的参数进行初始化。
如何在函数范式中做到这一点,例如像 Haskell 这样的语言?
编辑:
更准确地说,我用命令式语言 (Ada) 编写我的项目,这就是为什么我可以使用包含在运行时初始化的变量的模块,然后用作全局常量(使用内联 getter)。但是,对函数式编程感兴趣,我想知道如何在这种范式中获得相同的结果;我的意思是在代码的其余部分(使用全局常量)中使用轻签名,将模块数据本地化在内存的数据部分,甚至能够分别初始化模块的不同“常量”,等等。
【问题讨论】:
-
好吧,您可以使用
getArgs阅读main中的参数并传递它们-如果您想花哨,可以使用Read/StateMonad(Transformers) 等-您当然不能做是在您的模块中使用常量值 - 对于更多内容,您必须更具体,因为这个问题确实很广泛 -
一些函数式语言(但不是 Haskell)提供一流的模块,可以使用动态绑定进行初始化。
-
@Carsten 你说得对,我编辑了我的帖子以提出更具体的问题。
-
@dfeuer 你能举个例子吗,我很想看看这些语言。
-
@dfeuer 好的,我看看 OCaml,感谢让我发现了这个功能。
标签: haskell functional-programming