2P by neo 13일전 | favorite | 댓글 1개

Hazel

  • Hazel은 타입 홀이 있는 불완전한 프로그램을 타입 체크하고 조작하며 실행할 수 있는 라이브 함수형 프로그래밍 환경임
  • 의미 없는 편집기 상태가 존재하지 않음

동기

  • 프로그래밍 시, 빈칸, 타입 오류, 병합 충돌 등으로 인해 형식적으로 완전하지 않은 프로그램 텍스트와 작업하는 시간이 많음
  • 기존 프로그래밍 언어 정의는 이러한 구조에 공식적인 의미를 부여하지 않음
  • 프로그램 편집기와 도구들은 복잡한 임시 방편에 의존해야 함
  • Hazel은 불완전한 프로그램을 타입 이론에 기반하여 모델링함

Hazel의 특징

  • Elm/ML과 유사한 함수형 프로그래밍 언어로 웹 기반 환경에서 구현됨
  • 불완전한 프로그램도 정적 및 동적으로 잘 정의됨
  • 연구 및 교육 플랫폼으로 활용 가능함

뉴스 및 출판물

  • 2025년 1월: POPL 2025에서 조건부 승인된 Grove 논문
  • 2024년 10월: OOPSLA 2024에서 대형 언어 모델과 타입 홀을 결합한 연구 발표
  • 2024년 10월: HATRA 2024에서 Cyrus의 기조연설 예정
  • 2024년 9월: NSF에서 수업용 증명 보조 도구 개발을 위한 연구비 수여
  • 2024년 1월: POPL 2024에서 오류 지역화 및 복구에 관한 논문 발표
  • 2023년 10월: OOPSLA 2023에서 패턴 매칭에 관한 연구 발표
  • 2023년 1월: NSF CAREER 상 수상

팀 Hazel

  • Hazel은 미시간 대학교의 Future of Programming Lab에서 주도하는 오픈 소스 연구 프로젝트임
  • 질문이나 기여에 관심이 있는 경우 팀 리더인 Cyrus Omar에게 연락 가능

GN⁺의 정리

  • Hazel은 불완전한 프로그램을 다루는 새로운 접근 방식을 제안하며, 프로그래밍 교육 및 연구에 유용한 플랫폼임
  • 타입 이론을 기반으로 하여 불완전한 프로그램도 실행 가능하게 함으로써, 프로그래밍의 미래를 탐구하는 데 기여함
  • 유사한 기능을 가진 프로젝트로는 Elm, ML, 그리고 다양한 프로그래밍 교육 도구들이 있음
Hacker News 의견
  • Eclipse의 특징 중 하나는 불완전하거나 깨진 코드를 실행할 수 있는 기능이었음. 이는 Java의 Eclipse Compiler가 거의 모든 파일에 대해 바이트코드를 생성할 수 있었기 때문임. 이 기능은 매우 생산적인 환경을 제공했으며, 다른 대규모 시스템에서 구현되지 않아 아쉬움.

  • Haskell은 타입 홀을 제공하며, 이를 완성하거나 케이스를 분할하는 코드 액션을 제공하는 플러그인이 있음. Agda도 타입 홀을 가지고 있으며, 더 강력한 기능을 제공함.

  • Hazel에 대한 질문에 답변할 준비가 되어 있으며, 지난 4년간 Cyrus의 박사과정 학생으로 Hazel에서 작업해왔음. 현재 Hazel에서 라이브 프로그래밍을 위한 몰더블 프로젝셔널 인터페이스를 개발 중임.

    • Hazel에 추가한 기능 목록: GitHub 링크
    • 타입 홀과 Hazel 언어 서버를 사용하여 LLM 코드 완성을 위한 코드 컨텍스트 제공에 대해 발표한 영상: YouTube 링크
  • Hazel은 타입 홀이 특징인 라이브 함수형 프로그래밍 환경임. 관련 정보: Hacker News 링크

  • Tylr는 타일 기반 편집의 데모로, 새로운 구조 편집 방식임. 관련 정보: Hacker News 링크

  • Hazel의 코드 예제가 마음에 들며, 라이브 편집기와 오른쪽에 나타나는 문서화가 좋음. 하지만 라이브 편집기와 타입 체커 이상의 기능을 제공하는지, 실제로 프로그램을 작성할 수 있는지 궁금함.

  • 에디터 UI가 아름답고 모바일에서도 잘 작동함. 매우 인상적임.

  • "let" 바인딩이 "in"으로 끝나는 문법이 흥미로움. 예시:

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

    "in" 키워드의 이유를 아는 사람?

  • Idris에 대한 언급은 없었지만, 이 스타일의 개발을 처음 본 곳이 Idris였음. 관련 영상: YouTube 링크

  • Android 폰에서 플레이그라운드를 시도했지만, 키 입력이 소스 코드에 반영되지 않음. 커서를 탭하여 위치할 수 있고 가상 키보드가 나타나지만, 입력이 불가능함. 이는 버그인지 아니면 UX 문제인지 궁금함.

  • Hazel을 항상 좋아했으며, 아마도 교육에 훌륭한 도구일 것임. Hazel로 무엇이 만들어졌는지 궁금함.