GN⁺: 타입드 홀을 특징으로 하는 라이브 함수형 프로그래밍 환경 Hazel
(hazel.org)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로 무엇이 만들어졌는지 궁금함.