// 기존에는 오브젝트를 쓰고 그것이 가진 메소드를 호출했다.
// 함수형 프로그래밍은 함수를 먼저 쓰고 그 다음 데이터를 집어넣음.
//non-FP
account.deposit()
user.login()
//FP
deposit(account)
user(User)
OOP
Object들로 프로젝트가 구성이되고 오브젝트들의 연관관계로 만들어짐
OOP에서 기능의 최소 단위는 모듈로 연관된 오브젝트로 구성되어있고,오브젝트는 멤버변수와 메소드로 이루어져있다.
메소드가 수행이 될 때는 멤버변수를 사용하게 된다.
그래서 메소드의 수행결과는 멤버변수가 어떤 상태를 가지고있는가에 따라 결과가 달라지게 된다.
FP
함수는 인풋과 아웃풋이 있고, 각각의 인풋과 아웃풋이 연결이 되어 하나의 커다란 아웃풋을 만들게 되며 연결되게 됨.
순수 함수는 항상 동일한 인풋에 대해 동일한 아웃풋을 낸다. 그래서 상태를 가지지 않음.
모듈화의 최소단위는 Function 하나임.
OOP와 FP의 차이는 State의 유무. => Side-Effect의 유무
명령형 프로그래밍과 선언형 프로그래밍의 차이