gpt4 book ai didi

haskell - 列出带边界的数据类型haskell

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

我有以下类型定义来表示卡片:

data Suit = Hearts | Spades | Diamonds | Clubs
data Rank = Numeric Integer | Jack | Queen | King | Ace
data Card = Card Rank Suit
data Deck = None | Cons Card Deck

数字整数表示从 2 到 10 的等级。

现在我想写一个函数来获得完整的甲板:
fullDeck :: Deck

我怎样才能以最优雅的方式生成完整的牌组?我知道其中一些定义很丑陋,但我没有选择的自由。

谢谢

最佳答案

做类似的事情

-- Not sure why you're reinventing a list but
fromList :: [Card] -> Deck
fromList = foldr Cons None

fullDeck = fromList [Card r s | s <- [Hearts, Spades, Diamonds, Clubs]
, r <- map Numeric [2..9]++[Jack, Queen, King, Ace]]

看起来不错?我们只是使用列表推导来生成所有可能性的列表,而不是将其粉碎成 Deck .

关于haskell - 列出带边界的数据类型haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19775249/

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