230131(화)
🎄 성장일지 3.1
책 행복한 이기주의자(웨인 다이어)
의 내용에 자극받아 시작하는 소박한 성장기록
살아있는 꽃과 죽은 꽃은 어떻게 구별하는가?<br/> 성장하고 있는 것이 살아 있는 것이다.<br/> 생명의 유일한 증거는 성장이다!
🌳 키워드 (1.0)<br/> 최대한 간단하게 정리, 추후에 보면서 스스로 설명<br/> 🍉 경험 위주로 (2.0)<br/> 단순 정보를 전달하기보다 무엇을 배웠고 어떻게 해결했는지 짧고 간단하게 작성<br/> ❄️ 정해진 템플릿에 맞춰서 (3.0)<br/> 키워드, 경험 모두 좋다. 다만 매일 작성하기로 마음 먹은만큼 핵심만 간결하게 정리할 수 있게 템플릿을 작성 (3.1) 230102부터 시작되는 학습에 관한 내용 추가
🔑 오늘의 키워드
모나드
- 수학의 범주론에서 사용되는 구조로 Haskel, Scala에서 이를 프로그래밍에 적용
- 비동기 연산 처리 => Promise가 사실 Monad의 일종
- 값이 미래에 존재하거나 값이 null인 경우를 모델링할 때 Monad를 사용한다.
flatMap()
- map() 메서드와 동일하되 그 뒤에 각 원소 별로 flat()을 연달아 실행한다.
- 배열의 원소 갯수를 늘릴 수 있다는 점에서 filter()와 반대의 역할이기도 하다!
커링(Currying)
- 커링은 f(a, b, c)처럼 단일 호출로 처리하는 함수를 f(a)(b)(c)와 같이 각각의 인수가 호출 가능한 프로세스로 호출된 후 병합되도록 변환하는 것
- 함수형 프로그래밍에서 매개변수로 전달해야할 값이나 함수를 감추는 역할로 쓰이는 느낌!(클로저로 저장해두는 느낌)
// 일반 함수 const a = (b, c, d) => b + c + d; // 커링 함수 const e = (f) => (g) => (h) => f + g + h;
참고자료
📝 요약 및 하루 간단 회고
함수형 프로그래밍에 한발가락 정도 가까이 간 것 같다. 근데 솔직히 얼마전부터 지금까지도 객체지향에 몰입해있어서 그런가..?! 아직은 함수형 프로그래밍에 대해서 우와
하는 건 없는 듯하다.
함수형의 여러 장점(순수 함수, 커링, 상태를 공유하지 않는 것 등등)은 알 것 같다. 다만 아직 그 뚜렷하게 실용적인 활용법은 모르겠다. 꼭 이분법적으로 객체지향이냐, 함수형이냐를 나누지말고
구현하고자 하는 목적에 맞게 적절히 도구로서 그 패러다임을 활용하면 될 것 같다. 그저 이 패러다임에 따라 코드의 구성과 진행이 달라지는 게 너무 재미있고 더더 배우고 싶은 욕심이 난다!
오늘의 잘한 점
- 함수형 프로그래밍에 대해서 더 깊게 들어가보려 노력한 점!
- 피곤했지만..! 그래도 어느정도 오늘 하루 계획 완수한 점!
오늘의 아쉬운 점
- 일찍 자고 일찍 일어나자!!!!!!!!! 수면은 정말정말 중요하다!!!!
undefined