품목정보
발행일 | 2019년 12월 20일 |
---|---|
쪽수, 무게, 크기 | 328쪽 | 188*240*30mm |
ISBN13 | 9788966262557 |
ISBN10 | 8966262554 |
발행일 | 2019년 12월 20일 |
---|---|
쪽수, 무게, 크기 | 328쪽 | 188*240*30mm |
ISBN13 | 9788966262557 |
ISBN10 | 8966262554 |
1장 함수형 프로그래밍이란? 1.1 함수형 프로그래밍의 특징 1.2 순수한 함수란 무엇인가? ____동일 입력 동일 출력 ____부수효과 없는 코드 ____순수한 함수의 효과와 그외 고려사항 1.3 부수효과 없는 프로그램 작성하기 ____공유 변수 수정으로 인한 부수효과 ____객체의 상태 변경으로 인한 부수효과 1.4 참조 투명성으로 프로그램을 더 안전하게 만들기 ____참조 투명하지 않은 함수 ____참조 투명한 함수 1.5 일급 함수란? ____일급 객체(first-class object) ____일급 함수(first-class function) 1.6 일급 함수를 이용한 추상화와 재사용성 높이기 ____간단한 계산기 예제 ____객체지향적으로 개선한 계산기 예제 ____함수형 프로그래밍 방식으로 개선한 계산기 예제 1.7 게으른 평가로 무한 자료구조 만들기 ____무한대 값을 자료구조에 담다 1.8 마치며 ____코틀린으로 함수형 프로그래밍 시작하기 2장 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 마치며 |