Cyclops 10.1.0 : New Do notation for Tagless Final support
Cyclops 10.1.0
What’s new Cyclops 10.1.0
- Generic pure functional programming with a new Do notation
- takeWhileInclusive, takeUntilInclusive, dropWhileInclusive, dropUntilInclusive operators on ReactiveSeq
- Type class performance improvements for Seq, Vector, LazySeq, IO, Publishers, Iterables and more
Bug fixes
- Spouts amb operator fixed
- Spouts schedule Stream operator fix
- Completable types no longer block on reactive-streams subscriptions
- Deprecations (internal methods and misnamed types)
Do Notation Examples
Do.forEach(OptionInstances::monad)
.__(some(10))
.__(some(5))
.yield((a,b)->a+b)
Tagless Final
Do.forEach(monad)
._of(amount)
.__(this::debit)
.__(_1(this::credit))
.yield(__23(Tuple::tuple))
.fold(fn);
Algebra
interface AccountAlgebra<W> {
Higher<W,Account> debit(Account account, double amount);
Higher<W, Account> credit(Account account, double amount);
}
Changelog
Check out the features delivered and bugs fixed -
Dependency changes
Agrona to 0.9.27
Reactor to 3.2.3.RELEASE
RxJava 2 to 2.2.4
Modules
- cyclops - Persistent data structures and control types
- cyclops-futurestream - Parrallel asynchronous streaming
- cyclops-reactive-collections - Fast, non-blocking, asynchronous extensions for JDK and Persistent Collections
- cyclops-anyM - Higher kinded abstractions for working with any Java Monad type.
- cyclops-pure - Higher kinded type classes for pure functional programming in Java
- cyclops-reactor-integration - Reactive collections and AnyM integrations with Reactor.
- cyclops-rxjava2-integration - Reactive collections and AnyM integrations with Rx Java 2.
- cyclops-jackson-integration - Jackson databindings for Cyclops persistent data structures and control types.
Get cyclops X
Gradle
Cyclops
compile 'com.oath.cyclops:cyclops:10.1.0’
Cyclops AnyM
compile 'com.oath.cyclops:cyclops-anym:10.1.0’
Cyclops Futurestream
compile 'com.oath.cyclops:cyclops-futurestream:10.1.0’
Cyclops Pure
compile 'com.oath.cyclops:cyclops-pure:10.1.0’
Cyclops Reactive Collections
compile 'com.oath.cyclops:cyclops-reactive-collections:10.1.0’
Cyclops Reactor Integration
compile 'com.oath.cyclops:cyclops-reactor-integration:10.1.0'
Cyclops RxJava2 Integration
compile 'com.oath.cyclops:cyclops-rx2-integration:10.1.0'
Cyclops Jackson Integration
compile 'com.oath.cyclops:cyclops-jackson-integration:10.1.0'
Maven
Cyclops
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops</artifactId>
<version>10.1.0</version>
</dependency>
Cyclops AnyM
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-anym</artifactId>
<version>10.1.0</version>
</dependency>
Cyclops Futurestream
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-anym</artifactId>
<version>10.1.0</version>
</dependency>
Cyclops Pure
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-pure</artifactId>
<version>10.1.0</version>
</dependency>
Cyclops Reactive Collections
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-reactive-collections</artifactId>
<version>10.1.0</version>
</dependency>
Cyclops Reactor Integration
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-reactor-integration</artifactId>
<version>10.1.0</version>
</dependency>
Cyclops RxJava2 Integration
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-rx2-integration</artifactId>
<version>10.1.0</version>
</dependency>
Cyclops Jackson Integration
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-jackson-integration</artifactId>
<version>10.1.0</version>
</dependency>
License
cyclops-react is licensed under the Apache 2.0 license.