Skip to content

10.0.0-M5 : Cyclops Pure module and reactive-streams based IO Monad

Compare
Choose a tag to compare
@johnmcclean johnmcclean released this 25 Dec 10:03
· 569 commits to master since this release
614c7a4

Milestone 5 of Cyclops X

M5 of Cyclops X introduces another new module cyclops-pure. Cyclops Pure provides additional control structures, typeclass definitions and instances for pure category theoritic functional programming in Java. Cyclops Pure simulates Higher Kinded Types using Witness Types (see Simulating Higher Kinded Types in Java ).

Cyclops X

Cyclops X (cyclops 10) unifies cyclops-react and the cyclops integration modules on the cyclops versioning scheme. The goal of this project is remove a whole class of runtime errors from application code by providing much stricter APIs that prevent exceptional states from arising. A secondary goal is to modularize cyclops into a series of smaller more focused projects so that functionality is easy to find and developers only take what they need.

What’s new Cyclops X

-> Enhancements over cyclops-react 2

  • Fast purely functional datastructures (Vector, Seq / List, LazySeq / LazyList, NonEmptyList, HashSet, TreeSet, TrieSet, HashMap, LinkedMap, MultiMap, TreeMap, BankersQueue, LazyString, Discrete Interval Encoded Tree, Zipper, Range, Tree, DifferenceList, HList, Dependent Map )
  • Structural Pattern Matching API (deconstruct algebraic product and sum types)
  • Improved type safety via the removal of unsafe APIs
    -- E.g. Unlike Optional, Option has no get method (which could throw a null pointer)
    -- New data structures do not support operations that would throw exceptions (you can't call head on an empty list for example)
  • Eager and Lazy alternatives for most datastructures (Option is eager, Maybe is lazy + reactive)
  • Improved naming of types (Function1-8 rather than Fn1-8, Either not Xor)
  • Group id is changed to com.oath.cyclops
  • Versioning between cyclops-react and cyclops is merged on cyclops versioning scheme (version 10 = Cyclops X)
  • Light weight dependencies : reactive-streams API & Agrona

What’s new Cyclops X Milestone 5

  • Pure functional programming Module
  • flatMap and map Operators on Trampoline
  • reactive-streams based IO Monad
  • Safe PartialFunction API

Changelog

Check out the features delivered and bugs fixed -

github 10.0.0-M5 issues & PRs

Dependency changes

Cyclops no longer depends on pCollections or jOOλ

Get cyclops X

Gradle

Cyclops

compile 'com.oath.cyclops:cyclops:10.0.0-M5’

Cyclops AnyM

compile 'com.oath.cyclops:cyclops-anym:10.0.0-M5’

Cyclops Futurestream

compile 'com.oath.cyclops:cyclops-futurestream:10.0.0-M5’

Cyclops Pure

compile 'com.oath.cyclops:cyclops-pure:10.0.0-M5’

Maven

Cyclops

<dependency>
    <groupId>com.oath.cyclops</groupId>
    <artifactId>cyclops</artifactId>
    <version>10.0.0-M5</version>
</dependency>

Cyclops AnyM

<dependency>
    <groupId>com.oath.cyclops</groupId>
    <artifactId>cyclops-anym</artifactId>
    <version>10.0.0-M5</version>
</dependency>

Cyclops Futurestream

<dependency>
    <groupId>com.oath.cyclops</groupId>
    <artifactId>cyclops-anym</artifactId>
    <version>10.0.0-M5</version>
</dependency>

Cyclops Pure

<dependency>
    <groupId>com.oath.cyclops</groupId>
    <artifactId>cyclops-pure</artifactId>
    <version>10.0.0-M5</version>
</dependency>

Documentation

Articles

Old simple-react landing page

License

cyclops-react is licensed under the Apache 2.0 license.

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