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
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
68
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
370
Select Ways to Harness the Power of JavaScript
michaelficarra
4
200
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
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1.1k
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
850
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
5.4k
Patterns of Patterns
denyspoltorak
0
490
Grafana:建立系統全知視角的捷徑
blueswen
0
290
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.6k
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.5k
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
570
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
170
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.5k
gunshi
kazupon
1
140
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
81
Raft: Consensus for Rubyists
vanstee
141
7.3k
Bash Introduction
62gerente
615
210k
We Are The Robots
honzajavorek
0
130
Six Lessons from altMBA
skipperchong
29
4.1k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
550
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.9k
ラッコキーワード サービス紹介資料
rakko
0
2M
Chasing Engaging Ingredients in Design
codingconduct
0
97
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
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