Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
LES CONCEPTS DE LA PROGRAMMATION
FONCTIONNELLE ILLUSTRÉS AVEC JAVA 8
Yannick Chartois / @ychartois
BODIL STOKKE
What Every Hipster Should Know About Functional
Programming
Vimeo / Parleys
QUESTION
Maintenant que nous allons avoir les lambdas, peut-on faire la
même chose en Java 8?
1. FIRST CLASS FUNCTION
Définition
“Les fonctions sont traitées par le langage
comme des valeurs de première classe.”
1. FIRST CLASS FUNCTION
Code:
Fnto<Srn,Srn >hlo=(tigs - "el "+s
ucin tig tig
el
Srn ) > hlo
;

Resultat:
hlo;
el
/ BsCnet$...
2. HIGH ORDER FUNCTION
Définition
“C'est une fonction qui prend une ou plusieurs
fonctions comme entrée et/ou qui renvoie ...
2. HIGH ORDER FUNCTION
Code:
Fnto<Srn,Srn >tie Fnto<Srn,Srn >f){
ucin tig tig
wc( ucin tig tig
rtr (tigs - fapy fapys )
eu...
3. FUNCTOR
Définition
“C'est une collection d'éléments X qui peut
s'appliquer une fonction f: X -> Y pour créer une
collec...
3. FUNCTOR - MAP
Code:
Ls<Srn >mp Fnto<Srn,Srn >f
it tig
a( ucin tig tig
,Ls<Srn >vle ){
it tig
aus
Ls<Srn >tRtr =nwAryit ...
3. FUNCTOR - FILTER
Code:
Ls<Srn >fle(Fnto<Srn,Boen>f
it tig
itr ucin tig ola
,
Ls<Srn >vle ){
it tig
aus
Ls<Srn >tRtr =nw...
4. COMBINATOR
Définition
“C'est une function qui définie une nouvelle
fonction à partir de ses arguments ou d'autre
combin...
4. COMBINATOR - NULL COMBINATOR
Constat:
Ls<Srn >cns =Ary.sit nwSrn[
it tig
of2
rasaLs( e tig]
{jg,"eox,"aan" nl})
"u" dvx...
5. COMPOSITION
Définition
“Combine plusieurs fonctions pour créer une
nouvelle fonction”
5. COMPOSITION
Code:
Fnto<Srn,Srn >cmoe(Fnto<Srn,Srn >f,
ucin tig tig
ops
ucin tig tig
1
Fnto<Srn,Srn >f ){
ucin tig tig
2...
END !

LES SOURCES: PROGFONCJAVA8
TWITTER: @YCHARTOIS
Upcoming SlideShare
Loading in …5
×

Les concepts de la programmation fonctionnelle illustrés avec Java 8

424 views

Published on

Support du lighting talk donné au JUG Bordeaux qui est basé sur le talk de Bodil Stokke: What Every Hipster Should Know About Functional Programming. C'est un petit exercice basé sur la question suivante: peut-on transposer tous les exemples JS de son talk en Java 8 avec des lambdas?

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Les concepts de la programmation fonctionnelle illustrés avec Java 8

  1. 1. LES CONCEPTS DE LA PROGRAMMATION FONCTIONNELLE ILLUSTRÉS AVEC JAVA 8 Yannick Chartois / @ychartois
  2. 2. BODIL STOKKE What Every Hipster Should Know About Functional Programming Vimeo / Parleys
  3. 3. QUESTION Maintenant que nous allons avoir les lambdas, peut-on faire la même chose en Java 8?
  4. 4. 1. FIRST CLASS FUNCTION Définition “Les fonctions sont traitées par le langage comme des valeurs de première classe.”
  5. 5. 1. FIRST CLASS FUNCTION Code: Fnto<Srn,Srn >hlo=(tigs - "el "+s ucin tig tig el Srn ) > hlo ; Resultat: hlo; el / BsCnet$Lmd$@0e9 / aeocps$aba1a9e2 / ! BsCnet@0391 / = aeocps3f99 hloapy"run); el.pl(Eoa" / hloEoa / el run
  6. 6. 2. HIGH ORDER FUNCTION Définition “C'est une fonction qui prend une ou plusieurs fonctions comme entrée et/ou qui renvoie une fonction”
  7. 7. 2. HIGH ORDER FUNCTION Code: Fnto<Srn,Srn >tie Fnto<Srn,Srn >f){ ucin tig tig wc( ucin tig tig rtr (tigs - fapy fapys ) eun Srn ) > .pl( .pl() ; } Resultat: tiehlo.pl(Eoa"; wc(el)apy"run) / hlohloEoa / el el run
  8. 8. 3. FUNCTOR Définition “C'est une collection d'éléments X qui peut s'appliquer une fonction f: X -> Y pour créer une collection Y”
  9. 9. 3. FUNCTOR - MAP Code: Ls<Srn >mp Fnto<Srn,Srn >f it tig a( ucin tig tig ,Ls<Srn >vle ){ it tig aus Ls<Srn >tRtr =nwAryit >) it tig oeun e raLs< (; fr Srn cret:vle ){ o( tig urn aus tRtr.d(fapycret ) oeunad .pl(urn) ; } rtr tRtr; eun oeun } Resultat: Ls<Srn >cns= it tig of Ary.sit nwSrn[{jg,"eox,"aan" ) rasaLs( e tig]"u" dvx" jvoe} ; mp s- stUprae) cns) a( > .opeCs(, of ; / [U,DVX,JVOE / JG EOX AAN] Avec les Streams Java 8: cnssra(.a(s- stUprae))clet Cletr.oit)) of.tem)mp > .opeCs( .olc( olcostLs(
  10. 10. 3. FUNCTOR - FILTER Code: Ls<Srn >fle(Fnto<Srn,Boen>f it tig itr ucin tig ola , Ls<Srn >vle ){ it tig aus Ls<Srn >tRtr =nwAryit >) it tig oeun e raLs< (; fr Srn cret:vle ){ o( tig urn aus i (fapycret ) f .pl(urn) tRtr.d(cret) oeunad urn ; } rtr tRtr; eun oeun } Resultat: Ls<Srn >cns= it tig of Ary.sit nwSrn[{jg,"eox,"aan" ) rasaLs( e tig]"u" dvx" jvoe} ; fle( - scnan(j) cns ; itrs > .otis"", of) / [u,jvoe / jg aan] Avec les Streams Java 8: cnssra(.itr s- scnan(j))cletCletr.oit) of.tem)fle( > .otis"" .olc(olcostLs()
  11. 11. 4. COMBINATOR Définition “C'est une function qui définie une nouvelle fonction à partir de ses arguments ou d'autre combinators”
  12. 12. 4. COMBINATOR - NULL COMBINATOR Constat: Ls<Srn >cns =Ary.sit nwSrn[ it tig of2 rasaLs( e tig] {jg,"eox,"aan" nl}) "u" dvx" jvoe, ul ; mp s- stUprae) cns) a( > .opeCs(, of2; / Ecpini tra "an jv.agNlPitrxeto / xeto n hed mi" aaln.uloneEcpin Code: Fnto<Srn,Srn >nlCek Fnto<Srn,Srn >f){ ucin tig tig ulhc( ucin tig tig rtr (tigs - s= nl ?"ul :fapys; eun Srn ) > = ul nl" .pl() } Resultat: mp nlCeks- stUprae),cns) a( ulhc( > .opeCs() of2 / [U,DVX,JVOE nl] / JG EOX AAN, ul
  13. 13. 5. COMPOSITION Définition “Combine plusieurs fonctions pour créer une nouvelle fonction”
  14. 14. 5. COMPOSITION Code: Fnto<Srn,Srn >cmoe(Fnto<Srn,Srn >f, ucin tig tig ops ucin tig tig 1 Fnto<Srn,Srn >f ){ ucin tig tig 2 rtr (tigs - f.pl(f.pl()) eun Srn ) > 1apy 2apys ; } Resultat: Fnto<Srn,Srn >u =(tigs - stUprae) ucin tig tig p Srn ) > .opeCs(; Fnto<Srn,Srn >hlo=(tigs - "el "+s ucin tig tig el Srn ) > hlo ; u.pl(hloapy"run)) papy el.pl(Eoa" ; cmoe u,hlo.pl(Eoa" ; ops( p el)apy"run) / HLOEOA / EL RUN Avec Java 8: hloadhnu)apy"run) el.nTe(p.pl(Eoa" u.ops(el)apy"run) pcmoehlo.pl(Eoa"
  15. 15. END ! LES SOURCES: PROGFONCJAVA8 TWITTER: @YCHARTOIS

×