FP
-
FunctionFP 2020. 7. 12. 02:04
정의 함수 란? () 연산자를 적용하여 평가할 수 있는 모든 호출 가능 표현식 호출시 사용 가능한 결과값을 반환 자, void 를 반환하는 함수를 우리는 앞으로 함수로 쳐주지 않기로 한다. 그럼 뭐라고 부르지? 일급 시민 Javascript에서는 함수가 객체이므로 값으로 다룰 수 있어서 일급 또는 일급 시민 이라고 부른다. 보통 프로그래밍에서 일급이라고 함은, 적용 가능한 모든 연산을 수행할 수 있는 것들을 일급 이라고 부른다. (어렵다...?) 그럼 그러한 연산은 뭐가 있을까? 값을 할당하거나 함수의 인자로 전달하거나 함수의 반환값으로 사용하거나 보통 위와 같은 케이스를 말한다. 그럼 Javascript에서 이러한 연산을 어떻게 수행하나 한번 보자. 먼저 값을 할당하거나 const add = funct..
-
How to make the Object as immutable in JSFP 2020. 7. 9. 01:00
불변 FP에서 객체의 상태를 불변으로 유지하는건 굉장히 중요하다. 불변을 통해 부수효과를 방지하기 때문이다. Why JS? 간단하다. 굉장히 범용적으로 사용되는 언어이고 무엇보다 내가 좋아하기 때문이다. -끝- 농담이다. 🙃 JS에서 객체의 상태 관리 ES5까지는 변수를 상수처럼 고정 할 수 있는 방법이 없었지만 ES6에서 const 라는 멋들어진 키워드가 소개되면서 우리는 변수를 상수처럼 런타임시에 변경할 수 없도록 지정할 수 있게 되었다. 하지만 그것도 잠시... 객체의 속성은 여전히 런타임에도 맘데로 지멋데로 제멋데로 바꿀 수 있다. 속성의 변신은 무죄? function Dog(name) { this.name = name; } Dog.prototype.toString = function() { re..
-
FP vs OOPFP 2020. 7. 8. 00:41
함수형 VS 객체지향 함수형 객체지향 합성 단위 함수 객체(클래스) 프로그래밍 스타일 선언적 명령형 데이터와 기능 독립적인 순수함수가 느슨하게 결합 클래스 안에서 메서드와 단단히 결합 상태 관리 객체를 불변 값으로 취급 인스턴스 메서드를 통해 객체를 변이시킴 제어 흐름 함수와 재귀 루프와 조건 분기 스레드 안전 동시성 프로그래밍 가능 캡슐화하기 어려움 캡슐화 모든 것이 불변이라 필요 없음 데이터 무결성을 지키기 위해 필요함 함수형과 객체지향을 섞으면 형식 간의 관계가 자연스럽고 풍성한 도메인 모델을 손에 넣고, 다른 한편으론 이들 형식을 가지고 어떤 일을 할 수 있는 순수함수까지 얻을 수 있음 오늘은 간단한 표 하나만 남겨봤다. 출처: 함수형 자바스크립트
-
Initial commit - FPFP 2020. 7. 7. 02:19
애플리케이션 설계 요소 확장성: 추가 기능을 지원하기 위해 계속 코드 리팩토링해야 하는가? 모듈화 용이성: 파일 하나를 고치면 다른 파일도 영향을 받는가? 재사용성: 중복이 많은가? 테스트성: 함수를 단위 테스트하기 어려운가? 헤아리기 쉬움: 체계도 없고 따라가기 어려운 코드인가? 함수형 프로그래밍(Functional Programming) 이란? 함수 사용을 강조하는 소프트웨어 개발 스타일 진짜 목표는 애플리케이션의 부수효과(side effect) 를 방지하고 상태 변이(mutation of state) 를 감소하기 위해 데이터의 제어 흐름과 연상을 추상화(abstract) 하는 것 어려울땐 예제로 보자 document.querySelector('#msg').innerHTML = 'Hello World..