$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Schmonference 2012: Introducing "CoffeeScript I...
Search
Michael Ficarra
June 29, 2012
Programming
3
1k
Schmonference 2012: Introducing "CoffeeScript II: The Wrath of Khan"
Michael Ficarra
June 29, 2012
Tweet
Share
More Decks by Michael Ficarra
See All by Michael Ficarra
Data Encodings and Representations
michaelficarra
1
64
Introduction to Property Testing in JavaScript
michaelficarra
3
1k
Getting Started with PureScript
michaelficarra
16
4.4k
SpiderMonkey Parser API: A Standard For Structured JS Representations
michaelficarra
14
5.9k
[WIP] Foundations of Functional Design, Abstract Algebra, and Category Theory
michaelficarra
5
360
Select Ways to Harness the Power of JavaScript
michaelficarra
4
190
An Analysis of the Redesign of the CoffeeScript Compiler
michaelficarra
7
1.7k
Redesigning the CoffeeScript Compiler
michaelficarra
11
1.9k
MINIX
michaelficarra
0
360
Other Decks in Programming
See All in Programming
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
440
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.9k
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
730
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
150
ハイパーメディア駆動アプリケーションとIslandアーキテクチャ: htmxによるWebアプリケーション開発と動的UIの局所的適用
nowaki28
0
430
Microservices rules: What good looks like
cer
PRO
0
1.5k
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
150
Graviton と Nitro と私
maroon1st
0
110
エディターってAIで操作できるんだぜ
kis9a
0
730
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
140
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
130
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.7k
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Optimizing for Happiness
mojombo
379
70k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
Scaling GitHub
holman
464
140k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Building an army of robots
kneath
306
46k
The Cult of Friendly URLs
andyhume
79
6.7k
Documentation Writing (for coders)
carmenintech
77
5.2k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Practical Orchestrator
shlominoach
190
11k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Transcript
Michael Ficarra Schmonference 2012 CoffeeScript II: The Wrath of Khan
None
None
THIS GUY
http://kck.st/HDNjnC
http://arborjs.org/halfviz/#/MjU3Mw
None
advantages • standardised intermediate representations • more powerful parser •
better error reports • forces consistent indentation ▪ and allows a consistent base indentation, useful for compiling copied sections of code • two-pass variable naming • specify output formatting • line mappings
None
advantages • standardised intermediate representations • more powerful parser •
better error reports • forces consistent indentation ▪ and allows a consistent base indentation, useful for compiling copied sections of code • two-pass variable naming • specify output formatting • line mappings
None
None
None
advantages • standardised intermediate representations • more powerful parser •
better error reports • forces consistent indentation ▪ and allows a consistent base indentation, useful for compiling copied sections of code • two-pass variable naming • specify output formatting • line mappings
None
advantages • standardised intermediate representations • more powerful parser •
better error reports • forces consistent indentation ▪ and allows a consistent base indentation, useful for compiling copied sections of code • two-pass variable naming • specify output formatting • line mappings
advantages: tooling • automatic code formatting in editor • syntax
highlighter • code coverage • static analysis tools ▪ dead code detection ▪ cyclomatic complexity ▪ reassignment warnings ▪ detecting non-idiomatic style (linting)
None
and now for something completely different
let-expressions do ($ = jQuery) -> ... (function($){ ... })(jQuery)
not in, not of, not instanceof a not in b
a not of b a not instanceof b [].indexOf.call(b, a) < 0 !(a in b) !(a instanceof b)
anonymous classes fn class then method: -> fn((function() { function
_Class() {} _Class.prototype.m = function() {}; return _Class; })());
switch on truthiness switch when a then b switch (false)
{ case !a: b; }
destructuring everywhere a for {prop: a} in b var a,
_i, _len; for (_i = 0; _i < b.length; _i++) { a = b[_i].prop; a; }
destructuring everywhere ({prop: a}) -> (function(_arg) { var a; a
= _arg.prop; });
semicolon is seq operator a = (fn(); b) var a;
a = (fn(), b);
binary number literals 0b1001100110111 0x1337
follow the project on twitter @CSatGRPN https://twitter.com/CSatGRPN
None