-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtalk.rkt
99 lines (79 loc) · 2.38 KB
/
talk.rkt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#lang racket
(require "intro.rkt"
"counts/time-vs-contracts.rkt"
"util.rkt"
"dep.rkt"
"redex-typeset.rkt"
"equations.rkt"
"boundary.rkt"
"heap-slides.rkt"
"random-generation.rkt"
"title.rkt"
"faces.rkt"
"boundaries-not-projections.rkt"
"takeaways.rkt"
slideshow/fullscreen
slideshow/play)
(title-slide)
(begin
(subtitle "Pragmatics:"
"Contracts are"
"infectious")
(define first-sequence (make-pip-sequence 0 0 #f #f))
(play-n #:aspect 'fullscreen (wrap/first-argument-always-1 first-sequence))
(define pip5050 (make-pip-sequence 50 50 #t #f))
(slide (pip5050 1 1 0 0 0 0 0 0))
(play-n
#:aspect 'fullscreen
(λ (a b c)
(pip5050 1 1 1 1 1 a b c)))
(bad-call)
(define pip-false (make-pip-sequence #f #f 'error #f))
(slide (pip-false 1 1 1 1 1 0 0 0))
(define pip-false/contract (make-pip-sequence #f #f 'error 'type #:red-contract? #t))
(play-n #:aspect 'fullscreen (λ (n1 n2 n3) (pip-false/contract n1 n2 n3 0 0 0 0 0)))
(violation-with-type-based-contract)
(time-vs-contracts))
(begin
(subtitle "Interlude:"
"Contracts are"
"not Types")
(define pip-neg (make-pip-sequence -50 -75 #t 'type))
(slide (pip-neg 1 1 0 0 0 0 0 0))
(play-n
#:aspect 'fullscreen
(λ (a b c)
(pip-neg 1 1 1 1 1 a b c)))
(slide original-contract)
(play-n #:aspect 'fullscreen numeric-contract->dependent-version)
(violation-with-dependent-based-contract)
(introduce-dc-function)
(motivate-dc-contract)
(staged-dc-contract)
(slide restores-state-afer-call?))
(begin
(subtitle "Semantics:"
"Dependency"
"& Effects")
(boundaries-not-projections)
(introduce-calculus)
(first-order-flow)
(base-rule)
(higher-order-flow)
(play-n #:aspect 'fullscreen function-rule-part1)
(function-in-boundary)
(play-n #:aspect 'fullscreen function-rule-part2))
(begin
(subtitle "Applications:"
"Types, Testing,"
"Analysis, &"
"More")
(introduce-randomness)
(show-heap-bugs)
(big-type/us-them)
(slide (scale-to-fit provide-lines-pict client-w client-h))
(applications))
(recap)
(final-thought)
(printf "slides built (in ~a seconds)\n"
(~r (/ (current-process-milliseconds) 1000) #:precision 2))