본문으로 건너뛰기

© 2026 Molayo

GeekNews헤드라인2026. 06. 29. 00:28

Prism: 타입 지정 효과를 갖춘 비순수 함수형 언어

요약

Prism은 효과(effects)를 제어 구조로 다루며 타입 지정 효과를 갖춘 비순수 함수형 언어에 대한 연구 및 논의를 담고 있습니다. 모나드 대신 효과를 사용하고, CBPV(call-by-push-value) 중간 표현을 활용하여 제어 흐름을 추상화하는 혁신적인 설계를 보여줍니다.

핵심 포인트

  • 모나드 대신 효과를 제어 구조로 사용하는 설계 방식 채택
  • CBPV 중간 표현을 활용한 효과 타입 및 제어 흐름 구현
  • 부작용, 예외, 연속 등을 하나의 추상화 인터페이스로 통합
  • Koka 언어의 영감을 받으면서도 독자적인 중간 표현 구조 보유

렌즈가 효과와 무슨 관련이 있는지 모르겠음. 글에서 렌즈를 언급할 때마다 “한 가지 트릭을 다섯 방식으로” 아래에 묶인 것 말고는 서로 무관해 보임
그리고 tick_use()가 대체 뭘 하려는 건지도 모르겠음. 독자가 설명 없이 이렇게 꼬인 예제를 이해하길 기대하는 건가? 타입 주석이 있었으면 도움이 됐을 듯

This is the language’s “effects instead of monads” stance applied to optics, paths instead of optic combinators.
즉 은유는 이렇다고 봄: 모나드는 값이지만 효과는 값이 아니라 일종의 제어 구조임. 마찬가지로 렌즈는 값이지만 Prism의 optic paths는 값이 아니라, 하드코딩된 문법을 가진 제어 구조에 가까움

더 시간을 들여 이해해야겠지만, 정말 아름다워 보임

정말 인상적임. 오히려 그래서 Diehl이 글 끝에서 컴파일러를 장난감이라고 부르는 이유가 궁금함. 새로운 수준의 우아함을 보여주는 성공적인 개념 증명처럼 보임

call-by-push-value 중간 표현이 실제로 어떻게 생겼는지 더 자세히 보고 싶음. 특히 합류 지점(join point)을 처리하는지가 궁금함
CBPV에 효과를 붙이는 이론을 다룬 논문들은 있었음. 계산에는 효과 타입이 있고 값에는 없다고 말하는 건 꽤 자연스럽지만, Koka의 증거 전달에 바로 적용할 만큼 구체화된 건 보지 못해서 흥미로움
전반적으로 Koka와 비교해 어떤 위치인지 알고 싶음. FBIP, Perceus, 증거 전달을 보면 Koka 작업에서 강하게 영감을 받은 게 분명하고, 동시에 중간 표현에 CBPV를 쓰니 확실히 다르기도 함. 다만 얼마나 다른지는 잘 보이지 않음

내가 계속 시간 내서 만들어보려던 것과 많이 닮아 보임. 좋다!

주제에서 살짝 벗어나지만, Stephen의 “write you a haskell” 프로젝트가 몇 년 전 멈춘 게 늘 좀 아쉬웠음. Prism에 대해서는 튜토리얼급 구현 설명이 나오면 좋겠음

이 언어에서 무엇이 “불순”한지 궁금함. 그 단어는 제목에만 나오고 본문에는 다시 안 나옴
모든 효과가 추적되는 것처럼 보이니, 효과가 없는 함수는 여전히 수학적 함수임. 뭔가 놓친 건가?

주어진 fib 정의처럼 함수 정의 안에서 지역 가변 변수를 쓰는 것과 관련 있어 보임. var x는 불순한 가변 변수이고, let x는 순수한 불변 변수임

보통 언어의 기능으로 다뤄지던 것들, 예를 들어 X 언어의 yield, Y 언어의 throw 같은 것을 또 하나의 인터페이스로 구현했다는 점이 정말 멋짐
부작용, 예외, 연속 같은 여러 제어 흐름을 하나의 추상화 위에 만들 수 있다는 건 설계 질문 전체를 새롭게 보는 흥미로운 방식이고, 더 많은 탐색과 혁신을 돕거나 자극하길 기대함. 앞으로도 영감을 얻으러 여러 해 동안 다시 보게 될 것 같음

AI 자동 생성 콘텐츠

본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0