1. 함수는 순수 함수를 사용하여 부수 효과가 있으면 안됨
2. 당연함. 함수라는 것의 정의가 뭐냐 입력값이 같으면 결과값도 같아야한단거임
3. 근데 LISP니 뭐니 setq 같은건 이건 함수형에서 쓰면 안되는데, 그냥 언어적 차원에서 너무 힘드니까 그냥 넣어준거임
4. 모나드도 그러함. 현실적으로 I/O에서 사이드 이펙트 피하는거 불가능하니까 꼬릿표 붙이고 통제하는거임
5. 결론적으로 '함수 지향'으로 짤꺼면 명확하게 사이드 이펙트를 전부 파악할 수 있는 부분에서 부분적으로 쓰는게 현대적인 방법론임
6. 근데 LISP니 setq 가져오면서 뭐라하는데, 이건 마치 unsafe 키워드 같은거임. 권장하지 않고, 언어적 차원에서 필요성에 의해서 넣어진거
내가 함수형 하스켈로 배운거 맞음.
맞는데 애초에 저건 기초 논리임
결론적으로 어떤 지향에 우위가 없음
병렬 처리할거면 오히려 함수지향이 훨씬 간단함. 왜? 당연한 스택 프레임 새로 생성하고 불변성 유지되는게 여러 쓰레드서 참조하는게 편하니까. OOP면 이 불변성 보장을 따로 처리해야하는데 함수형은 그걸 강제로 보장하니까 좋은거
근데 만약 진짜 순수하게 함수 지향으로 짠다면 사이드 이펙트 전반을 자기가 관리해야함. 애초에 그게 진짜 함수 지향임
근데 너의 이야기는 계속 동일함
1. 함수형에서 setq 가져온건 뭔데?-> 순수 함수형으로 좆같게 어려우니까 원래 허용 해주면 안되는거 허용해준거임. 이게 내 말에 대한 방증임
2. SECD 엔진이 사이드 이펙트 위에서 돌아간다->https://en.wikipedia.org/wiki/SECD_machine 아님
3. 상속은 쓰레기다-> 상속이 is-a 관계 정의가 어렵기때문에 has-a 관계인 컴포지션을 쓰는거지 상속이 쓰레기인건 아님. 학계에서 상속의 다형성 구현은 잘못됐다라는 이야기가 나왔지만 잘 쓰는 사람은 잘씀. 사람의 문제
대체 뭐가 맞다는거냐
댓글 0