본문 바로가기

추천 검색어

실시간 인기 검색어

코틀린으로 배우는 함수형 프로그래밍

프로그래밍 인사이트
조재용 , 우명인 지음
인사이트

2023년 03월 24일 출간

종이책 : 2019년 12월 20일 출간

(개의 리뷰)
( 0% 의 구매자)
eBook 상품 정보
파일 정보 pdf (4.98MB)
ISBN 9788966263974
지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
교보eBook App 듣기(TTS) 가능
TTS 란?
텍스트를 음성으로 읽어주는 기술입니다.
  • 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를​ 읽을 수 있습니다.
  • 전자책 화면에 표기된 주석 등을 모두 읽어 줍니다.
  • 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
  • '교보 ebook' 앱을 최신 버전으로 설치해야 이용 가능합니다. (Android v3. 0.26, iOS v3.0.09,PC v1.2 버전 이상)

PDF 필기 Android 가능 (iOS예정)
소득공제
소장
정가 : 20,000원

쿠폰적용가 18,000

10% 할인 | 5%P 적립

이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.

카드&결제 혜택

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
  • 리뷰 작성 시, e교환권 추가 최대 300원

작품소개

이 상품이 속한 분야

어렵게만 느껴지는 함수형 개념을 충실히 설명하여, 실전에서 활용할 수 있는 지식이 될 수 있도록 한 책이다. 다양한 모범 예제를 보여주며, 배운 내용을 바로 활용해 볼 수 있는 실전응용 문제를 제시해 함수형 프로그래밍을 체득할 수 있게 해 준다.
이 책은 함수형 프로그래밍을 멀티 패러다임 언어인 코틀린으로 다룬다. 따라서 순수 함수형이 아닌 언어로 함수형 프로그래밍을 할 때의 시행착오와 대처법도 다루는데, 순수 함수형 언어를 실전에서 쓰는 경우가 드문 점을 감안하면 실질적으로 많은 도움이 될 것이다.
코틀린은 함수적 특징과 함께 객체지향 프로그래밍도 가능하도록 설계되어 있기 때문에 필요에 따라 명령형ㆍ 객체지향형ㆍ 함수형 예제를 비교하며 보였다.
또한 언어가 제공하는 함수적인 기능을 단순히 사용해 보는 것을 넘어 고차 함수, 함수적 자료구조, 타입 등을 직접 만들어 볼 수 있게 구성하였으므로, 함수형 라이브러리를 만들어서 제공할 수 있는 수준까지 전진할 수 있을 것이다.
1장 함수형 프로그래밍이란?
1.1 함수형 프로그래밍의 특징
1.2 순수한 함수란 무엇인가?
____동일 입력 동일 출력
____부수효과 없는 코드
____순수한 함수의 효과와 그외 고려사항
1.3 부수효과 없는 프로그램 작성하기
____공유 변수 수정으로 인한 부수효과
____객체의 상태 변경으로 인한 부수효과
1.4 참조 투명성으로 프로그램을 더 안전하게 만들기
____참조 투명하지 않은 함수
____참조 투명한 함수
1.5 일급 함수란?
____일급 객체(first-class object)
____일급 함수(first-class function)
1.6 일급 함수를 이용한 추상화와 재사용성 높이기
____간단한 계산기 예제
____객체지향적으로 개선한 계산기 예제
____함수형 프로그래밍 방식으로 개선한 계산기 예제
1.7 게으른 평가로 무한 자료구조 만들기
____무한대 값을 자료구조에 담다
1.8 마치며
____코틀린으로 함수형 프로그래밍 시작하기
2.1 프로퍼티 선언과 안전한 널 처리
____프로퍼티 선언
____안전한 널 처리
2.2 함수와 람다
____함수를 선언하는 다양한 방법
____매개변수에 디폴트값 설정하기
____익명 함수와 람다 표현식
____확장 함수
2.3 제어 구문
____if문
____when문
____for문
2.4 인터페이스
____인터페이스의 특징
____인터페이스 선언하고 상속하기
____인터페이스에 추상 함수 선언하기
____추상 함수 구현하기
____추상 프로퍼티의 선언과 사용
2.5 클래스
____클래스와 프로퍼티
____data 클래스
____enum 클래스
____sealed 클래스
2.6 패턴 매칭
____다양한 패턴 정의 방법
____조건에 따른 패턴 매칭
____코틀린 패턴 매칭의 제약
2.7 객체 분해
2.8 컬렉션
____리스트와 세트
____맵
2.9 제네릭
____제네릭 함수 선언
2.10 코틀린 표준 라이브러리
____let 함수
____with 함수
____run 함수
____apply 함수
____also 함수
____let, with, run, apply, also 함수 비교
____use 함수
2.11 변성
____무공변의 의미와 예
____공변의 의미와 예
____반공변의 의미와 예
____in, out으로 변성 선언하기
2.12 마치며

