TIL: 함수형 프로그래밍 | [인프런] 성공적인 프로그래밍과 함수형 프로그래밍 - 230109

Lumpen·2023년 1월 8일
0

성공적 프로그래밍

  • 모든 프로그래밍 패러다임은 성공적인 프로그래밍을 위해 존재
  • 좋은 프로그램을 만드는 일
  • 좋은 프로그램은 사용성, 성능, 확장성 등이 좋다
  • 이 것들을 효율적으로 생산적으로 이루는 것

함수형 프로그래밍

순수 함수를 사용하여 부수 효과를 줄이고
모듈화 수준을 높여 조합성을 높인다

순수 함수

리턴 외에는 외부와 소통을 하지 않는 함수로
들어온 인자가 같으면 항상 동일한 결과를 리턴하는
부수 효과가 없는 함수
=> 오류를 줄이고 안정성을 높인다

만약 인자 외의 다른 값을 사용하더라도
해당 값이 상수라면 항상 같은 값을 리턴하기 때문에 순수함수

외부의 상태를 변경하거나 인자의 상태를 직접 변경하게 되면
순수함수가 아니다

조합성

순수함수들의 조합으로 프로그램을 만든다
조합성을 강조하는 것은 모듈화 수준을 높이는 것
=> 생산성을 높인다, 재사용성

일급 함수

자바스크립트에서는 함수가 일급 객체 (일급 함수)다
함수를 변수에 담거나, 인자로 받거나, 함수를 리턴할 수 있는..
=> 함수를 값으로 다룰 수 있다

이런 일급 함수로 만들어진 순수 함수들을 조합하여
프로그래밍을 구현한다
언제 평가돼도 상관 없는 순수 함수로 함수를 만들고
함수들을 적절한 때에 배치, 조합하여 프로그래밍을 하는 것

add maker 예제 (클로저)

function add_maker(a) {
	return function(b) {
		return a + b; 
    }
}

let add10 = add_maker(10); 
// 매개변수 a에 10을 받은 채로 return 되는 익명함수를 값으로 갖게 된다
console.log(add10(20)); // 30
function f4(f1, f2, f3) {
	return f3(f1() + f2());
}

f4(
  function() {return 2;}, 
  function() {return 1;},
  function(a) {return a * a;}, 
); // 9
profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글