Sobre o serviço
TraduzidoEu sou um desenvolvedor Racket e Scheme e trabalho naquele canto do mundo Lisp que engenheiros de backend comuns quase nunca visitam: eu crio linguagens, não apenas uso as prontas. Quando uma tarefa teima em revirar seu código de uso geral, a resposta honesta muitas vezes soa assim — você precisa de uma pequena linguagem específica para a tarefa em si. É isso que eu projeto e implemento. Eu escrevo programas funcionais cuidadosos e bem estruturados, macros higiênicas, leitores e avaliadores personalizados, assim como as ferramentas que transformam uma ideia bruta em um interpretador funcional que você pode raciocinar.
Meu trabalho geralmente se divide em três formas. A primeira são DSLs e sistemas de macros: eu uso as capacidades orientadas a linguagem do Racket para dar à sua equipe uma notação para uma tarefa específica, com verificações de sintaxe, mensagens de erro claras e um leitor que parece nativo, não algo improvisado. A segunda são interpretadores e pequenos compiladores: analisadores, avaliadores, caminhantes de árvore e backends de bytecode para formatos de configuração, motores de regras, camadas de script e linguagens experimentais. A terceira são ferramentas educacionais e de pesquisa: eu me preocupo com programas que se explicam, então eu crio visualizadores, depuradores passo a passo, verificadores de exercícios e materiais interativos para aqueles que estão aprendendo programação funcional e o cálculo lambda subjacente.
Como cresci na família Lisp em vez de trabalhar com backend mainstream ou Clojure, a correção e o núcleo mínimo são especialmente importantes para mim. Eu confio em contratos, testes baseados em propriedades e pequenas funções compostáveis, documento gramática e invariantes para que a próxima pessoa não precise desmontar seu analisador. Se você tem um protótipo meio funcional, uma pilha de macros que ninguém se atreve a tocar, ou uma ideia nova para uma pequena linguagem — eu vou levar isso de um esboço a um resultado confiável.
— Linguagens de domínio e macros higiênicas em Racket
— Interpretadores, avaliadores e pequenos compiladores em Scheme
— Analisadores, leitores personalizados e motores de regras
— Ferramentas educacionais: depuradores passo a passo, visualizadores, verificação de exercícios
— Refatoração funcional, contratos e testes baseados em propriedades
— Migração e modernização de código antigo em Scheme e Lisp
Meu trabalho geralmente se divide em três formas. A primeira são DSLs e sistemas de macros: eu uso as capacidades orientadas a linguagem do Racket para dar à sua equipe uma notação para uma tarefa específica, com verificações de sintaxe, mensagens de erro claras e um leitor que parece nativo, não algo improvisado. A segunda são interpretadores e pequenos compiladores: analisadores, avaliadores, caminhantes de árvore e backends de bytecode para formatos de configuração, motores de regras, camadas de script e linguagens experimentais. A terceira são ferramentas educacionais e de pesquisa: eu me preocupo com programas que se explicam, então eu crio visualizadores, depuradores passo a passo, verificadores de exercícios e materiais interativos para aqueles que estão aprendendo programação funcional e o cálculo lambda subjacente.
Como cresci na família Lisp em vez de trabalhar com backend mainstream ou Clojure, a correção e o núcleo mínimo são especialmente importantes para mim. Eu confio em contratos, testes baseados em propriedades e pequenas funções compostáveis, documento gramática e invariantes para que a próxima pessoa não precise desmontar seu analisador. Se você tem um protótipo meio funcional, uma pilha de macros que ninguém se atreve a tocar, ou uma ideia nova para uma pequena linguagem — eu vou levar isso de um esboço a um resultado confiável.
— Linguagens de domínio e macros higiênicas em Racket
— Interpretadores, avaliadores e pequenos compiladores em Scheme
— Analisadores, leitores personalizados e motores de regras
— Ferramentas educacionais: depuradores passo a passo, visualizadores, verificação de exercícios
— Refatoração funcional, contratos e testes baseados em propriedades
— Migração e modernização de código antigo em Scheme e Lisp