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’
我想知道如何处理 'Rank' 应该被视为“卡片”的条件?
在这种情况下你需要解构i
:
isAce = case i of
NormalCard r s -> r == Jack
_ -> False
我是 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’
我想知道如何处理 'Rank' 应该被视为“卡片”的条件?
在这种情况下你需要解构i
:
isAce = case i of
NormalCard r s -> r == Jack
_ -> False