3장 재귀
3.1 함수형 프로그래밍에서 재귀가 가지는 의미
____피보나치 수열을 명령형 프로그래밍으로 구현한 예제
____피보나치 수열을 재귀로 구현한 예제
____함수형 프로그래밍에서 재귀
3.2 재귀를 설계하는 방법
____재귀 함수 설계 방법
____재귀가 수행되는 흐름 관찰해 보기
____재귀 함수 설계 방법을 사용하여 코드를 구현하기
3.3 재귀에 익숙해지기
____reverse 함수 예제
____take 함수 예제
____repeat 함수 예제
____zip 함수 예제
3.4 메모이제이션으로 성능 개선하기
____재귀적인 방식의 피보나치 수열 예제
____메모이제이션을 사용한 피보나치 수열 예제
____재귀의 문제점을 함수적으로 해결하기
3.5 꼬리 재귀로 최적화하기
____꼬리 재귀 최적화란?
____maximum 함수를 꼬리 재귀로 다시 작성하기
____reverse 함수 꼬리 재귀로 다시 작성하기
____take 함수를 꼬리 재귀로 다시 작성하기
____zip 함수를 꼬리 재귀로 다시 작성하기
3.6 상호 재귀를 꼬리 재귀로 최적화하기
____상호 재귀
____트램펄린
3.7 실전 응용
____멱집합을 구하는 함수
3.8 마치며

4장 고차 함수
4.1 고차 함수란?
____고차 함수 조건을 만족하는 예
____코드의 재사용성을 높인다
____기능의 확장이 쉽다
____코드를 간결하게 작성할 수 있다
4.2 부분 함수
____부분 함수의 예
____부분 함수 만들기
____부분 함수의 필요성
4.3 부분 적용 함수
4.4 커링 함수
____코틀린용 커링 함수 추상화하기
4.5 합성 함수
____함수 합성 일반화하기
____포인트 프리 스타일 프로그래밍
____하나 이상의 매개변수를 받는 함수의 합성
4.6 실전 응용
____zipWith 함수
____콜백 리스너를 고차 함수로 대체하기
4.7 마치며

5장 컬렉션으로 데이터 다루기
5.1 함수형 컬렉션의 데이터 처리
____간단한 리스트 자료구조 만들기
____addHead 함수 만들기
____appendTail 함수 만들기
____꼬리 재귀로 작성한 appendTail 함수의 시간 복잡도
____getTail 함수 만들기
5.2 컬렉션 데이터 걸러 내기
____명령형 방식 vs. 함수형 방식
____filter 함수 만들기
5.3 컬렉션 데이터 변경하기
____명령형 방식 vs. 함수형 방식
____map 함수 만들기
5.4 컬렉션 데이터 단계별로 줄이기
____foldLeft 함수 만들기
____foldLeft 함수 사용하기
____foldLeft 함수로 toUpper 함수 작성하기
____foldRight 함수 만들기
____foldLeft vs. foldRight
5.5 여러 컬렉션 데이터 합치기
____zipWith 함수 만들기
5.6 코틀린 리스트를 사용한 명령형 방식과 함수형 방식 비교
____명령형 방식과 함수형 방식의 기능 비교
____명령형 방식과 함수형 방식의 성능 비교
5.7 게으른 컬렉션 FunStream
____FunList vs. FunStream 선언 방법 비교
____FunList vs. FunStream 성능 비교
____FunStream으로 무한대 값 만들기
5.8 실전 응용
____FunList에 printFunList 함수 추가하기
5.9 마치며

