type 'a voyel = ('a * 'a) type 'a consonants = { ending : 'a option option ; opening : 'a list ; following : 'a option } type 'a group = 'a voyel * 'a consonants option type 'a t = 'a group * 'a option option type 'a modifier = 'a t -> 'a t