42 votes

Quelle est la différence (le cas échéant) entre le système de modules Standard ML et le système de modules OCaml?

Ma question est de savoir s'il existe une différence entre le système de modules de Standard ML et le système de modules OCaml? OCaml a-t-il tout le support des foncteurs, des attributions etc ... que SML a?

Merci...

56voto

Andreas Rossberg Points 11897

Il y a quelques différences de fonctionnalité-sage, ainsi que du point de vue sémantique.

Caractéristiques SML prend en charge, mais pas OCaml:

  • transparent signature nom
  • au niveau du module let
  • symétrique de partage de contraintes
  • sucre syntaxique pour les foncteurs sur les types et les valeurs

Fonctions OCaml 4 a mais pas SML:

  • d'ordre supérieur foncteurs
  • récursive modules
  • modules locaux
  • imbriqués les signatures
  • les modules des valeurs de première classe
  • module de partage (sig with module A = M)
  • module type of

(Plusieurs SML implémentations de fournir certaines de ces extensions, cependant.)

Sémantique-sage, la plus grande différence est dans le traitement de type équivalence, en particulier à l'égard de foncteurs:

  • Dans les LMS, les foncteurs sont générative, ce qui signifie que l'application de la même foncteur deux fois pour le même argument donne toujours fraîche types.

  • En OCaml, les foncteurs sont applicative, ce qui signifie que l'application de la même foncteur deux fois le même argument (ainsi que d'autres restrictions syntaxiques) reproduit des types équivalents. Cette sémantique est plus souple, mais peuvent également se abstraction (voir, par exemple, les exemples que nous donnons dans ce document, la Section 8).

  • OCaml est purement syntaxique notion de signatures, ce qui signifie que certains types d'équivalences ne peuvent pas être exprimées par le système de type, et sont ignorés en mode silencieux ou brisée (voir, par exemple, ce bug comme un exemple étonnant).

2voto

chris Points 3140

Quant à la sémantique, une réponse bien meilleure et élaborée est donnée par Andreas Rossberg ci-dessus. Cependant, concernant la syntaxe, ce site pourrait être ce que vous recherchez.

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