
Le 6 avril 2014 22:01, Arnaud Bailly
Pour les maybe peut-être serait-il plus élégant d'intégrer directement un constructeur "vide" dans chacun de tes types ? Tu perds le catMaybes met tu peux avoir une fonction qui filtre sur l'absence, c'est pas beaucoup plus compliqué.
Tu veux un GADT, du style : data DayStmt = NoDayTemp | MorningDayTemp Temperature | EveningDayTemp Temperature | FullDayTemp Temperature Temperature par contre je ne vois pas l'enchaînement qui en découlerait.
Te représentation des types Week et Month n'est peut-être pas idéal. Pourquoi ne pas avoir directement une liste de jours/semaines ? Pas sûr qu'avoir des champs pour les noms de jours et les numéros de semaine apporte grand-chose à l'histoire (et puis tu fais des suppositions sur le premier jour de la semaine qui est le dimanche dans les pays "anglo-saxons" par exemple)...
C'est ce que j'avais au début, mais le nommage est mieux je trouve, c'est plus explicite. Pour Week et Month, c'est juste que je voulais un contrôle des types au début (que ne m'aurais pas apporté type), puis par la suite ça m'a permit de nommer les champs. Si on va par là, les mois n'ont pas tous 28 jours et les mois ne commencent pas toujours par un lundi (ou un dimanche), mon but est de fournir un cadre permettant d'avoir un code assez simple, gérer correctement les dates rajouterait pas mal de complexité à mon sens. Je suis arrivé à introduire un Monoid assez pertinent à mon sens (mais corrigez moi si je me trompe), du coup je suis assez content. Je négocie mais n'hésitez pas si vous avez des remarques :)