Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
elm introduction at OK Lab Niederrhein
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Elmar Burke
July 13, 2016
Technology
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
elm introduction at OK Lab Niederrhein
Elmar Burke
July 13, 2016
More Decks by Elmar Burke
See All by Elmar Burke
Offene Daten Nutzen - OpenData-Talk beim OTS Learners Meetup Mai 2016
elmarburke
0
61
Europe - What are you?
elmarburke
0
76
Hoodie & offlineFirst @ NijmegenJS
elmarburke
0
480
Sketchnotes belongs to Talk https://speakerdeck.com/elmarburke/hoodie-and-offlinefirst-at-nijmegenjs
elmarburke
0
80
Other Decks in Technology
See All in Technology
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
550
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
450
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
170
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
400
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
450
AIチャット検索改善の3週間
kworkdev
PRO
2
160
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
250
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
200
【2026年版】 ベクトル検索とEmbedding最前線
mocobeta
23
7k
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
160
自宅LLMの話
jacopen
1
700
AIのReact習熟度を測る
uhyo
2
670
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
320
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
The Pragmatic Product Professional
lauravandoore
37
7.3k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Thoughts on Productivity
jonyablonski
76
5.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Invisible Side of Design
smashingmag
301
52k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
Designing for humans not robots
tammielis
254
26k
Transcript
ELM FUNCTIONAL PROGRAMMING IN YOUR BROWSER INTRODUCTION BY ELMAR BURKE
WHO AM I? Elmar Burke @elmarburke on mostly every network
[email protected]
I'M ONE OF THE PEOPLE AT ANGULARJS.DE We have articles
about AngularJS and Angular 2, a developer register and we give workshops!
EVERYTHING STARTS WITH A Hello World main = span [class
"welcome-message"] [text "Hello, World!"]
"THE HISTORY OF PROGRAMMING" AS SEEN FROM JAVASCRIPT 1. Assembly
2. C 3. Java 4. JavaScript
"THE HISTORY OF PROGRAMMING" AS SEEN FROM JAVASCRIPT 1. Assembly
- maintainability 2. C - memory management 3. Java - all those freakin' types 4. JavaScript - maintainability
WHAT'S THE NEXT LANGUAGE? > Types? > Functional? > Gradual
Types? > Prolog? > Stack-based?
None
WHAT MAKES ELM SO GREATE > No runtime exceptions >
Friendly Error Messages > Blazing fast rendering1 > Libraries with guarantees > Clean syntax > Smooth JavaScript interop 1 With the package elm-html
LETS BUILD SOMETHING WE'LL BUILD A SIMPLE COUNTER IN ELM
Go to elm-lang.org and grab the installer or head over to elm-lang.org/try
THE ELM ARCHITECTURE > Model — the state of your
application > Update — a way to update your state > View — a way to view your state as HTML
import Html exposing (..) -- MODEL type alias Model =
{ ... } -- UPDATE type Msg = Reset | ... update : Msg -> Model -> Model update msg model = case msg of Reset -> ... ... -- VIEW view : Model -> Html Msg view model = ...
import Html exposing (Html, button, div, text) import Html.App as
Html import Html.Events exposing (onClick) main = Html.beginnerProgram { model = 0, view = view, update = update } type Msg = Increment | Decrement update msg model = case msg of Increment -> model + 1 Decrement -> model - 1 view model = div [] [ button [ onClick Decrement ] [ text "-" ] , div [] [ text (toString model) ] , button [ onClick Increment ] [ text "+" ] ]
ADD A RESET BUTTON You'll need > A message >
An update > A button
ADD TYPES Types are optional. You can just add them.