Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
elm introduction at OK Lab Niederrhein
Search
Elmar Burke
July 13, 2016
Technology
160
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
63
Europe - What are you?
elmarburke
0
78
Hoodie & offlineFirst @ NijmegenJS
elmarburke
0
480
Sketchnotes belongs to Talk https://speakerdeck.com/elmarburke/hoodie-and-offlinefirst-at-nijmegenjs
elmarburke
0
83
Other Decks in Technology
See All in Technology
beyond jj: config & tools ecosystem
indirect
0
480
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
620
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
2
530
20260912_スクフェス三河
kgnkhkr
0
380
Azure Serverless 2026:Production-ready な AI エージェント基盤 / Azure Serverless 2026: Production-Ready AI Agent Platform
miyake
1
110
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
730
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
180
おい、エージェントを使って終わらせろ
nwiizo
0
450
GoにおけるFFIのこれまでとこれから
goccy
5
3.6k
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.6k
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
200
生成AIエージェントを用いた、 手動テスト手順書から自動テストへの 変換手法の検討
magicpod
0
160
Featured
See All Featured
Writing Fast Ruby
sferik
630
63k
How STYLIGHT went responsive
nonsquared
100
6.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
850
4 Signs Your Business is Dying
shpigford
187
23k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
The Cost Of JavaScript in 2023
addyosmani
55
10k
Statistics for Hackers
jakevdp
799
230k
Done Done
chrislema
186
16k
GitHub's CSS Performance
jonrohan
1033
470k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
Documentation Writing (for coders)
carmenintech
77
5.5k
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.