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
Data + AI Summit 2026 イベントレポート: 「AIがビジネスで意思決定するデータ基盤」へ
nek0128
0
260
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
230
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
360
あなたの『Site』はどこですか? — xREという考え方
miyamu
0
1.2k
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
3
4.1k
CIで使うClaude
iwatatomoya
0
290
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
210
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
720
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
420
穢れた技術選定について
watany
17
5.4k
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
830
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
220
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
330
A designer walks into a library…
pauljervisheath
211
24k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Test your architecture with Archunit
thirion
1
2.3k
Writing Fast Ruby
sferik
630
63k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Speed Design
sergeychernyshev
33
1.9k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
800
Side Projects
sachag
455
43k
Typedesign – Prime Four
hannesfritz
42
3.1k
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.