순수 함수 문법
순수 함수 문법 (Pure Function Syntax)
A -> B 같은 문법에 "순수하고 부작용이 없는 함수"라는 의미를 부여하는 실험적 기능이에요. 아직은 문서화용 성격이 강하지만, 캡처 추적으로 순수성을 검사할 수 있는 기반을 준비하는 역할을 해요.
본문
순수 함수(pure function)는 언어 import로 켤 수 있는 실험적 기능이에요:
import language.experimental.pureFunctions
이 import 아래에서 문법 A -> B를 사용할 수 있는데, 의도는 A에서 B로의 순수하고 부작용이 없는 함수를 나타내는 것이에요. 몇 가지 다른 변형도 지원돼요:
(A1, ..., An) -> B // a multi-argument pure function
(x1: A1, ..., xn: An) -> B // a dependent pure function
A ?-> B // a pure context function
(A1, ..., An) ?-> B // a multi-argument pure context function
(x1: A1, ..., xn: An) ?-> B // a dependent pure context function
-> B // a pure call-by-name parameter
함수의 순수성은 캡처 추적(capture tracking)으로 검사할 수 있어요. 이는 현재 아주 초기 단계에 있는 또 다른 실험적 언어 기능이에요. 그 두 번째 기능이 성숙할 때까지, 순수 함수 문법은 문서화 전용으로 이해되어야 해요. 순수 함수 타입은 그 모든 인스턴스가 부작용이 없어야 한다는 요구사항이에요. 이 요구사항은 현재 수동으로 검사해야 하지만, 미래에는 자동화될 수 있어요.
지금 왜 켜나요? (Why Enable It Now?)
오늘 pureFunctions를 켜고 싶어할 이유는 적어도 세 가지가 있어요:
- 의도를 명확하게 해 주므로 더 나은 문서화를 얻기 위해,
- 완전한 효과 체킹이 구현될 때를 대비해 코드 베이스를 준비하기 위해,
- 캡처 체킹이 켜지거나 꺼진 상태로 모두 컴파일될 수 있는 공통 코드 베이스를 가지기 위해.
추가 정보 (More info):
TBD