SlideShare a Scribd company logo
1 of 128
Download to read offline
FP in JAVA 8 
sponsored by ! 
Ignasi Marimon-Clos (@ignasi35) 
JUG Barcelona
@ignasi35 
thanks!
@ignasi35 
about you
@ignasi35 
about me 
@ignasi35 
1) problem solver, Garbage Collector, mostly 
scala, java 8, agile for tech teams 
2) kayaker 
3) under construction 
4) all things JVM
@ignasi35 
FP in Java 8 
Pure Functions 
no side effects 
if not used, remove it 
fixed in — fixed out
@ignasi35 
FP in Java 8 
(T, R) -> Q
@ignasi35 
FP in Java 8 
Supplier<T> 
Function<T,R> 
BiFunction<T,R,Q> 
Predicate<T> 
Consumer<T> 
() -> T 
(T) -> R 
(T, R) -> Q 
(T) -> boolean 
(T) -> {}
@ignasi35 
currying 
(T, R) -> (Q) -> (S) -> J 
BiArgumentedPrototipicalFactoryFactoryBean
@ignasi35
@ignasi35 
thanks!
@ignasi35 
End of presentation
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
XXIst Century DateTime
@ignasi35 
XXIst Century DateTime 
• Date is DEAD (my opinion) 
• Calendar is DEAD (my opinion) 
! 
! • DEAD is 57005 (that’s a fact)
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime 
! • Enum.Month 
• Enum.DayOfWeek
@ignasi35 
XXIst Century DateTime 
Enum.Month 
! • Not just JAN, FEB, MAR 
• Full arithmetic 
• plus(long months) 
• firstDayOfYear(boolean leapYear) 
• length(boolean leapYear) 
• …
@ignasi35 
XXIst Century DateTime 
• Clock 
• replace your sys.currentTimeMillis 
• allows testing 
• Instant/now 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• a date 
• no TimeZone 
• birth date, end of war, man on moon,… 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• an hour of the day 
• noon 
• 9am 
• Duration vs Period 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• Duration: 365*24*60*60*1000 
• Period: 1 year (not exactly 365 days) 
• Duration (Time) vs Period (Date) 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime (not an Instant!!) 
• Immutable 
• nanosecond detail 
• Normal, Gap, Overlap
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
Lists 
a1 1 2 3 
Nil 
List<Integer> nil = Lists.nil(); 
! 
List<Integer> a3 = nil.prepend(3); 
List<Integer> a2 = a3.prepend(2); 
List<Integer> a1 = a2.prepend(1);
@ignasi35 
Lists 
a1 1 2 3 
Nil 
head(); tail();
@ignasi35 
public interface List<T> { 
T head(); 
List<T> tail(); 
boolean isEmpty(); 
void forEach(Consumer<? super T> f); 
default List<T> prepend(T t) { 
return new Cons<>(t, this); 
} 
} 
Lists
@ignasi35 
Lists 
a1 
1 2 3 
Nil 
0 
a0 
b Cons 
Cons Cons Cons 
4 
Cons 
List<Integer> a0 = a1.prepend(0); 
List<Integer> b = a1.prepend(4);
@ignasi35 
class Cons<T> implements List<T> { 
private T head; 
private List<T> tail; 
Const(T head, List<T> tail) { 
this.head = head; 
this.tail = tail; 
} 
! 
T head(){return this.head;} 
List<T> tail(){return this.tail;} 
boolean isEmpty(){return false;} 
! 
void forEach(Consumer<? super T> f){ 
f.accept(head); 
tail.forEach(f); 
} 
} 
Lists
@ignasi35 
class Nil<T> implements List<T> { 
! 
T head() { 
throw new NoSuchElementException(); 
} 
List<T> tail() { 
throw new NoSuchElementException(); 
} 
boolean isEmpty() { 
return true; 
} 
void forEach(Consumer<? super T> f){ 
} 
! 
} 
Lists
@ignasi35 
Lists 
a1 
1 2 3 
Nil 
0 
a0 
b Cons 
Cons Cons Cons 
4 
Cons 
Persistent Datastructures (not ephemeral, versioning) 
Immutable 
As efficient (consider amortised cost)
@ignasi35
@ignasi35 
filter 
class Nil<T> implements List<T> { 
//… 
List<T> filter(Predicate<? super T> p) { 
return this; 
} 
} 
! 
class Cons<T> implements List<T> { 
//… 
List<T> filter(Predicate<? super T> p) { 
if (p.test(head)) 
return new Const<>(head, tail.filter(p)); 
else 
return tail.filter(p); 
} 
}
@ignasi35 
map
@ignasi35 
map 
f
@ignasi35 
map 
class Nil<T> implements List<T> { 
//… 
<R> List<R> map(Function<T, R> f) { 
return (List<R>) this; 
} 
} 
! 
class Cons<T> implements List<T> { 
//… 
<R> List<R> map(Function<T, R> f) { 
return new Const<>(f.apply(head), tail.map(f)); 
} 
}
@ignasi35
@ignasi35 
fold 
f 
f 
f
@ignasi35 
fold 
class Nil<T> implements List<T> { 
<Z> Z reduce(Z z, BiFunction<Z, T, Z> f) { 
return z; 
} 
} 
! 
class Cons<T> implements List<T> { 
<Z> Z reduce(Z z, BiFunction<Z, T, Z> f) { 
return tail.reduce(f.apply(z,head), f); 
} 
}
@ignasi35 
fold 
aka reduce
@ignasi35 
map revisited 
f
@ignasi35 
map revisited 
f
! 
@Test 
void testMapList() { 
List<List<String>> actual = Lists 
@ignasi35 
.of(“hello world”, “This is sparta”, “asdf asdf”) 
.map(s -> Lists.of(s.split(“ ”))); 
! 
List<String> expected = Lists.of(“hello”, “world”, 
“This”, “is”, “sparta”, “asdf”, “asdf”); 
! 
assertEquals(expected, actual); 
} 
map revisited
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
map 
f
@ignasi35 
flatMap 
f
@ignasi35 
flatMap 
! 
class Cons<T> implements List<T> { 
//… 
<R> List<R> map(Function<T, R> f) { 
return new Const<>(f.apply(head), tail.map(f)); 
} 
! 
<R> List<R> flatMap(Function<T, List<R> f) { 
return f.apply(head).append(tail.flatMap(f)); 
} 
! 
}
@ignasi35
@ignasi35 
recap 
filter 
! 
map 
! 
fold 
! 
flatMap
@ignasi35
@ignasi35 
class MyFoo { 
! 
//@param surname may be null 
Person someFunc(String name, String surname) { 
… 
} 
! 
}
@ignasi35 
Maybe (aka Optional) 
replaces null completely
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever 
and ever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
! 
class MyFoo { 
Person someFunc(String name, Optional<String> surname) { 
… 
} 
! 
… 
! 
}
@ignasi35 
Maybe (aka Optional) 
! 
class MyFoo { 
Optional<Person> someFunc(Name x, Optional<Surname> y) { 
… 
} 
! 
… 
! 
}
@ignasi35 
Maybe (aka Optional) 
Some/Just/Algo 
! 
! 
None/Nothing/Nada 
ADT
@ignasi35
@ignasi35 
Maybe (aka Optional) 
filter: applies predicate and Returns input or None 
map: converts content 
fold: returns Some(content) or Some(default) 
flatMap: see list 
get: returns content or throws Exception 
getOrElse: returns content or defaultValue
@ignasi35 
recap 
filter 
! 
map 
! 
fold 
! 
flatMap 
ADT 
! 
Functor
@ignasi35
@ignasi35
@ignasi35 
Future (aka 
CompletableFuture)
@ignasi35 
Future (aka CF, aka 
CompletableFuture) 
! 
[FAIL] Does not use map, flatMap, filter. 
! 
[PASS] CF implemented ADT 
! 
[FAIL] Because Supplier, Consumer, Function, 
Bifuction, … CF’s API sucks.
@ignasi35 
Future 
filter: creates new future applying Predicate 
map: converts content if success. New Future 
fold: n/a 
flatMap: see list 
andThen: chains this Future’s content into a Consumer 
onSuccess/onFailure: callbacks 
recover: equivalent to map() but applied only on Fail
@ignasi35 
recap 
filter 
! 
map 
! 
fold 
! 
flatMap 
! 
andThen 
ADT 
! 
Functor
@ignasi35 
recap 
! 
Maybe simulates nullable 
Future will eventually happen 
! 
Exceptions still fuck up your day
@ignasi35
@ignasi35
@ignasi35 
Try 
Simulates a computation that: 
! 
succeeded 
or 
threw exception
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
Try in action
@ignasi35 
Try in action
@ignasi35
@ignasi35 
Try in action
@ignasi35
@ignasi35 
! 
class PersonRepository { 
Try<Person> loadBy(Name x, Optional<Surname> y) { 
… 
} 
! 
… 
! 
} 
Conclusions
@ignasi35 
class SafeDatabase { 
<T> T withTransaction(Function<Connection, T> block) { 
… 
} 
} 
! 
class AnyAOP { 
<T> T envolve(Supplier<T> block) { 
… 
} 
} 
Conclusions
@ignasi35
@ignasi35
@ignasi35 
Moar resources 
https://github.com/rocketscience-projects/javaslang 
by https://twitter.com/danieldietrich 
thanks @thomasdarimont for the tip 
! 
https://github.com/functionaljava/functionaljava 
by http://www.functionaljava.org/ (runs in Java7)
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
Namaste
@ignasi35 
Questions
@ignasi35 
End of presentation

