繁体   English   中英

Haskell 转换或处理多种自定义数据类型

[英]Haskell Converting or Dealing with Multiple Custom Data Types

我是 Haskell 的新手,我正在尝试过滤特定的自定义数据类型。 我一直在阅读 Graham Hutton 的 Haskell 书中的编程,但似乎越来越让自己感到困惑。

所以给出以下类型定义:

data Suit= Hearts
    deriving Eq

data Rank= Numeric Int | Jack
    deriving Eq

data Card= NormalCard Rank Suit | Joker
    deriving Eq

我正在尝试创建一个过滤掉特定卡片的条件,即

filterCondition:: Card -> Bool
filterCondition i = isJack && isJoker
    where 
        isAce = i == Jack -- error here: Couldn't match expected type ‘Card’ with actual type ‘Rank’
        isJoker = i == Joker

问题是以下错误

Couldn't match expected type ‘Card’ with actual type ‘Rank’

我想知道如何处理“等级”应该被视为“卡”的条件?

在这种情况下,您需要解构i

isAce = case i of
  NormalCard r s -> r == Jack
  _ -> False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM