본문 바로가기

함수형 프로그래밍

(14)
파이프라인으로 워크플로 모델링하기 - 함수 타입으로 워크플로 모델링, 이펙트 모델링 타입을 사용하여 워크플로의 각 단계 모델링 상태 기계 접근 방식은 주문 배치(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..
파이프라인으로 워크플로 모델링하기 - 개요 및 상태 머신 이전 두 장에서 타입을 사용하여 일반적인 방식으로 도메인 모델링을 수행하는 방법을 보았습니다. 이 장에서는 거기서 배운 내용을 주문 처리(order-placing ) 워크플로에 적용할 것입니다. 그 과정에서 모든 워크플로를 모델링하는 데 유용한 여러 기술을 살펴보겠습니다. 목표는 항상 그렇듯이 도메인 전문가가 읽을 수 있는 것을 만드는 것입니다. 이제 주문하기 워크플로의 단계를 다시 살펴보겠습니다. 다음은 모델링해야 할 사항에 대한 요약입니다. ​ workflow "Place Order" = ​ input: UnvalidatedOrder ​ output (on success): ​ OrderAcknowledgmentSent ​ AND OrderPlaced (to send to shipping) ​ AND..
도메인을 문서화하기 기술적 구현에 대한 편견을 피하면서, 이러한 요구 사항을 어떻게 기록해야 할까요? 시각적 다이어그램(예: UML)을 사용할 수 있지만 작업하기 어렵고 도메인의 미묘한 부분을 포착할 만큼 충분히 상세하지 않은 경우가 많습니다. 도메인 모델을 코드로 작성하기 전에, 지금은 도메인 모델을 캡처하는 데 사용할 수 있는 간단한 텍스트 기반 언어를 만들어 보겠습니다. 워크플로의 경우 입력과 출력을 문서화한 다음 비즈니스 논리에 간단한 의사 코드를 사용합니다. ​ Bounded context: Order-Taking ​ ​ Workflow: "Place order" ​ triggered by: ​ "Order form received" event (when Quote is not checked) ​ primary i..
타입스크립트(typescript)로 배우는 함수형 프로그래밍 - 모나드(monad) https://dev.to/gcanti/getting-started-with-fp-ts-applicative-1kb3 지금까지의 내용 : Program f Program g Composition pure pure g ∘ f effectful pure (unary) lift(g) ∘ f where liftA1 = lift Functor A타입의 인스턴스 a와 T=>F 시그니처의 함수(Constructor), A=>B 시그니처의 함수 f를 다루었다. 아래 fa(F)는 constructor(a)를 암시한다. 즉 A타입 인스턴스 하나와 생성자(effectful program) 하나, 순수 함수 하나를 이용하여 F타입의 인스턴스 하나(F 를 다른 타입(F)으로 전환하는 이야기였다. lift: (f: (a: A) ..
함수형 자바스크립트 공부 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..
함수형 자바스크립트 공부 4. 맵, 필터, 리듀스 인프런 - 함수형 프로그래밍과 JavaScript ES6+ (inflearn.com) 함수형 프로그래밍과 JavaScript ES6+ - 인프런 ES6+와 함수형 프로그래밍을 배울 수 있는 강의입니다. 이 강좌에서는 ES6+의 이터러블/이터레이터/제너레이터 프로토콜을 상세히 다루고 응용합니다. 이터러블을 기반으로한 함수형 프로그래밍, www.inflearn.com 해당 강의 공부 중...! 맵, 필터, 리듀스 map const products = [ {name: '반팔티', price: 15000}, {name: '긴팔티', price: 20000}, {name: '핸드폰케이스', price: 15000}, {name: '후드티', price: 30000}, {name: '바지', price: 25000..