【问题标题】:Haskell Converting or Dealing with Multiple Custom Data TypesHaskell 转换或处理多种自定义数据类型
【发布时间】:2021-07-21 17:03:02
【问题描述】:

我是 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’

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

【问题讨论】:

    标签: haskell types ghci


    【解决方案1】:

    在这种情况下你需要解构i

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

    【讨论】:

    • 很高兴知道,我会更多地研究解构。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多