Supposons qu'il existe une liste appelée xs
. Cette liste doit être filtrée par un prédicat et un élément aléatoire doit être prélevé dans le résultat :
(rand-nth (filter pred? xs))
Cela renverrait un élément de la liste. Que faire si, en plus, la liste originale (moins l'élément extrait) doit être conservée ?
Ces deux étapes sont-elles nécessaires ou existe-t-il un moyen plus rapide de procéder ?
(let [item (rand-nth (filter pred? xs))
new-xs (remove (partial = item) xs)]
...)