Como você depura código de nível de tipo?

Na maioria das vezes, tudo que você obtém é um erro implícito não encontrado. Você não sabe em que parte da cadeia de construção implícita falhou. Aparentemente, você não pode usar a depuração em tempo de execução ou a instrução print. Então, como você depura um programa em nível de tipo que não seja tão difícil olhar para o seu código?