Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Compiling A Dependently Typed Language To Ruby Michael R. Bernstein RubyNation / 2015.6.12 / Silver Spring, Maryland
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
Why?
Slide 4
Slide 4 text
New ways of looking at how programs are designed, written, executed, optimized, refactored, etc.
Slide 5
Slide 5 text
A New Lens
Slide 6
Slide 6 text
Compilers Are Dope And Also A Little Bit About Fancy Types Michael R. Bernstein RubyNation / 2015.6.12 / Silver Spring, Maryland
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
Very Interesting
Slide 12
Slide 12 text
Why?
Slide 13
Slide 13 text
How?
Slide 14
Slide 14 text
Compilers
Slide 15
Slide 15 text
Compiler: - a computer program - that consumes computer programs - and produces computer programs
Slide 16
Slide 16 text
Compiler: - a computer program - that does whatever you want
Slide 17
Slide 17 text
[Animated image representing the sheer awesomeness of COMPILERS]
Slide 18
Slide 18 text
“Modern Compiler Implementation in ML” Appel
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
C ASM ????
Slide 21
Slide 21 text
X Y ????
Slide 22
Slide 22 text
Idris Ruby ????
Slide 23
Slide 23 text
Idris Ruby Rainbows, wizard dust, prayers, mystical insights, etc.
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
Intermediate Representations
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
Idris Ruby ????
Slide 29
Slide 29 text
LAMBDA CALCULUS
Slide 30
Slide 30 text
Everything that is computable can be expressed in terms of the lambda calculus.
Slide 31
Slide 31 text
Everything that is computable can be compiled to the lambda calculus.
Slide 32
Slide 32 text
Intermediate Representations Intermediate Representations Intermediate Representations Intermediate Representations Intermediate Representations Intermediate Representations
Slide 33
Slide 33 text
TT TT Case IR Case IR Lift IR Defunc IR ANF Idris ???
Slide 34
Slide 34 text
TT TT Case IR Case IR Lift IR Defunc IR ANF Idris PHP
Slide 35
Slide 35 text
Tour and Demo!
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
DEEP BREATH
Slide 38
Slide 38 text
Type Systems
Slide 39
Slide 39 text
[Animated image representing the sheer awesomeness of TYPE SYSTEMS]
Slide 40
Slide 40 text
Dependent Types
Slide 41
Slide 41 text
Fancy Types
Slide 42
Slide 42 text
Expressive Types
Slide 43
Slide 43 text
pythag : Int -> List (Int, Int, Int) counter_rpc : Int -> Maybe Int -> Process (Maybe Int) (Int,Int)
Slide 44
Slide 44 text
Program Phases
Slide 45
Slide 45 text
Syntax Check Compile Execute Test Type Check Write
Slide 46
Slide 46 text
Syntax Check Compile Execute Test Type Check Write
Slide 47
Slide 47 text
Syntax Check Compile Execute Test Type Check Write
Slide 48
Slide 48 text
More People To Read
Slide 49
Slide 49 text
Stephanie Weirich
Slide 50
Slide 50 text
Conor McBride
Slide 51
Slide 51 text
Philip Wadler
Slide 52
Slide 52 text
Works Cited
Slide 53
Slide 53 text
Sam Elliot, Edwin Brady, #idris, RubyNation & you! Acknowledgements
Slide 54
Slide 54 text
Thank You w michaelrbernste.in t @mrb_bk