Sto imparando Haskell, quindi sto scrivendo alcuni semplici giochi di carte. Ho definito alcuni tipi di dati:Haskell: Come generare un prodotto cartesiano di due semplici tipi di dati algebrici
data Rank = Ace|Two|Three|Four|Five|Six|Seven|Eight|Nine|Ten|Jack|Queen|King deriving (Eq,Show,Ord)
data Suit = Hearts|Spades|Diamonds|Clubs deriving (Show)
data Card = Card Rank Suit
Ora mi piacerebbe creare un mazzo di 52 carte. Sono sicuro che c'è un modo per farlo chiazza di petrolio, ma tutto quello che posso venire in mente è:
pristineDeck = [Card Ace Hearts, Card Two Hearts, ...]
Posso ottenere Haskell per generare questa lista per me?
Fai in modo che i tipi generino la classe di caratteri "Enum" (può accadere semplicemente mettendo Enum accanto a 'Mostra' lassù). I tre di loro: Rank, Suit e Card. –
P.S. quello che stai cercando non è il prodotto incrociato, che è qualcosa che coinvolge i vettori 3D. Probabilmente intendevi "prodotto cartesiano". –
@BenMillwood Il mio male ... "SQL cross join" + "prodotto cartesiano" + laurea in fisica –