Highway

to
Elm

Highway
to
Elm
Front-end is dominated by
JavaScript is backward compatible
Biggest advantage
Biggest disadvantage
You can't deprecate things !!! 😱
null > 0  // false
null == 0 // false
null >= 0 // ... trueJS syntax size
Time
ES6
A LOT to learn!
- The language is complex
 - Many ways to do the same thing
 - Framework choice / learning
 - Tooling
 
Hard to optimize
- Dead code elimination / Tree shaking
 - Assets size
 - Complex build
 
Low confidence level
- Minor IDE assistance
 - Refactoring is painful
 - Slow feedback cycle: runtime
 - Dependencies are risky
 
By Chris Williams
Elm is a typed functional language to create fast and reliable web applications
Websites and webapps
Domain specific
Statically typed
- Many bugs don't compile
 - IDE can help you
 - Refactoring is compiler-driven
 - Feedback cycle is really fast
 
No Runtime Exceptions

17K+ LoC
200K+ LoC
Declarative, not imperative
const myNumbers = [1, 2, 3, 4, 5];
let squaredNumbers = [];
for(number of myNumbers) {
    squaredNumbers.push(number * number);
}const myNumbers = [1, 2, 3, 4, 5];
const squaredNumbers = myNumbers
    .map(number => number * number);
Honesty
function sendEmail(user) {
    
}No unwanted side-effect
function sendEmail(user) {
    if (user.email === null) {
        throw new Error('No email provided for the user');
    }    
}function sendEmail(user) {
    if (user.email === null) {
        throw new Error('No email provided for the user');
    }    
    launchNuclearMissile();
}Side-effect = command, explicitely declared

Fast
- Everything is pure => optimizations
 - Small assets
 

"Elm has a very strong emphasis on simplicity, ease-of-use, and quality tooling."
Simplicity, ease of use
- Focused on one purpose
 - Syntax removal
 - Well-thought API
 - Compiler helps you
 - Explicitness
 
Quality tooling
- Compiler
 - Project starter
 - Package manager
 - Dev environment
 - REPL
 - Tests runner
 - Doc tool
 
Enforced documentation


Enforced versioning
1.2.3
Nothing changed for the outside
Something was added
Something has changed
Great community
See also Building Trust: What Has Worked by Richard Feldman
and What is success? by Evan Czaplicki
Syntax
-- a single line comment
{- a 
   multiline 
   comment
-}
    Comments
Advantages
- Great developer experience
 - No runtime exceptions
 - Great debugger
 - Powerful type system
 - Great performances
 - Great community
 
Drawbacks
- Opinionated governance model
 - Boilerplate vs Explicitness
 - Not for every use case
 
Why use Elm?
- Complex UI / Model
 - Frequent refactoring
 - You care for bugs
 - Easy introduction to FP
 - Write better code
 
Introduction Hackathon Elm
By ereold
Introduction Hackathon Elm
- 1,290
 
