-
Notifications
You must be signed in to change notification settings - Fork 51
Home
This is a mirror of the cyclops-react wiki user guide may not always be up-to-date.
- Getting Started
- Project Goals
- Some common features
- Collections
- Functions
- Control Structures
- Reactive Streams
-
Streaming
-
An Introduction
- to StreamUtils, Streamable & ReactiveSeq
- to HotStreams and Reactive Streams
- to sliding and grouping
- to value extraction
- to error handling
- to scheduling
- to time based ops / onePer / debounce
- to zipping
- to efficient reversal
- to take / drop / cycle
- to flatMap / map and for comprehensions
- to empty stream and single value handling
- to filtering and scanning
- to assertions, folds & conversions
- to async ops
- Performance
- Pushing data into Streams
- Repeatable Streams (Streamable)
- Plumbing Streams
- SQL Window functions (and more) inherited from jooλ
- ReactiveSeq (powerful sequential Streaming)
- FutureStreams
-
An Introduction
- Type Interfaces in cyclops-react
- Low level For Comprehensions
- Higher Kinded Types
- Type classes
- Integrations
- Functional & Reactive Microservices
- custom conversions and operators Available on all types.
- Predicates for filtering
- Working with persistent and mutable collections
- Lazy Extended Collections - Fast and powerful
- Extending JDK 8 Collections
- Working with Lambdas
- Fluent Functions in cyclops - blog post
- Convertable mixin
- Mutable boxes
- LazyImmutable set once box
- Memoization
- Partial Application
- Exception Softener
- Utilities for working with Functions
- Memoization, Currying, Uncurrying and Type inferencing
- 4 flavours of Java 8 Functons Blog post
- Built-in Visitor pattern
- Structural Pattern matching
- Matchables pre-canned matching
- Predicates for guards
- Straightforward Structural Pattern Matching - blog post
See FutureStreams below for more advanced - infinite lazy Streams of Futures with a huge range of extended operators
- Try functional exception handling for Java 8
- Why cyclops-react Try
- Try examples
- When Functional Try outperforms Try / Catch
- Tuples from jOOλ: Javadoc link. cyclops-react extends jooλ
- Power Tuples independent cyclops module
AnyM is a functor for Monads, with two monadic sub-types. AnyMValue a monad for monadic values. AnyMSeq a monad for non-scalar monads.
- AnyM intro
- AnyM creational methods
- AnyM for comprehensions
- Introduction to the cyclops-monad API
- cyclops-react organizes the cambrian expolsion of Java 8 libraries
Related : For Comprehensions in Scala
Compose your own
See also
All cyclops-react data types implement Reactive Streams Publisher (e.g. extended collections, AnyM, Xor, Ior, Try, Maybe, FutureW, ReactiveSeq, LazyFutureStream and more).
- SeqSubscriber - subscribe to sequences / streams
- ValueSubscriber - subscribe for a single value
- QueueBasedSubscriber
- Introduction to cyclops-react Streams
- Streaming overview : ReactiveSeq, Streamable and more
- A rational : Java 8 Streams 10 missing features
- Optimizing cyclops-react Streams
- Fast Futures and Fast Future Pooling : Fast Futures ~2.5 faster than CompletableFutures in LazyFutureStreams
- StreamSource for pushable Streams
- Pushing data into Java 8 Streams - blog entry
- Queues explained
- Signals explained
- Topics explained
- Plumbing Streams with Queues, Topics and Signals
- Agrona wait free Queues
- Wait strategies for working with Wait Free Queues
ReactiveSeq & LazyFutureStream extend jooλ's Seq. Extended Collections implement jooλ Collection API.
- Rationale for Seq
- Combining collectors
- Windowing functions in Java
- Windowing functions example
- Group by and SQL Aggregrations in Java 8
- Generating an Alphbetical sequence
- Common SQL clauses Stream equivalents
- jooq blog on jooλ
- Scheduling Streams
- Scheduling Streams example blog post
- Asynchronous execution
- For comprehensions
- ReactiveSeq examples
- LazyFutureStream overview : A powerful API for infinite parallel Streaming
- SimpleReactStream overview : an easy to use API for finite eager parellel Streaming
- Stream type overview
- LazyFutureStream & reactive-streams
- A simple API (simple-react) and a rich api (LazyFutureStream
- Asynchronous terminal operations
- Batching, time control, sharding, zipping
- onFail
- Event based : forEachWithError etc
- For comprehensions
- Retry
- Take, Skip and Sample
- Scheduling
- getting started
- error handling
- filter /map/ reduce /flatMap
- choosing a stream type
- stream creation
- pooling reactors
- pull / push model
- flow control
- batching and chunking
- sharding
- zipping streams
- firstOf, anyOf, allOf
- stream operations
- sequence operations
- Getting started example
- Building a non-blocking NIO Rest Client
- Bulk loading files
- Converting examples from RxJava
- Implementing a data cache
- Implementing a Quorum
- Reacting to asynchronous events with a Stream of CompletableFutures
- Selecting the fastest algorithm
- Asynchronous fun with Vert.x
- JDBC Processing
- Understanding LazyFutureStreams behavior
- Quick overview of SimpleReactStream
- Understanding the push-pull model of FutureStreams
- Let the illusion die Build your own FutureStreams
- FutureStream comparison matrix : note EagerFutureStream is discontinued
- React pools - elastic thread pools
- Fine Tuning SimpleReact
- Sharing a forkJoinPool with Parallel Streams - info purposes, don't do this!
- Separating task executors
cyclops-react Types are defined in the types package and sub-packages
- ApplicativeFunctor
- BiFunctor
- Combiner
- EmptyUnit
- Filterable
- Foldable
- Functor
- HotStream
- MonadicValue
- MonadicValue1
- MonadicValue2
- PausableHotStream
- ReactiveTask
- To
- Traversable
- Value
- Visitable
- Unit
- Zippable
Using the cyclops-react Do builder. In general prefer using com.aol.cyclops.control.For to the lower level Do. Do is useful for building your own For Comprehension interpreter (see For intro.
- Extensible for comprehensions : used to build type specific For Comprehensions elsewhere
- For Comprehensions explained
- The neophytes guide to Java 8 : Welcome to the Future - the syntax is better today
- Dependency injection with the Reader monad - cyclops now has it's own Reader monad.
[monad,applicative, functor, unit, monadPlus based on HKT]
Integrations include
- AnyM support
- For comprehension support
- Higher Kinded Type encodings for 3rd party libraries
- Lazy / faster collections by taking advantage of strengths of each library