CS지식/함수형 프로그래밍
-
함수형 프로그램밍(FP) - 더 좋은 액션 만들기1(설계고민, 암묵적 입출력 줄이기)CS지식/함수형 프로그래밍 2024. 3. 27. 15:31
더 좋은 액션 만들기 1 비지니스 요구 사항과 설계 고민 하기 요구 사항에 맞춰 더 나은 추상화 단계 선택 이전 게시물에서 액션에서 계산으로 리팩토링하는 과정은 단순하고 기계적이었다. 기계적인 리팩토링이 항상 최선의 구조를 만들어주는 것은 아니다. 좋은 구조를 만들기 위해서는 더 많은 고민이 필요하다. 📑비즈니스 요구사항 "합계 금액과 제품 가격에 대한 무료 배송 여부가 아니고 주문 결과가 무료배송인지 확인해야 한다." 원래코드 function getsFreeShipping(total, itemPrice){ //total - 현재 총액, //itemPrice - 상품을 넣었을때 무료배송이되는지 여부를 알고 싶은 대상 return itemPrice + total >= 20; } getsFreeShippin..
-
함수형 프로그래밍(FP) - 액션에서 계산 빼내기CS지식/함수형 프로그래밍 2024. 3. 27. 12:10
액션에서 계산 빼내기 MeaMart 예시 항상 가득 차있는 장바구니 MegaMart는 온라인 쇼핑몰이다. 경쟁력을 유지하고 있는 중요한 기능 중 하나는 쇼핑 중 장바구니에 담겨 있는 제품의 금액 합계를 볼 수 있는 기능이다. //장바구니 제품과 금액 합계를 //담고 있는 전역변수 let shoppingCart = []; let shppingCartTotal = 0; function addItemToCart(name, price){ shopingCart.push({ name, price }); calcCartTotal(); } function calcCartTotal(){ shoppingCartToal = 0; for(const sc of shoppingCart){ shoppinCartTotal += sc..
-
함수형 프로그래밍(FP) - 액션과 계산, 데이터CS지식/함수형 프로그래밍 2024. 3. 26. 15:42
액션과 계산, 데이터 액션 실행 시점과 횟수에 의존한다. 다른말로 부수효과(side-effects), 부수효과가 있는 함수(side-effecting function), 순수하지 않은 함수(impure function)라고 부르기도 한다. ex) 이메일 보내기, 데이터베이스 읽기 계산 입력값을 계산해 출력같은 반환한다. 다른함로 순수함수(pure function)부르기도 한다. ex) 최댓값 찾기, 이메일 주소가 올바른지 확인하기 데이터 이벤트에 대한 사실 ex) 사용자가 입려간 이메일 주소, 은행 API로 읽은 달러 수량 액션과 계산, 데이터는 어디나 적용할 수 있다. 일상에서 자주하는 활동인 장보기에 액션과, 계산 데이터를 적용해보자 함수형 프로그래밍이 아닌 방법으로 장보기 과정을 그린다면 아래 그림..
-
함수형 프로그래밍(FP) - 현실에서 함수형 사고CS지식/함수형 프로그래밍 2024. 3. 26. 12:23
현실에서 함수형 사고 미래에 피자 가게를 운영하는 토니는 피자를 만드는 로봇에 함수형 사고를 많이 적용시켰다. 먼저 토지의 가게가 어떻게 돌아가고 있는지, 또 주방과 재고 창고는 어떻게 운영되고 있는지 살표보며 함수형 사고가 어떨게 적용되었는지 알아보자 액션 반죽 펴기 피자 배달 재료 주문 액션은 호출 횟수와 시점에 의존한다. 배달차 같은 자원과 요리재료를사용하는 것은 액션이다. 액션을 사용할 때 조심해야 한다. 계산 조리법에 나온 것을 두 배로 만들기 쇼핑 목록 결정 어떤 것을 결정하거나 계획하는 것은 계산이다. 계산은 실행해도 다른 곳에 영향을 주지 않는다. 계산은 아무 때나 사용해도 주방이 엉망진창이 될 걱정이 없기 때문에 토니는 계산을 좋아한다. 데이터 고객 주문 영수증 조리법 토니는 변경 불가능..
-
함수형 프로그래밍(FP) - FP 프롤로그CS지식/함수형 프로그래밍 2024. 3. 25. 18:28
FP 프롤로그 함수형 프로그래밍(functional programming, FP) 1. 수학 함수를 사용하고 부수 효과(side effect)를 피하는 것이 특징인 프로그래밍 패러다임 2. 부수 효과 없이 순수 함수 pure function만 사용하는 프로그래밍 스타일 부수 효과 함수가 리터값 이외에 하는 모든 일을 말한다. 예를 들어 메일보내기나 전역 상태 수정하기 같은 일이 부수 효과이다. 부수 효과는 함수를 부를 때마다 발생하기 때문에 문제가 될 수 있다. 어떤 경우에는 리턴값이 필요해서 불렀지만 의도하지 않게 부수 효과가 발생할 수 있다. 불필요한 부수 효과를 가능한 사용하지 않으려고 합니다. ➕ 추가 (하지만, 이런 것이 소프트웨어를 사용하는 근본적인 이유이다.) 부수 효과에는 다음과 같은 것이..
-
함수형 프로그래밍 - 평가와 일급, 고차함수, 리스트 순회CS지식/함수형 프로그래밍 2024. 3. 25. 12:42
평가와 일급 평가 코드가 계산(Evaluation)되어 값을 만드는 것이다. 즉 평가라는 것은 코드가 계산되는 것을 의미한다. 일급 const log = console.log; //10은 값으로 다룰 수 있다. const a = 10; const add10 = a => a +10; //add10의 인자로 변수a가 전달 될 수 있다. add10(a); //a +10은 함수의 결과로 사용된다. //즉 다시 변수 r에 담아 사용가능하다. const r = add10(a); log(r); 값으로 다룰 수 있다. 변수에 담을 수 있다. 함수의 인자로 사용될 수 있다. 함수의 결과(return)로 사용될 수 있다. 일급 함수 const log = console.log; /**일급함수 */ const add5 = a..