46 votes

Représentation d'un arbre à Clojure

Quelle serait une façon idiomatique de représenter un arbre dans Clojure?

Comme celui ci-dessus, la performance n'est pas importante et l'habitude de l'arbre ne pousse pas plus de 1k éléments.

36voto

Dan Points 4107
'(A (B (D) (E)) (C (F)))

5voto

Jonathan Graehl Points 6460

Il ya une façon effrayante de le faire en utilisant `` juste:

Notez que les enfants ne sont pas une liste; c'est une paire. Si vos arbres ne sont pas seulement binaires, vous pouvez en faire une liste. utiliser nul quand il n'y a pas d'enfant gauche ou droit, bien sûr.

Sinon, voir cette réponse.

L'arbre sur votre photo:

3voto

Arthur Ulfeldt Points 45059

Les arbres comprennent à peu près tout en Clojure parce qu'ils se prêtent donc bien à structurels de partage dans la persistance de la structure de données. Les cartes et les Vecteurs sont en fait des arbres avec un haut facteur de branchement pour leur donner délimitée de recherche et d'insérer l'heure. Donc, la réponse la plus courte que je peux donner (si ce n'est pas vraiment utile), c'est que je vous recommande vraiment Purement fonctionnelle des structures de données par Chris Okasaki pour une vraie réponse à cette question. Aussi Rich Hickey de la vidéo sur Clojure des structures de données sur blip.tv

(set 'A 'B 'C)

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