gpt4 book ai didi

haskell - Haskell 中可以有子模块吗?

转载 作者:行者123 更新时间:2023-12-02 14:53:54 25 4
gpt4 key购买 nike

我有这个代码

module M where

a = 1
b = 2
x = 10
y = 20

...但是随着模块的增长,处理重复的名称变得很困难。

是否可以有这样的命名空间?

module M where
module A where
a = 1
b = 2

module X where
x = 10
y = 20

..然后

...
import M

s = A.a + X.y

最佳答案

据我所知,Haskell 目前不支持您提出的建议。也就是说,没有什么可以阻止您创建看似命名空间的模块。例如:

module Top where

myTopFunc :: a -> Int
myTopFunc _ = 1

在另一个文件中:

module Top.Sub where

mySubFunc :: a -> String
mySubFunc _ = "Haskell"

除此之外,您还可以使用一些技巧来安排模块。如果将模块 A 导入到 B 中,则可以从 B 中导出 A 的可见实体,就好像它们是它自己的一样。随后,在导入 B 时,您将能够使用这些函数/数据类型等,而无需注意它们最初来自哪里。使用上面的模块的一个示例是:

module Top (
myTopFunc,
TS.mySubFunc
) where

import qualified Top.Sub as TS

myTopFunc :: a -> Int
myTopFunc _ = 1

现在您只需导入 Top 即可使用这两个函数。

import Top (myTopFunc, mySubFunc)

关于haskell - Haskell 中可以有子模块吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42390523/

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