전체 글
-
Endofunctor (엔도펑터), 모나드 (Monad)Development/Architecture 2026. 3. 2. 18:36
엔도펑터 (Endofunctor) 출발하는 카테고리와 도착하는 카테고리가 같은 펑터로, 그리스어 접두사 'Endo-'(내부의)와 의미와 Functor가 결합한 것이다. 프로그래밍에서 다루는 대부분의 펑터가 엔도펑터다. 가장 흔한 예시로 Maybe(or 자바의 Optional)가 있다. (F : C -> C) 엔도펑터 역시 펑터와 마찬가지로 대상 객체를 매핑하는 것 뿐만 아니라 사상 또한 매핑해야 한다. 이를 리프팅(lifting) 한다고 하며, 들어올린다고도 한다.ex) a -> b를 Maybe a -> Maybe b 로 리프팅 모나드 (Monad) 모나드는 엔도펑터 카테고리에서의 모노이드다. 즉, 결합 법칙과 항등 법칙을 만족해야 한다.펑터는 컨텍스트 안의 값을 바꾸는 함수를 적용한다.map : F ..
-
함수형 프로그래밍, 커링, 모노이드, 펑터..Development/Architecture 2026. 2. 18. 18:56
함수형 프로그래밍 순수 함수(Pure function)와 불변 데이터(Immutable data)를 중심으로 프로그래밍을 구성하는 패러다임.순수 함수 : 같은 입력에 대해서 항상 같은 출력을 반환하고, 외부 상태를 변경하지 않는 함수다.불변성 : 데이터를 생성한 후에는 변경이 되지 않고, 변경이 필요하면 새로운 데이터를 만든다.일급 함수(First-Class Function) : 함수를 일반 변수처럼 취급하여 변수 할당, 인자 전달 및 반환값으로 사용 가능하도록 하는 특성이다.고차 함수(Higher-Order Function) : 함수를 인자로 받거나 함수를 반환하는 함수다.함수 합성(Function Composition) : 함수들을 조합하여 다양한 함수를 만들 수 있다.// 작은 단위 함수들val r..
-
아키텍처 퀀텀 (Architecture Quantum)Development/Architecture 2026. 2. 17. 18:24
아키텍처 퀀텀 (Architecture Quantum)아키텍처 퀀텀은 높은 기능 응집도, 높은 정적 커플링, 동기적 동적 커플링의 특성을 띤, 독립적으로 배포 가능한 아티팩트다.모놀리식 아키텍처는 정의에 따라 단일 아키텍처 퀀텀이다.마이크로 서비스와 같은 분산 아키텍처는 서비스를 독립적으로 배포가 가능하기 때문에 각각이 아키텍처 퀀텀이 될 수 있다. (서비스가 서로 격리되어 있다고 해서 퀀텀이 생성되는 것은 아니다.)독립적으로 배포가 가능해도 공유 데이터베이스와 같은 공통 결합점이 생긴다면 아키텍처 퀀텀에 포함된다. 따라서 단순히 배포의 경계만 봐서는 아키텍처 퀀텀을 가늠하기 어렵다. 정적 커플링데이터베이스는 정적 커플링을 판단하는 기준으로, 단일 데이터베이스에 의존하는 시스템은 1 이상의 퀀텀을 가질 ..
-
[Coroutine] 코루틴 학습 - 17 (Flow processing)Development/Kotlin 2022. 5. 28. 17:27
map, filter suspend fun main() { flowOf(1, 2, 3, 4) .map { it * it } .filter { it % 2 == 0 } .collect { println(it) } } // 4 // 16 컬렉션에서 흔하게 사용하는 map과 filter 기능과 같다. take and drop suspend fun main() { ('A'..'Z').asFlow() .take(5) .collect { println(it) } println() ('A'..'Z').asFlow() .drop(20) .collect { println(it) } println() } // A // B // C // D // E // // U // V // W // X // Y // Z take는 el..