More Related Content

What's hot

The Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERRThe Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERRLou Bajuk
 
Beginning Scala Svcc 2009
Beginning Scala Svcc 2009Beginning Scala Svcc 2009
Beginning Scala Svcc 2009David Pollak
 
뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피겨울 정
 
String matching with finite state automata
String matching with finite state automataString matching with finite state automata
String matching with finite state automataAnmol Hamid
 
Correctness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQLCorrectness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQLNicolas Poggi
 
Writing Perl 6 Rx
Writing Perl 6 RxWriting Perl 6 Rx
Writing Perl 6 Rxlichtkind
 
Stack and its applications
Stack and its applicationsStack and its applications
Stack and its applicationsAhsan Mansiv
 
Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)Gesh Markov
 
Jug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands onJug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands onOnofrio Panzarino
 
Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014alex_perry
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINE Corporation
 
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...t.eazzy
 
Lec21-CS110 Computational Engineering
Lec21-CS110 Computational EngineeringLec21-CS110 Computational Engineering
Lec21-CS110 Computational EngineeringSri Harsha Pamu
 

What's hot (19)

The Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERRThe Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERR
 
Beginning Scala Svcc 2009
Beginning Scala Svcc 2009Beginning Scala Svcc 2009
Beginning Scala Svcc 2009
 
뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피
 
String matching with finite state automata
String matching with finite state automataString matching with finite state automata
String matching with finite state automata
 
Quick sort algorithm using slide presentation , Learn selection sort example ...
Quick sort algorithm using slide presentation , Learn selection sort example ...Quick sort algorithm using slide presentation , Learn selection sort example ...
Quick sort algorithm using slide presentation , Learn selection sort example ...
 
Java ME API Next
 Java ME API Next Java ME API Next
Java ME API Next
 
Correctness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQLCorrectness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQL
 
Writing Perl 6 Rx
Writing Perl 6 RxWriting Perl 6 Rx
Writing Perl 6 Rx
 
Stack and its applications
Stack and its applicationsStack and its applications
Stack and its applications
 
Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)
 
Ds stack 03
Ds stack 03Ds stack 03
Ds stack 03
 
Jug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands onJug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands on
 
Python to scala
Python to scalaPython to scala
Python to scala
 
Heap Sort
Heap SortHeap Sort
Heap Sort
 
Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014
 
Lab07 (1)
Lab07 (1)Lab07 (1)
Lab07 (1)
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話
 
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
 
Lec21-CS110 Computational Engineering
Lec21-CS110 Computational EngineeringLec21-CS110 Computational Engineering
Lec21-CS110 Computational Engineering
 

Viewers also liked

Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des AlgorithmesCh4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmeslotfibenromdhane
 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsJava 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsNewCircle Training
 
Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete  Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete Adnan abid
 
Java 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava ComparisonJava 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava ComparisonJosé Paumard
 
Ch2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - RécursivitéCh2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - Récursivitélotfibenromdhane
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8Talha Ocakçı
 
Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de TriCh5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Trilotfibenromdhane
 
Ch7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-CopmlétudeCh7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-Copmlétudelotfibenromdhane
 
Ch3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes RécursivesCh3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes Récursiveslotfibenromdhane
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJosé Paumard
 
Ch1 Algorthmique Avancée - Rappel & Notions de Base
Ch1 Algorthmique Avancée - Rappel & Notions de BaseCh1 Algorthmique Avancée - Rappel & Notions de Base
Ch1 Algorthmique Avancée - Rappel & Notions de Baselotfibenromdhane
 
JDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJosé Paumard
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJava 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJosé Paumard
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8LivePerson
 
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautésAlphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautésAlphorm
 
Alphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server FacesAlphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server FacesAlphorm
 

Viewers also liked (20)

Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des AlgorithmesCh4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsJava 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & Streams
 
Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete  Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete
 
Java 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava ComparisonJava 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava Comparison
 
Ch2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - RécursivitéCh2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - Récursivité
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
 
Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de TriCh5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Tri
 
Functional Programming in Java
Functional Programming in JavaFunctional Programming in Java
Functional Programming in Java
 
Notifications
NotificationsNotifications
Notifications
 
Ch7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-CopmlétudeCh7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-Copmlétude
 
Ch3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes RécursivesCh3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes Récursives
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
 
Functional programming in java
Functional programming in javaFunctional programming in java
Functional programming in java
 
Ch1 Algorthmique Avancée - Rappel & Notions de Base
Ch1 Algorthmique Avancée - Rappel & Notions de BaseCh1 Algorthmique Avancée - Rappel & Notions de Base
Ch1 Algorthmique Avancée - Rappel & Notions de Base
 
Cats
CatsCats
Cats
 
JDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne Tour
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJava 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelization
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
 
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautésAlphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
 
Alphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server FacesAlphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server Faces
 

Similar to Functional Programming in JAVA 8

Tuga IT 2018 Summer Edition - The Future of C#
Tuga IT 2018 Summer Edition - The Future of C#Tuga IT 2018 Summer Edition - The Future of C#
Tuga IT 2018 Summer Edition - The Future of C#Paulo Morgado
 
Fun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming languageFun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming languagePawel Szulc
 
NetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf EditionNetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf EditionPaulo Morgado
 
.NET 2015: Будущее рядом
.NET 2015: Будущее рядом.NET 2015: Будущее рядом
.NET 2015: Будущее рядомAndrey Akinshin
 
Tuga IT 2017 - What's new in C# 7
Tuga IT 2017 - What's new in C# 7Tuga IT 2017 - What's new in C# 7
Tuga IT 2017 - What's new in C# 7Paulo Morgado
 
Functional Programming In Java
Functional Programming In JavaFunctional Programming In Java
Functional Programming In JavaAndrei Solntsev
 
Functor, Apply, Applicative And Monad
Functor, Apply, Applicative And MonadFunctor, Apply, Applicative And Monad
Functor, Apply, Applicative And MonadOliver Daff
 
Refactoring to Java 8 (Devoxx BE)
Refactoring to Java 8 (Devoxx BE)Refactoring to Java 8 (Devoxx BE)
Refactoring to Java 8 (Devoxx BE)Trisha Gee
 
K is for Kotlin
K is for KotlinK is for Kotlin
K is for KotlinTechMagic
 
Scala is java8.next()
Scala is java8.next()Scala is java8.next()
Scala is java8.next()daewon jeong
 
AST Transformations at JFokus
AST Transformations at JFokusAST Transformations at JFokus
AST Transformations at JFokusHamletDRC
 
Hello Swift 3/5 - Function
Hello Swift 3/5 - FunctionHello Swift 3/5 - Function
Hello Swift 3/5 - FunctionCody Yun
 
Functional Pearls 4 (YAPC::EU::2009 remix)
Functional Pearls 4 (YAPC::EU::2009 remix)Functional Pearls 4 (YAPC::EU::2009 remix)
Functional Pearls 4 (YAPC::EU::2009 remix)osfameron
 
TypeScript Presentation - Jason Haffey
TypeScript Presentation - Jason HaffeyTypeScript Presentation - Jason Haffey
TypeScript Presentation - Jason HaffeyRalph Johnson
 
Lisp and prolog in artificial intelligence
Lisp and prolog in artificial intelligenceLisp and prolog in artificial intelligence
Lisp and prolog in artificial intelligenceArtiSolanki5
 
Java Boilerplate Busters
Java Boilerplate BustersJava Boilerplate Busters
Java Boilerplate BustersHamletDRC
 

Similar to Functional Programming in JAVA 8 (20)

Tuga IT 2018 Summer Edition - The Future of C#
Tuga IT 2018 Summer Edition - The Future of C#Tuga IT 2018 Summer Edition - The Future of C#
Tuga IT 2018 Summer Edition - The Future of C#
 
Scala 2 + 2 > 4
Scala 2 + 2 > 4Scala 2 + 2 > 4
Scala 2 + 2 > 4
 
Fun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming languageFun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming language
 
NetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf EditionNetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf Edition
 
Java 8
Java 8Java 8
Java 8
 
