Slide 1

Slide 1 text

ELM LANGUAGE SHORT INTRODUCTION BY KRZYSZTOF KUCHARSKI

Slide 2

Slide 2 text

COMPILES TO JAVASCRIPT STATICALLY TYPED PURELY FUNCTIONAL

Slide 3

Slide 3 text

MORE COMPLICATED THAN JS ?

Slide 4

Slide 4 text

ELM IS SIMPLE

Slide 5

Slide 5 text

LET'S DIVE IN

Slide 6

Slide 6 text

ARCHITECTURE

Slide 7

Slide 7 text

REACT + REDUX 1 1 https://www.theodo.fr/blog/2016/03/getting-started-with-react-redux-and-immutable-a-test-driven-tutorial-part-2/

Slide 8

Slide 8 text

SIMILAR TO ELM

Slide 9

Slide 9 text

OUR "APPLICATION"

Slide 10

Slide 10 text

import Html exposing (Html, button, div, text) import Html.Events exposing (onClick) main = Html.beginnerProgram { model = model, view = view, update = update } -- MODEL type alias Model = Int model : Model model = 0

Slide 11

Slide 11 text

-- UPDATE type Msg = Increment | Decrement update : Msg -> Model -> Model update msg model = case msg of Increment -> model + 1 Decrement -> model - 1 -- VIEW view : Model -> Html Msg view model = div [] [ button [ onClick Decrement ] [ text "-" ] , div [] [ text (toString model) ] , button [ onClick Increment ] [ text "+" ] ]

Slide 12

Slide 12 text

WHY IS IT BETTER ? (IN MY OPINION)

Slide 13

Slide 13 text

FRIENDLY COMPILER

Slide 14

Slide 14 text

FASTER THAN ANGULAR / REACT / THIS WEEK'S FRAMEWORK

Slide 15

Slide 15 text

JAVASCRIPT INTEROP you can start writing elm next to your React components import Elm from 'react-elm-components'; import { Counter } from '../elm/Cou.elm'; ...

Slide 16

Slide 16 text

PIPE OPERATOR sum (filter (isOver 100) (map getCost records)) vs records |> map getCost |> filter (isOver 100) |> sum

Slide 17

Slide 17 text

NO RUNTIME EXCEPTIONS

Slide 18

Slide 18 text

WEBPACK PLUGIN up to speed in 2 min

Slide 19

Slide 19 text

PRODUCTION READY noredink with 80k+ lines in elm

Slide 20

Slide 20 text

CAN I USE IT ON PRODUCTION ?

Slide 21

Slide 21 text

"IT DEPENDS"

Slide 22

Slide 22 text

No content