간편결제, 신용카드 청구할인
카카오페이 3,000원
(카카오페이 결제시 최대할인 3천원 / 5만원 이상 결제, 기간 중 1회)
삼성카드 6% (21,150원)
(삼성카드 6% 청구할인)
인터파크 롯데카드 5% (21,380원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (15,750원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (18,000원)
(최대할인 4만원 / 2만원 이상 결제)
Close

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

소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 544
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

25,000원

  • 22,500 (10%할인)

    1,250P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 출고완료 후 14일 이내 마이페이지에서 적립받기한 경우만 적립됩니다.
  • 추가혜택
    배송정보
    •  당일배송을 원하실 경우 주문시 당일배송을 선택해주세요.
    • 서울시 강남구 삼성로 512변경
    • 배송지연보상 안내
    • 무료배송
    • 해외배송가능
    주문수량
    감소 증가
    • 이벤트/기획전

    • 연관도서

    • 사은품(11)

    출판사 서평

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


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

    목차

    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종
    판매수 0권

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

    생년월일 -
    출생지 -
    출간도서 0종
    판매수 0권

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

    이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

      리뷰

      0.0 (총 0건)

      구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

      리뷰쓰기

      기대평

      작성시 유의사항

      평점
      0/200자
      등록하기

      기대평

      0.0

      교환/환불

      교환/환불 방법

      ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

      교환/환불 가능 기간

      고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

      교환/환불 비용

      고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

      교환/환불 불가사유

      반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
      배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

      소비자 피해보상

      소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
      교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

      기타

      도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

      배송안내

      • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

      • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

      • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

      • 배송비

      도서(중고도서 포함) 구매

      2,000원 (1만원이상 구매 시 무료배송)

      음반/DVD/잡지/만화 구매

      2,000원 (2만원이상 구매 시 무료배송)

      도서와 음반/DVD/잡지/만화/
      중고직배송상품을 함께 구매

      2,000원 (1만원이상 구매 시 무료배송)

      업체직접배송상품 구매

      업체별 상이한 배송비 적용