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é.
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)…