Como o Djinn trabalha?

OK, então eu percebo que provavelmente vou me arrepender disso pelo resto da minha vida, mas ... Como o Djinn realmente funciona?

A documentação diz que ele usa um algoritmo que é "uma extensão de LJ" e aponta para um longo e confuso artigo sobre LJT. Por melhor que eu possa dizer, este é um grande e complexo sistema de regras altamente formalizadas para descobrir quais afirmações lógicas são verdadeiras ou falsas. Mas isso nem sequerinício para explicar como você transforma uma assinatura de tipo em uma expressão executável. Presumivelmente, todo o complicado raciocínio formal éenvolvido de alguma forma, mas a imagem é crucialmente incompleta.

É um pouco como aquela vez que tentei escrever um interpretador Pascal no BASIC. (Não ria! Eu tinha apenas doze anos ...) Passei horas tentando entender e, no final, tive que desistir. Eu simplesmente não consegui descobrir como diabos você pega uma string gigante contendo um programa inteiro, algo que você pode comparar com fragmentos de programas conhecidos para decidir o que realmente fazer.

A resposta, claro, é que você precisa escrever uma coisa chamada "analisador". Depois de compreender o que é isso e o que faz, de repente tudo se tornaóbvio. Ainda não é trivial codificá-lo, mas oidéia é simples. Você só precisa escrever o código real. Se eu soubesse sobre parsers quando tinha doze anos, talvez não tivesse passado duas horas apenas olhando para uma tela em branco.

Eu suspeito que o que o Djinn está fazendo é fundamentalmente simples, mas estou perdendo alguns detalhes importantes que explicam como toda essa complicada ginástica lógica se relaciona com o código-fonte do Haskell ...