본문내용 바로가기
MD의선택 무료배송 이벤트 소득공제

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

조재용 , 우명인 지음 | 인사이트 | 2019년 12월 20일 출간
  • 정가 : 25,000원
    판매가 : 22,500 [10%↓ 2,500원 할인]
  • 통합포인트 :
    [기본적립] 1,250원 적립 [5% 적립] 안내 [추가적립] 5만원 이상 구매 시 2천원 추가적립 [회원혜택] 우수회원 3만원 이상 구매 시 2~4% 추가적립
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    01월 20일 출고 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 매장에서 직접 수령 안내 바로드림 혜택
    휴일에는 바로드림 픽업으로 더 빨리 받아 보세요. 바로드림 혜택받고 이용하기

이 책의 이벤트 해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

  • IT전문서 올해의 책 후보 발표! 지금 투표해주세요!
    2019.12.13 ~ 2020.01.31
상품상세정보
ISBN 9788966262557(8966262554)
쪽수 328쪽
크기 187 * 240 * 24 mm /645g 판형알림

책소개

이 책이 속한 분야

차세대 언어 코틀린을 이용해
실전에서 활용할 수 있는 함수형 코드를 설계한다!

어렵게만 느껴지는 함수형 개념을 충실히 설명하여, 실전에서 활용할 수 있는 지식이 될 수 있도록 한 책이다. 다양한 모범 예제를 보여주며, 배운 내용을 바로 활용해 볼 수 있는 실전응용 문제를 제시해 함수형 프로그래밍을 체득할 수 있게 해 준다.
이 책은 함수형 프로그래밍을 멀티 패러다임 언어인 코틀린으로 다룬다. 따라서 순수 함수형이 아닌 언어로 함수형 프로그래밍을 할 때의 시행착오와 대처법도 다루는데, 순수 함수형 언어를 실전에서 쓰는 경우가 드문 점을 감안하면 실질적으로 많은 도움이 될 것이다.
코틀린은 함수적 특징과 함께 객체지향 프로그래밍도 가능하도록 설계되어 있기 때문에 필요에 따라 명령형ㆍ 객체지향형ㆍ 함수형 예제를 비교하며 보였다.
또한 언어가 제공하는 함수적인 기능을 단순히 사용해 보는 것을 넘어 고차 함수, 함수적 자료구조, 타입 등을 직접 만들어 볼 수 있게 구성하였으므로, 함수형 라이브러리를 만들어서 제공할 수 있는 수준까지 전진할 수 있을 것이다.

저자소개

저자 : 조재용

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

저자 : 우명인

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

목차

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 마치며

북로그 리뷰 (0) 쓰러가기

도서 구매 후 리뷰를 작성하시면 통합포인트를 드립니다.
결제 90일 이내 작성 시 300원 / 발송 후 5일 이내 작성시 400원 / 이 상품의 첫 리뷰 작성 시 500원
(포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외)
안내
  • 해당도서의 리뷰가 없습니다.

Klover 평점/리뷰 (0)

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매도서의 문장수집을 기록하면 통합포인트 적립 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①양서-판매정가의 12%, ②일서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

  • 길벗알앤디
    27,900원
  • 길벗R&D
    17,100원
  • 윤종식
    25,200원
  • 윤인성
    16,200원
  • 길벗R&D
    32,400원
더보기+

이 분야의 신간

  • 윤종식
    25,200원
  • BC카드 빅데이터센터
    17,100원
  • NCS 정보처리기술사 연구회
    25,200원
  • 조현준
    40,500원
  • NCS 정보기술 연구회
    27,900원
더보기+

바로가기

  • 우측 확장형 배너 2
  • 우측 확장형 배너 2

최근 본 상품