【问题标题】:How to merge two hands of cards together in Haskell?如何在 Haskell 中将两张牌合并在一起?
【发布时间】:2019-11-19 15:52:57
【问题描述】:

我对 Haskell 还是很陌生,我很好奇如何将两个 Hand 合并在一起,以便将第一只手放在第二只手之上。我希望它是一个中缀运算符,即 (

data Rank = Numeric Integer | Jack | Queen | King | Ace

data Suit = Hearts | Spades | Diamonds | Clubs

data Card = Card Rank Suit

data Hand = Empty | Add Card Hand

(<+) :: Hand -> Hand -> Hand
h1 (<+) h2 = undefined

非常感谢您提供的任何建议。

【问题讨论】:

  • 提示:对于两个Emptys,一个Empty和一个Add x y,一个Add x y和一个Empty,以及Add x y和@987654329,应该发生什么@?
  • Hand 是一个列表等价物,您正在尝试定义 append....
  • @karakfa 是的,没错
  • @Alex:我不明白你为什么不使用type Hand = [Card]。那么你首先不需要实现附加功能。
  • 然后问一个新问题。您特别询问了我的回答解决的类型签名错误。那么如何定义(&lt;+) 是一个单独的问题。

标签: haskell syntax enums operators definition


【解决方案1】:

定义应该是

h1 <+ h2 = undefined

(<+) h1 h2 = undefined

您当前正在尝试将函数名称用作中缀运算符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2021-11-01
    • 1970-01-01
    相关资源
    最近更新 更多