2017-09-12 10 views
0

Je suppose que je demande à propos de la logique derrière cette décision de conception.Pourquoi les tableaux de motifs sont-ils mutables?

Les tableaux de raison pouvant être mutés sont considérés comme une aberration parmi ses autres structures de données (liste, enregistrement, hashmap, ensemble) qui sont immuables par défaut.

Y a-t-il une raison à cela? Y a-t-il une alternative immuable?

Répondre

2

Il n'y a vraiment rien de tel que "Reason Arrays". Reason est une syntaxe alternative à OCaml, et OCaml a des tableaux mutables. Mais Reason est également généralement utilisé avec le back-end BUckleScript qui compile en JavaScript, qui a également des tableaux mutables, mais la raison en est légèrement différente.

  • En bonne OCaml, les tableaux sont utilisés lorsque vous voulez que les caractéristiques d'un tableau, généralement pour son profil de performance, mais vous pouvez également l'utiliser pour sa mise en page de mémoire qui est très simple et facile d'interagir avec à partir d'autres langues, mais aussi nécessaire pour pouvoir communiquer avec le matériel à travers l'accès et la mutation des espaces d'adresses partagées. Avec BuckleScript, les tableaux se mappent directement sur les tableaux JavaScript, qui, en plus d'être mutables, est également dimensionné dynamiquement et, de manière efficace, une liste de tableaux. Ici aussi, vous l'utiliserez généralement pour les performances et l'interopérabilité avec JavaScript, mais comme l'implémentation est légèrement différente, les caractéristiques de performance sont subtilement différentes.

Dans les deux cas, si vous voulez quelque chose de semblable à un tableau, mais immuable vous souhaitez généralement utiliser une liste, mais il y a aussi d'autres options, telles que Immutable.re's Vector.

Il est peut-être préférable de demander pourquoi OCaml n'inclut pas également un type de données de tableau immuable dans sa bibliothèque standard. Je ne suis pas sûr que quiconque puisse donner une réponse définitive à cette question, mais peut-être simplement parce que cela n'a pas été demandé suffisamment, peut-être parce que la liste fait assez bien la chose immuable.

+0

Merci. Je suis d'accord que la question devrait vraiment être "pourquoi OCaml n'inclut pas aussi un type de données de tableau immuable dans sa bibliothèque standard?" – balajeerc