commit cbd9ffc005c42712c81f688f66b1c9d49d77aa6e
parent aca7532322c7dbdb11401b8dff5522253c59c635
Author: Georges Dupéron <georges.duperon@gmail.com>
Date: Mon, 19 Jun 2017 19:42:16 +0200
Fixed most uses of \ in bibliography, prepared some sections
Diffstat:
7 files changed, 67 insertions(+), 30 deletions(-)
diff --git a/scribblings/adt.scrbl b/scribblings/adt.scrbl
@@ -0,0 +1,11 @@
+#lang scribble/manual
+
+@require["util.rkt"
+ (for-label (only-meta-in 0 typed/racket))]
+@(use-mathjax)
+
+@title[#:style (with-html5 manual-doc-style)
+ #:version (version-text)
+ #:tag "adt-chap"]{Extension of Typed Racket with algebraic
+ datatypes and row polymorphism}
+
diff --git a/scribblings/bibliography.bib b/scribblings/bibliography.bib
@@ -42,7 +42,8 @@
year={2013},
}
-@incollection{McCarthyHistoryLisp,
+; TODO: should be incollection, not book.
+@book{McCarthyHistoryLisp,
author = {McCarthy, John},
chapter = {History of LISP},
title = {History of Programming Languages I},
@@ -104,7 +105,7 @@
title = {Growing solver-aided languages with {Rosette}},
url = {http://dl.acm.org/citation.cfm?id=2509586},
urldate = {2017-02-02},
- booktitle = {Proceedings of the 2013 {ACM} international symposium on {New} ideas, new paradigms, and reflections on programming \& software},
+ booktitle = {Proceedings of the 2013 {ACM} international symposium on {New} ideas, new paradigms, and reflections on programming & software},
publisher = {ACM},
author = {Torlak, Emina and Bodik, Rastislav},
year = {2013},
@@ -299,7 +300,7 @@
editor = {Garrigue, Jacques},
month = nov,
year = {2014},
- note = {DOI: 10.1007/978-3-319-12736-1\_6},
+ note = {DOI: 10.1007/978-3-319-12736-1_6},
keywords = {Logics and Meanings of Programs, Mathematical Logic and Formal Languages, Programming Languages, Compilers, Interpreters, Software Engineering},
pages = {99--119},
}
@@ -392,8 +393,8 @@
; From jfla2015--myreferences.bib
@inproceedings{clement1986simple,
title={{A simple applicative language: Mini-ML}},
- author={Dominique Cl{\'e}ment and Thierry Despeyroux and Gilles Kahn
- and Jo{\"e}lle Despeyroux},
+ author={Dominique Clément and Thierry Despeyroux and Gilles Kahn
+ and Joëlle Despeyroux},
booktitle={Proceedings of the ACM conference on LISP and functional programming},
pages={13--27},
year=1986,
@@ -428,7 +429,7 @@
@inproceedings{might2006gcfa,
author = {Matthew Might and Olin Shivers},
- title = {Improving {F}low {A}nalyses via {$\Gamma$CFA}: {A}bstract {G}arbage {C}ollection and {C}ounting},
+ title = {Improving {F}low {A}nalyses via {ΓCFA}: {A}bstract {G}arbage {C}ollection and {C}ounting},
booktitle = {Proceedings of the 11th {ACM} {SIGPLAN} {I}nternational {C}onference on {F}unctional {P}rogramming ({ICFP} 2006)},
address = {Portland, Oregon},
month = {September},
@@ -464,9 +465,9 @@
-@techreport{ducournau-meta-model, TITLE = {{Modules and Class Refinement: A Meta-modeling Approach to Object-Oriented Programming}}, AUTHOR = {Ducournau, Roland and Morandat, Flor{\'e}al and Privat, Jean}, URL = {http://hal-lirmm.ccsd.cnrs.fr/lirmm-00180214}, NUMBER = {RR 07021}, PAGES = 66, YEAR = 2007, MONTH = Aug, KEYWORDS = {Object-oriented programming ; Design tools and techniques-modules and interfaces ; Software Architectures-information hiding ; Reusable Software-reusable models ; reusable libraries ; C++ ; Java ; Eiffel ; Smalltalk ; Clos ; Prm ; Language constructs and features- classes and objects ; inheritance ; modules and packages aspects ; classes ; crosscutting concerns ; expression problem ; hierarchies ; import ; linearization ; meta-modeling ; mixins ; modules ; multiple inheritance ; overloading ; redefinition ; refinement ; static typing}, PDF = {http://hal-lirmm.ccsd.cnrs.fr/lirmm-00180214/file/RD-FM-JP-TOPLAS-07-v09.pdf}, HAL_ID = {lirmm-00180214}, HAL_VERSION = {v1}, institution = {LIRMM}} % ducournau:lirmm-00180214
+@techreport{ducournau-meta-model, TITLE = {{Modules and Class Refinement: A Meta-modeling Approach to Object-Oriented Programming}}, AUTHOR = {Ducournau, Roland and Morandat, Floréal and Privat, Jean}, URL = {http://hal-lirmm.ccsd.cnrs.fr/lirmm-00180214}, NUMBER = {RR 07021}, PAGES = 66, YEAR = 2007, MONTH = Aug, KEYWORDS = {Object-oriented programming ; Design tools and techniques-modules and interfaces ; Software Architectures-information hiding ; Reusable Software-reusable models ; reusable libraries ; C++ ; Java ; Eiffel ; Smalltalk ; Clos ; Prm ; Language constructs and features- classes and objects ; inheritance ; modules and packages aspects ; classes ; crosscutting concerns ; expression problem ; hierarchies ; import ; linearization ; meta-modeling ; mixins ; modules ; multiple inheritance ; overloading ; redefinition ; refinement ; static typing}, PDF = {http://hal-lirmm.ccsd.cnrs.fr/lirmm-00180214/file/RD-FM-JP-TOPLAS-07-v09.pdf}, HAL_ID = {lirmm-00180214}, HAL_VERSION = {v1}, institution = {LIRMM}} % ducournau:lirmm-00180214
-@inproceedings{floreal-oopsla-btd-tables, author = {Ducournau, Roland and Morandat, Flor{\'e}al and Privat, Jean}, title = {Empirical Assessment of Object-oriented Implementations with Multiple Inheritance and Static Typing}, booktitle = {Proceedings of the 24th ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications}, series = {OOPSLA '09}, year = {2009}, isbn = {978-1-60558-766-0}, location = {Orlando, Florida, USA}, pages = {41--60}, numpages = {20}, url = {http://doi.acm.org/10.1145/1640089.1640093}, doi = {10.1145/1640089.1640093}, acmid = {1640093}, publisher = {ACM}, address = {New York, NY, USA}, keywords = {binary tree dispatch, closed-world assumption, coloring, downcast, dynamic loading, interfaces, late binding, method tables, multiple inheritance, multiple subtyping, open-world assumption, perfect hashing, single inheritance, subtype test, type analysis, virtual function table}} % Ducournau:2009:EAO:1640089.1640093,
+@inproceedings{floreal-oopsla-btd-tables, author = {Ducournau, Roland and Morandat, Floréal and Privat, Jean}, title = {Empirical Assessment of Object-oriented Implementations with Multiple Inheritance and Static Typing}, booktitle = {Proceedings of the 24th ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications}, series = {OOPSLA '09}, year = {2009}, isbn = {978-1-60558-766-0}, location = {Orlando, Florida, USA}, pages = {41--60}, numpages = {20}, url = {http://doi.acm.org/10.1145/1640089.1640093}, doi = {10.1145/1640089.1640093}, acmid = {1640093}, publisher = {ACM}, address = {New York, NY, USA}, keywords = {binary tree dispatch, closed-world assumption, coloring, downcast, dynamic loading, interfaces, late binding, method tables, multiple inheritance, multiple subtyping, open-world assumption, perfect hashing, single inheritance, subtype test, type analysis, virtual function table}} % Ducournau:2009:EAO:1640089.1640093,
@inproceedings{coloring89, author = {Dixon, R. and McKee, T. and Vaughan, M. and Schweizer, P.}, title = {A Fast Method Dispatcher for Compiled Languages with Multiple Inheritance}, booktitle = {Conference Proceedings on Object-oriented Programming Systems, Languages and Applications}, series = {OOPSLA '89}, year = {1989}, isbn = {0-89791-333-7}, location = {New Orleans, Louisiana, USA}, pages = {211--214}, numpages = {4}, url = {http://doi.acm.org/10.1145/74877.74900}, doi = {10.1145/74877.74900}, acmid = {74900}, publisher = {ACM}, address = {New York, NY, USA}} % Dixon:1989:FMD:74877.74900,
@@ -488,9 +489,10 @@
year={2014}
}
+; TODO: used to be \nth{6}, not 6th
@techreport{ecma-cli,
author={ECMA},
- title={{ECMA-335: Common Language Infrastructure (CLI), \nth{6} edition}},
+ title={{ECMA-335: Common Language Infrastructure (CLI), 6th edition}},
_edition={Sixth},
institution={ECMA, Geneva (CH)},
month= jun,
@@ -498,7 +500,7 @@
}
@phdthesis{sallenave2012phd,
- title={Contribution {\`a} l'efficacit{\'e} des programmes orient{\'e}s objet pour processeurs embarqu{\'e}s},
+ title={Contribution à l'efficacité des programmes orientés objet pour processeurs embarqués},
author={Sallenave, Olivier},
year={2012},
school={Montpellier 2}
@@ -542,15 +544,15 @@
author = {Knuth, Donald E.},
original-key = citeulike:1272058,
citeulike-article-id = {1272058},
- citeulike-linkout-0 = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&path=ASIN/0321335708},
- citeulike-linkout-1 = {http://www.amazon.de/exec/obidos/redirect?tag=citeulike01-21\&path=ASIN/0321335708},
- citeulike-linkout-2 = {http://www.amazon.fr/exec/obidos/redirect?tag=citeulike06-21\&path=ASIN/0321335708},
+ citeulike-linkout-0 = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20&path=ASIN/0321335708},
+ citeulike-linkout-1 = {http://www.amazon.de/exec/obidos/redirect?tag=citeulike01-21&path=ASIN/0321335708},
+ citeulike-linkout-2 = {http://www.amazon.fr/exec/obidos/redirect?tag=citeulike06-21&path=ASIN/0321335708},
citeulike-linkout-3 = {http://www.amazon.jp/exec/obidos/ASIN/0321335708},
citeulike-linkout-4 = {http://www.amazon.co.uk/exec/obidos/ASIN/0321335708/citeulike00-21},
- citeulike-linkout-5 = {http://www.amazon.com/exec/obidos/redirect?tag=citeulike07-20\&path=ASIN/0321335708},
+ citeulike-linkout-5 = {http://www.amazon.com/exec/obidos/redirect?tag=citeulike07-20&path=ASIN/0321335708},
citeulike-linkout-6 = {http://www.worldcat.org/isbn/0321335708},
citeulike-linkout-7 = {http://books.google.com/books?vid=ISBN0321335708},
- citeulike-linkout-8 = {http://www.amazon.com/gp/search?keywords=0321335708\&index=books\&linkCode=qs},
+ citeulike-linkout-8 = {http://www.amazon.com/gp/search?keywords=0321335708&index=books&linkCode=qs},
citeulike-linkout-9 = {http://www.librarything.com/isbn/0321335708},
day = {16},
edition = {1},
@@ -562,7 +564,7 @@
priority = {2},
publisher = {Addison-Wesley Professional},
series = {The Art of Computer Programming},
- _url = {http://www.amazon.com/exec/obidos/redirect?tag=citeulike07-20\&path=ASIN/0321335708},
+ _url = {http://www.amazon.com/exec/obidos/redirect?tag=citeulike07-20&path=ASIN/0321335708},
year = {2006}
}
@@ -668,7 +670,7 @@
@article{huet1997zipper,
title={{The Zipper}},
- author={G{\'e}rard Huet},
+ author={Gérard Huet},
journal={Journal of Functional Programming},
volume=7,
number=5,
@@ -724,7 +726,8 @@
pages = {685--746},
}
-@phdthesis{tobin-hochstadt_typed_2010,
+; TODO: should be phdthesis, not book.
+@book{tobin-hochstadt_typed_2010,
title = {Typed scheme: {From} scripts to programs},
shorttitle = {Typed scheme},
author = {Tobin-Hochstadt, Sam},
diff --git a/scribblings/initial-examples.scrbl b/scribblings/initial-examples.scrbl
@@ -5,4 +5,5 @@
@(use-mathjax)
@title[#:style (with-html5 manual-doc-style)
- #:version (version-text)]{Goals, constraints and examples}
+ #:version (version-text)
+ #:tag "initial-examples-chap"]{Goals, constraints and examples}
diff --git a/scribblings/state-of-the-art.scrbl b/scribblings/state-of-the-art.scrbl
@@ -9,7 +9,7 @@
#:version (version-text)]{State of the art}
@asection{
- @atitle[#:tag "prelated-type-expander"]{Extending the type system via macros}
+ @atitle[#:tag "related-type-expander"]{Extending the type system via macros}
Our work explores one interesting use of macros: their use to extend a
programming language's type system.
diff --git a/scribblings/te.scrbl b/scribblings/te.scrbl
@@ -0,0 +1,11 @@
+#lang scribble/manual
+
+@require["util.rkt"
+ (for-label (only-meta-in 0 typed/racket))]
+@(use-mathjax)
+
+@title[#:style (with-html5 manual-doc-style)
+ #:version (version-text)
+ #:tag "type-expander-chap"]{Extensible type systems via type-level
+ macros}
+
diff --git a/scribblings/tr-te-adt.scrbl b/scribblings/tr-te-adt.scrbl
@@ -7,4 +7,6 @@
@title[#:style (with-html5 manual-doc-style)
#:version (version-text)]{Type systems and Algebraic Datatypes}
-@include-asection{tr.scrbl}
-\ No newline at end of file
+@include-asection{tr.scrbl}
+@include-asection{te.scrbl}
+@include-asection{adt.scrbl}
+\ No newline at end of file
diff --git a/scribblings/tr.scrbl b/scribblings/tr.scrbl
@@ -5,7 +5,8 @@
@(use-mathjax)
@title[#:style (with-html5 manual-doc-style)
- #:version (version-text)]{@|Typedracket|}
+ #:version (version-text)
+ #:tag "tr-chap"]{@|Typedracket|}
We start this section with some history: Lisp, @emph{the} language with lots
of parentheses, shortly following Fortran as one of the first high-level
@@ -303,15 +304,23 @@ therefore keep our overview succinct and gloss over most details.
type property is therefore roughly equivalent to the declaration of an
interface with a single method.
- @todo{Briefly talk about Racket's
- ``@seclink["struct-generics"
- #:doc '(lib "scribblings/reference/reference.scrbl")]{
- generic interfaces}'', which are an abstraction over struct type
- properties and support the definition of several ``methods'' as part of a
- single generic interface.}
+ Struct type properties are often considered a low-level mechanism in Racket.
+ Among other things, a struct type property can only be used to define a single
+ property at a time. When multiple ``methods'' have to be defined at once (for
+ example, when defining the @racket[prop:equal+hash] property, which requires
+ the definition of an equality comparison function, and two hashing functions),
+ these can be grouped together in a list of functions, which is then used as
+ the property's value.
+ ``@seclink["struct-generics"
+ #:doc '(lib "scribblings/reference/reference.scrbl")]{
+ Generic interfaces}'' are a higher-level feature, which among other things
+ allow the definition of multiple ``methods'' as part of a single generic
+ interface, and offers a friendlier API for specifying the ``generic
+ interface'' itself (i.e. what Object Oriented languages call an interfece), as
+ and for specifying the implementation of said interface.
@|Typedracket| offers no support for struct type properties and generic
- interfaces, however. It is impossible to specify that a struct implement a
+ interfaces for now. It is impossible to assert that a struct implements a
given property at the type level, and it is also for example not possible to
describe the type of a function accepting any struct implementing a given
property or generic interface. Finally, no type checks are performed on the