Task

Create a data structure and the associated methods to define and manipulate a deck of   playing cards.

The deck should contain 52 unique cards.

The methods must include the ability to:

   make a new deck
   shuffle (randomize) the deck
   deal from the deck
   print the current contents of a deck 
Each card must have a pip value and a suit value which constitute the unique value of the card.

Related tasks:

 Card shuffles
 Deal cards_for_FreeCell
 War Card_Game
 Poker hand_analyser
 Go Fish


(def suits [:club :diamond :heart :spade])
(def pips [:ace 2 3 4 5 6 7 8 9 10 :jack :queen :king])
 
(defn deck [] (for [s suits p pips] [s p]))
 
(def shuffle clojure.core/shuffle)
(def deal first)
(defn output [deck]
  (doseq [[suit pip] deck]
    (println (format "%s of %ss"
                     (if (keyword? pip) (name pip) pip)
                     (name suit)))))