www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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:
Ascribblings/adt.scrbl | 11+++++++++++
Mscribblings/bibliography.bib | 39+++++++++++++++++++++------------------
Mscribblings/initial-examples.scrbl | 3++-
Mscribblings/state-of-the-art.scrbl | 2+-
Ascribblings/te.scrbl | 11+++++++++++
Mscribblings/tr-te-adt.scrbl | 6++++--
Mscribblings/tr.scrbl | 25+++++++++++++++++--------
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\&amp;path=ASIN/0321335708}, - citeulike-linkout-1 = {http://www.amazon.de/exec/obidos/redirect?tag=citeulike01-21\&amp;path=ASIN/0321335708}, - citeulike-linkout-2 = {http://www.amazon.fr/exec/obidos/redirect?tag=citeulike06-21\&amp;path=ASIN/0321335708}, + citeulike-linkout-0 = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20&amp;path=ASIN/0321335708}, + citeulike-linkout-1 = {http://www.amazon.de/exec/obidos/redirect?tag=citeulike01-21&amp;path=ASIN/0321335708}, + citeulike-linkout-2 = {http://www.amazon.fr/exec/obidos/redirect?tag=citeulike06-21&amp;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