gpt4 book ai didi

haskell - 不在数据构造函数范围内

转载 作者:行者123 更新时间:2023-12-02 07:04:16 24 4
gpt4 key购买 nike

我有两个 .hs 文件:一个包含新类型声明,另一个使用它。

第一个.hs:

module first () where
type S = SetType
data SetType = S[Integer]

第二个.hs:

module second () where
import first

当我运行 secondary.hs 时,第一个和第二个模块都加载得很好。

但是,当我在Haskell平台上编写 :type S 时,出现以下错误

Not in scope : data constructor 'S'

注意:每个模块中肯定都有一些功能,为了简洁起见,我只是跳过它

最佳答案

module first () where

假设实际上模块名称以大写字母开头(它必须如此),空导出列表 - () - 表示模块不导出任何内容,因此 First 不在 Second 范围内。

完全省略导出列表以导出所有顶级绑定(bind),或在导出列表中列出导出的实体

module First (S, SetType(..)) where

((..) 还导出 SetType 的构造函数,没有它,只会导出类型)。

并用作

module Second where

import First

foo :: SetType
foo = S [1 .. 10]

或者,将导入限制为特定类型和构造函数:

module Second where

import First (S, SetType(..))

您还可以缩进顶层,

module Second where

import First

foo :: SetType
foo = S [1 .. 10]

但这很丑陋,而且很容易因为错误计算缩进而出现错误。

关于haskell - 不在数据构造函数范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13481836/

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