gpt4 book ai didi

haskell - 如何对数据类型构造进行检查

转载 作者:行者123 更新时间:2023-12-02 13:00:57 25 4
gpt4 key购买 nike

对于数据类型构造函数,是否有任何方法可以根据构造函数参数类型以外的标准来限制“对象”(我不知道正确的术语)的创建?

例如:

data UInt = UInt Int --the int must be >= 0

确实,我想为矩形多维列表创建一种数据类型(其中所有子列表具有相同的长度)。类或其他技术是否更适合于此?

最佳答案

不,没有办法强制用户将哪些值传递给构造函数。

但是,社区和标准库中存在创建智能构造函数的常见做法。您可以在 Data.MapData.Ratio 等模块中看到这些内容。简而言之,您不导出构造函数本身,而仅导出类型,然后导出一个用于审查参数的函数:

module UInt
( UInt
, uint
) where

data UInt = UInt Int

uint :: Int -> Maybe UInt
uint x | x >= 0 = Just (UInt x)
| otherwise = Nothing

关于haskell - 如何对数据类型构造进行检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37284703/

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