2 pontos por GN⁺ 2024-11-02 | 1 comentários | Compartilhar no WhatsApp

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

 
GN⁺ 2024-11-02
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.

    • Lista dos recursos que adicionei ao Hazel: link do GitHub
    • Vídeo de uma apresentação sobre como fornecer contexto de código para conclusão de código com LLM usando type holes e o language server do Hazel: link do YouTube
  • 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 let termina com in. Exemplo:

    let comparison =
     (0 == 0, 0 < 1, 1 <= 1, 2 > 1, 1 >= 1) 
    in
    

    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.