- Hazel é um ambiente web de programação funcional ao vivo centrado em typed holes, permitindo verificar tipos, manipular e executar até programas incompletos
- Estados incompletos como lacunas, erros de tipo e conflitos de merge são modelados como holes, e o ponto central é reduzir os trechos em que o editor perde significado
- Os programas incompletos que podem ser criados no Hazel são definidos estática e dinamicamente, podendo ter tipos incompletos e resultados de execução incompletos
- O alvo de implementação é uma linguagem funcional da família Elm/ML, e ela é usada como base para ensino de programação, edição colaborativa, aprendizado de provas e pesquisa em conclusão de código com IA
- É um projeto de pesquisa open source liderado pelo Future of Programming Lab da University of Michigan, com uma build web para testes e o código-fonte no GitHub disponíveis ao público
A ideia central do Hazel
- Hazel é um ambiente de programação funcional ao vivo estruturado em torno de typed holes
- Mesmo programas inacabados permitem continuar o trabalho seguinte
- verificação de tipos
- manipulação
- execução
- O objetivo é criar um ambiente que mantenha feedback significativo mesmo quando o código em edição está quebrado
Como lida com programas incompletos
- No processo normal de programação, é comum o texto do programa ficar formalmente incompleto com frequência
- lacunas
- erros de tipo
- conflitos de merge
- As definições tradicionais de linguagens de programação não atribuem significado formal a essas estruturas, o que dificulta tratar até o comportamento das partes concluídas do código como feedback ao vivo
- Editores e ferramentas acabam dependendo de heurísticas complexas para oferecer autocompletar, verificação de tipos e navegação pelo código sem interrupções
- Hazel modela programas incompletos como programas com holes
- holes representam partes ausentes do programa
- funcionam como uma membrana que envolve trechos com erro ou áreas de conflito em ambientes colaborativos
- Essa abordagem se baseia em teoria contextual modal de tipos e teoria gradual de tipos
O ambiente Hazel e o modelo de execução
- Hazel está sendo implementado como um ambiente de programação web para uma linguagem funcional semelhante a Elm/ML
- Todos os programas incompletos que podem ser produzidos pela linguagem de ações de edição do Hazel são definidos estática e dinamicamente
- podem ter tipos incompletos
- ao executar, podem gerar resultados incompletos
- Graças a essa característica, Hazel é usado como plataforma para pesquisas sobre ambientes de programação do futuro e ensino de programação
Visão de pesquisa e materiais relacionados
- Toward Semantic Foundations for Program Editors: visão de pesquisa sobre bases semânticas para editores de programas
- Toward a Live, Rich, Composable, and Collaborative Planetary Compute Engine: visão de um ambiente computacional ao vivo, componível e colaborativo para ciência computacional em larga escala
- Apresentações relacionadas ao Hazel estão reunidas na YouTube playlist of Hazel-related talks
- Um demo recente pode ser visto na apresentação do Topos Institute
Fluxo recente de pesquisa e publicações
- Em 2025, várias pesquisas em torno do Hazel foram apresentadas em conferências
- Incremental Bidirectional Typing via Order Maintenance: pesquisa que incrementaliza a verificação bidirecional de tipos tomando emprestadas técnicas de sistemas de layout de navegadores, e recebeu o OOPSLA 2025 Distinguished Paper Award
- Syntactic Completions with Material Obligations: teoria e implementação para reparar erros sintáticos com obrigações materializadas visualmente no sistema Tylr
- A FAIR Case for a Live Computational Commons: proposta para reorganizar o trabalho científico em torno de um ambiente de programação ao vivo em larga escala
- Decomposable Type Highlighting for Bidirectional Type and Cast Systems: pesquisa de UI para depurar erros de tipo estáticos e dinâmicos no Hazel
- Hazel Deriver: A Live Editor for Constructing Rule-Based Derivations: ferramenta educacional para construir derivações em estilo de dedução natural
- Em 2024, recuperação de erros de tipo, integração com LLM, aprendizado de provas e ambientes computacionais para ciência do clima continuaram como temas principais
- Total Type Error Localization and Recovery with Holes trata de localização e recuperação de erros em programas com tipagem incorreta e recebeu o POPL 2024 Distinguished Paper Award
- Statically Contextualizing Large Language Models with Typed Holes combina servidor de linguagem e grandes modelos de linguagem para melhorar bastante o desempenho de conclusão de código com IA
- A NSF financia um projeto de pesquisa para transformar o Hazel em uma ferramenta de assistência a provas para sala de aula
- De 2017 a 2023, as pesquisas desenvolveram gradualmente as bases computacionais, a edição estrutural, a avaliação ao vivo e os recursos de apoio educacional do Hazel
- Hazelnut: A Bidirectionally Typed Structure Editor Calculus define um cálculo de ações de edição que insere typed holes automaticamente
- Live Functional Programming with Typed Holes desenvolve uma semântica operacional rica para expressões com typed holes
- Program Sketching with Live Bidirectional Evaluation aborda o Smyth, componente fundamental do Hazel Assistant
- Live Pattern Matching with Typed Holes trata do raciocínio sobre programas com pattern holes e recebeu o OOPSLA 2023 Distinguished Paper Award
Uso e contribuição
- Hazel oferece uma build web para experimentar diretamente
- O código-fonte está disponível publicamente no GitHub
- Hazel é um projeto de pesquisa open source liderado pelo Future of Programming Lab (FP Lab) da University of Michigan
- Para contribuições ou perguntas, é possível entrar em contato com o líder da equipe, Cyrus Omar
Ainda não há comentários.