함수형 사고, 전환

함수형 사고, 전환

해당 게시글은 Functional Thinking 함수형 사고 를 읽고 공부한 내용을 정리한 것 입니다.

저작권 문제가 발생할 시 해당 글은 삭제됩니다 :<

이전 글은 함수형 사고, 왜?에서 보실 수 있습니다.

일반적으로 개발자들은 이미 다른 언어에 대해 알고 있는 지식들을 적용해 새 언어를 배운다. 하지만 새 패러다임을 익히기는 어렵다. 이미 친숙한 문제에 대해 다른 해답을 떠올릴 능력을 배워야 하기 때문이다.

일반적인 예제

명령형 프로그래밍

  • 상태를 변형하는 일련의 명령들로 구성된 프로그래밍 방식
    • 전형적인 for 루프
  • 루프 내에서 연산하기를 권장

함수형 프로그래밍

  • 프로그램을 수학 공식을 모델링하는 표현과 변형으로 기술하며, 가변 상태를 지양
  • 함수형 사고로의 전환은, 세부적인 구현에 뛰어들지 않고 고수준 추상 개념을 적용할지를 배우는 것

고수준 추상 사고의 장점

  • 문제의 공통점을 고려해 다른 방식으로 분류하길 권장
  • 런타임이 최적화를 잘할 수 있도록 해준다
    • 결과가 변하지 않는 한, 작업 순서를 바꾸면 더 능률적이 된다
  • 개발자가 높은 추상 수준에서 코딩 작업을 하고, 저수준의 세부적인 최적화는 런타임이 담당
  • 절차보다는 결과에 집중한다가 핵심

  • 고수준의 추상화는 마찰을 없앤다는 점을 기억하기

  • 끼어드는 문법적인 장애 때문에 추상적 개념이 사고 과정과 마찰을 빚게 하지 말 것

공통된 빌딩블록

  • filter : 주어진 조건에 맞는 컬렉션의 부분 집합을 구할 때 사용
    • boolean 조건 명시 등
  • map : 컬렉션을 그 자리에서 변형할 때 사용
    • functioncollection을 받아 해당 functioncollection의 각 요소에 적용한 후 리턴
  • flodLeft / reduce : 컬렉션의 요소를 하나씩 다른 함수로 처리할 때 사용