Skip to content

wade3420/FunctionalProgramming

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

함수형 프로그래밍 스터디

함수형 프로그래밍이라는 개념과 철학을 공부해서 함수형 사고에 초점을 맞춥시다🔎

⛔️ 이 스터디는 팀 과제 중심형입니다.

🙋‍♂️진행 방식

  • 태오가 간단한 개념을 설명하고, 팀 별로 라이브 과제를 수행합니다.
  • 파랑이 복습용 과제를 할당하고, 이를 풀어 팀원들과 공유해봅니다.

🌟회차별 정리내용

1주차


2주차

  1. 액션 - "계산" - 데이터

  2. 계산을 꺼내기

    • 리턴값 정하기

    • 리턴값과 관계된 코드조각을 모으기 -> 함수로 만들어 좋은 이름 붙이기

    • 사용되는 모든 값을 함수 인자로 만들기

    • "명시적 출력" + "명시적 입력"

  3. 외부 세계에서 영향을 주거나, 실행할 때마다 달라지는 값을 방어적으로 복사

  4. 유틸리티 / 비즈니스 로직, 스키마 구분하기


WEEK 1 (~86p)

  • 액션
    • 암무적인 입출력이 있다면 그 코드는 액션
    • 액션인 함수가 하나라도 호출된다면 그 함수는 액션이 되므로 액션의 전파에 유의하자
    • 호출 시점에 따라서 다르게 동작하기 때문에 주의해야하는 코드이다.
  • 계산
    • 함수형 프로그래밍 개발자들이 가장 중요하게 여기는 로직
    • 인풋에 따라 항상 같은 아웃풋을 내준다. (순수함수)
    • 결정과 계획은 계산이 될 가능성이 높다
  • 데이터
    • 호출 불가능하다.
    • 데이터 자체로는 할 수 있는 것이 없다. (해석이 반드시 필요)
    • 동일성 비교, 자유로운 해석, 직렬화

으로 코드를 생각하며 작성해 보자

01번

- 이 함수는 전역 변수인 x를 사용합니다. 전역변수인 x 는 "암묵적 입력" 이며, 이 함수는 "액션"이 됩니다.
- 함수를 분리한 뒤, 지역변수를 사용하게 되면 "암묵적 입력"을 명시적으로 표현할 수 있습니다.

02번

- 매개변수로 전달된 arr을 복사 없이 그대로 참조하고 있습니다.
-  문제점은 실제로 arr의 값을 변경하면 부수효과가 나타납니다. (암묵적 입력)
-  이를 해결하기 위해 arr을 복사하여 사용하도록 수정할 수도 있고, 고차함수를 이용해서 해결할 수도 있습니다.    

03번

  • 문제점은 실제로 multiDimensionalArr의 값을 변경하면 부수효과가 나타납니다. (암묵적 입력)
  • 또한 이중 for문을 사용하고 있습니다. 계산을 더 작게 쪼갤 수 있으므로 'singleDimensionalAccumulate' 함수를 만들어서 역할을 분리했습니다.
  • i < index 는 이 함수의 비지니스 로직입니다. 이를 분리하면 더 좋은 코드가 될 수 있습니다.

04번

- 실제로 words의 값을 변경하면 부수효과가 나타납니다. (암묵적 입력)
- 계산 추출하기 -> words[i].length > 5 는 이 함수의 비지니스 로직입니다.
- map을 이용하여 고차함수로도 수정할 수 있습니다.


### 05번
- DeepCopy 를 하기위해 재귀함수로 생성
- 각각의 instance 를 검사하고 새롭게 생성하도록 로직을 짰습니다.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 80.4%
  • HTML 13.2%
  • CSS 6.4%