7 comments

[ 0.24 ms ] story [ 25.0 ms ] thread
I was thinking "functioning" java when I saw the title :)
I'm guessing from the other comments it's not just "use clojure"? Site isn't responding at the moment.
Well knowing the author a bit - its about taking advantage of the proposed BGGA closure proposal and introducing FP features to java programmers.
Well, even if it can be done, why? There are perfectly fine languages that don't fight you every step of the way.

This, btw, is the content of the front page since the site is hosed.

[quote]

Functional Java is an open source library that aims to prepare the Java programming language for the inclusion of closures. It also serves as a platform for learning functional programming concepts by introducing these concepts using a familiar language. The library is intended for use in production applications and is thoroughly tested using the technique of automated specification-based testing with ScalaCheck.

Functional Java currently includes the following algebraic structures:

    * Immutable, in-memory singly linked list (fj.data.List)
    * Immutable lazy singly linked list (fj.data.Stream)
    * Array wrapper (fj.data.Array)
    * Optional value type-safe null (fj.data.Option)
    * Disjoint union a superset of exception handling (fj.data.Either)
    * Monoid (fj.pre.Monoid)
    * Functions with arity 1 to 8 usable with Java 7 closure syntax
    * Products of 1 to 8
Functional Java now includes the Reductio automated specification-based testing framework.

Functional Java includes usage examples and notably, code examples that make use of the Java 7 BGGA proposal syntax. Here is one such example (import statements omitted) that maps a transformation across an array by adding 42 to each element.

      final Array<Integer> a = array(1, 2, 3);
      final Array<Integer> b = a.map({int i => i + 42});
      arrayShow(intShow).println(b); // {43,44,45}
[/quote]
I've been involved in the Functional Java project for a while, it was created as we worked for a consultancy that did most of its work in Java and we wanted to use functional idioms in Java. It was also intended as a bit of an experiment to see just how much could be done in Java,