gpt4 book ai didi

haskell - 检查特定的数据构造函数

转载 作者:行者123 更新时间:2023-12-03 20:24:05 38 4
gpt4 key购买 nike

假设我定义了自己的数据类型

data MyData = A arg| B arg2| C arg3

我将如何编写一个函数(例如: isMyDataType )来检查给定参数是否是 MyData 中的特定类型之一并连续返回一个 bool 值 (True or False) ,例如输入 Ghci: isMyDataType B返回 True 和 isMyDataType Int返回假。

最佳答案

我相信您希望功能测试特定 构造函数 :

isA :: MyData -> Bool
isB :: MyData -> Bool

如果是这样,那么您可以自己编写这些或派生它们。实现看起来像:
isA (A _) = True
isA _ = False

isB (B _) = True
isB _ = False

要自动导出它们,只需使用 derive库并在您的源代码中添加:
{-# LANGUAGE TemplateHaskell #-}
import Data.DeriveTH

data MyData = ...
deriving (Eq, Ord, Show}

derive makeIs ''MyData
-- Older GHCs require more syntax: $( derive makeIs ''MyData)

另请注意:您的数据声明无效,名称必须大写, MyData而不是 myData .

最后,整个答案基于您要测试构造函数的假设,而不是您所说的数据类型(正如 Tarrasch 所说,在编译时对其进行静态检查)。

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

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