Я думаю, что лучше использовать «необязательные» поля.
type syllable = {onset: consonant list option; nucleus: vowel list option; coda: consonant list option};;
Таким образом, вы можете определить, что вам нужно.
{onset = Some [consonant, consonant, ...],
nucleus = None,
coda = Some [consonant, consonant, consonant, ...]}
Я думаю, что это синтаксис.