Construindo e Testando uma Biblioteca Haskell: JSON, Pretty Printing e QuickCheck

Este guia reúne, em duas partes, os capítulos 5 e 11 de Real World Haskell (Bryan O’Sullivan, Don Stewart e John Goerzen, 2008), em adaptação para o português. Na Parte 1, construímos do zero uma biblioteca de manipulação e impressão agradável (pretty printing) de dados JSON — aprendendo, no caminho, módulos, tipos algébricos, tipos abstratos e o design incremental de bibliotecas. Na Parte 2, colocamos essa biblioteca à prova: especificamos suas invariantes com o QuickCheck, deixamos a máquina gerar milhares de casos de teste, e medimos a cobertura com o HPC — que revela exatamente o que a suíte deixou de fora.

Nota desta edição revisada (v2). O texto original tem mais de quinze anos, e o ecossistema Haskell mudou bastante. Nesta revisão: (1) instalação e criação de projetos atualizadas para o fluxo moderno com GHCup e Stack (package.yaml/hpack); (2) código ajustado para GHC 9.x — em particular, desde o GHC 8.4 o operador <> faz parte do Prelude, o que exige um ajuste que o livro não previa; (3) as saídas do QuickCheck 2.14 atualizadas, a seção do quickCheckAll reescrita (com uma correção no código de saída da suíte) e a seção do HPC refeita para as ferramentas atuais; e (4) todo o código e todas as saídas de terminal foram executados e conferidos com GHC 9.4 e QuickCheck 2.14.3.


O guia completo — as duas partes, do tour pelo JSON à cobertura de testes com HPC — está no site de Tutoriais, dividido em páginas por seção para facilitar a navegação e a consulta:

👉 Acessar o tutorial completo




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • Elixir e Phoenix LiveView: Construindo uma Aplicação Todo List do Zero
  • Clojure e ClojureScript: Construindo uma Aplicação Todo List do Zero
  • Two Ways to Simulate the Same World: Raster and Vector Backends in DisSModel
  • Revitalizing LambdaGEO: From Student Projects to Production-Ready Software
  • Shipping a Python Library to PyPI: The Complete Checklist