Loose ends: Optional

Remi Forax forax at univ-mlv.fr
Mon Jun 3 15:02:24 PDT 2013


On 06/03/2013 07:03 PM, Joe Bowbeer wrote:
> On Mon, Jun 3, 2013 at 3:05 AM, Remi Forax <forax at univ-mlv.fr 
> <mailto:forax at univ-mlv.fr>> wrote:
>
>     On 06/03/2013 08:11 AM, Joe Bowbeer wrote:
>
>         I'd like to see a compare-and-contrast between what is
>         proposed for Java8 and Guava's Optional and Scala's Option.
>
>         Is the criticism that Brian is fielding now a replay of prior
>         criticism of Guava's Optional?
>
>         http://benhutchison.wordpress.com/2012/06/05/a-rant-on-jdroids-and-wilful-ignorance/
>         http://kerflyn.wordpress.com/2011/12/05/from-optional-to-monad-with-guava/
>
>         How have Guava's user been dealing with its intentionally more
>         limited approach?
>
>
>     There are also some comments in the comment section of this wiki page:
>     https://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained
>
>     The number one criticism seems to be the lack of a method bind
>     like in Haskell,
>     but because Java is not Haskell, the exact operation needed is
>     neither a map nor a flatMap,
>     it's a composition of flatMap and Optional.ofNullable().
>     So the issue is more how to deal with the return value of a method
>     that can be null but that doesn't return an Optional.
>
>     I still think and this is the conclusion of one of the blog cited
>     above that the elvis syntax (?.)
>     is the best way to deal with this issue.
>     I don't see how to solve this issue without introducing
>     Optional.ofNullable(), BTW.
>
>
>
> I agree that the elvis operator seems to handle this well (based on 
> some limited experience).
>
> Does everyone agree that Fugue's Option is an improvement on Guava's 
> Optional?

No !

>
> Jed Wesley-Smith et al's library also includes Either and Pair.
>
> https://bitbucket.org/atlassian/fugue (Is the javadoc online anywhere?)
>
> You can see them all in action here:
>
> https://bitbucket.org/atlassian/fugue/src/1fb9c6651708/src/test/java/com/atlassian/fugue/IterablesTest.java
>
> --Joe
>

Rémi



More information about the lambda-libs-spec-experts mailing list