Better typing of literals using GADTs