gpt4 book ai didi

haskell - 如何避免编写琐碎的数据类型检查函数

转载 作者:行者123 更新时间:2023-12-01 08:45:46 25 4
gpt4 key购买 nike

例如,我在 Haskell 中的一些数据类型最终会有很多记录

data MyData
= A Int Int String Float Int (Char, Char)
| B Int String Float (Char, String) String

为了检查它是什么类型,我最终编写了类似的函数

isA :: MyData -> Bool
isA (A _ _ _ _ _ _) = True
isA _ = False

-- isB and so on

现在这变得相当麻烦所以我搜索了如何使用 derive或类似于自动生成的东西,我发现this .但是,library由于 ghc generics 的引入,该问题中提出的建议似乎已过时。和相关的generic-deriving library .我看过这些,但它们似乎非常强大,我不知道从哪里开始。

所以我的问题是:您如何(如果可能)避免手动编写 isAisB对于 MyData ?

最佳答案

可以利用记录语法来实现这一点。

isA :: MyData -> Bool
isA A{} = True
isA _ = False

这不需要扩展,并且无论构造函数 A 采用多少参数都可以工作。

(话虽如此,我认为这些函数在 Haskell 中没有那么有用。当心“ bool 盲”——即在不需要时将信息简化为 bool 值。)

关于haskell - 如何避免编写琐碎的数据类型检查函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54388239/

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