함수형 프로그래밍/쏙쏙 들어오는 함수형 코딩
[함수형 코딩#1] 함수형 사고
돈워리비해삐
2023. 6. 24. 23:08
함수형 프로그래밍 ?
1. 수학함수를 사용하고 부수효과를 피하는 것이 특징인 프로그래밍 패러다임
2. 부수효과 없이 순수 함수만 사용하는 프로그래밍 스타일
부수효과 ?
함수가 리턴값 이외에 하는 모든 일
순수함수?
인자에만 의존하고 부수효과가 없는 함수 (인자에만 의존 = 같은인자를 넣으면 항상 같은 결과를 돌려줌 = 수학함수)
실용적 측면에서 함수형 프로그래밍 정의의 문제가 있기 때문에 "학문적접근 보다 기술과 개념으로 보기"
ㄴ1. 부수효과는 실제로 필요함 (=> 필요하면 써야함)
ㄴ2. 함수평프로그래밍은 부수효과를 잘 다룰 수 있음 (=> 부수효과가 필요하지만 문제될 수 있음을 인지하고 대응할 것)
ㄴ3. 함수형 프로그래밍으로 잘 만든 소프트웨어가 많음(실용적)
함수평 프로그래머는 코드를 3분류로 나눔 => 액션과 계산, 데이터
액션 | 계산 | 데이터 | |
특징 | 호출하는 시점과 횟수에 의존 (호출할 때 조심해야함) - 시간에 의존 |
입력값을 계산해서 출력함 (같은 입력값으로 계산시 같은 결과값나옴) - 시간에 의존하지 않아 다루기 쉬움 |
이벤트에 대한 사실을 기록 -정적이고 해석이 필요함 |
예시 | 사용자가 작업 완료 표시함, 클라이언트가 서버로 메시지 보냄, 서버가 메시지 받음 , 서버가 데이터 베이스 변경, 서버가 이메일로 알림 보냄(전송) |
서버가 누구에게 알림 보낼지 결정 | 클라이언트가 서버로 보낸 메시지 자체 |
함수형 프로그래밍 도구 |
- 시간흐름에 따라 안전하게 상태바꾸기 - 순서를 보장하는 방법 - 액션이 한번만 실행되도록 하기 |
- 정확성을 위한 정적 분석 - 소프트웨어에서 쓸 수있는 수학적 지식 - 테스트 전략 |
- 효율적 접근위한 데이터 구성방법 - 데이터 보관기술 - 데이터로 중요한 것 알아내기위한 원칙 |
함수형 사고?
ㄴ 1 ) 액션, 계산, 데이터
ㄴ 2) 일급 추상