Posté par kantien .
En réponse au journal Bientôt Noël pour Perl6.
Évalué à 1.
Dernière modification le 04 décembre 2015 à 10:57.
Parce que le filtrage de types en Caml te permet pas de matcher des chaînes sur des expressions régulières (même si je connais une extension qui essaie de faire un truc similaire).
Le pattern matching sur les types sum c'est pour faire du raisonnement disjonctif, ou raisonnement par cas. Un type sum n'est rien d'autre qu'une partition, au sens ensembliste du terme, d'un ensemble représenté par le type en question.
Si tu veux matcher sur des expressions régulières, c'est qu'elles doivent représenter une partition d'un ensemble de chaînes de caractères. Dans ce cas, tu crées un type associé du genre type t = A of string | B of string | C of string... avec, si tu le souhaites, des smart constructeurs pour chaque alternatives. Et ensuite tu fais du pattern matching sur ce type.
Mais il n'y a en effet pas de types algébriques (encore, en tous cas).
Ce qui en fait un système de type à l'expressivité très limitée, et n'offre donc pas le contrôle et la garantie d'un système de type comme celui d'OCaml. La sécurité apportée par la méthodologie décrite ci-dessus est indéniable, sécurité que ne semble pas offrir le système de given/when de perl6. ;-)
Et comme l'a dit Nicolas Boulay : « Si un switch est nécessaire sur un type, c'est qu'il y a un gros problème d'architecture. »
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.
[^] # Re: Ca sert à quoi Perl6 ?
Posté par kantien . En réponse au journal Bientôt Noël pour Perl6. Évalué à 1. Dernière modification le 04 décembre 2015 à 10:57.
Le pattern matching sur les types sum c'est pour faire du raisonnement disjonctif, ou raisonnement par cas. Un type sum n'est rien d'autre qu'une partition, au sens ensembliste du terme, d'un ensemble représenté par le type en question.
Si tu veux matcher sur des expressions régulières, c'est qu'elles doivent représenter une partition d'un ensemble de chaînes de caractères. Dans ce cas, tu crées un type associé du genre
type t = A of string | B of string | C of string...avec, si tu le souhaites, des smart constructeurs pour chaque alternatives. Et ensuite tu fais du pattern matching sur ce type.Ce qui en fait un système de type à l'expressivité très limitée, et n'offre donc pas le contrôle et la garantie d'un système de type comme celui d'OCaml. La sécurité apportée par la méthodologie décrite ci-dessus est indéniable, sécurité que ne semble pas offrir le système de given/when de perl6. ;-)
Et comme l'a dit Nicolas Boulay : « Si un switch est nécessaire sur un type, c'est qu'il y a un gros problème d'architecture. »
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.