O lis.py de Norvig: entenda um interpretador completo

Track:
Python Core

O interpretador lis.py de Peter Norvig é uma aula magna sobre linguagens de programação: um dialeto de Lisp funcional em 132 linhas de código. Vale mais que um mês de aula de compiladores!

Entender como funciona de verdade uma linguagem de programação ajuda a aprender qualquer linguagem e responder perguntas. Como funciona exatamente uma closure? Que problema ela resolve? Porque `if` e `def` não são funções? Porque toda linguagem precisa de palavras reservadas? Quais são as regras fundamentais que toda linguagem deve seguir? Graças ao lis.py de Norvig, podemos entender tudo isso na prática, com exercícios.

Nem toda pessoa que trabalha programando já teve oportunidade de aprender como é implementada uma linguagem de programação. Quem já estudou compiladores pode ter ficado com a impressão de que é tudo muito complicado. Mas Peter Norvig mostra que é possível criar um pequeno Lisp em 132 linhas de código bem legível. Nesta oficina vamos recriar o lis.py de Norvig, usando recursos modernos de Python como match/case, anotações de tipo, e integração com o Jupyter Notebook fornecendo uma interface amigável para programação em lis.py.