gpt4 book ai didi

haskell - Haskell 数据构造函数中的输入检查

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

如何向 Haskell 数据构造函数添加输入检查?假设我有

import Data.Time.Calendar

data SchedulePeriod = SchedulePeriod { startDate :: Day
, endDate :: Day
, accrualStart :: Day
, accrualEnd :: Day
, resetDate :: Day
, paymentDate :: Day
, fraction :: Double }
deriving (Show)

我想施加一个约束 startDate < endDate .有没有办法在不创建抽象数据类型的情况下做到这一点?

最佳答案

标准方法是使用 smart constructor在创建值之前检查先决条件,并且不导出它使用的真实构造函数。当然,正如您所说,这是创建一个抽象数据类型。

在没有智能构造函数的情况下实现这一点的唯一方法是非常邪恶的类型系统黑客(你将无法使用标准的 Day 类型)。

关于haskell - Haskell 数据构造函数中的输入检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161009/

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