2016-12-21 4 views
2

La majeure partie de ma compréhension de la façon dont clojure gère les immutables vient de this. Cela me semble vraiment intelligent. cela rend la copie et la modification d'une valeur ou l'ajout d'une nouvelle valeur à la fin d'une collection presque aussi rapide que pour un objet mutable. Cependant, d'après ce que je comprends beaucoup (sinon la plupart) d'autres langues qui s'appuient fortement sur les immutables n'utilisent pas ce type de structure (Haskell, Scala, etc.). Pourquoi donc? Y a-t-il un désavantage à une telle structure arborescente qui me manque, ou juste une idée relativement récente?Pourquoi pas plus de langues utilisent un modèle immuable comme Clojures?

+0

Une bonne question, mais j'hésite à l'emporter parce que je ne sais pas si c'est sur le sujet. –

+0

Je l'ai voulu en Python. Cela changerait radicalement la façon dont j'écris le code en Python. –

+0

Pourriez-vous envisager d'ajouter quelque chose à cette question pour qu'il soit plus facile de dire si une réponse est «correcte», pour ce que vous demandez? –

Répondre

3

La réponse courte est que votre compréhension est erronée. Le type de structure de données auquel vous faites référence est appelé persistant, et presque tous les langages de programmation fonctionnels en ont fait un usage intensif depuis au moins quelques décennies, y compris Scala et Haskell. Là où ils ne sont pas encore lourdement utilisés est dans des langages principalement impératifs qui font aussi la programmation fonctionnelle après coup. C'est pourquoi essayer d'être immuable dans ces langages est souvent beaucoup moins efficace que dans les langages essentiellement fonctionnels.

+0

Donc c'est bon à savoir, mais persistant est un mot vraiment général. comment pourrais-je regarder plus dans ces structures de données? –

+0

Googling "structures de données persistantes" donne de bons résultats. Chris Okasaki a écrit le livre canonique sur le sujet. –

+0

"fonctionnel comme une réflexion après coup" '<-' C'est une phrase géniale pour décrire beaucoup de langues qui prétendent être comme ça. –