# fold-java **Repository Path**: mirrors_andyglick/fold-java ## Basic Information - **Project Name**: fold-java - **Description**: Fold operator - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-24 - **Last Updated**: 2026-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # left fold [![Build Status](https://travis-ci.org/daggerok/fold-java.svg?branch=master)](https://travis-ci.org/daggerok/fold-java) Kotlin to the rescue _DomainEvents.kt_ ```kotlin @file:JvmName("DomainEvents") interface DomainEvent { val type: Class get() = this.javaClass } class CounterCreatedEvent : DomainEvent class CounterIncrementedEvent : DomainEvent class CounterDecrementedEvent : DomainEvent fun Aggregate.apply(event: DomainEvent): Aggregate = when (event) { is CounterCreatedEvent -> this.on(event) is CounterIncrementedEvent -> this.on(event) is CounterDecrementedEvent -> this.on(event) else -> throw IllegalStateException("unexpected unsupported domain event occur: $event") } ``` _Some.java_ ```java Optional foldLeft(Aggregate initialState, DomainEvent... events) { if (events.length <= 0) return Optional.empty(); Aggregate accumulator = initialState; for (DomainEvent event : events) accumulator = DomainEvents.apply(accumulator, event); return Optional.of(accumulator); } ``` group: - [lazy-java](https://github.com/daggerok/lazy-java) - [java-examples](https://github.com/daggerok/java-examples) - [learn-jvm](https://github.com/daggerok/learn-jvm) - [fold-java](https://github.com/daggerok/fold-java)