gpt4 book ai didi

haskell - 如何定义由其他数据类型组成的数据类型?

转载 作者:行者123 更新时间:2023-12-02 16:37:26 27 4
gpt4 key购买 nike

我想定义数据类型Currency,它由其他三种数据类型组成。我遇到的问题是 Haskell 无法将数据类型识别为货币的一部分,这会破坏一切。

我的想法是将不同的货币定义为它们自己的数据类型,然后将它们添加到货币类型中,我尝试过:

data Euro = MkEuro Integer Integer
data Dollar = MkDollar Integer Integer
data Yen = MkYen Integer
data Currency = Euro | Dollar | Yen

如果我想在任何函数中使用货币类型,我会收到以下错误消息的变体:

Couldn't match expected type `Currency' with actual type `Dollar'

遗憾的是,我必须使用货币类型,并且无法为所有三种货币创建不同的函数。

最佳答案

目前,您的货币被构造为三个值,不带任何参数。因此,Euro 是一个值,Dollar 是一个值,Yen 是一个值,但 MkYen 15 不是。

您可以向数据构造函数添加参数,例如:

data Currency = Euro <b>Euro</b> | Dollar <b>Dollar</b> | Yen <b>Yen</b>

然后您可以使用以下方式构建货币:

<b>Euro</b> (MkEuro 14 25) :: Currency

::货币不是必需的。因此,MkEuro 将构造一个 Euro 类型的对象,然后我们使用类型为 Euro data 的构造函数欧元 -> 货币 构建货币

Sadly I have to use the type Currency and can't create different functions for all three currencies.

您可能想要创建一个 Currency typeclass,它提供一个接口(interface)来说明货币应实现哪些功能,然后创建 EuroDollarYen 该类型类的实例。

关于haskell - 如何定义由其他数据类型组成的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58780928/

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