rodrigo nonose introduÇÃo a elm: programaÇÃo …rhnonose.github.io/elm_intr.pdf · introdução...

21
INTRODUÇÃO A ELM: PROGRAMAÇÃO FUNCIONAL NO FRONT-END RODRIGO NONOSE MARINGÁ, 11. MARÇO. 2017.

Upload: others

Post on 03-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

INTRODUÇÃO A ELM: PROGRAMAÇÃO FUNCIONAL NO FRONT-END

RODRIGO NONOSE

MARINGÁ, 11. MARÇO. 2017.

Page 2: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

● Introdução○ Contexto○ Problema○ Solução (?)

● Elm○ Programação Funcional○ Syntaxe Básica○ Arquitetura○ Tooling

Sumário

Page 3: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

IntroduçãoContexto

Page 4: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

IntroduçãoContexto

Page 5: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

● HTML, Javascript e CSS● Frameworks:

○ Gerenciar estado○ Promessas○ MVC, MVVM, MVP, MVVMCMPSCPMSC

● Arquitetura em camadas para arquitetura modular○ React, Redux

● Two-way binding● One-directional binding● Virtual DOM

IntroduçãoContexto

Page 6: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

IntroduçãoProblema

Page 7: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

IntroduçãoSolução(?)

Page 8: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript
Page 9: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

ElmProgramação funcional

● Linguagem funcional compilada para javascript○ Compilador escrito em Haskell

● Estaticamente e fortemente tipada○ Systema de tipo Hindley-Milner

● Expressividade, conciso e autodocumentado○ Corpo da função consiste em um único statement○ Uma falha de compilação sem uma mensagem clara

é considerado bug● Imutabilidade e Transparência Referencial

○ Funções não têm efeito colateral○ Tipos imutáveis

Page 10: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

ElmProgramação funcional

Page 11: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

Elm

Page 12: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

● Não existe null○ Sempre lidar com as duas possibilidades utilizando

um wrapper: Maybe● Não existe undefined function

○ Detectado em tempo de compilação

ElmProgramação funcional

Page 13: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

● Não existe null○ Sempre lidar com as duas possibilidades utilizando

um wrapper: Maybe● Não existe undefined function

○ Detectado em tempo de compilação

ElmProgramação funcional

Page 14: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

ElmSyntaxe Básica

Page 15: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

ElmArquitetura

Page 16: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

ElmArquitetura

Model Update

View

MsgRender

Cmd

MsgSub

Msg

HTML

Page 17: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

ElmArquitetura

MsgRender

Model

Model

Model

Model

View

View

View

View

Update

Page 18: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

ElmArquitetura

Page 19: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

● Compilador com mensagens de erro amigáveis● Elm Reactor: serve os arquivos e code-reload● Elm Formatter● Elm Package: previne quebra de versionamento

semântico● Debugger: Time Travel

ElmTooling

Page 20: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

● Compilador com mensagens de erro amigáveis● Elm Reactor: serve os arquivos e code-reload● Elm Formatter● Elm Package: previne quebra de versionamento

semântico● Debugger: Time Travel

ElmTooling

Page 21: RODRIGO NONOSE INTRODUÇÃO A ELM: PROGRAMAÇÃO …rhnonose.github.io/elm_intr.pdf · Introdução Solução(?) Elm Programação funcional Linguagem funcional compilada para javascript

FLW VLW