Zest™
Introduction
Tutorials
Javadoc
Samples
Core
Libraries
Extensions
Tools
Glossary 

Core Functional API

code

docs

tests

The Zest™ Core Functional API is a generic package to work with Iterables in a "functional programming language" style.

This package is completely independent of everything else in Zest™ and may be used on its own in any kind of environment such as Spring or Java EE applications.

Table 18. Artifact

Group IDArtifact IDVersion

org.apache.zest.core

org.apache.zest.core.functional

0


First Example

Let’s say that you have an Iterable of Integers and you want to sum them all up. Most people would create a loop and sum it all up in something like this;

Iterable<Long> data = new ArrayList<Long>();
  [...snip...]


long sum = 0;
for( Long point : data )
{
    sum = sum + point;
}
System.out.println( "The sum is " + sum );

With the Zest™ Core Functional API, you go about it in a different way. The code ends up looking like this;

Iterable<Long> data = new ArrayList<>();
Long total = StreamSupport.stream( data.spliterator(), true ).reduce( 0L, ( sum, n ) -> sum + n );
System.out.println( "The sum is " + total );

And this is just the tip of the iceberg.

The Big Picture

The Zest™ Core Functional API are divided a handful of powerful concepts, especially when used together;

  • Iterables - many methods to deal with Iterable data, so that the loops in your programs can largely be removed.
  • Functions - f(x) and f(x,y) are well-know from mathematics and used in functional programming languages. Zest™ is not capable of introducing lambda calculus due to limitations in Java itself, but we can simulate a lot to allow people to create more readable code.
  • Specification - A simple concept to define the bounds of data. This is used for filtering, query and many other higher level abstractions.
  • Visitor pattern - A way to be handed the items in a collection, without having the loops. This could be for end result handling, distribution of intermediary values, and many other things.

Specification

TODO

Function

TODO

Visitor Pattern

TODO

Iterables

TODO