6장 함수형 타입 시스템
6.1 타입 시스템
____타입 시스템의 종류와 특징
____함수형 언어의 정적 타입 시스템
6.2 대수적 데이터 타입
____곱 타입의 예와 한계
____합 타입 사용한 OR 결합
____함수형 프로그래밍에서의 대수적 데이터 타입
6.3 타입의 구성요소
____타입 변수
____값 생성자
____타입 생성자와 타입 매개변수
6.4 행위를 가진 타입 정의하기
____인터페이스 vs. 트레이트 vs. 추상 클래스 vs. 믹스인
____타입 클래스와 타입 클래스의 인스턴스 선언하기
6.5 재귀적 자료구조
6.6 실전 응용
____대수적 합 타입의 장점
6.7 마치며

7장 펑터
7.1 펑터란?
____펑터 선언하기
7.2 메이비 펑터 만들기
7.3 트리 펑터 만들기
7.4 이더 펑터 만들기
7.5 단항 함수 펑터 만들기
7.6 펑터의 법칙
____펑터 제1 법칙
____펑터 제2 법칙
____펑터의 법칙을 만족하지 못하는 펑터 인스턴스의 예
7.7 실전 응용
____매개변수가 한 개 이상인 함수로 매핑하기
7.8 마치며

8장 애플리케이티브 펑터
8.1 애플리케이티브 펑터란?
____애플리케이티브 펑터의 정의
____애플리케이티브 펑터 타입 클래스
8.2 메이비 애플리케이티브 펑터 만들기
____메이비 애플리케이티브 펑터 사용해 보기
____애플리케이티브 스타일
____확장 함수를 사용한 메이비 애플리케이티브 펑터 만들기
8.3 트리 애플리케이티브 펑터 만들기
____일반 트리 펑터 만들기
____애플리케이티브 펑터로 확장하기
8.4 이더 애플리케이티브 펑터 만들기
8.5 애플리케이티브 펑터의 법칙
____항등(Identity) 법칙
____합성(Composition) 법칙
____준동형 사상(Homomorphism) 법칙
____교환(Interchange) 법칙
____펑터와 애플리케이티브 펑터 간의 관계
8.6 실전 응용
____liftA2 함수 만들기
____sequenceA 함수 만들기
8.7 마치며

9장 모노이드
9.1 모노이드란?
9.2 모노이드 타입 클래스
____간단한 모노이드 타입 클래스 선언
____모노이드의 법칙
____mconcat 함수 만들기
9.3 메이비 모노이드 만들기
____메이비 모노이드 검증하기
9.4 폴더블 바이너리 트리에 foldMap 함수 만들기
____foldMap 함수
____폴더블 바이너리 트리 만들기
9.5 실전 응용
____바이너리 트리 내에 특정 값이 존재하는지 확인하기
____foldMap을 사용하여 바이너리 트리를 리스트로 바꾸기
9.6 마치며

10장 모나드
10.1 모나드 타입 클래스
10.2 메이비 모나드
____메이비 모나드 활용
10.3 모나드 법칙
____왼쪽 항등(left identity) 법칙
____오른쪽 항등(right identity) 법칙
____결합(associativity) 법칙
____함수 합성 관점에서의 모나드 법칙
10.4 IO 모나드
____입출력 작업이 외부와 분리되지 않은 예
____입출력 작업이 외부와 분리된 예
10.5 리스트 모나드
____FunList 기본 골격 선언하기
____리스트 생성 함수 및 출력 함수 만들기
____리스트 모노이드로 만들기
____fmap 함수 구현하기
____pure와 apply 함수 구현하기
____flatMap 함수 구현하기
10.6 실전 응용
____리스트 생성하기
____두 리스트의 모든 조합의 튜플 리스트 만들기
____리스트의 문자를 대문자로 변환하기
____리스트의 값에 함수 적용하기
____중복 문자 제거하기
____리스트 구성요소 뒤집기
10.7 마치며

11장 로깅, 예외처리, 테스팅, 디버깅
11.1 함수형 프로그래밍에서 로깅하기
____명령형 프로그래밍에서의 로깅
____함수형 프로그래밍에서의 로깅
____확장 함수를 사용해서 개선하기
____라이터 모나드 만들기
11.2 함수형 프로그래밍에서 예외처리하기
____널값이나 -1을 사용한 예외처리
____메이비 모나드를 사용한 예외처리
____이더 모나드를 사용한 예외처리
____트라이 모나드를 사용한 예외처리
11.3 함수형 프로그래밍에서 테스팅하기
____테스트하기 좋은 코드 만들기
____순수한 함수 테스트하기
____부수효과가 존재하는 함수 테스트하기
11.4 함수형 프로그래밍에서 디버깅하기
____디버깅 팁과 도구
____인텔리제이를 활용한 리스트 체인 디버깅
____인텔리제이를 활용한 시퀀스 체인 디버깅
11.5 마치며

