본문으로 건너뛰기

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

· 약 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/ 를 번역한 저장소이다.