Polimorfismo de registros no sistema CT - Joao Rafael Moraes Nicola (2006)
Registros são usados em diversas linguagens (sob diversos nomes) para expressar a composição de objetos de dados e são usualmente associados a uma ou mais operações, como a projeção, atualização e remoção de campos. Tais operações são consideradas polimórficas se puderem ser usadas com qualquer registro que satisfaça um conjunto pequeno de exigências, e.g. uma operação de atualização de um determinado campo deve poder ser usada com qualquer campo que possua o campo em questão, independente do tipo do campo e da presença ou não de outros campos no registro. Diversas propostas foram feitas para o acréscimo de operações polimórficas de registro em Haskell. Este trabalho propõe uma abordagem baseada no sistema de restrições do Sistema CT e usa restrições para codificar os requerimentos de cada operação sobre registros. A proposta inclui alterações à sintaxe e ao sistema de tipos do Sistema CT. Para resolver o problema da satisfazibilidade das restrições criadas para codificar as exigências das operações, foi desenvolvida uma teoria que serviu de base para um algoritmo de satisfazibilidade. O trabalho também inclui uma sintaxe alternativa, que pode ser usada para apresentar de forma amigável os tipos inferidos para operações de registro.