What's new in Functional Java 4.3
Mar 7, 2015
- Enhancements:
- Added toInt and fromInt to fj.Ordering (#71)
- Added Java 8 collectors (#69)
- Made Seq.empty() and List.nil() return singleton instances (#70)
- Made anonymous classes using lamdas (#67)
- Improved show for list, tree, set, treemap, stream, array, V arity 2 to 8, HList (#77)
- Added TreeMap.splitLookup (#4)
- Add union to TreeMap (#83)
- Added List.isSingle (#84)
- Added Option traverse family of methods (#85)
- Added equals, hashCode and toString to classes P’s, Array, Either, List, Option, Seq, Set, Stream, Tree, TreeMap, Validation (#75, #86)
- Added release notes as asciidoc (#92)
- Added F0 interface (#93)
- Added wrapper functions for function interfaces arity 1 and 2 (#94)
- Enhanced implementation of equals for standard classes (#95)
- Added traverse method family to P1, P2, Either, List, Validation (#80)
- Enhanced integration with basic Java types (#99)
- Made artifact OSGI compatible, suitable as Eclipse plugin (#72)
- Added predicate combinators (#98)
- Fixes:
- Fixed TreeMap.split (#4, #79)
- Fixed Option.fromNull javadoc (#73)
- Fixed Try javadoc (#91)
- Fixed stack overflow in TreeMap.update (#97)
- Fixed concurrency issue with P1.memo (#105)
- Breaking Changes:
- 93 added the F0 interface which P1 implements. This could break code where the _1 method for a new P1 called the method f outside P1’s scope. Making P1 implement F0 means that P1 now has an f method which hides the visibility of the previously visible outer f. You can fix this by using P.lazy.
New in Functional Java 4.2 (Mar 7, 2015)
- Enhancements:
- Added Java 8 examples
- Added new website
- Added Option.none_()
- Gradle 2.2.1 support with wrapper
- Added to Strings: isNullOrEmpty, isNullOrBlank and isNotNullOrBlank
- Added Try with arity 0-8 for lambdas that throw exceptions
- Added Effect with arity 0-8 for lambdas with a void return
- Added TryEffect with arity 0-8 for lambdas with a void return that throw an Exception.
- Conversion from Java 8 types to Functional Java types and vice-versa
- Added monadic IO methods
- Support instantiation of IO with lambdas
- Added first class cons_ for List
- Added partial application of first parameter for F 1-8
- Added SafeIO that encodes IOExceptions into Validations
- Added simple RNG
- Added Reader, Writer and State
- Deprecated $._
- Added Array.scan family of methods
- Support instantiating P1 values using lambdas to P.lazy
- Added toString for Validation, P arities 1 to 8, Either
- Added vending machine demo
- Added Option.toValidation
- Added map and contramap for F and F2.
- Added partial application for F1.
- Added filter and uncurried foldLeft and foldRight to FingerTree.
- Added foldLeft, foldRight and map to Seq.
- Accumulate Validation errors in a List.
- Convert from fj.data.Stream to java.util.Stream and vice versa.
- Added groupBy on List.
- Fixes:
- Various Javadoc issues
- Large inserts into TreeMap
- Javadoc support for Java 8
- Null parameter NullPointerException for Show.anyShow
- Exception propagation in test data generators
- Product memoisation for arities 1 to 8
- ClassCastException in class fj.data.Java
- Fixed performance of Set.member.
New in Functional Java 4.1 (Mar 7, 2015)
- Support Java 7 by removing default methods. Methods on class C with default methods moved to static methods on new class ${c}Functions.
New in Functional Java 4.0 (Mar 7, 2015)
- Merged changes from 3.2
- Minimal changes to support Java 8.
- Changed abstract classes to interfaces with default methods (P1, F1 to F8).
New in Functional Java 3.2 (Mar 7, 2015)
- Added methods to HashMap: toList, toStream, toOption, toArray, map, mapKeys, foreach, convert to/from java.util.Map
- Convert from java.util.List to List
- Fixed findChild method in TreeZipper to handle empty stream
- Fixed stack overflow when sorting and zipping
- Fixed stack overflow in Stream’s bind method
- Small Javadoc fixes
New in Functional Java 3.1 (Mar 7, 2015)
- Administrivia:
- Sources have been moved to GitHub
- Built has been converted to SBT
- New features:
- List.mapMOption - list traversal in the Option monad.
- List.allEqual - Returns whether or not all elements in the list are equal.
- Added a monoid for Double.
- Tree.bottomUp - Grows a tree from another tree by folding it from the bottom up.
- Strings.isNotNullOrEmpty - does what it says.
- Ord.hashOrd - an order instance that uses hashCode() for the order.
- Ord.hashEqualsOrd - same as above but also uses .equals()
- Set.set - A vararg Set factory method.
- Added first-class functions for Set intersect, union, and minus.
- First-class LazyString.toString.
- Added hashCode() and equals() to Option.
- Iteratees and an IO monad.
- Trampoline - a general solution for tail-call elimination in Java.
- List.equals(), List.hashCode(), and List.toString().
- Bug fixes:
- Stream.inits should always be nonempty.
- Stream was not compiling in Eclipse.
- Stream.length is now tail-recursive.
- TreeZipper.delete was flipping lefts and rights.
- Fixed naturalOrd Javadoc.
New in Functional Java 3.0 (Mar 7, 2015)
- A crucial change has been made to the F interfaces, which are now abstract classes and containing useful methods. This means some other methods (fj.Function) are redundant and will be removed in a release soon (perhaps with a @Deprecated first).
- There are other minor additions and bug fixes.