Java 8
Java 8Java 8
Java 8
 
.NET 2015: Будущее рядом
.NET 2015: Будущее рядом.NET 2015: Будущее рядом
.NET 2015: Будущее рядом
 
Tuga IT 2017 - What's new in C# 7
Tuga IT 2017 - What's new in C# 7Tuga IT 2017 - What's new in C# 7
Tuga IT 2017 - What's new in C# 7
 
Functional Programming In Java
Functional Programming In JavaFunctional Programming In Java
Functional Programming In Java
 
Functor, Apply, Applicative And Monad
Functor, Apply, Applicative And MonadFunctor, Apply, Applicative And Monad
Functor, Apply, Applicative And Monad
 
Refactoring to Java 8 (Devoxx BE)
Refactoring to Java 8 (Devoxx BE)Refactoring to Java 8 (Devoxx BE)
Refactoring to Java 8 (Devoxx BE)
 
K is for Kotlin
K is for KotlinK is for Kotlin
K is for Kotlin
 
Scala is java8.next()
Scala is java8.next()Scala is java8.next()
Scala is java8.next()
 
AST Transformations at JFokus
AST Transformations at JFokusAST Transformations at JFokus
AST Transformations at JFokus
 
Hello Swift 3/5 - Function
Hello Swift 3/5 - FunctionHello Swift 3/5 - Function
Hello Swift 3/5 - Function
 
Functional Pearls 4 (YAPC::EU::2009 remix)
Functional Pearls 4 (YAPC::EU::2009 remix)Functional Pearls 4 (YAPC::EU::2009 remix)
Functional Pearls 4 (YAPC::EU::2009 remix)
 
TypeScript Presentation - Jason Haffey
TypeScript Presentation - Jason HaffeyTypeScript Presentation - Jason Haffey
TypeScript Presentation - Jason Haffey
 
Lisp and prolog in artificial intelligence
Lisp and prolog in artificial intelligenceLisp and prolog in artificial intelligence
Lisp and prolog in artificial intelligence
 
Scala @ TomTom
Scala @ TomTomScala @ TomTom
Scala @ TomTom
 
Java Boilerplate Busters
Java Boilerplate BustersJava Boilerplate Busters
Java Boilerplate Busters
 

More from Ignasi Marimon-Clos i Sunyol (10)

The Emperor Has No Docs (Geecon Oct'23)
The Emperor Has No Docs (Geecon Oct'23)The Emperor Has No Docs (Geecon Oct'23)
The Emperor Has No Docs (Geecon Oct'23)
 
Jeroglificos, Minotauros y la factura de la luz
Jeroglificos, Minotauros y la factura de la luzJeroglificos, Minotauros y la factura de la luz
Jeroglificos, Minotauros y la factura de la luz
 
Contributing to Akka (Hacktoberfest 2020)
Contributing to Akka (Hacktoberfest 2020)Contributing to Akka (Hacktoberfest 2020)
Contributing to Akka (Hacktoberfest 2020)
 
Contributing to OSS (Scalator 2020-01-22)
Contributing to OSS (Scalator 2020-01-22)Contributing to OSS (Scalator 2020-01-22)
Contributing to OSS (Scalator 2020-01-22)
 
Reactive Microsystems (Sw Crafters Barcelona 2018)
Reactive Microsystems (Sw Crafters Barcelona 2018)Reactive Microsystems (Sw Crafters Barcelona 2018)
Reactive Microsystems (Sw Crafters Barcelona 2018)
 
Lagom Workshop BarcelonaJUG 2017-06-08
Lagom Workshop  BarcelonaJUG 2017-06-08Lagom Workshop  BarcelonaJUG 2017-06-08
Lagom Workshop BarcelonaJUG 2017-06-08
 
Intro scala for rubyists (ironhack)
Intro scala for rubyists (ironhack)Intro scala for rubyists (ironhack)
Intro scala for rubyists (ironhack)
 
Scala 101-bcndevcon
Scala 101-bcndevconScala 101-bcndevcon
Scala 101-bcndevcon
 
Scala 101
Scala 101Scala 101
Scala 101
 
Spray & Maven Intro for Scala Barcelona Developers Meetup
Spray & Maven Intro for Scala Barcelona Developers MeetupSpray & Maven Intro for Scala Barcelona Developers Meetup
Spray & Maven Intro for Scala Barcelona Developers Meetup
 

Recently uploaded

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Recently uploaded (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Functional Programming in JAVA 8