я так понимаю здесь рассматривается задача как без синглтонов кое-где иметь похожее поведение. Ну, да, при помощи TypeApplication мы можем это рассматривать как функция, которая возвращает значение по переданному типу. А как быть, если нам наоборот как-то надо какие-то значения представить как типы? Ну вот та же задача с ролями у пользователя, например.