66 lines
1.4 KiB
Markdown
66 lines
1.4 KiB
Markdown
Outline of paper
|
||
---
|
||
|
||
- λ ∈ ℕ Σ
|
||
- expand is NOT guaranteed to make well-typed terms; you can call it on any expr.
|
||
- idea; values carry latent "type" information
|
||
(but ya know, this is kind of just demonstrating that expand is useful)
|
||
- (afterwards) add set!
|
||
nevermind how \tau handles it ... here are rules for expand to handle it
|
||
- note: OCaml is firm about maintaining a fast compiler, NOT a big standard library
|
||
- thats a totally reasonable separation of concerns/labor
|
||
|
||
TODO
|
||
- use more RACKET, less math (@racket[...] for identifiers)
|
||
|
||
|
||
0 intro.scrbl
|
||
---
|
||
types, abstraction,
|
||
syntax extensions,
|
||
true refinement,
|
||
other promises
|
||
|
||
|
||
1 background.scrbl
|
||
---
|
||
define types
|
||
define macros (without the word 'macro')
|
||
|
||
|
||
2. examples.scrbl
|
||
---
|
||
carefully explain 2 extensions
|
||
state guarantees
|
||
prove properties
|
||
evaluations
|
||
|
||
|
||
3. discussion.scrbl
|
||
---
|
||
limits of the extensions (need a value),
|
||
suggestions to overcome limits (assertions, better analysis),
|
||
even more extensions + implications
|
||
|
||
"""
|
||
Our technique is implemented as a library of local transformations that
|
||
compose to form a function @exact{$\elaborate$} defined over syntactically
|
||
well-formed terms.
|
||
Using the library is a one-line change for existing programs; however, the
|
||
user may wish to remove type casts made redundant by the elaboration.
|
||
"""
|
||
|
||
|
||
4. friends.scrbl
|
||
---
|
||
how to implement in
|
||
- typed clojure
|
||
- scala (macros or LMS)
|
||
- javascript
|
||
rust will be difficult
|
||
|
||
|
||
5. ending
|
||
---
|
||
|