haskell - 用数据类型中的函数推导 (Show, Eq)
问题描述
我有一些数据类型,作为一个参数,我有函数
data Event =
BasketCreated{basket:: Basket}
| ProductAdded{ basket::Basket, addProductInBasket :: Basket -> String -> Int -> Basket}
| DiscountAdded{ basket::Basket, addDiscountInBasket :: Basket -> Int -> Basket }
deriving (Show, Eq)
不幸的是,因为我的数据类型包含函数deriving (Show, Eq)
没有编译。
知道如何deriving (Show)
使用函数来打印该数据类型
解决方案
正如评论中已经提到的,如果您的数据类型包含函数,则无法派生Show
实例。您能做的最好的事情就是自己实现实例。例如:
instance Show Event where
show (BasketCreated x) = "BasketCreated " ++ show x
show (ProductAdded x _) = "ProductAdded " ++ show x
show (DiscountAdded x _) = "DiscountAdded " ++ show x
推荐阅读
- java - 如何将 Spinner 用作 ACTION 而不是 SELECTION?
- javascript - 如何在 React 中获取通过 dangerouslySetInnerHTML 添加的子标签的引用
- powershell - powershell 中的脚本以在 gpedit(组策略编辑器)中打开和更改值
- javascript - 节点:同时运行2个sql查询
- java - 网络 ObjectOutputStream 中的奇数 ArrayIndexOutOfBoundsException
- web-component - Elm with webcomponents - 这是一个错误还是我做错了什么?
- python - AttributeError:“str”对象在 Python 中没有属性“bind”错误
- jenkins - 为什么在尝试从常规管道作业启动多分支构建作业时出现异常?
- c# - WCF 服务在 Visual Studio 2019 中不可用
- asp.net - Web 服务的 SSL 配置 - 我收到地址不匹配错误,也无法使用 chrome 打开 Intranet 站点