gpt4 book ai didi

list - Haskell:制作一副纸牌

转载 作者:行者123 更新时间:2023-12-02 05:31:26 24 4
gpt4 key购买 nike

我是 Haskell 的新手,在使用递归制作一副纸牌时遇到了问题。

我有所有这些定义:

data Suit = Club | Diamond | Heart | Spade

data Value = Two | Three | Four | Five | Six | Seven
| Eight | Nine | Ten | Jack | Queen
| King | Ace

type Card = (Suit, Value)
type Deck = [Card]

instance Show Suit where
show Club = "Club"
show Diamond = "Diamond"
show Heart = "Heart"
show Spade = "Spade"

instance Show Value where
show Two = "Two"
show Three = "Three"
show Four = "Four"
show Five = "Five"
show Six = "Six"
show Seven = "Seven"
show Eight = "Eight"
show Nine = "Nine"
show Ten = "Ten"
show Jack = "Jack"
show Queen = "Queen"
show King = "King"
show Ace = "Ace"

我正在尝试编写一个函数
makeDeck :: Deck

它按照给定数据的顺序返回卡片列表,因此 (Club, Two - Ace), (Diamond, Two-Ace) 等。

我想使用递归来做到这一点,这就是我遇到这么多困难的原因。

任何帮助将不胜感激。

谢谢!

最佳答案

这不使用递归,但更规范的方法是:

添加 deriving Enum到西装和值(value)的定义,然后:

makeDeck :: Deck
makeDeck = [(suit, value) | suit <- [Club..Spade], value <- [Two..Ace]]

或者,提供所有花色和值的完整定义列表,而不是使用 Enum .

关于list - Haskell:制作一副纸牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7480750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com