Skip to content

Instantly share code, notes, and snippets.

@michaelavila
Last active August 29, 2015 14:26
Show Gist options
  • Save michaelavila/4c090f025d4919a13b7d to your computer and use it in GitHub Desktop.
Save michaelavila/4c090f025d4919a13b7d to your computer and use it in GitHub Desktop.
java 8: func <$> arg1 <*> arg2 <*> arg3
package com.michaelavila;
import java.util.Optional;
import java.util.function.Function;
/**
* Created by michaelavila on 7/30/15.
*/
public class FunctionalExamples {
public static void main(String[] args) {
Function<String, Function<String, Function<String, String>>> greet = p1 -> p2 -> p3 -> {
return "Hello, " + p1 + " " + p2 + " " + p3;
};
Optional<String> part1 = Optional.of("Shit");
Optional<String> part2 = Optional.of("Head");
Optional<String> part3 = Optional.of("Jerk");
Optional<String> greeting1 = part1.map(greet).flatMap(part2::map).flatMap(part3::map);
System.out.println(greeting1); // Optional[Hello, Shit Head Jerk]
part2 = Optional.empty();
Optional<String> greeting2 = part1.map(greet).flatMap(part2::map).flatMap(part3::map);
System.out.println(greeting2); // Optional.empty
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment