operateur #

22 views
Skip to first unread message

Pierre Thibault

unread,
Aug 30, 2014, 12:59:40 PM8/30/14
to cloju...@googlegroups.com
Je suis en train de lire The Joy Clojure et on y montre des exemples de code avec l'opérateur # mais je ne comprends pas ce que cela fait.

J'ai dans REPL:

user=> #(1 2 3)
#<user$eval1$fn__2 user$eval1$fn__2@4d15107f>
user=> #(a 1 2 3)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: a in this context, compiling:(NO_SOURCE_PATH:2:2)
user=> `(1 2 3)
(1 2 3)

Je vois que c'est différent de `.

Est-ce qu'on peut m'expliquer?

Aussi, je n'ai pu trouver réponse la réponse à ma question en cherchant dans ClojureDocs.

Merci.

Hiram Madelaine

unread,
Aug 30, 2014, 1:05:13 PM8/30/14
to cloju...@googlegroups.com
Hello,
Cela crée une fonction anonyme. 
A l'intérieur tu peux faire référence aux paramètres avec :
% pour le premier 
%2 pour le deuxième etc

Bon courage 


Envoyé de mon iPhone
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "clojure-fr".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse clojure-fr+...@googlegroups.com.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.

Ben

unread,
Aug 30, 2014, 1:25:41 PM8/30/14
to cloju...@googlegroups.com

bonjour

#(...) est une macro du reader 
#() #(...) → (fn [args] (...))

Il permet de mettre une fonction de manière très concise dans un code sans avoir à dégainer un (defn ...) explicite. 

Exemple:
=> (map #(+ %1 5) [1 2 3 4 5])
(6 7 8 9 10)

 -- Ben



--

Pierre Thibault

unread,
Aug 30, 2014, 1:38:07 PM8/30/14
to cloju...@googlegroups.com
OK, merci.

J'ai vu qu'il parlait de cet usage quelques pages avant dans le livre. J'avais oublié...


--
Vous recevez ce message, car vous êtes abonné à un sujet dans le groupe Google Groupes "clojure-fr".
Pour vous désabonner de ce sujet, visitez le site https://groups.google.com/d/topic/clojure-fr/TLO4p6Ywy_Y/unsubscribe.
Pour vous désabonner de ce groupe et de tous ses sujets, envoyez un e-mail à l'adresse clojure-fr+...@googlegroups.com.

Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.



--


A+

-------------
Pierre

Reply all
Reply to author
Forward
0 new messages