Sto dando un'occhiata all'eccellente tutorial Clojure here. In uno degli esempi che ha il codice Clojure secondo le seguenti linee:perché "(def vowel? (Set" aeiou "))" funziona?
(def vowel? (set "aeiou"))
Questo rende vocale ritorno vero per le vocali e le consonanti false per:
(vowel? (first "abc")) ; => true
(vowel? (first "cba")) ; => false
Perché è questo? Suppongo che abbia qualcosa a che fare con il punto interrogativo dietro il nome della variabile. Impossibile trovare nulla subito nel tutorial ...
Edit ho appena realizzato vowel?
non restituisce vero o falso, ma piuttosto l'elemento stesso o nullo. Vedi la mia risposta.
Mi sembra giusto. Il punto interrogativo indica che può essere usato come test. Vedrai spesso un punto esclamativo su funzioni con effetti collaterali. Non fanno parte della lingua, sono tradizioni libere (quindi conosci le funzioni sicure da quelle "pericolose"). – MBCook
Per chiarire,? e ! sono solo caratteri come aeb, e puoi usarli per denominare i simboli (così come \, /, *, -, + ...). Ci sono delle tradizioni per nominare determinati simboli in Lisp, ma ci sono piccole differenze tra i dialetti. – Svante
ah, grazie @svante! Pensavo che ci fosse qualcosa di magico nel "?" :) – Epaga