본문으로 건너뛰기

함수형 프로그래밍 관련 자료

· 약 6분
Jake Son

그동안 함수형 프로그래밍에 대한 공부를 하면서 보았던 자료들을 이곳에 기록하려고 한다.

서적​

함수형 사고 (Neal Ford)​

메모이제이션 개념에 대해 처음 알게된 책이다.

함수형 자바스크립트 (Luis Atencio)​

자바스크립트로 하는 함수형 프로그래밍 책으로 읽은것은 기억나는데 딱히 기억에 남는 내용은 없었다.

Grokking Simplicity Taming complex software with functional thinking (Eric Normand)​

프로그램을 Action, Calculation, Data 로 나누어 생각하고 함수형 프로그래밍을 전염성이 강하고 테스트 하기 힘든 Action 을 Calculation 으로 만드는 패러다임으로 설명하고 있다. 초반부는 흥미롭게 읽었지만 이후에는 이미 익숙한 내용이 많아서 끝까지 읽지는 않았다.

추가: 번역서가 나와서 이것을 읽어도 좋을거 같다. 쏙쏙 들어오는 함수형 코딩

Learning Functional Programming in Go (Lex Sheehan)​

고언어로 함수형 프로그래밍을 어떻게 할 수 있는지 알 수 있는 책. 고언어는 함수를 type 명령어로 새로운 타입으로 만들면 함수의 메소드라는 독특한 성질을 만들 수 있는데 이를 활용해서 함수 체이닝을 구현한게 참신했다. 채널을 활용해 pipeline을 만드는 코드도 놀라워 직접 구현해보기도 하였다.

https://github.com/jbl428/study-note/tree/master/go-pipeline

스칼라로 배우는 함수형 프로그래밍 (Paul Chiusano and Runar Bjarnason)​

모나드를 이용해 side effect 있는 프로그램을 순수한 함수들의 합성으로 만들 수 있는지 감을 잡게 해준 책이다. 연습문제 중에 상태모나드를 활용해야 하는게 있었는데 풀면서 어려웠던 상태모나드를 이해할 수 있게되었다. 풀었던 문제와 답은 아래 링크에 있다.

https://github.com/jbl428/study-note/tree/master/haskell/candy-machine

영상​

Monad란 무엇인가?​

https://www.youtube.com/watch?v=jI4aMyqvpfQ

개인적으로 모나드에 대해 쉽게 설명했다고 느낀 영상이었다. flatMap 에 대한 개념을 익히는데 도움이 되었다.

haskell rank​

https://www.youtube.com/watch?v=h_D4P-KRNKs&list=PLguYJK7ydFE4aS8fq4D6DqjF6qsysxTnx

https://www.hackerrank.com/ 에서 제공하는 프로그래밍 문제를 하스켈을 이용해 풀이하는 영상이 있다. 명령형 언어로 구현하면 길어질 수 있는 코드를 하스켈로 간결하게 만드는 과정이 신기했다. 그리고 유투버가 emacs 를 정말 잘 사용하는데 한 번 시청하길 권해본다.

JSON Parser 100% From Scratch in Haskell (only 111 lines)​

https://www.youtube.com/watch?v=N9RUqGYuGfw

위 영상을 만든 유튜버의 또 다른 영상으로 하스켈로 JSON 파서를 만드는 과정을 담고있다. 모나드를 실제로 어떻게 활용하는지 알 수 있었던 좋은 영상이었고 하스켈을 꼭 마스터 해보고 싶어진 계기가 되었다.

강의​

함수형 프로그래밍과 JavaScript ES6+​

https://www.inflearn.com/course/functional-es6/dashboard

유인동님의 함수형 프로그래밍 강의로 ES6 이터레이터를 활용해 fxjs 라이브러리의 핵심 함수를 구현하는 과정을 담고있다. 개인적으로 자바스크립트로 지연평가를 구현했다는게 가장 놀라웠다. 그리고 go 함수에 파라미터로 들어가는 함수가 promise 를 반환하면 적절히 다음 함수에 promise 안의 값을 전달해 주도록 구현한 아이디어가 매우 좋았다.

문서​

fp-ts Learning Resources 번역문서​

https://github.com/alstn2468/getting-started-fp-ts

fp-ts 공식문서의 Learning Resources에서 소개하는 문서들을 번역한 저장소로 영어에 익숙하지 않다면 이곳을 참고하는것도 좋을거 같다.

TypeScript 와 fp-ts 를 활용한 함수형 프로그래밍 소개​

https://jbl428.github.io/functional-programming

fp-ts 메인테이너가 만든 함수형 프로그래밍 강의자료, 원문은 이탈리아어로 작성되었고 영어로 번역한 다른 저장소를 활용해 다시 한국어로 번역하였다.

블로그 생성기를 만들면서 배우는 하스켈​

https://jbl428.github.io/learn-haskell-blog-generator

하스켈 튜토리얼 페이지에 있는 온라인 서적인 https://lhbg-book.link/ 를 번역한 저장소이다.