Par contre sa syntaxe est un peu hermétique de prime abord
En toute curiosité, que trouves-tu d'hermétique dans sa syntaxe ? Personnellement, je la trouve claire dans l'ensemble.
Le premier point qui m'interpelle est la syntaxe sur les types paramétriques où l'argument est placé devant la fonction, tout cela à cause d'une mauvaise influence de la grammaire anglaise : en anglais on écrira l is an int list, ce qui donne l : int list en OCaml (le : d'un jugement de typage étant le verbe être d'un jugement prédicatif, comme dans Socrate est mortel), là où je préférerais l : list int, le type paramétrique list étant une fonction des types dans les types que l'on applique ici à l'argument int. Cette syntaxe étant celle de tous les autres langages basés sur Curry-Howard, et qui est celle de l'application de fonction quand elle concerne les valeurs et non les types en OCaml.
Le second est la syntaxe des modules de première classe qui permettent de considérer les types classes de Haskell ou les traits de Rust comme des valeurs de première classe (ce qu'ils ne sont pas dans ces langages, étant gérés uniquement par le compilateur). Si j'ai un trait Showable (un type que l'on peut convertir en chaînes de caractères), on se retrouve avec des interfaces ayant cette signature
valfoo:(moduleM:Showablewithtypet='a)->'a->foo
ce qui est un peu lourd. Là où je préférerais une syntaxe plus légère de la forme
valfoo:(moduleM:Showable)->M.t->foo
Le premier point risque de rester pour toujours pour des raisons historiques, le second est un PR en attente de validation qui, en plus de simplifier la syntaxe, enrichit grandement les possibilités d'usage des modules de première classe.
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.
[^] # Re: Le cercle vicieux de la popularité
Posté par kantien . En réponse au lien Why I love OCaml. Évalué à 3.
En toute curiosité, que trouves-tu d'hermétique dans sa syntaxe ? Personnellement, je la trouve claire dans l'ensemble.
Le premier point qui m'interpelle est la syntaxe sur les types paramétriques où l'argument est placé devant la fonction, tout cela à cause d'une mauvaise influence de la grammaire anglaise : en anglais on écrira
l is an int list, ce qui donnel : int listen OCaml (le:d'un jugement de typage étant le verbe être d'un jugement prédicatif, comme dans Socrate est mortel), là où je préféreraisl : list int, le type paramétriquelistétant une fonction des types dans les types que l'on applique ici à l'argumentint. Cette syntaxe étant celle de tous les autres langages basés sur Curry-Howard, et qui est celle de l'application de fonction quand elle concerne les valeurs et non les types en OCaml.Le second est la syntaxe des modules de première classe qui permettent de considérer les types classes de Haskell ou les traits de Rust comme des valeurs de première classe (ce qu'ils ne sont pas dans ces langages, étant gérés uniquement par le compilateur). Si j'ai un trait
Showable(un type que l'on peut convertir en chaînes de caractères), on se retrouve avec des interfaces ayant cette signaturece qui est un peu lourd. Là où je préférerais une syntaxe plus légère de la forme
Le premier point risque de rester pour toujours pour des raisons historiques, le second est un PR en attente de validation qui, en plus de simplifier la syntaxe, enrichit grandement les possibilités d'usage des modules de première classe.
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.