334
2
부
기본기 다지기
효율적인 복사를 위해 최적화하고, 캐시 실패를 최소화하는 등의 방법으로 최근의 하드웨어에
서 최적화하거나, 다른 목적을 위해 최적화한 여러 종류의 함수형 데이터 구조가 있다. 이런 데
이터 구조 중 다수는 변경 가능한 데이터 구조에 대한 대안으로 만들어졌으며, 데이터 구조와
알고리즘에 대한 전통적인 교재들도 이들을 다룬다. 함수형 데이터 구조에 대한 더 자세한 내
용이 필요한 독자는 크리스 오카자키
Chris
Okasaki
의 『
Purely
Functional
Data
Structures
』와
리차드 버드
Richard
Bird
의 『
Pearls
of
Functional
Algorithm
Design
』(두 책 모두 캠브리지 대
학 출판사
Cambridge
University
Press
에서 나왔다 ), 또는 페씨 라비
Fethi
Rabhi
와 가이 라팔메
Guy
Lapalme
의 『
Algorithms
:
A
Functional
Programming
Approach
』(애디슨 웨슬리
Addison
-
Wesley
)를
참조하라.
6.12
마치며
이 장에서는
FP
의 기본 개념을 다루었고 소프트웨어 개발의 최신 문제를 해결하기 위해
FP
가
중요한 이유를 논했다. 기본 컬렉션과 그 안에 있는 고차 함수, 즉 콤비네이터를 사용해서 간결
하고 강력하면서 모듈화된 코드를 만들 수 있음을 봤다.
전형적인 함수형 프로그램은 이런 기반 위에 만들어진다. 여러분이 퇴근하고 나면 모든 프로그
램이 데이터를 받고, 그 입력에 대한 변환을 수행한 다음, 결과를 출력한다. 전형적인 프로그램
의 ‘격식’ 중 다수는 방금 말한 근본적인 목적을 흐릴 뿐이다.
다행히 전통적인 객체지향 언어도 이런 특성을 많이 채택했다. 이제는 대부분의 컬렉션에서 콤
비네이터를 지원한다. 자바
8
에 익명 함수 (람다라고 부른다 )가 도입되면서 컬렉션도 고차 함
수를 지원하도록 개선되었다.
OOP
개발자들을 위한 더 친절한
FP
소개서로는 브라이언 매릭
Brian
Marick
의 『
Functional
Programming
for
the
Object
-
Oriented
Programmer
』(린퍼브
Leanpub
)가 있다. 자바 개
발자 친구에게
FP
가 관심을 가질 만한 가치가 있음을 설득하려면 내가 쓴 『
Introduction
to
Functional
Programming
for
Java
Developers
』(오라일리 )를 고려하라.
335
6
장
스칼라 함수형 프로그래밍
폴 키우사노
Paul
Chiusano
와 루나르 비아르드나손
Rúnar
Bjarnason
이 쓴 『
Functional
Programming
in
Scala
』(매닝 출판사
Manning
Publications
)
4
는 스칼라를 사용한 함수형 프로그래밍에 대한 훌륭
하고 깊이 있는 소개서다.
콤비네이터를 사용해서 연습을 하고 싶다면 필 골드
Phil
Gold
의 “
Ninety
-
Nine
Scala
Problems
”
웹페이지 (
http
://
bit
.
ly
/
1nWgrMQ
)를 방문하라.
다음 장에서는
for
내장으로 돌아가서
FP
에 대한 지식을 활용해
for
내장의 구현 방식,
for
내
장에서 잘 쓰일 수 있는 데이터 타입을 만드는 방법,
for
내장과 콤비네이터 메서드를 조합해서
간결하고 강력한 코드를 만드는 방법 등을 소개할 것이다. 그와 동시에 함수형 개념을 더 깊이
이해하도록 할 것이다.
고급 함수형 프로그래밍 기능에 대해서는
16
장에서 다시 살펴볼 것이며, 스칼라의 컬렉션 구
현에 대해서는
12
장에서 자세히 다룰 것이다.
4
주_ 『스칼라로배우는함수형프로그래밍』 ( 류광역,제이펍 )
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.