 "Quand devriez-vous utiliser une liste et quand faut-il utiliser un vecteur? Pour l'instant, vous êtes probablement mieux de simplement en utilisant des vecteurs. Comme vous en apprendre davantage, vous aurez une bonne idée de quand utiliser quel."
 
 
+
+
+(exercice
+
+  "On peut accèder au premier élément..."
+  [(= __ (first '(1 2 3 4 5)))]1)
+
+
+(exercice
+  "Ainsi que le reste"
+  [(= __ (rest '(1 2 3 4 5)))][2 3 4 5])
+
+
+(exercice
+  "Comptez vos bénédictions"
+  [(= __ (count '(dracula dooku chocula)))]3)
+
+
+(exercice
+  "Avant qu'ils ne disparaissent"
+  [(= __ (count '()))]0)
+
+
+(exercice
+
+  "Le reste, quand rien n'est laissé, est vide"
+  [(= __ (rest '(100)))]())
+
+
+(exercice
+
+  "Construction en ajoutant un élément à l'avant est facile"
+  [(= __ (cons :a '(:b :c :d :e)))][:a :b :c :d :e])
+
+
+(exercice
+
+  "Conjoindre un élément à une liste ne est pas difficile non plus"
+  [(= __ (conj '(:a :b :c :d) :e))] [:e :a :b :c :d])
+
+
+(exercice
+
+  "Vous pouvez utiliser une liste comme une pile pour obtenir le premier élément"
+  [(= __ (peek '(:a :b :c :d :e)))]:a)
+
+
+(exercice
+
+  "Ou les autres"
+  [(= __ (pop '(:a :b :c :d :e)))][:b :c :d :e])
+
+
+(exercice
+
+  "Mais attention si vous essayez de rien pop"
+  [(= __ (try
+           (pop '())
+           (catch IllegalStateException e
+             "No dice!")))]"No dice!")
+
+
+(exercice
+
+  "Le reste de rien n'est pas si stricte"
+  (= __ (try
+          (rest '())
+          (catch IllegalStateException e
+            "No dice!"))) ())
+
+
 [[:section {:tags "sets" :title "Sets"}]]
 
 "Les ensembles sont des collections de valeurs uniques:"


[[:section {:tags "nil_true_false_truthiness_equality" :title "nil, true, false,  Equality"}]]

"Clojure a true et false valeurs. nil est utilisé pour indiquer "aucune valeur" dans Clojure. Vous pouvez vérifier si une valeur est nil avec le intelligemment nommé nil? fonction:"

(comment
  (nil? 1)


"Pour contourner cette limitation apparente, nous avons le do opérateur:"

(exercice
  "Vous ferez face à de nombreuses décisions"
  [ (= __ (if (false? (= 4 5))
            :a
            :b))] :a)


(exercice
  "Certains d'entre eux vous laisse pas d'alternative"
  [(= __ (if (> 4 3)
           []))] [])


(exercice
  "Et dans une telle situation, vous pouvez ne rien avoir"
  [(= __ (if (nil? 0)
           [:a :b :c]))]nil)


(exercice
  "Dans d'autres cas  votre alternative peut être intéressant"
  [(= :glory (if (not (empty? ()))
               :doom
               __))] :glory)


(exercice
  "Ou votre destin peut être scellé"
  [(= 'doom (if-not (zero? __)
              'doom
              'more-doom))]1)


(exercice
  "En cas d'urgence,sonorez les alarmes "
  [ (= :sirens
      (explain-defcon-level __))]:cocked-pistol)


(exercice
  "Mais l'admettre quand vous ne savez pas quoi faire"
  [(= __
     (explain-defcon-level :yo-mama))] :say-what?)


[[:subsection {:tag "do" :title "do"}]]

"*do* vous permet de «boucler» des formes multiples. Essayez ce qui suit dans votre REPL:"
