O que o padrão Aux realiza no Scala?
Eu tenho uma noção do padrão Aux (como usado em informe e em outro lugar) no qual um membro de tipo é extraído em um parâmetro de tipo, e eu sei que é uma solução alternativa o fato de que argumentos na mesma lista de argumentos não podem depender um no outro - mas geralmente não estou claro para que é usado e para quais problemas ele resolve.
Por exemplo, atualmente estou tentando descobrir como preservar e trabalhar com o tipo mais específico retornado por uma macro de caixa branca - essa é uma base de usuário para Aux?
Existe uma descrição simples?