gpt4 book ai didi

haskell - 在 Haskell 中导入数据类型

转载 作者:行者123 更新时间:2023-12-03 23:48:44 25 4
gpt4 key购买 nike

我正在尝试将数据类型从一个文件导入到另一个文件。

这是模块:

-- datatype.hs
module DataType (Placeholder) where

data Placeholder a = Foo a | Bar | Baz deriving (Show)

这是使用模块的文件
-- execution.hs
import DataType (Placeholder)

main = do
print Bar

当我运行 runhaskell execution.hs我明白了
execution.hs:4:10: Not in scope: data constructor ‘Bar’

我的代码可能存在多个问题,那么构建它以便我从模块导入特定数据类型并能够查看它的最佳方法是什么?

最佳答案

您必须导入/导出类和构造函数:

在您的情况下,PlaceHolder是类(class),FooBar是构造函数。

因此,你应该写:

-- datatype.hs
module DataType (PlaceHolder (Foo, Bar, Baz)) where

-- execution.hs
import DataType (PlaceHolder (Foo, Bar, Baz))

或更简单:
-- datatype.hs
module DataType (PlaceHolder (..)) where

-- execution.hs
import DataType (PlaceHolder (..))

如果您不指定要导出的内容:
-- datatype.hs
module DataType where

一切都将被导出(类、构造函数、函数……)。

如果您不指定要导入的内容
-- execution.hs
import DataType

一切 DataType导出将可用。

指定导入和导出通常是一个好习惯。

关于haskell - 在 Haskell 中导入数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34349072/

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