From 6eac5828fcfe86666ed3c471087d887a44cd4782 Mon Sep 17 00:00:00 2001 From: ben Date: Thu, 25 Feb 2016 12:47:07 -0500 Subject: [PATCH] [icfp] skeleton --- icfp-2016/.gitignore | 7 + icfp-2016/Makefile | 18 + icfp-2016/bib.rkt | 1040 +++++++++++++++++++++++++++++++++++++++ icfp-2016/common.rkt | 135 +++++ icfp-2016/outline.scrbl | 5 + icfp-2016/paper.scrbl | 25 + icfp-2016/paper.tex | 578 ++++++++++++++++++++++ icfp-2016/texstyle.tex | 29 ++ 8 files changed, 1837 insertions(+) create mode 100644 icfp-2016/.gitignore create mode 100644 icfp-2016/Makefile create mode 100644 icfp-2016/bib.rkt create mode 100644 icfp-2016/common.rkt create mode 100644 icfp-2016/outline.scrbl create mode 100644 icfp-2016/paper.scrbl create mode 100644 icfp-2016/paper.tex create mode 100644 icfp-2016/texstyle.tex diff --git a/icfp-2016/.gitignore b/icfp-2016/.gitignore new file mode 100644 index 0000000..5fa8838 --- /dev/null +++ b/icfp-2016/.gitignore @@ -0,0 +1,7 @@ +*.aux +*.bbl +*.blg +*.cls +*.log +*.out +*.pdf diff --git a/icfp-2016/Makefile b/icfp-2016/Makefile new file mode 100644 index 0000000..ac1261f --- /dev/null +++ b/icfp-2016/Makefile @@ -0,0 +1,18 @@ +PAPER=paper + +all: paper.pdf + +compiled/paper_scrbl.zo: *.rkt *.scrbl + raco make -v $(PAPER).scrbl + +paper.pdf: pkg compiled/paper_scrbl.zo texstyle.tex + scribble ++style texstyle.tex --pdf $(PAPER).scrbl + +paper.tex: pkg compiled/paper_scrbl.zo texstyle.tex + scribble ++style texstyle.tex --latex $(PAPER).scrbl + +pkg: + raco pkg install --skip-installed trivial + +clean: + rm -r compiled diff --git a/icfp-2016/bib.rkt b/icfp-2016/bib.rkt new file mode 100644 index 0000000..5f41c0f --- /dev/null +++ b/icfp-2016/bib.rkt @@ -0,0 +1,1040 @@ +#lang at-exp racket +(require scribble/manual + scriblib/autobib) + +(provide (all-defined-out)) + +;; shortens names +(abbreviate-given-names #f) + +;; ---------------------------------------- + +(define short? #f) +(define-syntax define/short + (syntax-rules () + [(_ i e e*) (define i (if short? e e*))] + [(_ i e) (define i e)])) + +(define IEEE "IEEE ") +(define ACM "ACM ") +(define International "International ") +(define Conference "Conference ") +(define Workshop "Workshop ") +(define Journal "Journal ") +(define Symposium "Symposium ") +(define Transactions "Transactions on ") + + +(define/short asplas "APLAS" (string-append "Asian " Symposium "Programming Languages and Systems")) +(define/short fpca "FPCA" (string-append ACM International Conference "Functional Programming Languages and Computer Architecture")) +(define/short icfp "ICFP" (string-append ACM International Conference "on Functional Programming")) +(define/short pldi "PLDI" (string-append ACM Conference "on Programming Language Design and Implementation")) +(define/short popl "POPL" (string-append ACM Symposium "on Principles of Programming Languages")) +(define/short lncs "LNCS" "Lecture Notes in Computer Science") +(define/short sigplan-notices "SIGPLAN Notices" (string-append ACM "SIGPLAN Notices")) +(define/short scheme-workshop "SFP" (string-append "Scheme and Functional Programming Workshop")) +(define/short jfp "JFP" (string-append Journal "Functional Programming")) +(define/short hosc "HOSC" "Higher-Order and Symbolic Programming") +(define/short lfp "LFP" "LISP and Functional Programming") +(define/short lsc "LSC" "LISP and Symbolic Computation") +(define/short ifl "IFL" (string-append International Symposium "Functional and Logic Programming")) +(define/short tfp "TFP" (string-append Symposium "Trends in Functional Programming")) +(define/short ecoop "ECOOP" (string-append "European " Conference "Object-Oriented Programming")) +(define/short oopsla "OOPSLA" (string-append ACM Conference "on Object-Oriented Programming, Systems, Languages and Applications")) +(define/short ieee-software (string-append IEEE "Software")) +(define/short toplas "TOPLAS" (string-append ACM Transactions "Programming Languages and Systems")) +(define/short dls "DLS" "Dynamic Languages Symposium") +(define/short flops "FLOPS" (string-append Symposium "Functional and Logic Programming")) +(define/short esop "ESOP" (string-append "European " Symposium "on Programming")) +(define/short cc "CC" (string-append International Conference "on Compiler Construction")) +(define/short iclp "ICLP" (string-append International Conference "on Logic Programming")) +(define/short fse "FSE" (string-append International Symposium "on the Foundations of Software Engineering")) +(define/short aosd "AOSD" (string-append International Conference "on Aspect-Oriented Software Development")) +(define/short foal "FOAL" "Foundations of Aspect-Oriented Languages") +(define/short tlca "TLCA" (string-append International Conference "Typed Lambda Calculi and Applications")) +(define/short i&c "Info. & Comp." "Information and Computation") +(define/short haskell "Haskell Workshop") +(define/short tcs "Theoretical Computer Science") +(define/short tacs (string-append International Symposium "Theoretical Aspects of Computer Science")) +(define/short ml-workshop "ML Workshop") +(define/short sac "SAC" (string-append Symposium "on Applied Computing")) +(define/short gpce "GPCE" "Generative Programming: Concepts & Experiences") +(define/short dyla "DYLA" (string-append Workshop "on Dynamic Languages and Applications")) +(define/short issta "ISSTA" (string-append International Symposium "on Software Testing and Analysis")) + +;; ---------------------------------------- + +(define TypedRacket + (make-bib + #:author (authors "Sam Tobin-Hochstadt" "Matthias Felleisen") + #:title "The Design and Implementation of Typed Scheme" + #:location (proceedings-location popl + #:pages '(395 406)) + #:date "2008")) + +(define Contracts + (make-bib + #:author (authors "Robert Bruce Findler" "Matthias Felleisen") + #:title @elem{Contracts for Higher-Order Functions} + #:location (proceedings-location icfp + #:pages '(48 59)) + #:date "2002")) + +(define KillSafety + (make-bib + #:author (authors "Matthew Flatt" "Robert Bruce Findler") + #:title @elem{Kill-Safe Synchronization Abstractions} + #:location (proceedings-location pldi + #:pages '(47 58)) + #:date "2004")) + +(define JavascriptProxies + (make-bib + #:author (authors (author-name "Tom" "Van Cutsem") "Mark Miller") + #:title @elem{Proxies: Design Principles for Robust Object-oriented Intercession APIs} + #:location (proceedings-location "Dynamic Languages Symposium" + #:pages '(59 72)) + #:date "2010")) + +(define DirectProxies + (make-bib + #:author (authors (author-name "Tom" "Van Cutsem") "Mark Miller") + #:title @elem{On the design of the ECMAScript Reflection API} + #:location (techrpt-location #:institution "Vrije Universiteit Brussel" + #:number "VUB-SOFT-TR-12-03") + #:date "2012")) + + +(define grf:lazy-contracts + (make-bib + #:author (authors "Robert Bruce Findler" "Shu-yu Guo" "Anne Rogers") + #:title "Lazy Contract Checking for Immutable Data Structures" + #:location (proceedings-location "Implementation and Application of Functional Languages" + #:pages '(111 128)) + #:date "2007")) + +(define hjl:haskell-contracts + (make-bib + #:title "Typed Contracts for Functional Programming" + #:author (authors "Ralf Hinze" "Johan Jeuring" "Andres Löh") + #:location (proceedings-location flops + #:pages '(208 225)) + #:date "2006")) + +(define cmr:lazy-assertions + (make-bib + #:author (authors "Olaf Chitil" "Dan McNeill" "Colin Runciman") + #:title "Lazy Assertions" + #:date "2003" + #:location (proceedings-location ifl + #:pages '(1 19)))) + +(define ch:lazy-assertions + (make-bib + #:title "A pattern logic for prompt lazy assertions" + #:author (authors "Olaf Chitil" "Frank Huch") + #:location (proceedings-location ifl + #:pages '(126 144)) + #:date "2006")) + +(define MOP + (make-bib + #:author (authors "Gregor J. Kiczales" + (author-name "James" "des Rivieres") + "Daniel G. Bobrow") + #:is-book? #t + #:title "The Art of the Metaobject Protocol" + #:location (book-location #:publisher "MIT Press") + #:date "1991")) + +(define AOP + (make-bib + #:author (authors "Gregor Kiczales" + "John Lamping" + "Anurag Mendhekar" + "Chris Maeda" + "Cristina Lopes" + "Jean-Marc Loingtier" + "John Irwin") + #:date "1997" + #:title "Aspect-Oriented Programming" + #:location (proceedings-location ecoop + #:pages '(220 242)) + ;#:note "LNCS 1241" + )) + +(define |Can Aspects Implement Contracts?| + (make-bib + #:author (authors "Stephanie Balzer" + "Patrick Eugster" + "Bertrand Meyer") + #:title "Can Aspects Implement Contracts?" + #:date "2005" + #:location (proceedings-location + "Rapid Implemetation of Software Engineering Techniques" + #:pages '(145 157)))) + +(define java.lang.reflect.Proxy + (make-bib + #:date 2000 + #:author "Oracle" + #:title @elem{java.lang.reflect.Proxy} + #:url "http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Proxy.html")) + +(define gal-firefox + (make-bib + #:date 2010 + #:author "Andreas Gal" + #:title "Proxies in Tracemonkey" + #:url "http://hg.mozilla.org/tracemonkey/")) + + +(define Eiffel + (make-bib + #:author "Bertrand Meyer" + #:title "Eiffel : The Language" + #:is-book? #t + #:date "1991" + #:location (book-location #:publisher "Prentice Hall PTR"))) + +(define AmbientTalk + (make-bib + #:title "Ambient-Oriented Programming" + #:author (authors "Jessie Dedecker" + (author-name "Tom" "Van Cutsem") + "Stijn Mostinckx" + "Theo D'Hondt" + (author-name "Wolfgang" "De Meuter")) + #:date "2005" + #:location (proceedings-location oopsla + #:pages '(31 40)))) + +(define Euclid + (make-bib + #:author (authors "B. W. Lampson" + "J. J. Horning" + "R. L. London" + "J. G. Mitchell" + "G. J. Popek") + #:title "Report on the programming language Euclid" + #:location (journal-location sigplan-notices + #:volume 12 + #:number 2 + #:pages '(1 79)) + #:date "1977")) + + +(define Anna + (make-bib + #:author (authors "D. C. Luckham" + "F. W. von Henke") + #:title "An overview of Anna, a specification language for Ada" + #:location (journal-location ieee-software + #:volume 2 + #:number 2 + #:pages '(9 22)) + #:date "1985")) + + +(define D + (make-bib + #:author (org-author-name "Digital Mars") + #:date "1999" + #:title "D Programming Language" + #:url "http://www.digitalmars.com/d/")) + + +(define |Operational Semantics for Multi-Language Programs| + (make-bib + #:title "Operational Semantics for Multi-Language Programs" + #:author (authors "Jacob Matthews" + "Robert Bruce Findler") + #:date "2009" + #:location (journal-location toplas + #:volume 31 + #:number 3 + #:pages '("12:1" "12:44")))) + +(define TypeDynamic + (make-bib + #:title "Dynamic Typing in a Statically Typed Language" + #:author (authors + "Martin Abadi" + "Luca Cardelli" + "Benjamin C. Pierce" + "Gordon D. Plotkin") + #:date 1991 + #:location (journal-location toplas + #:volume 13 + #:number 2 + #:pages '("237" "268")))) + +(define |Space Efficient Gradual Typing| + (make-bib + #:title "Space Efficient Gradual Typing" + #:author (authors "David Herman" "Aaron Tomb" "Cormac Flanagan") + #:location (proceedings-location tfp) + #:date "2007")) + +(define |Nested and Dynamic Contract Boundaries| + (make-bib + #:title "Nested and Dynamic Contract Boundaries" + #:author (authors "T. Stephen Strickland" + "Matthias Felleisen") + #:location (proceedings-location ifl + #:pages '(141 158)) + #:date "2009")) + + (define ClassContracts + (make-bib + #:title "Contracts for First-Class Classes" + #:author (authors "T. Stephen Strickland" + "Matthias Felleisen") + #:location (proceedings-location dls + #:pages '(97 112)) + #:date "2010")) + +(define vvle-tr + (make-bib + #:title "Virtual Values for Language Extension" + #:author (authors "Thomas H. Austin" "Tim Disney" "Cormac Flanagan") + #:location (proceedings-location oopsla) + #:date "2011")) + +(define ContractsCoffee + (make-bib + #:title "Contracts.coffee" + #:author "Tim Disney" + #:date "2012" + #:url "http://disnetdev.com/contracts.coffee/")) + +(define redex-book + (make-bib + #:author (authors "Matthias Felleisen" "Robert Bruce Findler" "Matthew Flatt") + #:title "Semantics Engineering with PLT Redex" + #:location (book-location #:publisher "MIT Press") + #:is-book? #t + #:date "2010")) + +(define sfp2009-kf + (make-bib + #:author (authors "Casey Klein" "Robert Bruce Findler") + #:title "Randomized Testing in PLT Redex" + #:location (proceedings-location scheme-workshop #:pages '(26 36)) + #:date "2009")) + +(define poly-sealing + (make-bib + #:title "Parametric Polymorphism Through Run-Time Sealing, or, Theorems for Low, Low Prices!" + #:author (authors "Jacob Matthews" "Amal Ahmed") + #:location (proceedings-location esop #:series "LNCS 4960" #:pages '(16 31)) + #:date 2008)) + +(define ciao-contracts + (make-bib + #:author (authors "E. Mera" "P. Lopez-Garcia" "M. Hermenegildo") + #:title "Integrating Software Testing and Run-Time Checking in an Assertion Verification Framework" + #:location (proceedings-location iclp #:series "LNCS 5649") + #:date 2009)) + +(define no-more-scapegoating + (make-bib + #:title "Correct Blame for Contracts: No More Scapegoating" + #:author (authors "Christos Dimoulas" "Robert Bruce Findler" "Cormc Flanagan" "Matthias Felleisen") + #:location (proceedings-location popl) + #:date 2011)) + +(define harmless-advice + (make-bib + #:title "Harmless Advice" + #:author (authors "Daniel S. Dantas" "David Walker") + #:location (proceedings-location popl) + #:date 2006)) + +(define aspect-classification + (make-bib + #:title "A Classification System and Analysis for Aspect-Oriented Programs" + #:author (authors "Martin Rinard" "Alexandru Salcianu" "Suhabe Bugrara") + #:location (proceedings-location fse) + #:date 2004)) + +(define observers-and-assistants + (make-bib + #:author (authors "Curtis Clifton" "Gary T. Leavens") + #:title "Observers and assistants: A proposal for modular aspect-oriented reasoning" + #:location (proceedings-location foal) + #:date 2002)) + +(define plt-tr1 + (make-bib + #:title "Reference: Racket" + #:author (authors "Matthew Flatt" "PLT") + #:date "2010" + #:location (techrpt-location #:institution "PLT Inc." #:number "PLT-TR-2010-1") + #:url "http://racket-lang.org/tr1/")) + +(define plt-tr3 + (make-bib + #:title "GUI: Racket Graphics Toolkit" + #:author (authors "Matthew Flatt" "Robert Bruce Findler" "John Clements") + #:date "2010" + #:location (techrpt-location #:institution "PLT Inc." #:number "PLT-TR-2010-3") + #:url "http://racket-lang.org/tr3/")) + +(define EffectiveAdvice + (make-bib + #:title "EffectiveAdvice: Disciplined Advice with Explicit Effects" + #:author (authors (author-name "Bruno C. d. S." "Oliveira") + "Tom Schrijvers" + "William R. Cook") + #:date 2010 + #:location (proceedings-location aosd))) + +(define OpenModules + (make-bib + #:title "Open Modules: Modular Reasoning About Advice" + #:author "Jonathan Aldrich" + #:date 2005 + #:location (proceedings-location ecoop))) + +(define MillerPhD + (make-bib + #:title "Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control" + #:author "M. S. Miller" + #:is-book? #t + #:location (dissertation-location #:institution "John Hopkins University") + #:date 2006)) + +(define js-type-inference + (make-bib #:title "Fast and precise type inference for JavaScript" + #:author (authors (author-name "Brian" "Hackett") + (author-name "Shu-Yu" "Guo")) + #:location (proceedings-location pldi) ; TODO pages + #:date "2012")) + +(define min-cover-salient-curves + (make-bib + #:author (authors "Pedro Felzenszwalb" "David McAllester") + #:title "A min-cover approach for finding salient curves" + #:location (proceedings-location (string-append IEEE Workshop "Perceptual Organization in Computer Vision")) + #:date 2006)) + +(define type-soundness + (make-bib + #:author (authors "Andrew K. Wright" "Matthias Felleisen") + #:title "A Syntactic Approach to Type Soundness" + #:location (journal-location i&c #:pages '(38 94)) + #:date 1994)) + +(define expressive-power + (make-bib + #:author (authors "Matthias Felleisen") + #:title "On the Expressive Power of Programming Languages" + #:location (journal-location "Science of Computer Programming" + #:volume 17 + #:number "1--3" + #:pages '(35 75)) + #:date 1991)) + +;; ---------------------------------------- +; Software engineering + +(define crtr-empirical-2013 + (make-bib + #:author (authors "Oscar Callaú" "Romain Robbes" + "Éric Tanter" "David Röthlisberger") + #:title "How (and Why) Developers Use the Dynamic Features of Programming Languages: the Case of Smalltalk" + #:location (journal-location "Empirical Software Engineering" + #:volume 18 + #:number 6 + #:pages '(1156 1194)) + #:date 2013)) + +;; ---------------------------------------- +; Misc + +(define cm-tech-1985 + (make-bib + #:author (authors "Robert L. Constable" "Nax P. Mendler") + #:title "Recursive Definitions in Type Theory" + #:location (techrpt-location #:institution "Cornell University" + #:number "TR 85-659") + #:date 1985)) + +(define mff-popl-2006 + (make-bib + #:author (authors "Phillipe Meunier" "Robert Bruce Findler" "Matthias Felleisen") + #:title "Modular Set-Based Analysis from Contracts" + #:location (proceedings-location popl #:pages '(218 231)) + #:date 2006)) + +;; ---------------------------------------- +; Software engineering and types + +(define hkrts-empirical-2013 + (make-bib + #:author (authors "Stefan Hanenberg" "Sebastian Kleinschmager" + "Romain Robbes" "Éric Tanter" "Andreas Stefik") + #:title "An Empirical Study on the Impact of Static Typing on Software Maintainability" + #:location (journal-location "Empirical Software Engineering" + ;; there really isn't any volume/number listed on Springer + #:pages '(1 48)) + #:date 2013)) + +;; ---------------------------------------- +; Objects, theory + +(define ac-book-1996 + (make-bib + #:author (authors "Martin Abadi" "Luca Cardelli") + #:title "A Theory of Objects" + #:date 1996 + #:location (book-location #:publisher "Springer-Verlag"))) + +;; ---------------------------------------- +; Objects, real languages + +(define remy-tacs-1994 + (make-bib + #:author "Didier Rémy" + #:title "Programming Objects with ML-ART an Extension to ML with Abstract and Record Types" + #:date 1994 + #:location (proceedings-location tacs #:pages '(321 346)))) + +(define oacddemmmsssz-tech-2006 + (make-bib + #:title "An Overview of the Scala Programming Language" + #:author (authors "Martin Odersky" "Philippe Altherr" + "Vincent Cremet" "Iulian Dragos" + "Gilles Dubochet" "Burak Emir" + "Sean McDirmid" "Stéphane Micheloud" + "Nikolay Mihaylov" "Michel Schinz" + "Erik Stenman" "Lex Spoon" + "Matthias Zenger") + #:date 2006 + #:location (techrpt-location #:institution "École Polytechnique Fédérale de Lausanne" + #:number "LAMP-REPORT-2006-001"))) + +(define mme-gpce-2013 + (make-bib + #:title "Template Constructors for Resuable Object Initialization" + #:author (authors "Marko Martin" "Mira Mezini" "Sebastian Erdweg") + #:location (proceedings-location gpce #:pages '(43 52)) + #:date 2013)) + +;; ---------------------------------------- +; Macrology + +(define ts-tcs-2000 + (make-bib + #:title "MetaML and Multi-stage Programming with Explicit Annotations" + #:author (authors "Walid Taha" "Tim Sheard") + #:location (journal-location tcs + #:volume 248 + #:number "1-2" + #:pages '(211 242)) + #:date 2000)) + +(define spj-haskell-2002 + (make-bib + #:title "Template Meta-programming for Haskell" + #:author (authors "Tim Sheard" "Simon Peyton Jones") + #:location (proceedings-location haskell) + #:date 2002)) + +(define burmako-scala-2013 + (make-bib + #:title "Scala Macros: Let Our Powers Combine!" + #:author "Eugene Burmako" + #:location (proceedings-location "Scala Workshop") + #:date 2013)) + +;; ---------------------------------------- +; Contracts + +(define complete-monitors + (make-bib + #:author (authors "Christos Dimoulas" "Sam Tobin-Hochstadt" "Matthias Felleisen") + #:title "Complete Monitors for Behavioral Contracts" + #:location (proceedings-location esop #:pages '(214 233)) + #:date 2012)) + +(define ho-contract-satisfaction + (make-bib + #:author (authors "Christos Dimoulas" "Matthias Felleisen") + #:title "On Contract Satisfaction in a Higher-Order World" + #:location (journal-location toplas + #:volume 33 + #:number 5 + #:pages '("16:1" "16:29")) + #:date 2011)) + +(define dimoulas-diss + (make-bib + #:author "Christos Dimoulas" + #:title "Foundations for Behavioral Higher-Order Contracts" + #:is-book? #t + #:location (dissertation-location #:institution "Northeastern University") + #:date 2012)) + +(define nthvh-icfp-2014 + (make-bib + #:author (authors "Phúc C. Nguyễn" "Sam Tobin-Hochstadt" "David Van Horn") + #:title "Soft Contract Verification" + #:location (proceedings-location icfp #:pages '(139 152)) + #:date 2014)) + +;; ---------------------------------------- +; Proxies + +(define chaperones-impersonators + (make-bib + #:author (authors "T. Stephen Strickland" "Sam Tobin-Hochstadt" "Robert Bruce Findler" "Matthew Flatt") + #:title "Chaperones and Impersonators: Run-time Support for Reasonable Interposition" + #:location (proceedings-location oopsla #:pages '(943 962)) + #:date 2012)) + +;; ---------------------------------------- +; Continuations + +(define ConstrainingControl + (make-bib + #:author (authors "Daniel P. Friedman" "Christopher T. Haynes") + #:title "Constraining Control" + #:location (proceedings-location popl #:pages '(245 254)) + #:date 1985)) + +(define ContinuationMultiprocessing + (make-bib + #:author (authors "Mitchell Wand") + #:title "Continuation-Based Multiprocessing" + #:location (journal-location hosc + #:volume 12 + #:number 3 + #:pages '(285 299)) + #:date 1999)) + +(define Engines + (make-bib + #:author (authors "Christopher T. Haynes" "Daniel P. Friedman") + #:title "Engines Build Process Abstractions" + #:location (proceedings-location lfp #:pages '(18 24)) + #:date 1984)) + +(define Coroutines + (make-bib + #:author (authors "Christopher T. Haynes" "Daniel P. Friedman" "Mitchell Wand") + #:title "Continuations and Coroutines" + #:location (proceedings-location lfp #:pages '(293 298)) + #:date 1984)) + +(define GuilePrompts + (make-bib + #:author "Free Software Foundation" + #:date 2012 + #:title "Guile Reference Manual: Prompts" + #:url "http://www.gnu.org/software/guile/manual/html_node/Prompts.html")) + +;; ---------------------------------------- +; Continuation marks / dynamic binding + +(define algebraic-stepper + (make-bib + #:author (authors "John Clements" "Matthew Flatt" "Matthias Felleisen") + #:title "Modeling an Algebraic Stepper" + #:location (proceedings-location esop #:pages '(320 334)) + #:date 2001)) + +(define DDBinding + (make-bib + #:author (authors "Oleg Kiselyov" "Chung-chieh Shan" "Amr Sabry") + #:title "Delimited Dynamic Binding" + #:location (proceedings-location icfp #:pages '(26 37)) + #:date 2006)) + +(define GenStackInspection + (make-bib + #:author (authors "Greg Pettyjohn" "John Clements" "Joe Marshall" + "Shriram Krishnamurthi" "Matthias Felleisen") + #:title "Continuations from Generalized Stack Inspection" + #:location (proceedings-location icfp #:pages '(216 227)) + #:date 2005)) + +(define AOPinHOLs + (make-bib + #:author (authors "David B. Tucker" "Shriram Krishnamurthi") + #:title "Pointcuts and Advice in Higher-Order Languages" + #:location (proceedings-location aosd #:pages '(158 167)) + #:date 2003)) + +(define CMsinJS + (make-bib + #:author (authors "John Clements" "Ayswarya Sundaram" "David Herman") + #:title "Implementing Continuation Marks in Javascript" + #:location (proceedings-location scheme-workshop) + #:date 2008)) + +(define clements-diss + (make-bib + #:title "Portable and High-level Access to the Stack with Continuation Marks" + #:author "John Clements" + #:is-book? #t + #:location (dissertation-location #:institution "Northeastern University") + #:date 2006)) + +;; ---------------------------------------- +; Delim control + +(define Felleisen88 + (make-bib + #:author (authors "Matthias Felleisen") + #:title "The Theory and Practice of First-Class Prompts" + #:location (proceedings-location popl #:pages '(180 190)) + #:date 1988)) + +(define Sitaram1993 + (make-bib + #:author (authors "Dorai Sitaram") + #:title "Handling Control" + #:location (proceedings-location pldi #:pages '(147 155)) + #:date 1993)) + +(define DelimCompControl + (make-bib + #:author (authors "Matthew Flatt" "Gang Yu" + "Robert Bruce Findler" "Matthias Felleisen") + #:title "Adding Delimited and Composable Control to a Production Programming Environment" + #:location (proceedings-location icfp #:pages '(165 176)) + #:date 2007)) + +(define Subcontinuations + (make-bib + #:author (authors "Robert Hieb" "R. Kent Dybvig" "Claude W. Anderson") + #:title "Subcontinuations" + #:location (journal-location lsc #:pages '(83 110)) + #:date 1994)) + +(define DelimiterHierarchies + (make-bib + #:author (authors "Dorai Sitaram" "Matthias Felleisen") + #:title "Control Delimiters and their Hierarchies" + #:location (journal-location lsc #:pages '(67 99)) + #:date 1990)) + +(define MachIV + (make-bib + #:author "Richard P. Draves" + #:title "Control Transfer in Operating System Kernels" + #:is-book? #t + #:location (dissertation-location #:institution "Carnegie Mellon University") + #:date 1994)) + +;; ---------------------------------------- +; Types for untyped languages + +(define rtsf-oops-2013 + (make-bib + #:author (authors "Brianna M. Ren" "John Toman" "T. Stephen Strickland" "Jeffrey S. Foster") + #:title "The Ruby Type Checker" + #:location (proceedings-location sac #:pages '(1565 1572)) + #:date 2013)) + +;; ---------------------------------------- +; Gradual typing + +;; for these papers, see +;; https://github.com/samth/gradual-typing-bib/blob/master/main.rkt + +(define typescript + (make-bib + #:title "Typescript Language Specification" + #:location (techrpt-location #:number "Version 0.9.1" + #:institution "Microsoft") + #:date 2013)) + +;; ---------------------------------------- +; Components and modules + +(define mfh-oopsla-2001 + (make-bib + #:title "Jiazzi: New-Age Components for Old-Fashioned Java" + #:author (authors "Sean McDirmid" "Matthew Flatt" + "Wilson C. Hsleh") + #:date 2001 + #:location (proceedings-location oopsla #:pages '(211 222)))) + +(define fg-ml-2010 + (make-bib + #:title "First-class Modules and Composable Signatures in Objective Caml 3.12" + #:author (authors "Alain Frisch" "Jacques Garrique") + #:date 2010 + #:location (proceedings-location ml-workshop))) + +;; ---------------------------------------- +; Mixins and traits + +(define fkf-popl-1998 + (make-bib + #:title "Classes and Mixins" + #:author (authors "Matthew Flatt" "Shriram Krishnamurthi" + "Matthias Felleisen") + #:location (proceedings-location popl #:pages '(171 183)) + #:date 1998)) + +(define alz-ecoop-2000 + (make-bib + #:title "Jam - A Smooth Extension of Java with Mixins" + #:author (authors "Davide Ancona" "Giovanni Lagorio" "Elena Zucca") + #:location (proceedings-location esop #:pages '(154 178)) + #:date 2000)) + +(define abc-oopsla-2003 + (make-bib + #:title "A First-class Approach to Genericity" + #:author (authors "Eric Allen" "Jonathan Bannet" + "Robert Cartwright") + #:location (proceedings-location oopsla #:pages '(96 114)) + #:date 2003)) + +(define sdnb-ecoop-2003 + (make-bib + #:title "Traits: Composable Units of Behaviour" + #:author (authors "Nathanael Schärli" "Stéphane Ducasse" + "Oscar Nierstrasz" "Andrew P. Black") + #:location (proceedings-location ecoop #:pages '(248 274)) + #:date 2003)) + +(define kt-asplas-2004 + (make-bib + #:title "McJava – A Design and Implementation of Java with Mixin-Types" + #:author (authors "Tetsuo Kamina" "Tetsuo Tamai") + #:location (proceedings-location asplas #:pages '(398 414)) + #:date 2004)) + +(define sd-ecoop-2005 + (make-bib + #:title "Chai: Traits for Java-Like Languages" + #:author (authors "Charles Smith" "Sophia Drossopoulou") + #:location (proceedings-location ecoop #:pages '(453 478)) + #:date 2005)) + +(define sz-oopsla-2010 + (make-bib + #:title "MetaFJig: a Meta-circular Composition Language for Java-like Classes" + #:author (authors "Marco Servetto" "Elena Zucca") + #:location (proceedings-location oopsla #:pages '(464 483)) + #:date 2010)) + +;; ---------------------------------------- +; Beta and Beta-style programming + +(define mmpn-book-1993 + (make-bib + #:title "Object-Oriented Programming in the BETA Programming Language" + #:author (authors "Ole Lehrmann Madsen" "Birger Møller-Pedersen" + "Kristen Nygaard") + #:date 1993 + #:location (book-location #:publisher "Addison-Wesley Publishing Co."))) + +(define gff-oopsla-2004 + (make-bib + #:title "Super and Inner: Together at Last!" + #:author (authors "David S. Goldberg" "Robert Bruce Findler" + "Matthew Flatt") + #:date 2004 + #:location (proceedings-location oopsla #:pages '(116 129)))) + +;; ---------------------------------------- +; Types for delim control + +(define Danvy1989 + (make-bib + #:author (authors "Olivier Danvy" "Andrzej Filinski") + #:title "A Functional Abstraction of Typed Contexts" + #:location (techrpt-location #:institution "University of Copenhagen" + ;; I'm not 100% sure of the TR number since + ;; it's not listed anywhere officially + #:number "DIKU Report 89/12") + #:date 1989)) + +(define AbstractingControl + (make-bib + #:author (authors "Olivier Danvy" "Andrzej Filinski") + #:title "Abstracting Control" + #:location (proceedings-location lfp #:pages '(151 160)) + #:date 1990)) + +(define Gunter1995 + (make-bib + #:author (authors "Carl A. Gunter" "Remy Didier" "Jon G. Riecke") + #:title "A Generalization of Exceptions and Control in ML-like Languages" + #:location (proceedings-location fpca #:pages '(12 23)) + #:date 1995)) + +(define Kiselyov2007 + (make-bib + #:author (authors "Oleg Kiselyov" "Chung-chieh Shan") + #:title "A Substructural Type System for Delimited Continuations" + #:location (proceedings-location tlca #:pages '(223 239)) + #:date 2007)) + +(define Asai2007 + (make-bib + #:author (authors "Kenichi Asai" "Yukiyoshi Kameyama") + #:title "Polymorphic Delimited Continuations" + #:location (proceedings-location asplas #:pages '(239 254) #;#:series #;"LNCS 4807") + #:date 2007)) + +(define Dybvig2007 + (make-bib + #:author (authors "Kent Dybvig" + "Simon Peyton-Jones" + "Amr Sabry") + #:title "A Monadic Framework for Delimited Continuations" + #:location (journal-location jfp + #:volume 17 + #:number 6 + #:pages '(687 730)) + #:date 2007)) + +(define James2011 + (make-bib + #:author (authors "Roshan P. James" "Amr Sabry") + #:title "Yield: Mainstream Delimited Continuations" + #:location (proceedings-location "Theory and Practice of Delimited Continuations" #:pages '(20 32)) + #:date 2011)) + +(define control-tr + (make-bib + #:author (authors "Asumu Takikawa" "T. Stephen Strickland" "Sam Tobin-Hochstadt") + #:title "Constraining Delimited Control with Contracts" + #:location (techrpt-location #:institution "Northeastern University" + #:number "NU-CCIS-13-01") + #:date "2013")) + +;; ---------------------------------------- +; Education + +(define scriven-chapter-1967 + (make-bib + #:author "Michael Scriven" + #:title "The Methodology of Evaluation. Perspectives of Curriculum Evaluation" + #:location (book-location #:publisher "Rand McNally") + #:date 1967)) + +(define fcffksf-jfp-2002 + (make-bib + #:author (authors "Robert Bruce Findler" "John Clements" + "Cormac Flanagan" "Matthew Flatt" + "Shriram Krishnamurthi" "Paul Steckler" + "Matthias Felleisen") + #:title "DrScheme: a Programming Environment for Scheme" + #:location (journal-location jfp + #:volume 12 + #:number 2 + #:pages '(159 182)) + #:date 2002)) + +(define fffk-icfp-2009 + (make-bib + #:author (authors "Matthias Felleisen" "Robert Bruce Findler" + "Matthew Flatt" "Shriram Krishnamurthi") + #:title "A Functional I/O System (or Fun for Freshman Kids)" + #:location (proceedings-location icfp #:pages '(47 58)) + #:date 2009)) + +;; ---------------------------------------- +; Racket + +(define ffkf-icfp-1999 + (make-bib + #:author (authors "Matthew Flatt" "Rober Bruce Findler" + "Shriram Krishnamurthi" "Matthias Felleisen") + #:title "Programming Languages as Operating Systems (or Revenge of the Son of the Lisp Machine)" + #:location (proceedings-location icfp #:pages '(138 147)) + #:date 1999)) + +(define fff-asplas-2006 + (make-bib + #:author (authors "Matthew Flatt" "Robert Bruce Findler" + "Matthias Felleisen") + #:title "Scheme with Classes, Mixins, and Traits" + #:location (proceedings-location asplas #:pages '(270 289)) + #:date 2006)) + +(define fbf-icfp-2009 + (make-bib + #:author (authors "Matthew Flatt" "Eli Barzilay" + "Robert Bruce Findler") + #:title "Scribble: Closing the Book on Ad Hoc Documentation Tools" + #:location (proceedings-location icfp #:pages '(109 120)) + #:date 2009)) + +(define st-icfp-2013 + (make-bib + #:author (authors "Vincent St-Amour" "Neil Toronto") + #:title "Applying Random Testing to a Base Type Environment" + #:location (proceedings-location icfp #:pages '(351 356)) + #:date 2013)) + +(define saf-cc-2015 + (make-bib + #:author (authors "Vincent St-Amour" "Leif Andersen" "Matthias Felleisen") + #:title "Feature-specific Profiling" + #:location (proceedings-location cc #:pages '(49 68)) + #:date 2015)) + +(define stf-optimization-coaching + (make-bib + #:author (authors "Vincent St-Amour" "Sam Tobin-Hochstadt" "Matthias Felleisen") + #:title "Optimization coaching" + #:location (proceedings-location oopsla #:pages '(163 178)) + #:date 2012)) + +;; ---------------------------------------- +; Pycket + +(define fbpsth-dyla-2014 + (make-bib + #:author (authors "Carl Friedrich Bolz" "Tobias Pape" + "Jeremy G. Siek" "Sam Tobin-Hochstadt") + #:title "Meta-tracing makes a fast Racket" + #:location (proceedings-location dyla) + #:date 2014)) + +(define bauman-et-al-icfp-2015 + (make-bib + #:author (authors "Spenser Bauman" "Carl Friedrich Bolz" "Robert Hirschfield" + "Vasily Kirilichev" "Tobias Pape" "Jeremy G. Siek" + "Sam Tobin-Hochstadt") + #:title "Pycket: A Tracing JIT For a Functional Language" + #:location (proceedings-location icfp #:pages '(22 34)) + #:date 2015)) + +;; ---------------------------------------- +; Pluggable types + +(define bracha-pluggable-types + (make-bib + #:author "Gilad Bracha" + #:title "Pluggable Type Systems" + #:location (proceedings-location "OOPSLA Workshop on Revival of Dynamic Languages") + #:date 2004)) + +(define pacpe-issta-2008 + (make-bib + #:author (authors "Matthew M. Papi" "Mahmood Ali" "Telmo Louis Correa, Jr." + "Jeff H. Perkins" "Michael D. Ernst") + #:title "Practical Pluggable Types for Java" + #:location (proceedings-location issta #:pages '(201 212)) + #:date 2008)) + +;; ---------------------------------------- +; Ancient history + +(define moon-maclisp-1974 + (make-bib + #:author "David A. Moon" + #:title "MACLISP Reference Manual" + #:date 1974)) + diff --git a/icfp-2016/common.rkt b/icfp-2016/common.rkt new file mode 100644 index 0000000..dcec205 --- /dev/null +++ b/icfp-2016/common.rkt @@ -0,0 +1,135 @@ +#lang at-exp racket/base + +(provide (all-from-out "bib.rkt") + (all-from-out scriblib/footnote) + (all-from-out scriblib/figure) + (all-from-out scribble/eval) + (all-from-out scriblib/autobib) + (except-out (all-from-out scribble/manual) + author) + ~cite + citet + etal + exact + generate-bibliography + nrightarrow + parag + sf + id + ) + +(require "bib.rkt" + racket/class + racket/require + scribble/core + scribble/eval + scribble/manual + scriblib/autobib + scriblib/figure + scriblib/footnote + setup/main-collects + scribble/html-properties + scribble/latex-properties) + +(define autobib-style-extras + (let ([abs (lambda (s) + (path->main-collects-relative + (collection-file-path s "scriblib")))]) + (list + (make-css-addition (abs "autobib.css")) + (make-tex-addition (abs "autobib.tex"))))) + +(define bib-single-style (make-style "AutoBibliography" autobib-style-extras)) + +(define bibentry-style (make-style "Autobibentry" autobib-style-extras)) +(define colbibnumber-style (make-style "Autocolbibnumber" autobib-style-extras)) +(define colbibentry-style (make-style "Autocolbibentry" autobib-style-extras)) + +(define small-number-style + (new + (class object% + (define/public (bibliography-table-style) bib-single-style) + (define/public (entry-style) colbibentry-style) + (define/public (disambiguate-date?) #f) + (define/public (collapse-for-date?) #f) + (define/public (get-cite-open) "[") + (define/public (get-cite-close) "]") + (define/public (get-group-sep) ", ") + (define/public (get-item-sep) ", ") + (define/public (render-citation date-cite i) + (make-element + (make-style "Thyperref" (list (command-extras (list (make-label i))))) + (list (number->string i)))) + (define/public (render-author+dates author dates) dates) + (define (make-label i) + (string-append "autobiblab:" (number->string i))) + (define/public (bibliography-line i e) + (list (make-paragraph plain + (make-element colbibnumber-style + (list + (make-element (make-style "label" null) + (make-label i)) + "[" (number->string i) "]"))) + e)) + (super-new)))) + +(define author+date-style/link + (new + (class object% + (define/public (bibliography-table-style) bib-single-style) + (define/public (entry-style) bibentry-style) + (define/public (disambiguate-date?) #t) + (define/public (collapse-for-date?) #t) + (define/public (get-cite-open) "(") + (define/public (get-cite-close) ")") + (define/public (get-group-sep) "; ") + (define/public (get-item-sep) ", ") + (define/public (render-citation date-cite i) + (make-element + (make-style "Thyperref" (list (command-extras (list (make-label i))))) + date-cite)) + (define/public (render-author+dates author dates) + (list* author " " dates)) + (define (make-label i) + (string-append "autobiblab:" (number->string i))) + (define/public (bibliography-line i e) + (list (make-compound-paragraph + plain + (list (make-paragraph plain (list (make-element (make-style "label" null) + (make-label i)))) + e)))) + (super-new)))) + + +(define-cite ~cite citet generate-bibliography + ;; change this to small-number-style if you want the other way + #:style small-number-style + ) + +(define etal "et al.") + +(define nrightarrow (elem #:style "mynra")) + +(define (sf x) (elem #:style "sfstyle" x)) + +(define (parag . x) (apply elem #:style "paragraph" x)) + +(define (exact . items) + (make-element (make-style "relax" '(exact-chars)) + items)) + +(define (mt-line) (parag)) + +(define (def #:term (term #false) . x) + (make-paragraph plain + (list + (mt-line) + (bold "Definition") + (cons (if term (element #f (list " (" (defterm term) ") ")) " ") x) + (mt-line)))) + +;; Format an identifier +;; Usage: @id[x] +(define (id x) + (make-element plain @format["~a" x])) + diff --git a/icfp-2016/outline.scrbl b/icfp-2016/outline.scrbl new file mode 100644 index 0000000..624fd4e --- /dev/null +++ b/icfp-2016/outline.scrbl @@ -0,0 +1,5 @@ +#lang scribble/sigplan + +@title{Outline} +@; Applications + diff --git a/icfp-2016/paper.scrbl b/icfp-2016/paper.scrbl new file mode 100644 index 0000000..1db6f6f --- /dev/null +++ b/icfp-2016/paper.scrbl @@ -0,0 +1,25 @@ +#lang scribble/sigplan @onecolumn + +@(require "common.rkt") + +@authorinfo["Ben Greenman and Matthias Felleisen" + "Northeastern University, Boston, USA" + ""] + +@title{Functional Pearl: Do we @emph{really} need Dependent Types?} +@; Trivial differences, little things that count +@; Recall 'fexprs are trivial'? + +@abstract{ +  +} + +@category["D.3.3" "Programming Languages" "Language Constructs and Features"] +@terms{Performance, Experimentation, Measurement} +@;@keywords{Gradual typing, performance evaluation} + +@include-section{outline.scrbl} + +@;@section[#:style 'unnumbered]{Acknowledgments} + +@generate-bibliography[#:sec-title "References"] diff --git a/icfp-2016/paper.tex b/icfp-2016/paper.tex new file mode 100644 index 0000000..57dbefa --- /dev/null +++ b/icfp-2016/paper.tex @@ -0,0 +1,578 @@ +\documentclass[onecolumn]{sigplanconf} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{times} +\usepackage{qcourier} + +\newcommand{\packageGraphicx}{\usepackage{graphicx}} +\newcommand{\packageHyperref}{\usepackage{hyperref}} +\newcommand{\renewrmdefault}{\renewcommand{\rmdefault}{ptm}} +\newcommand{\packageRelsize}{\usepackage{relsize}} +\newcommand{\packageMathabx}{\usepackage{mathabx}} +% Avoid conflicts between "mathabx" and "wasysym": +\newcommand{\packageWasysym}{ + \let\leftmoon\relax \let\rightmoon\relax \let\fullmoon\relax \let\newmoon\relax \let\diameter\relax + \usepackage{wasysym}} +\newcommand{\packageTextcomp}{\usepackage{textcomp}} +\newcommand{\packageFramed}{\usepackage{framed}} +\newcommand{\packageHyphenat}{\usepackage[htt]{hyphenat}} +\newcommand{\packageColor}{\usepackage[usenames,dvipsnames]{color}} +\newcommand{\doHypersetup}{\hypersetup{bookmarks=true,bookmarksopen=true,bookmarksnumbered=true}} +\newcommand{\packageTocstyle}{\IfFileExists{tocstyle.sty}{\usepackage{tocstyle}\usetocstyle{standard}}{}} +\newcommand{\packageCJK}{\IfFileExists{CJK.sty}{\usepackage{CJK}}{}} + +% this bit intentionally left blank +% This is the default style configuration for Scribble-generated Latex + +\packageGraphicx +\packageHyperref +\renewrmdefault +\packageRelsize +\packageMathabx +\packageWasysym +\packageTextcomp +\packageFramed +\packageHyphenat +\packageColor +\doHypersetup +\packageTocstyle +\packageCJK + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Configuration that is especially meant to be overridden: + +% Inserted before every ``chapter'', useful for starting each one on a new page: +\newcommand{\sectionNewpage}{} +% Inserted before every book ``part'' +\newcommand{\partNewpage}{\sectionNewpage} + +% Hooks for actions within the `document' environment: +\newcommand{\preDoc}{} +\newcommand{\postDoc}{} + +% Generated by `secref'; first arg is section number, second is section title: +\newcommand{\BookRef}[2]{\emph{#2}} +\newcommand{\ChapRef}[2]{\SecRef{#1}{#2}} +\newcommand{\SecRef}[2]{section~#1} +\newcommand{\PartRef}[2]{part~#1} +% Generated by `Secref': +\newcommand{\BookRefUC}[2]{\BookRef{#1}{#2}} +\newcommand{\ChapRefUC}[2]{\SecRefUC{#1}{#2}} +\newcommand{\SecRefUC}[2]{Section~#1} +\newcommand{\PartRefUC}[2]{Part~#1} + +% Variants of the above with a label for an internal reference: +\newcommand{\BookRefLocal}[3]{\hyperref[#1]{\BookRef{#2}{#3}}} +\newcommand{\ChapRefLocal}[3]{\hyperref[#1]{\ChapRef{#2}{#3}}} +\newcommand{\SecRefLocal}[3]{\hyperref[#1]{\SecRef{#2}{#3}}} +\newcommand{\PartRefLocal}[3]{\hyperref[#1]{\PartRef{#2}{#3}}} +\newcommand{\BookRefLocalUC}[3]{\hyperref[#1]{\BookRefUC{#2}{#3}}} +\newcommand{\ChapRefLocalUC}[3]{\hyperref[#1]{\ChapRefUC{#2}{#3}}} +\newcommand{\SecRefLocalUC}[3]{\hyperref[#1]{\SecRefUC{#2}{#3}}} +\newcommand{\PartRefLocalUC}[3]{\hyperref[#1]{\PartRefUC{#2}{#3}}} + +% Variants of the above with a section number is empty (i.e., UnNumbered): +\newcommand{\BookRefUN}[1]{\BookRef{}{#1}} +\newcommand{\ChapRefUN}[1]{\SecRefUN{#1}} +\newcommand{\SecRefUN}[1]{``#1''} +\newcommand{\PartRefUN}[1]{\SecRefUN{#1}} +\newcommand{\BookRefUCUN}[1]{\BookRefUN{#1}} +\newcommand{\ChapRefUCUN}[1]{\ChapRefUN{#1}} +\newcommand{\SecRefUCUN}[1]{\SecRefUN{#1}} +\newcommand{\PartRefUCUN}[1]{\PartRefUN{#1}} + +\newcommand{\BookRefLocalUN}[2]{\hyperref[#1]{\BookRefUN{#2}}} +\newcommand{\ChapRefLocalUN}[2]{\SecRefLocalUN{#1}{#2}} +\newcommand{\SecRefLocalUN}[2]{\SecRefUN{#2} on page~\pageref{#1}} +\newcommand{\PartRefLocalUN}[2]{\SecRefLocalUN{#1}{#2}} +\newcommand{\BookRefLocalUCUN}[2]{\BookRefLocalUN{#1}{#2}} +\newcommand{\ChapRefLocalUCUN}[2]{\ChapRefLocalUN{#1}{#2}} +\newcommand{\SecRefLocalUCUN}[2]{\SecRefLocalUN{#1}{#2}} +\newcommand{\PartRefLocalUCUN}[2]{\PartRefLocalUN{#1}{#2}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Fonts + +% Font commands used by generated text: +\newcommand{\Scribtexttt}[1]{{\texttt{#1}}} +\newcommand{\textsub}[1]{$_{\hbox{\textsmaller{#1}}}$} +\newcommand{\textsuper}[1]{$^{\hbox{\textsmaller{#1}}}$} +\newcommand{\intextcolor}[2]{\textcolor{#1}{#2}} +\newcommand{\intextrgbcolor}[2]{\textcolor[rgb]{#1}{#2}} +\newcommand{\incolorbox}[2]{{\fboxrule=0pt\fboxsep=0pt\colorbox{#1}{#2}}} +\newcommand{\inrgbcolorbox}[2]{{\fboxrule=0pt\fboxsep=0pt\colorbox[rgb]{#1}{#2}}} +\newcommand{\plainlink}[1]{#1} +\newcommand{\techoutside}[1]{#1} +\newcommand{\techinside}[1]{#1} +\newcommand{\badlink}[1]{#1} +\newcommand{\indexlink}[1]{#1} +\newcommand{\noborder}[1]{#1} +\newcommand{\Smaller}[1]{\textsmaller{#1}} +\newcommand{\Larger}[1]{\textlarger{#1}} +\newcommand{\planetName}[1]{PLane\hspace{-0.1ex}T} +\newcommand{\slant}[1]{{\textsl{#1}}} + +% Used for <, >, and | in tt mode. For some fonts and installations, +% there seems to be an encoding issue, so pick T1 explicitly: +\newcommand{\Stttextmore}{{\fontencoding{T1}\selectfont>}} +\newcommand{\Stttextless}{{\fontencoding{T1}\selectfont<}} +\newcommand{\Stttextbar}{{\fontencoding{T1}\selectfont|}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Tables + +% The `stabular' environment seems to be the lesser of evils among +% page-breaking table environments (and we've made a copy as ``pltstabular' +% to make sure that it doesn't change). + +\makeatletter +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\message{pltstabular is a modification of stabular} +%% A renamed vsetion of: +%% stabular.sty +%% Copyright 1998 Sigitas Tolu\v sis +%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania +%% e-mail sigitas@vtex.lt +%% http://www.vtex.lt/tex/download/macros/ +%% +% This program can redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +% PURPOSE: Improve tabular environment. +% +% SHORT DESCRIPTION: +% +% Changed internal commands: \@mkpream, \@addamp, \@xhline +% +% Provides new commands in tabular (used after command \\): +% \emptyrow[#1] +% ------------- +% Adds empty row, #1 - height of the row +% +% \tabrow{#1}[#2] +% --------------- +% Adds row of natural height: #1\\[#2] +% +% Provides new environments: pltstabular and pltstabular* +% -------- --------- +% One more multi-page version of tabular +% +% +\def\empty@finalstrut#1{% + \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\z@} +\def\no@strut{\global\setbox\@arstrutbox\hbox{% + \vrule \@height\z@ + \@depth\z@ + \@width\z@}% + \gdef\@endpbox{\empty@finalstrut\@arstrutbox\par\egroup\hfil}% +}% +\def\yes@strut{\global\setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch \ht\strutbox + \@depth\arraystretch \dp\strutbox + \@width\z@}% + \gdef\@endpbox{\@finalstrut\@arstrutbox\par\egroup\hfil}% +}% +\def\@mkpream#1{\@firstamptrue\@lastchclass6 + \let\@preamble\@empty\def\empty@preamble{\add@ins}% + \let\protect\@unexpandable@protect + \let\@sharp\relax\let\add@ins\relax + \let\@startpbox\relax\let\@endpbox\relax + \@expast{#1}% + \expandafter\@tfor \expandafter + \@nextchar \expandafter:\expandafter=\reserved@a\do + {\@testpach\@nextchar + \ifcase \@chclass \@classz \or \@classi \or \@classii \or \@classiii + \or \@classiv \or\@classv \fi\@lastchclass\@chclass}% + \ifcase \@lastchclass \@acol + \or \or \@preamerr \@ne\or \@preamerr \tw@\or \or \@acol \fi} +\def\@addamp{% + \if@firstamp + \@firstampfalse + \edef\empty@preamble{\add@ins}% + \else + \edef\@preamble{\@preamble &}% + \edef\empty@preamble{\expandafter\noexpand\empty@preamble &\add@ins}% + \fi} +\newif\iftw@hlines \tw@hlinesfalse +\def\@xhline{\ifx\reserved@a\hline + \tw@hlinestrue + \else\ifx\reserved@a\Hline + \tw@hlinestrue + \else + \tw@hlinesfalse + \fi\fi + \iftw@hlines + \aftergroup\do@after + \fi + \ifnum0=`{\fi}% +} +\def\do@after{\emptyrow[\the\doublerulesep]} +\def\emptyrow{\noalign\bgroup\@ifnextchar[\@emptyrow{\@emptyrow[\z@]}} +\def\@emptyrow[#1]{\no@strut\gdef\add@ins{\vrule \@height\z@ \@depth#1 \@width\z@}\egroup% +\empty@preamble\\ +\noalign{\yes@strut\gdef\add@ins{\vrule \@height\z@ \@depth\z@ \@width\z@}}% +} +\def\tabrow#1{\noalign\bgroup\@ifnextchar[{\@tabrow{#1}}{\@tabrow{#1}[]}} +\def\@tabrow#1[#2]{\no@strut\egroup#1\ifx.#2.\\\else\\[#2]\fi\noalign{\yes@strut}} +% +\def\endpltstabular{\crcr\egroup\egroup \egroup} +\expandafter \let \csname endpltstabular*\endcsname = \endpltstabular +\def\pltstabular{\let\@halignto\@empty\@pltstabular} +\@namedef{pltstabular*}#1{\def\@halignto{to#1}\@pltstabular} +\def\@pltstabular{\leavevmode \bgroup \let\@acol\@tabacol + \let\@classz\@tabclassz + \let\@classiv\@tabclassiv \let\\\@tabularcr\@stabarray} +\def\@stabarray{\m@th\@ifnextchar[\@sarray{\@sarray[c]}} +\def\@sarray[#1]#2{% + \bgroup + \setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch\ht\strutbox + \@depth\arraystretch \dp\strutbox + \@width\z@}% + \@mkpream{#2}% + \edef\@preamble{% + \ialign \noexpand\@halignto + \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}% + \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox + \let\tabularnewline\\% +% \let\par\@empty + \let\@sharp##% + \set@typeset@protect + \lineskip\z@skip\baselineskip\z@skip + \@preamble} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatother + +\newenvironment{bigtabular}{\begin{pltstabular}}{\end{pltstabular}} +% For the 'boxed table style: +\newcommand{\SBoxedLeft}{\textcolor[rgb]{0.6,0.6,1.0}{\vrule width 3pt\hspace{3pt}}} +% Formerly used to keep the horizontal line for a definition on the same page: +\newcommand{\SEndFirstHead}[0]{ \nopagebreak \\ } +% Corrects weirdness when a table is the first thing in +% an itemization: +\newcommand{\bigtableinlinecorrect}[0]{~ + +\vspace{-\baselineskip}\vspace{\parskip}} +% Used to indent the table correctly in an itemization, since that's +% one of the things stabular gets wrong: +\newlength{\stabLeft} +\newcommand{\bigtableleftpad}{\hspace{\stabLeft}} +\newcommand{\atItemizeStart}[0]{\addtolength{\stabLeft}{\labelsep} + \addtolength{\stabLeft}{\labelwidth}} + + +% For a single-column table in simple environments, it's better to +% use the `list' environment instead of `stabular'. +\newenvironment{SingleColumn}{\begin{list}{}{\topsep=0pt\partopsep=0pt% +\listparindent=0pt\itemindent=0pt\labelwidth=0pt\leftmargin=0pt\rightmargin=0pt% +\itemsep=0pt\parsep=0pt}\item}{\end{list}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Etc. + +% ._ and .__ +\newcommand{\Sendabbrev}[1]{#1\@} +\newcommand{\Sendsentence}[1]{\@#1} + +% Default style for a nested flow: +\newenvironment{Subflow}{\begin{list}{}{\topsep=0pt\partopsep=0pt% +\listparindent=0pt\itemindent=0pt\labelwidth=0pt\leftmargin=0pt\rightmargin=0pt% +\itemsep=0pt}\item}{\end{list}} + +% For the 'inset nested-flow style: +\newenvironment{SInsetFlow}{\begin{quote}}{\end{quote}} + +% Indent a 'code-inset nested flow: +\newcommand{\SCodePreSkip}{\vskip\abovedisplayskip} +\newcommand{\SCodePostSkip}{\vskip\belowdisplayskip} +\newenvironment{SCodeFlow}{\SCodePreSkip\begin{list}{}{\topsep=0pt\partopsep=0pt% +\listparindent=0pt\itemindent=0pt\labelwidth=0pt\leftmargin=2ex\rightmargin=2ex% +\itemsep=0pt\parsep=0pt}\item}{\end{list}\SCodePostSkip} +\newcommand{\SCodeInsetBox}[1]{\setbox1=\hbox{\hbox{\hspace{2ex}#1\hspace{2ex}}}\vbox{\SCodePreSkip\vtop{\box1\SCodePostSkip}}} + +% Inset a 'vertical-inset nested flow: +\newcommand{\SVInsetPreSkip}{\vskip\abovedisplayskip} +\newcommand{\SVInsetPostSkip}{\vskip\belowdisplayskip} +\newenvironment{SVInsetFlow}{\SVInsetPreSkip\begin{list}{}{\topsep=0pt\partopsep=0pt% +\listparindent=0pt\itemindent=0pt\labelwidth=0pt\leftmargin=0pt\rightmargin=0pt% +\itemsep=0pt\parsep=0pt}\item}{\end{list}\SVInsetPostSkip} +\newcommand{\SVInsetBox}[1]{\setbox1=\hbox{\hbox{#1}}\vbox{\SCodePreSkip\vtop{\box1\SCodePostSkip}}} + +% The 'compact itemization style: +\newenvironment{compact}{\begin{itemize}}{\end{itemize}} +\newcommand{\compactItem}[1]{\item #1} + +% The nested-flow style for `centerline': +\newenvironment{SCentered}{\begin{trivlist}\item \centering}{\end{trivlist}} + +% The \refpara command corresponds to `margin-note'. The +% refcolumn and refcontent environments also wrap the note, +% because they simplify the CSS side. +\newcommand{\refpara}[1]{\normalmarginpar\marginpar{\raggedright \footnotesize #1}} +\newcommand{\refelem}[1]{\refpara{#1}} +\newenvironment{refcolumn}{}{} +\newenvironment{refcontent}{}{} + +\newcommand{\refparaleft}[1]{\reversemarginpar\marginpar{\raggedright \footnotesize #1}} +\newcommand{\refelemleft}[1]{\refparaleft{#1}} +\newenvironment{refcolumnleft}{}{} + +% Macros used by `title' and `author': +\newcommand{\titleAndVersionAndAuthors}[3]{\title{#1\\{\normalsize \SVersionBefore{}#2}}\author{#3}\maketitle} +\newcommand{\titleAndVersionAndEmptyAuthors}[3]{\title{#1\\{\normalsize \SVersionBefore{}#2}}#3\maketitle} +\newcommand{\titleAndEmptyVersionAndAuthors}[3]{\title{#1}\author{#3}\maketitle} +\newcommand{\titleAndEmptyVersionAndEmptyAuthors}[3]{\title{#1}\maketitle} +\newcommand{\SAuthor}[1]{#1} +\newcommand{\SAuthorSep}[1]{\qquad} +\newcommand{\SVersionBefore}[1]{Version } + +% Useful for some styles, such as sigalternate: +\newcommand{\SNumberOfAuthors}[1]{} + +\let\SOriginalthesubsection\thesubsection +\let\SOriginalthesubsubsection\thesubsubsection + +% sections +\newcommand{\Spart}[2]{\part[#1]{#2}} +\newcommand{\Ssection}[2]{\section[#1]{#2}\let\thesubsection\SOriginalthesubsection} +\newcommand{\Ssubsection}[2]{\subsection[#1]{#2}\let\thesubsubsection\SOriginalthesubsubsection} +\newcommand{\Ssubsubsection}[2]{\subsubsection[#1]{#2}} +\newcommand{\Ssubsubsubsection}[2]{{\bf #2}} +\newcommand{\Ssubsubsubsubsection}[2]{\Ssubsubsubsection{#1}{#2}} + +% "star" means unnumbered and not in ToC: +\newcommand{\Spartstar}[1]{\part*{#1}} +\newcommand{\Ssectionstar}[1]{\section*{#1}\renewcommand*\thesubsection{\arabic{subsection}}\setcounter{subsection}{0}} +\newcommand{\Ssubsectionstar}[1]{\subsection*{#1}\renewcommand*\thesubsubsection{\arabic{section}.\arabic{subsubsection}}\setcounter{subsubsection}{0}} +\newcommand{\Ssubsubsectionstar}[1]{\subsubsection*{#1}} +\newcommand{\Ssubsubsubsectionstar}[1]{{\bf #1}} +\newcommand{\Ssubsubsubsubsectionstar}[1]{\Ssubsubsubsectionstar{#1}} + +% "starx" means unnumbered but in ToC: +\newcommand{\Spartstarx}[2]{\Spartstar{#2}\addcontentsline{toc}{part}{#1}} +\newcommand{\Ssectionstarx}[2]{\Ssectionstar{#2}\addcontentsline{toc}{section}{#1}} +\newcommand{\Ssubsectionstarx}[2]{\Ssubsectionstar{#2}\addcontentsline{toc}{subsection}{#1}} +\newcommand{\Ssubsubsectionstarx}[2]{\Ssubsubsectionstar{#2}\addcontentsline{toc}{subsubsection}{#1}} +\newcommand{\Ssubsubsubsectionstarx}[2]{\Ssubsubsubsectionstar{#2}} +\newcommand{\Ssubsubsubsubsectionstarx}[2]{\Ssubsubsubsubsectionstar{#2}} + +% "grouper" is for the 'grouper style variant --- on subsections and lower, +% because \Spart is used for grouper at the section level. Grouper implies +% unnumbered. +\newcounter{GrouperTemp} +\newcommand{\Ssubsectiongrouper}[2]{\setcounter{GrouperTemp}{\value{subsection}}\Ssubsectionstarx{#1}{#2}\setcounter{subsection}{\value{GrouperTemp}}} +\newcommand{\Ssubsubsectiongrouper}[2]{\setcounter{GrouperTemp}{\value{subsubsection}}\Ssubsubsectionstarx{#1}{#2}\setcounter{subsubsection}{\value{GrouperTemp}}} +\newcommand{\Ssubsubsubsectiongrouper}[2]{\Ssubsubsubsectionstarx{#1}{#2}} +\newcommand{\Ssubsubsubsubsectiongrouper}[2]{\Ssubsubsubsubsectionstarx{#1}{#2}} + +\newcommand{\Ssubsectiongrouperstar}[1]{\setcounter{GrouperTemp}{\value{subsection}}\Ssubsectionstar{#1}\setcounter{subsection}{\value{GrouperTemp}}} +\newcommand{\Ssubsubsectiongrouperstar}[1]{\setcounter{GrouperTemp}{\value{subsubsection}}\Ssubsubsectionstar{#1}\setcounter{subsubsection}{\value{GrouperTemp}}} +\newcommand{\Ssubsubsubsectiongrouperstar}[1]{\Ssubsubsubsectionstar{#1}} +\newcommand{\Ssubsubsubsubsectiongrouperstar}[1]{\Ssubsubsubsubsectionstar{#1}} + +\newcommand{\Ssubsectiongrouperstarx}[2]{\setcounter{GrouperTemp}{\value{subsection}}\Ssubsectionstarx{#1}{#2}\setcounter{subsection}{\value{GrouperTemp}}} +\newcommand{\Ssubsubsectiongrouperstarx}[2]{\setcounter{GrouperTemp}{\value{subsubsection}}\Ssubsubsectionstarx{#1}{#2}\setcounter{subsubsection}{\value{GrouperTemp}}} +\newcommand{\Ssubsubsubsectiongrouperstarx}[2]{\Ssubsubsubsectionstarx{#1}{#2}} +\newcommand{\Ssubsubsubsubsectiongrouperstarx}[2]{\Ssubsubsubsubsectionstarx{#1}{#2}} + +% Generated by `subsubsub*section': +\newcommand{\SSubSubSubSection}[1]{\Ssubsubsubsubsectionstar{#1}} + +% For hidden parts with an empty title: +\newcommand{\notitlesection}{\vspace{2ex}\phantomsection\noindent} + +% To increments section numbers: +\newcommand{\Sincpart}{\stepcounter{part}} +\newcommand{\Sincsection}{\stepcounter{section}} +\newcommand{\Sincsubsection}{\stepcounter{subsection}} +\newcommand{\Sincsubsubsection}{\stepcounter{subsubsection}} +\newcommand{\Sincsubsubsubsection}{} +\newcommand{\Sincsubsubsubsubsection}{} + +% When brackets appear in section titles: +\newcommand{\SOpenSq}{[} +\newcommand{\SCloseSq}{]} + +% Helper for box-mode macros: +\newcommand{\Svcenter}[1]{$\vcenter{#1}$} + +% Helper to work around a problem with "#"s for URLs within \href +% within other macros: +\newcommand{\Shref}[3]{\href{#1\##2}{#3}} + +% For URLs: +\newcommand{\Snolinkurl}[1]{\nolinkurl{#1}} + +% History note: +\newcommand{\SHistory}[1]{\begin{smaller}#1\end{smaller}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Scribble then generates the following: +% +% \begin{document} +% \preDoc +% \titleAndVersion{...}{...} +% ... document content ... +% \postDoc +% \end{document} + +% Support for styles in scribble/sigplan + +% These are replaced by scribble/sigplan/style.tex, +% which is used in combination with sigplanconf.sty + +\newcommand{\SAuthorinfo}[3]{#1} +\newcommand{\SAuthorPlace}[1]{#1} +\newcommand{\SAuthorEmail}[1]{#1} + +\newcommand{\SConferenceInfo}[2]{} +\newcommand{\SCopyrightYear}[1]{} +\newcommand{\SCopyrightData}[1]{} +\newcommand{\Sdoi}[1]{} +\newcommand{\SPexclusivelicense}[0]{} + +\newcommand{\SCategory}[3]{} +\newcommand{\SCategoryPlus}[4]{} +\newcommand{\STerms}[1]{} +\newcommand{\SKeywords}[1]{} + +% Normally gets re-written by the title macro: +\newcommand{\SSubtitle}[1]{{\bf #1}} + +\newenvironment{AutoBibliography}{\begin{small}}{\end{small}} +\newcommand{\Autobibentry}[1]{\hspace{0.05\linewidth}\parbox[t]{0.95\linewidth}{\parindent=-0.05\linewidth#1\vspace{1.0ex}}} + +\usepackage{calc} +\newlength{\ABcollength} +\newcommand{\Autocolbibnumber}[1]{\parbox[t]{5ex}{\hfill#1~~\vspace{1.0ex}}} +\newcommand{\Autocolbibentry}[1]{\setlength{\ABcollength}{\linewidth-5ex}\parbox[t]{\ABcollength}{#1\vspace{1.0ex}}} + +% Define \SXtitle to lift \SSubtitle out: +\def\SXtitle#1{\title{\let\SSubtitle\SSubtitleDrop#1}\SExtractSubtitle#1\SExtractSubtitleDone} +\def\SSubtitleDrop#1{} +\def\SExtractSubtitleDone {} +\def\SExtractSubtitle{\futurelet\next\SExtractSubtitleX} +\def\SExtractSubtitleX#1{\ifx#1\SSubtitle \let\Snext\SWithSubtitle \else \let\Snext\SExtractSubtitleY \fi \Snext} +\def\SExtractSubtitleY{\ifx\next\SExtractSubtitleDone \let\Snext\relax \else \let\Snext\SExtractSubtitle \fi \Snext} +\def\SWithSubtitle#1{\subtitle{#1}\SExtractSubtitle} + +\renewcommand{\titleAndVersionAndAuthors}[3]{\SXtitle{#1}#3\maketitle} +\renewcommand{\titleAndEmptyVersionAndAuthors}[3]{\titleAndVersionAndAuthors{#1}{#2}{#3}} +\renewcommand{\titleAndVersionAndEmptyAuthors}[3]{\SXtitle{#1}\authorinfo{Anonymous}{}{}\maketitle} +\renewcommand{\titleAndEmptyVersionAndEmptyAuthors}[3]{\titleAndVersionAndEmptyAuthors{#1}{#2}{#3}} + +% Support plain `author' while enabling `authorinfo': for each +% use of \SAuthor, check whether it contains an \SAuthorinfo form: +\def\SAuthor#1{\SAutoAuthor#1\SAutoAuthorDone{#1}} +\def\SAutoAuthorDone#1{} +\def\SAutoAuthor{\futurelet\next\SAutoAuthorX} +\def\SAutoAuthorX{\ifx\next\SAuthorinfo \let\Snext\relax \else \let\Snext\SToAuthorDone \fi \Snext} +\def\SToAuthorDone{\futurelet\next\SToAuthorDoneX} +\def\SToAuthorDoneX#1{\ifx\next\SAutoAuthorDone \let\Snext\SAddAuthorInfo \else \let\Snext\SToAuthorDone \fi \Snext} +\newcommand{\SAddAuthorInfo}[1]{\authorinfo{#1}{}{}} + +\renewcommand{\SAuthorinfo}[3]{\authorinfo{#1}{#2}{#3}} +\renewcommand{\SAuthorSep}[1]{} + +\renewcommand{\SConferenceInfo}[2]{\conferenceinfo{#1}{#2}} +\renewcommand{\SCopyrightYear}[1]{\copyrightyear{#1}} +\renewcommand{\SCopyrightData}[1]{\copyrightdata{#1}} +\renewcommand{\Sdoi}[1]{\doi{#1}} +\renewcommand{\SPexclusivelicense}[0]{\exclusivelicense} + +\renewcommand{\SCategory}[3]{\category{#1}{#2}{#3}} +\renewcommand{\SCategoryPlus}[4]{\category{#1}{#2}{#3}[#4]} +\renewcommand{\STerms}[1]{\terms{#1}} +\renewcommand{\SKeywords}[1]{\keywords{#1}} + +% A later \doi will replace this one: +\doi{} +% Better horizontal rules +\usepackage{booktabs} + +% Use Tikz (and other pkgs) for Ben's picture +% xcolor MUST come first!!! https://en.wikibooks.org/wiki/LaTeX/Colors +\usepackage[usenames,dvipsnames]{xcolor} +\usepackage{tikz} +\usetikzlibrary{shapes.geometric} +\usepackage{graphicx} +\usepackage{multicol} + +% Override Scribble's default SecRef to numeric only +\renewcommand{\SecRef}[2]{~#1} + +\hypersetup{hidelinks} + +\usepackage[scaled=0.95]{zi4} +\usepackage[T1]{fontenc} + +% For bib style +\newcommand{\Thyperref}[2]{\hyperref[#2]{#1}} + +% Disable hrule for figures +\renewcommand{\Legend}[1]{~ \vspace{4pt} \legend{#1}} + +%%% From Ben's treepict work + +%% Import and print the pictures for a project +%% Arguments: +%% - Name of the project +\newcommand{\pict}[1]{\begin{tabular}{c}\scalebox{0.6}{\input{module-graphs/#1}}\end{tabular}} + +\newcommand{\rkt}[2]{$\bullet$} + +%% To show overfull, turn off for production!!! +\overfullrule=1mm + +%% Artifact badge! +\usepackage[firstpage]{draftwatermark} +\SetWatermarkText{\hspace*{8in}\raisebox{7.0in}{\includegraphics[scale=0.1]{aec-badge-popl}}} +\SetWatermarkAngle{0} + +%% balance last page columns +\usepackage{flushend} + +%% for figure 2 +\let\ulcorner\relax +\let\urcorner\relax +\let\llcorner\relax +\let\lrcorner\relax +\usepackage{amssymb} +\begin{document} +\preDoc +\titleAndEmptyVersionAndAuthors{Do we \textit{really} need Dependent Types?}{}{\SNumberOfAuthors{1}\SAuthor{\SAuthorinfo{Ben Greenman and Matthias Felleisen}{\SAuthorPlace{Northeastern University, Boston, USA}}{\SAuthorEmail{}}}} +\label{t:x28part_x22Dox5fwex5freallyx5fneedx5fDependentx5fTypesx5fx22x29} + + + +\begin{abstract}\end{abstract} + +\SCategory{D.3.3}{Programming Languages}{Language Constructs and Features} +\STerms{Performance, Experimentation, Measurement} + +\sectionNewpage + +\Ssection{Outline}{Outline}\label{t:x28part_x22Outlinex22x29} + + + +\Ssubsection{Story}{Story}\label{t:x28part_x22Storyx22x29} + + + +\Ssubsection{Applications}{Applications}\label{t:x28part_x22Applicationsx22x29} + + + +\sectionNewpage + +\Ssectionstarx{References}{References}\label{t:x28part_x22docx2dbibliographyx22x29} + +\begin{AutoBibliography}\begin{SingleColumn}\end{SingleColumn}\end{AutoBibliography} + +\postDoc +\end{document} diff --git a/icfp-2016/texstyle.tex b/icfp-2016/texstyle.tex new file mode 100644 index 0000000..d3295b6 --- /dev/null +++ b/icfp-2016/texstyle.tex @@ -0,0 +1,29 @@ +% Better horizontal rules +\usepackage{booktabs} + +\usepackage[usenames,dvipsnames]{xcolor} +\usepackage{multicol} + +% Override Scribble's default SecRef to numeric only +\renewcommand{\SecRef}[2]{~#1} + +\hypersetup{hidelinks} + +\usepackage[scaled=0.95]{zi4} +\usepackage[T1]{fontenc} + +% For bib style +\newcommand{\Thyperref}[2]{\hyperref[#2]{#1}} + +%% To show overfull, turn off for production!!! +\overfullrule=1mm + +%% balance last page columns +\usepackage{flushend} + +%% for figure 2 +\let\ulcorner\relax +\let\urcorner\relax +\let\llcorner\relax +\let\lrcorner\relax +\usepackage{amssymb}