Skip to content

CrazeeIvan/cyclops-react

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

screen shot 2016-02-22 at 8 44 42 pm

Future & functional based programming via JDK compatible extensions for Java 8 and above.

Getting cyclops-react

Gradle

where x.y.z represents the latest version

compile 'com.aol.simplereact:cyclops-react:x.y.z'

Maven

<dependency>
    <groupId>com.aol.simplereact</groupId>
    <artifactId>cyclops-react</artifactId>
    <version>x.y.z</version>
</dependency>

cyclops-react-types

Features

Used in Aol to build robust, performant & scalable asynchronous systems : features include

  • Compatible extensions to JDK interfaces (Collections, Streams, Functions)

  • Built with jOOλ, reactive-streams ,Agrona and pCollections

  • Extensions for efficient JDK compatible persistent collections (pCollections)

  • FutureStreams for managing aggregates for Future Tasks (e.g. for multi-threaded execution of large numbers of I/O tasks)

  • Single-threaded asynchronous streaming

  • Scheduling of data emission

  • Powerful extended type hierarchy for aggregrations (Collections & Streams) and single values

  • Powerful functional-style control structures, implemented in Java friendly manner (Maybe, Eval, FutureW, Xor, Ior, Try, AnyM, structural & guard based pattern matching, for-comprehensions)

  • Execute functions between wrapped values (Optional / CompletableFutre etc) without tedious unwrapping (Java friendly Applicative support).

  • Java friendly abstractions for wrapping any Monad type (Stream, CompletableFuture, Optional, cyclops-react types and types from other Java projects too). AnyM and it's two subtypes AnyMSeq for aggregates (Steam, List etc) and AnyMValue for Values

  • Monad Transformers - for manipulating nesting monadic types (e.g. Optionals within a Stream as if it were just an Optional)

  • Applicatives - apply functions across wrapped types (e.g. Optional / Maybe / Xor) without unwrapping & aggregate without terminate on failure

  • Structural pattern matching & pattern matching via Guards (see Matchable and Matchables)

  • Full strength for comprehensions / generators (reference elements from other generators)

  • Tight integration with reactive-streams : collections, streams and datatypes are publishers & can be generated via subscribers

  • Very Extensible & integration with other projects via cyclops-integration modules.

Documentation

Articles

Old simple-react landing page

OSCON 2016 slides

License

cyclops-react is licensed under the Apache 2.0 license.

http://www.apache.org/licenses/LICENSE-2.0

About

A comprehensive functional reactive platform for JDK8

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 80.3%
  • CSS 19.7%