599
16
장
고급 함수형 프로그래밍
16.3
마치며
이 장의 내용은 어쩌면 이해하기 약간 어려웠을 수도 있다. 하지만 여기서 간략하게 소개한 내
용이 충분한 정보를 제공해서, 다른 사람이 이런 내용을 언급할 때 그 내용과 중요성을 좀 더
잘 이해할 수 있기를 바란다.
스칼라 표준 라이브러리는
map
,
flatMap
,
unit
등의 함수를 추가하기 위해 카테고리를 구현하
기보다는 객체지향적 접근 방식을 사용한다. 하지만
flatMap
과 같은 메서드가 있으면
for
내
장을 간결하게 사용할 수 있는 ‘모나드적’인 동작을 지원할 수 있다.
여기서는 모나드, 펑터, 애플리케이티브, 화살표 등을 함수형 설계 패턴에 있는 내용대로 언급
했다. 일부 함수형 프로그래머들에게는 이런 용어가 나쁜 인상으로 남아 있다. 하지만
OOP
세계에서 패턴을 과용하는 것이 재사용 가능한 구성 요소를 구축하려는 핵심 아이디어의 가치
를 부정하지는 못하는 것처럼, 카테고리 이론의 아이디어를 함수형 언어에 적용한 이런 요소도
그 형태와 관계없이 가치가 있다.
불행히도 보통의 프로그래머가 어려워하는 수학적인 표현과 어려운 이름으로 인해 카테고리를
조금만 공부해도 금방 무슨 이야기인지 알 수 없는 상태에 빠지기 쉽다. 하지만 그 핵심 내용을
추출해보면 익숙한 개념을 추상화한 것에 불과하며, 프로그램의 정확성, 추론, 간결성, 표현력
등에 강력한 영향을 끼칠 수 있다. 바라건대 더 많은 개발자들이 이런 개념에 더 익숙해졌으면
한다.
함수형 프로그래밍에 대해 더 탐구할 수 있도록 부록
A
에 여러 책, 논문, 블로그 글 등을 정리
해 두었다. 일부는 여기서 강조할 만한 가치가 있다. 여러분이 공부해둘 만한 가치가 있는 함수형
구조로는 객체 인스턴스의 그래프에서 특정 부분의 값을 설정하거나 읽기 위한 렌즈
lens
와 모나
드를 변환하기 위한 모나드 변환자
monad
transformer
가 있다.
다음 단계로 폴 키우사노
Paul
Chiusano
, 루나르 비아르드나손
Rúnar
Bjarnason
이 함께 쓴 『
Functional
Programming
in
Scala
』(
Manning
출판사,
2014
)
1
는 여러분의
FP
에 대한 지식을 더 깊
게 만들 수 있는 스칼라 연습 문제가 많이 들어 있는 훌륭한 책이다. 두 저자는 스칼라제드
(
https
://
github
.
com
/
scalaz
)의 주 공헌자다. 유진 요코타
Eugene
Yokota
는 “
learning
Scalaz
”
(
http
://
bit
.
ly
/
1u139AQ
)라는 훌륭한 블로그 글을 연재했다.
1
역주_ 『스칼라로배우는함수형프로그래밍 』 ( 제이펍,
2015
)
600
3
부
기초를 넘어서
세이프리스 (
http
://
bit
.
ly
/
1rGQfkG
)도 특히 타입 시스템의 고급 구성 요소를 다룬다.
http
://
typelevel
.
org
에도 학습에 도움이 될 만한 프로젝트가 몇 가지 있다.
다음 장에서는 좀 더 실용적인 부분으로 주제를 바꿔서, 아주 중요한 주제인 동시성 소프트웨어
를 스칼라로 작성하는 방법에 대해 다룰 것이다.
Get 프로그래밍 스칼라: 실용적인 스칼라 활용법을 익히는 가장 확실한 실전 바이블 (2.11.x 버전 기반) now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.