34 votes

Pourquoi le père de Clojure a-t-il dit que les vrais / faux de Scheme étaient brisés?

Dans cette vidéo, Rich Hickey introduit Clojure pour les programmeurs Lisp.

Au temps 01:10:42, il a parlé de nil/faux/de fin de séquence/'() parmi Clojure/Common Lisp/Scheme/Java. Il a dit: "le Schéma a de vrai et de faux, mais ils sont brisés."

slide

Je ne comprends pas pourquoi il a dit ça et pourquoi considère-t-il, il est "cassé"?

43voto

Arthur Shipkowski Points 1888

Il me semble que vous préférez le voir à partir de la bouche des chevaux, voici donc un choix extrait d' un message Riche posté le:

Schéma #t est presque complètement vide de sens, comme le Régime des instructions conditionnelles test pour #f/non#f, pas de #f/#t. Je n'ai pas pensez que la valeur #f a beaucoup d'utilité que ce soit, et de se fonder sur le conditionnel il faut écrire beaucoup (si (pas (null? x))... où (si x... va faire en Clojure/CL, et une grande réduction de la puissance expressive quand traiter avec des séquences, des filtres, etc.

Les liens dans ce message sont également la peine, même si le second peut être un peu poétique.

9voto

Michael Kohl Points 33345

D'après le graphique que vous avez posté, je suppose que c'est parce que Scheme, contrairement à toutes les autres langues du graphique, utilise autre chose que nil ou false pour end-of-seq . Étant donné que '() est non-#f il s'agirait d'une valeur de vérité dans une condition, mais constituerait une valeur de fausseté pour les contrôles de fin de séquence.

3voto

Maurits Rijk Points 4873

Dans le Schéma de toute valeur (à l'exception de #f ce qui est Faux) peut être utilisé comme Vrai dans un test conditionnel. Plus d'infos ici.

Mise à jour Oubliez cette réponse, puisque c'est la même chose pour Clojure de cours. Je n'aime pas cette vérité implicite pour toutes les valeurs qui ne sont pas faux, par exemple dans (println (si 1 "true" "false")). Personnellement, je considère que le bris mais Riche est sans doute en pensant à autre chose.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X