favicon

Jayden { do: smite }

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

Copyright 2023. all rights reserved by Jayden