Skip to content

Instantly share code, notes, and snippets.

@dfdgsdfg
Created December 28, 2018 04:13
Show Gist options
  • Save dfdgsdfg/db83ddaa3ab3a2478d6ad80b173c2d65 to your computer and use it in GitHub Desktop.
Save dfdgsdfg/db83ddaa3ab3a2478d6ad80b173c2d65 to your computer and use it in GitHub Desktop.
바닐라 자바스크립트에서 함수형

흐흐흐 바닐라 자스에서 언어에 순응하는? 함수형 해보겠다고 여기 저기 기웃거렸는데, 결과적으로 하스켈식은 안되고, 동적 타입인 클로저에 프렉틱스를 많이 보는걸로 결론을.. 리치하키 아저씨한테 한표 겁니다. 거기에 자스의 이터레이터, 제네레이터를 좀더 활용하면서 지연평가도 흉내내고 프로미스 에이싱크 어웨잇으로 비동기도 처리하고 합성하고 이뮤타블 자료형 쓰고 디스 피하고 이정도가 바닐라 자스에서 최선으로 보이네요 거기에 펑셔널 리엑티브를 위해 스트림 정도만 사용하면 바닐라 자스에서 할수있는건 다 한듯. rxjs도 아니고 요렇게 아예 콜백을 기반으로 간단한 스트림 정도 있으면 https://github.com/staltz/callbag-basics

좀더 기대한다면 표준에 추가되는 파이프 오퍼레이터나 옵져버블 이런건데 그건 표준 들어오는거 보면서 해도 될듯하고요 하스켈식으로 하려면 이런게 있긴한데.. 런타임 비용도 높고, 컴파일에 뭐 잡아주는것도 아니고.. 동적언어에서 이렇게 까지?? 싶은..

이런류같이 dev 모드에서는 object.freeze로 얼리고 prod에서는 그냥 생짜로 쓰는 형태로 어느정도 흉내내는게 제일 나은거 같더라고요 아니면 js proxy를 사용한 요런거요 https://github.com/mweststrate/immer

proxy를 사용해서 클로저의 이뮤타블 자료형 처럼 오버헤드가 나름 최소화 된상태로 사용가능해요 https://hackernoon.com/introducing-immer-immutability-the-easy-way-9d73d8f71cb3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment