如何使用记录语法和多个构造函数实例化自定义数据类型

问题描述 投票:0回答:1

我是 Haskell 新手,无法弄清楚我是否混淆了概念,或者这只是一个语法错误。

我有一个函数期望返回“Expr”类型 - 我在单独的模块中定义的自定义数据类型。 Expr 有多个构造函数,LiteralValue 就是其中之一。在此函数中,如果我遇到 EOF 标记,我想返回值为 NONE 的 LiteralValue Expr。

同时,这是 Expr 的定义。它使用记录语法并具有多个构造函数。 (Token 和 Literal 均在别处定义)

我一直在尝试弄清楚如何实例化一个 Expr 类型,但它似乎并不想接受它。现在,它告诉我 LiteralValue 和 value 都不在范围内。我该如何创建其中一种类型?

haskell record multiple-constructors
1个回答
0
投票

问题可能不在于 Haskell 语法,而在于

LiteralEval
NONE
不在范围内。您需要导入这些,例如:

import SecondModule (Expr (LiteralValue))
import ThirdModule (Literal (NONE))

-- …
© www.soinside.com 2019 - 2024. All rights reserved.