define Pip = ; define Suit = <♦ ♣ ♥ ♠>; class Card(pip, suit) { method to_s { pip + suit } } class Deck(cards=[]) { method init { cards = gather { Pip.each { |p| Suit.each { |s| take(Card(p, s)) } } } } method shuffle { cards.shuffle!; } method deal { cards.shift }; method to_s { cards.join(" ") }; } var d = Deck(); say "Deck: #{d}"; var top = d.deal; say "Top card: #{top}"; d.shuffle; say "Deck, shuffled: #{d}";