작가정보

저자(글) 조재용

항상 새로운 도전을 즐기며, 소프트웨어 구루를 꿈꾸는 뼈발자다. 삼성 SDS에서 커널 및 드라이버 엔지니어로 개발 일을 시작했다. 그 후 보안 솔루션의 백엔드와 SK 테크엑스에서 AI 플랫폼의 백엔드를 개발했고, 현재 네이버 지도에서 검색 및 데이터 엔지니어로 근무하고 있다.

저자(글) 우명인

함수형 프로그래밍에 관심이 많고, 주로 코틀린을 사용해 안드로이드 앱을 개발한다. FunFunStudy라는 함수형 프로그래밍 커뮤니티 겸 스터디 그룹을 운영하고 있고, 배움을 즐기는 개발자다.

이 상품의 총서

Klover리뷰 (0)

Klover리뷰 안내
Klover(Kyobo-lover)는 교보를 애용해 주시는 고객님들이 남겨주신 평점과 감상을 바탕으로, 다양한 정보를 전달하는 교보문고의 리뷰 서비스입니다.
1. 리워드 안내
구매 후 90일 이내에 평점 작성 시 e교환권 100원을 적립해 드립니다.
  • - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다.
  • - 리워드는 한 상품에 최초 1회만 제공됩니다.
  • - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
2. 운영 원칙 안내
Klover리뷰를 통한 리뷰를 작성해 주셔서 감사합니다. 자유로운 의사 표현의 공간인 만큼 타인에 대한 배려를 부탁합니다. 일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
  • 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
  • 도서와 무관한 내용의 리뷰
  • 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
  • 의성어나 의태어 등 내용의 의미가 없는 리뷰

구매 후 리뷰 작성 시, e교환권 100원 적립

문장수집

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여 주는 교보문고의 새로운 서비스 입니다. 교보eBook 앱에서 도서 열람 후 문장 하이라이트 하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 ‘좋아요’ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보없이 삭제될 수 있습니다.
리워드 안내
  • 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
  • e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다.
  • 리워드는 한 상품에 최초 1회만 제공됩니다.
  • sam 이용권 구매 상품/오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.

구매 후 문장수집 작성 시, e교환권 100원 적립

    교보eBook 첫 방문을 환영 합니다!

    신규가입 혜택 지급이 완료 되었습니다.

    바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
    지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!

    교보e캐시 1,000원
    TOP
    신간 알림 안내
    코틀린으로 배우는 함수형 프로그래밍 웹툰 신간 알림이 신청되었습니다.
    신간 알림 안내
    코틀린으로 배우는 함수형 프로그래밍 웹툰 신간 알림이 취소되었습니다.
    리뷰작성
    • 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
    • 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
    • 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
    감성 태그

    가장 와 닿는 하나의 키워드를 선택해주세요.

    사진 첨부(선택) 0 / 5

    총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.

    신고/차단

    신고 사유를 선택해주세요.
    신고 내용은 이용약관 및 정책에 의해 처리됩니다.

    허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
    있으니 유의하시어 신중하게 신고해주세요.


    이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.

    문장수집 작성

    구매 후 90일 이내 작성 시, e교환권 100원 적립

    eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.

    P.
    코틀린으로 배우는 함수형 프로그래밍
    저자 모두보기
    낭독자 모두보기
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 프리미엄 이용권입니다.
    선물하실 sam이용권을 선택하세요.
    결제완료
    e캐시 원 결제 계속 하시겠습니까?
    교보 e캐시 간편 결제
    sam 열람권 선물하기
    • 보유 권수 / 선물할 권수
      0권 / 1
    • 받는사람 이름
      받는사람 휴대전화
    • 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
    • 열람권은 1인당 1권씩 선물 가능합니다.
    • 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
    • 선물한 열람권의 등록유효기간은 14일 입니다.
      (상대방이 기한내에 등록하지 않을 경우 소멸됩니다.)
    • 무제한 이용권일 경우 열람권 선물이 불가합니다.
    이 상품의 총서 전체보기
    네이버 책을 통해서 교보eBook 첫 구매 시
    교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 네이버 책을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)
    구글북액션을 통해서 교보eBook
    첫 구매 시 교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 구글북액션을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)