Hazel
- Hazel é um ambiente de programação funcional ao vivo que permite verificar tipos, manipular e executar programas incompletos com type holes
- Não existem estados de editor semanticamente sem sentido
Motivação
- Ao programar, passamos muito tempo trabalhando com textos de programa formalmente incompletos por causa de lacunas, erros de tipo, conflitos de merge etc.
- As definições tradicionais de linguagens de programação não atribuem significado formal a essas estruturas
- Editores e ferramentas de programação acabam dependendo de soluções temporárias complexas
- Hazel modela programas incompletos com base em teoria dos tipos
Características do Hazel
- Implementado como uma linguagem de programação funcional semelhante a Elm/ML em um ambiente baseado na web
- Mesmo programas incompletos são bem definidos estaticamente e dinamicamente
- Pode ser usado como plataforma de pesquisa e ensino
Notícias e publicações
- Janeiro de 2025: artigo Grove aceito condicionalmente na POPL 2025
- Outubro de 2024: apresentação de pesquisa na OOPSLA 2024 combinando grandes modelos de linguagem e type holes
- Outubro de 2024: palestra principal de Cyrus prevista na HATRA 2024
- Setembro de 2024: concessão da NSF para desenvolver ferramentas de assistente de prova para uso em sala de aula
- Janeiro de 2024: apresentação de artigo sobre localização e recuperação de erros na POPL 2024
- Outubro de 2023: apresentação de pesquisa sobre pattern matching na OOPSLA 2023
- Janeiro de 2023: conquista do prêmio NSF CAREER
Equipe Hazel
- Hazel é um projeto de pesquisa open source liderado pelo Future of Programming Lab da Universidade de Michigan
- Quem tiver dúvidas ou interesse em contribuir pode entrar em contato com o líder da equipe, Cyrus Omar
Resumo do GN⁺
- Hazel propõe uma nova abordagem para lidar com programas incompletos e é uma plataforma útil para ensino e pesquisa em programação
- Com base em teoria dos tipos, permite executar até programas incompletos, contribuindo para explorar o futuro da programação
- Projetos com funcionalidades semelhantes incluem Elm, ML e várias ferramentas de ensino de programação
1 comentários
Comentários do Hacker News
Uma das características do Eclipse era a capacidade de executar código incompleto ou quebrado. Isso era possível porque o Eclipse Compiler para Java conseguia gerar bytecode para quase qualquer arquivo. Esse recurso oferecia um ambiente muito produtivo, e é uma pena que não tenha sido implementado em outros sistemas grandes.
Haskell oferece type holes, e existem plugins que fornecem ações de código para preenchê-los ou dividir casos. Agda também tem type holes e oferece recursos ainda mais poderosos.
Estou pronto para responder perguntas sobre Hazel e venho trabalhando nele nos últimos 4 anos como aluno de doutorado do Cyrus. Atualmente estou desenvolvendo uma interface projetiva moldável para programação ao vivo no Hazel.
Hazel é um ambiente de programação funcional ao vivo caracterizado por type holes. Mais informações: link do Hacker News
Tylr é uma demonstração de edição baseada em blocos, uma nova forma de edição estrutural. Mais informações: link do Hacker News
Gostei dos exemplos de código do Hazel, e tanto o editor ao vivo quanto a documentação exibida à direita são bons. Mas fico curioso se ele oferece algo além de um editor ao vivo e um verificador de tipos, e se de fato dá para escrever programas de verdade nele.
A interface do editor é linda e funciona bem até no celular. Muito impressionante.
Acho interessante a sintaxe em que o binding com
lettermina comin. Exemplo:Alguém sabe por que existe a palavra-chave
in?Não houve menção a Idris, mas o primeiro lugar em que vi esse estilo de desenvolvimento foi em Idris. Vídeo relacionado: link do YouTube
Tentei usar o playground em um telefone Android, mas a digitação não é refletida no código-fonte. Consigo tocar para posicionar o cursor e o teclado virtual aparece, mas não é possível digitar. Fico na dúvida se isso é um bug ou um problema de UX.
Sempre gostei do Hazel, e provavelmente seria uma ótima ferramenta para educação. Fico curioso sobre o que já foi construído com Hazel.