이미 소장하고 있다면 판매해 보세요.
|
1장. 시작하기
함수 호출하기 첫 번째 함수 리스트 소개 --연결 --리스트 항목에 접근하기 --리스트 안의 리스트 --리스트 비교하기 --더 많은 리스트 연산 범위 리스트 통합 튜플 --튜플 이용하기 --페어 이용하기 --직각 삼각형 찾기 2장. 타입 명시적 타입 선언 일반적인 하스켈 타입 타입 변수 타입 클래스 101 --Eq 타입 클래스 --Ord 타입 클래스 --Show 타입 클래스 --Read 타입 클래스 --Enum 타입 클래스 --Bounded 타입 클래스 --Num 타입 클래스 --Floating 타입 클래스 --Integral 타입 클래스 타입 클래스에 대한 마지막 정리 3장. 함수의 구문 패턴 매칭 --튜플의 패턴 매칭 --리스트와 리스트 통합의 패턴 매칭 --as-패턴 가드 where --범위 --where와 함께하는 패턴 매칭 --where 블록 속의 함수 let --리스트 통합에서의 let --GHCi에서의 let case 표현식 4장. 개념적인 개요 Maximum 몇 가지 재귀함수들 --replicate --take --reverse --repeat --zip --elem 정렬 --알고리즘 --코드 재귀적으로 생각하기 5장. 고차원 함수 커리된 함수 --섹션 --함수 출력하기 잘 정리된 고차원주의 --zipWith 구현하기 --flip 구현하기 함수형 프로그래머의 도구상자 --map 함수 --filter 함수 --map과 filter에 대한 예제 --여러 매개변수와 함수 매핑하기 람다 폴드 --foldl로 레프트 폴드 --foldr로 라이트 폴드 --foldl1과 foldr1 함수 --몇 가지 폴드 예제 --폴드를 보는 또 다른 방법 --무한 리스트 폴드하기 --스캔 $를 가진 함수 애플리케이션 합성 함수 --여러 매개변수를 갖는 합성 함수 --포인트 프리 스타일 6장. 모듈 모듈 임포트하기 모듈 함수로 문제 해결하기 --단어 카운팅 --건초 더미에서 바늘 찾기 --시저 암호 --엄격한 레프트 폴드 --숫자 찾기 값에 키 매핑하기 --어소시에이션 리스트 --Data.Map 입력 모듈 만들기 --Geometry 모듈 --계층적인 모듈 7장. 타입과 타입 클래스 만들기 새로운 데이터 타입 정의하기 구체화하기 --Point 데이터 타입으로 Shape 개선하기 --모듈에 있는 Shape를 익스포트하기 레코드 구문 타입 매개변수 --Car를 매개변수화해야 하나? --벡터 파생된 인스턴스 --사람 동일시하기 --읽는 방법 --순서 --한 주의 어떤 요일 --타입 동의어 --보기 좋은 전화번호부 --타입 동의어 매개변수화하기 --Left, 그리고 나서 Right 재귀적인 데이터 구조 --리스트 개선하기 --트리 타입 클래스 102 --Eq 타입 클래스의 내부 --신호등 데이터 타입 --하위 클래스 --타입 클래스의 인스턴스처럼 매개변수화된 타입 Yes-No 타입 클래스 Functor 타입 클래스 --펑터인 Maybe --트리 역시 펑터다 --펑터인 Either a 종류와 몇몇 타입 8장. 입력과 출력 순수한 것과 순수하지 않은 것을 분리하기 Hello, World! I/O 작업을 함께 붙이기 --I/O 작업 내에서 let 사용하기 --거꾸로 넣기 몇 가지 유용한 I/O 함수들 --putStr --putChar --when --sequence --mapM --forever --forM I/O 작업 리뷰 9장. More 입력과 출력 파일과 스트림 --입력 리다이렉션 --입력 스트림에서 문자열 얻기 --입력 변형하기 파일 읽기와 쓰기 --withFile 함수 이용하기 --Bracket 타임 --핸들을 잡아라! To-do 리스트 --항목 삭제하기 --정리하기 커맨드 라인 인자 할 일 리스트 가지고 놀기 --멀티태스킹 할 일 리스트 --잘못된 입력 처리하기 랜덤 --동전 던지기 --더 많은 랜덤 함수들 --랜덤과 I/O 바이트스트링 --엄격한 바이트스트링과 느긋한 바이트스트링 --바이트스트링으로 파일 복사하기 10장. 함수적으로 문제 해결하기 역(逆) 폴란드 기법 계산기 --RPN 표현식 계산하기 --RPN 함수 만들기 --연산자 더 추가하기 히드로 공항에서 런던까지 --가장 빠른 경로 계산하기 --하스켈로 도로 시스템 표현하기 --최적 경로 함수 만들기 --입력으로 도로 시스템 얻기 11장. 어플리커티브 펑터 펑터의 귀환 --펑터인 I/O 작업 --펑터인 함수 펑터 규칙 --규칙 1 --규칙 2 --규칙 깨기 어플리커티브 펑터 사용하기 --Applicative --Maybe Applicative 펑터 --어플리커티브 스타일 --List --IO 역시 어플리커티브 펑터다 --어플리커티브인 함수 --리스트 합치기 --어플리커티브 규칙 어플리커티브를 위한 유용한 함수들 12장. 모노이드 기존 타입을 새 타입으로 래핑하기 --타입 클래스 인스턴스를 만들기 위해 newtype 사용하기 --newtype의 느긋함 --type, newtype, data 모노이드에 대하여 --모노이드 타입 클래스 --모노이드 규칙 모노이드 만나기 --리스트는 모노이드다 --곱셈과 덧셈 --Any와 All --Ordering 모노이드 --Maybe 모노이드 모노이드로 폴드하기 13장. 수많은 모나드 강화된 어플리커티브 펑터 Maybe에 발 담그기 모나드 타입 클래스 줄 타기 --코드, 코드, 코드 --난 떨어질 거야 --줄 위의 바나나 do 표기법 --내가 했던 것처럼 해 --돌아온 피에르 --패턴 매칭과 실패 리스트 모나드 --do 표기법과 리스트 통합 --MonadPlus와 guard 함수 --기사의 임무 모나드 규칙 --좌항등원 --우항등원 --결합성 14장. More 모나드 Writer --구조에 나선 모노이드 --Writer 타입 --Writer로 do 표기법 이용하기 --로그를 프로그램에 추가하기 --비효율적인 리스트 구조 --디퍼런스 리스트 사용하기 --성능 비교하기 Reader --모나드인 함수 --리더 모나드 세련되게 상태를 유지하는 계산 --상태를 유지하는 계산 --스택 --State 모나드 --State 얻기와 설정하기 --난수와 State 모나드 에러 몇 가지 유용한 모나드 함수들 --liftM --join 함수 --filterM --foldM 안전한 RPN 계산기 만들기 모나드 함수 결합하기 모나드 만들기 15장. 지퍼 찾아가기 --빵가루 흔적 --돌아가기 --초점을 둔 트리 조작하기 --공기 좋고 깨끗한 정상으로 곧바로 가기 리스트에 초점 맞추기 매우 간단한 파일시스템 --파일시스템을 위한 지퍼 만들기 --파일시스템 조작하기 주의! 감사합니다! |
|
하스켈은 재미있다. 그리고 그게 전부다!
이 책은 C++와 자바, 파이썬과 같은 명령형 언어들에 대한 경험이 있고, 이제는 하스켈을 공부해보려는 독자를 대상으로 한다. 혹시라도 프로그래밍 경험이 충분하지 않다고 해도, 여러분처럼 똑똑한 사람이라면 충분히 하스켈을 따라 배울 수 있을 것이라고 믿는다. 하스켈에 대한 첫 반응은 “이건 너무 이상한 언어잖아!”이었다. 하지만 처음 시작하는 단계에 존재하는 고비를 넘기니 모든 것이 순조로웠다. 비록 하스켈이 처음에는 이상해 보이더라도 포기하지 말자. 하스켈을 배우는 것은 프로그래밍에 대한 거의 모든 것을 다시 처음 배우는 것과 같을 것이다. 참고 만약 하스켈을 공부하는 데 심각한 문제가 발생한다면 프리노드(freenode) 네트워크의 IRC 채널인 #haskell이 질문을 할 수 있는 가장 적합한 곳이다. 그곳에 있는 사람들은 친절하며 인내심과 이해심이 많다. 하스켈을 처음 시작하는 사람들에게는 최고의 자원이다. |