2. Functional Programming
on the JVM with
Scala and Clojure
What they are and why you should care
Cristiano Breuel Thadeu Russo
Advisory Software Engineer Advisory Software Engineer
(cbreuel@br.ibm.com) (thadeurc@br.ibm.com)
8. Referential Integrity
Avoids state and mutable data
Higher-Order functions:
Functions can receive and return other
functions
Lazy Evaluation:
Evaluate an expression only when
necessary
9.
10.
11.
12.
13.
14.
15.
16. FP has been around since the 1950’s
Why it is becoming more important now?
17. FP has been around since the 1950’s
Why it is becoming more important now?
18. FP has been around since the 1950’s
Why it is becoming more important now?
Why should I care?
51. every value is an object
vals / vars
traits
companion objects
currying
closures / high order functions
pattern matching / case classes
XML literals
Lazy evaluation, and much more...
Thadeu e Cristiano: Apresentação dos palestrantes\n
Thadeu: Apenas assustar o pessoal - dizer que precisamos antes entender o combinador Y\n
Thadeu: slide apenas de passagem, sem muitos comentarios.\n
Thadeu: basicamente ler o slide.\n
Thadeu: da wikipedia: is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data.\nenfatiza a aplicacao de funcoes ao contrario da mudanca de estado, como eh feito em linguagens interativas\n
Thadeu: Parar em visual F# - lembrar de chamar atenção para sql e spredsheets\n
Thadeu: Parar em visual F# - lembrar de chamar atenção para sql e spredsheets\n
Thadeu: Parar em visual F# - lembrar de chamar atenção para sql e spredsheets\n
Thadeu: Parar em visual F# - lembrar de chamar atenção para sql e spredsheets\n
Thadeu: Parar em visual F# - lembrar de chamar atenção para sql e spredsheets\n
Thadeu: Parar em visual F# - lembrar de chamar atenção para sql e spredsheets\n
Thadeu: intrigar a plateia - perguntar se alguem sabe e nao deixar responder - comentar que as linguagens sempre foram vistar como muito teoricas para o mundo não academico\n
Thadeu: intrigar a plateia - perguntar se alguem sabe e nao deixar responder - comentar que as linguagens sempre foram vistar como muito teoricas para o mundo não academico\n
Thadeu: discutir um pouco os detalhes tecnicos do impacto\n
Thadeu: discutir um pouco os detalhes tecnicos do impacto\n
Thadeu passa para Cristiano.\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
Cristiano:\n
\n
\n
\n
\n
\n
Thadeu: Comentar cada um dos itens acima (dizer tbm q eh menos verborragica que java) - veremos exemplo\n
Thadeu: ir para o repl e fazer alguns exemplos destes caras\nval\nfunction as objects\nreduceLeft - usar as chaves e fazer o currying\n\n\nsobre a parte de lazy - comentar que nao existem lazy collections assim como em haskell ou closure, porem\nda para criar metodos que fazer conversoes de modo lazy (usando iteradores)\n