partial

Comme son nom l'indique, partial permet de définir une fonction partielle.

partial prend en paramètre une fonction et un certain nombre de paramètres (qui doit être inférieur ou égal au nombre de paramètre de la fonction). Une fonction sera retournée. Cette fonction peut ensuite être appelée avec des paramètres additionels.

Prenons l'exemple suivant:

(def add-one (partial + 1))

Nous appliquons ici partial sur la fonction + suivi du paramètre 1.

add-one contiendra une fonction qui une fois appelée rajoutera ces paramètres à la form (+ 1).

Par exemple, (add-one 2 3) est équivalent à (+ 1 2 3)

partial est donc utilisée pour créer une nouvelle fonction à partir d'une fonction existante, en ajoutant des valeurs définies pour un certain nombre de paramètres.

Précédent - Suivant -

;; create a fn which add elements to 1
(def add-one (partial + 1))

;; will do (+ 1 2)
(println (add-one 2))

;; will do (+ 1 2 3 4)
(println (add-one 2 3 4) "\n")

;; create a fn which returns the :foo key in a map
(def get-foo (partial :foo))

;; get the :foo key
;; will do (:foo {:foo 1})
(println (get-foo {:foo 1}))

;; default value if the :foo key does not exists
;; will do (:foo {:bar 1} 3)
(println (get-foo {:bar 1} 3))

powered by mcorbin - Available on Github