본문 바로가기

functional programming

(8)
소프트웨어 합성 : 트랜스듀서(Transducers) transducer를 이용한 효율적인 데이터 프로세싱을 배워봅시다. 다음 글의 번역입니다. https://medium.com/javascript-scene/transducers-efficient-data-processing-pipelines-in-javascript-7985330fe73d Transducers: Efficient Data Processing Pipelines in JavaScript Note: This is part of the “Composing Software” series on learning functional programming and compositional software techniques in… medium.com Transducer는 합성 가능한 고차 리듀서입니다. 리..
소프트웨어 합성 : 리듀서(reducer) reducer를 이용한 소프트웨어 합성에 대해 좀 더 알아봅니다. 다음 글의 번역입니다. https://medium.com/javascript-scene/reduce-composing-software-fe22f0c39a1d Reduce (Composing Software) Note: This is part of the “Composing Software” series (now a book!) on learning functional programming and compositional software… medium.com What is Reducer? 함수형 프로그래밍에서 일반적으로 사용되는 Reduce(일명: fold, accumulate) 유틸리티는 반복이 완료되고 누적된 값이 반환될 때까지 리스트를..
함수형 자바스크립트 : Frisby 교수의 Composable Functional JavaScript https://egghead.io/courses/professor-frisby-introduces-composable-functional-javascript Professor Frisby Introduces Composable Functional JavaScript This course teaches the ubiquitous abstractions for modeling pure functional programs. Functional languages have adopted these algebraic constructs across the board as a way to compose applications in a principled way. We can do the same in JavaScri..
파이프라인으로 워크플로 모델링하기 - 함수 타입으로 워크플로 모델링, 이펙트 모델링 타입을 사용하여 워크플로의 각 단계 모델링 상태 기계 접근 방식은 주문 배치(order-placing) 워크플로를 모델링하는 데 완벽하므로 이제 각 단계의 세부 사항을 모델링하겠습니다. ​ workflow "Place Order" = ​ input: OrderForm ​ output: ​ OrderPlaced event (put on a pile to send to other teams) ​ OR InvalidOrder (put on appropriate pile) ​ ​ // step 1 - 순수하지 않은 스텝 ​ do ValidateOrder ​ If order is invalid then: ​ add InvalidOrder to pile ​ stop ​ ​ // step 2 ​ do PriceOrd..
도메인의 무결성(Integrity)과 일관성(Consistency) 관리하기 - Make illegal states unrepresentable 해당 장의 요약 : 비즈니스 제약 사항을 주석이 아니라 타입 시스템을 이용해 작성하라! 타입 체킹을 통해 불필요한 테스트코드 작성을 피할 수 있다. 지금까지 F# 타입 시스템을 사용한 도메인 모델링의 기본 사항을 살펴보았습니다. 우리는 도메인을 나타면서도 컴파일 가능하고 구현을 안내하는 데 사용할 수 있는 풍부한 타입 세트를 구축했습니다. 도메인 모델에 맞게 모든 데이터가 유효하고 일관성이 있는지 확인하기 위해 몇 가지 예방 조치를 취해야 합니다. 목표는 신뢰할 수 없는 외부 세계와 구별되는 신뢰할 수 있는 데이터를 항상 포함하는 바운디드 컨텍스트를 만드는 것입니다. 모든 데이터 값이 항상 유효하다는 것을 확신할 수 있다면 구현을 깨끗하게 유지할 수 있고 방어적 코딩을 하지 않아도 됩니다. 이 장에서는 ..
JS와 Lambda Calculus 알아보기.(람다 대수) 원문 : https://glebec.github.io/lambda-talk/ Lambda as JS, or A Flock of Functions λpq.ppq also works because if p is true, it is supposed to select T, but p = T, so we can just reuse it. Notice something interesting here: λpq.ppq behaves exactly like the Mockingbird. It takes a value, p, and self-applies p (producing pp). Well, Mp = p glebec.github.io 앨런 튜링이 창안한 개념인 튜링 머신은 메모리, 명령어 등 기본적인 상태 기계를 ..
Ad hoc polymophism(애드훅 다형성) with typescript 다형성의 종류(더있긴 하지만 주로 만나는것) 서브타입 다형성 : 상속,구현 (할당 가능) 타입명이 공통 슈퍼클래스/인터페이스를 상속/구현한 인스턴스들을 의미. 구현은 각각 파라미터 다형성 : 제네릭 (타입 파라미터 이용 다형성) (파라미터) 타입명이 모든 타입을 나타낼 수 있음을 의미. 구현은 하나 애드훅 다형성 : 메소드 / 함수 오버로딩 (타입 클래스) 구현은 각각 타입스크립트를 쓰는 이유 자바스크립트로 객체 지향 하기 위해서? 핵심이 인터페이스인 이유? 자바스크립트 💔 OOP 리액트 hooks가 나온 이유? OOP보다는 es3로 돌아간 듯한 느낌을 주는 이유? So, Why OOP? interface통해 사용하는 곳을 바꾸지 않고 기능을 추가할 수 있음. 사용하는 곳의 if를 없앤다. 자바에서는 서..
함수형 자바스크립트 공부 5. 코드를 값으로 다루어 표현력 높이기 인프런 - 함수형 프로그래밍과 JavaScript ES6+ (inflearn.com) 함수형 프로그래밍과 JavaScript ES6+ - 인프런 ES6+와 함수형 프로그래밍을 배울 수 있는 강의입니다. 이 강좌에서는 ES6+의 이터러블/이터레이터/제너레이터 프로토콜을 상세히 다루고 응용합니다. 이터러블을 기반으로한 함수형 프로그래밍, www.inflearn.com 해당 강의 공부 중....! 코드를 값으로 다루어 표현력 높이기 go args를 함수로 축약하는 함수 인자를 계속해서 전달해나감 // 이전 리듀스... const reduce = (f, acc, iter) => { if (!iter) { // 인자 2개이거나 iterator가 아니면 iter = acc[Symbol.iterator](); acc..