Estoy echando un vistazo al excelente tutorial de Clojure here. En uno de los ejemplos de código que tiene Clojure lo largo de las siguientes líneas:¿por qué "(def vocal? (Set" aeiou ")) funciona?
(def vowel? (set "aeiou"))
Esto hace que la vocal retorno cierto para las vocales y las consonantes falsa:
(vowel? (first "abc")) ; => true
(vowel? (first "cba")) ; => false
¿Por qué es esto? Supongo que tiene algo que ver con el signo de interrogación detrás del nombre de la variable. No se pudo encontrar nada de inmediato en el tutorial ...
Editar Me acabo de dar cuenta vowel?
no devuelve verdadero o falso, sino más bien el propio elemento o nula. Ver mi propia respuesta.
Me parece correcto. El signo de interrogación indica que se puede usar como prueba. A menudo verá un signo de exclamación sobre las funciones que tienen efectos secundarios. No son parte del idioma, son tradiciones de lisp (para que sepa las funciones seguras de las "peligrosas"). – MBCook
Para que quede claro,? y! son solo caracteres como a y b, y puedes usarlos para nombrar símbolos (como son \, /, *, -, + ...). Existen tradiciones para nombrar ciertos símbolos en Lisp, pero hay pequeñas diferencias entre los dialectos. – Svante
ah, gracias @svante! pensé que había algo mágico sobre el "?" :) – Epaga