Haskell — 게으름과 순수함이 클래스로 묶인 학술 언어
1. 요약
Haskell은 1990년 4월 1일 1.0 보고서가 출판된 표준화된 순수 함수형 언어다. Paul Hudak·Philip Wadler·Simon Peyton Jones 등이 주도한 위원회 작업의 결과물이며, 이름은 논리학자 Haskell Curry에서 따왔다. "순수하고 게으르다(pure and lazy)" 가 핵심 정체성이다.
2. 배경 — 분산된 함수형 연구의 통합
1980년대 후반 함수형 언어는 ML·Miranda·Lazy ML·Lisp 변종 등으로 파편화되어 있었다. 연구자들은 공통 표준 이 필요하다고 느꼈다. 1987년 오리건 포틀랜드 회의에서 위원회가 결성되었고, 3년 작업 끝에 1990년 Haskell 1.0이 기록되었다.
Simon Peyton Jones는 후일 회고하길, "역사적으로 게으름이 가장 도움이 된 점은 그것이 우리를 순수해지도록 강제한 것" 이라고 했다. 게으른 평가에서는 부수효과가 위험해서 결국 순수 함수만 허용 하는 길로 갈 수밖에 없었다는 것이다.
3. 핵심 특징
- Lazy evaluation — 값은 필요할 때 계산. 무한 자료구조도 표현 가능.
- Pure functions — 부수효과 없음. 같은 입력은 항상 같은 출력.
- Strong static typing + Type inference — Hindley-Milner 타입 시스템.
- Algebraic Data Types + Pattern matching —
data Tree = Leaf | Node Tree Tree같은 표현 - Type classes — ad-hoc polymorphism 의 학술적 해법. 후일 Rust trait·Scala implicit의 원형.
- Monads — 부수효과를 순수 하게 다루는 추상. IO·Maybe·List 모나드.
4. 주 용도
- 1990~2000: 학술 연구·프로그래밍 언어 이론
- 2000~2010: 컴파일러·DSL 구현 (Pugs Perl 6 인터프리터·GHC 자체)
- 2010~현재: 금융(Standard Chartered·Barclays)·암호화폐(Cardano)·정형 검증·산업 도구(Pandoc·xmonad)
5. 시대 설계 도구 매핑
Haskell은 "타입 시스템이 곧 설계 명세" 라는 패러다임의 표준이다. 다른 언어가 UML·시퀀스 다이어그램으로 설계를 박을 때, Haskell은 타입 시그니처 자체로 설계 를 기록한다.
filter :: (a -> Bool) -> [a] -> [a]
이 한 줄이 함수의 의도·입력·출력 모두 를 기록한다. 학생이 코드를 짜기 전에 타입 시그니처부터 기록하는 Type-Driven Development 가 산업계로 흘러 들어가 TypeScript·Rust·Scala·Kotlin의 강한 타입 시스템에 영향을 줬다.
6. 강의 활용
Haskell은 강의의 핵심 명제 "설계 없이는 코딩이 안된다" 의 가장 극단적인 실현이다. Haskell에서는 타입을 박지 않으면 컴파일 자체가 거부 된다. 즉, 설계 없이는 코드도 없다.
이는 LLM 시대 Spec-driven Development 의 원리와 정확히 같다. 명세를 박으면 코드는 명세의 결과물이다. Haskell의 타입 시스템은 30년 전부터 이를 강제해 왔고, 이제 LLM 시대에 프롬프트 = 명세 = 설계도 로 같은 원리가 기록된다.
또한 Haskell의 Monad 는 부수효과를 명시적으로 기록하는 설계 패턴이다. "부수효과는 코드에 숨기지 말고 타입에 박아라" — 이는 Vibe Coding 시대 AI 에이전트의 부수효과(파일 쓰기·DB 변경)를 명시적으로 박아라 는 원리와 직결된다. Haskell의 IO 모나드 = AI 시대의 도구 호출 명세서 다.
마지막으로 Haskell의 학술-산업 격차 는 설계 도구가 너무 정형이면 산업이 따라오기 어렵다 는 교훈을 준다. Rust·Scala·TypeScript는 Haskell의 아이디어를 덜 순수하게 만들어 산업화에 성공했다. 설계는 정형이 좋지만, 너무 정형이면 비용이 크다 — 이 균형이 강의의 핵심이다.
출처
- A History of Haskell: Being Lazy with Class - Simon Peyton Jones
- Past and Present of Haskell: Interview with Simon Peyton Jones - Serokell
- Simon Peyton Jones - Wikipedia
- A History of Haskell PDF
그룹 시리즈
→ synthesis/group-g6 (시대 그룹 종합 카드)