9 European Lisp Symposium
Total Page:16
File Type:pdf, Size:1020Kb
Proceedings of the 9th European Lisp Symposium AGH University of Science and Technology, Kraków, Poland May 9 – 10, 2016 Irène Durand (ed.) ISBN-13: 978-2-9557474-0-7 Contents Preface v Message from the Programme Chair . vii Message from the Organizing Chair . viii Organization ix Programme Chair . xi Local Chair . xi Programme Committee . xi Organizing Committee . xi Sponsors . xii Invited Contributions xiii Program Proving with Coq – Pierre Castéran .........................1 Julia: to Lisp or Not to Lisp? – Stefan Karpinski .......................1 Lexical Closures and Complexity – Francis Sergeraert ...................2 Session I: Language design3 Refactoring Dynamic Languages Rafael Reia and António Menezes Leitão ..........................5 Type-Checking of Heterogeneous Sequences in Common Lisp Jim E. Newton, Akim Demaille and Didier Verna ..................... 13 A CLOS Protocol for Editor Buffers Robert Strandh ....................................... 21 Session II: Domain Specific Languages 29 Using Lisp Macro-Facilities for Transferable Statistical Tests Kay Hamacher ....................................... 31 A High-Performance Image Processing DSL for Heterogeneous Architectures Kai Selgrad, Alexander Lier, Jan Dörntlein, Oliver Reiche and Marc Stamminger .... 39 Session III: Implementation 47 A modern implementation of the LOOP macro Robert Strandh ....................................... 49 Source-to-Source Compilation via Submodules Tero Hasu and Matthew Flatt ............................... 57 Extending Software Transactional Memory in Clojure with Side-Effects and Transac- tion Control Søren Kejser Jensen and Lone Leth Thomsen ........................ 65 Session IV: Applications 73 CANDO: A Compiled Programming Language for Computer-Aided Nanomaterial Design and Optimization Based on Clasp Common Lisp Christian E. Schafmeister .................................. 75 iii A Case Study in Implementation-Space Exploration Alexander Lier, Linus Franke, Marc Stamminger and Kai Selgrad ............ 83 Demonstrations 91 Accessing local variables during debugging Michael Raskin and Nikita Mamardashvili ........................ 93 Building Common Lisp programs using Bazel James Y. Knight, François-René Rideau and Andrzej Walczak .............. 95 Fast Interactive Functional Computer Vision with Racket Benjamin Seppke and Leonie Dreschler–Fischer ...................... 97 An Inferred System Description James Anderson ....................................... 99 Distributed High Performance Computing in Common Lisp Marco Heisig and Nicolas Neuss .............................. 101 iv ELS 2016 Preface Message from the Programme Chair Welcome to the 9thth edition of the European Lisp Symposium! From language implementation to applications through systems tools, language extensions and Domain Specific Languages, we have a great variety of contributions. Many dialects of the Lisp family are represented as well – Common Lisp, Racket, Clojure and Julia – showing the diversity of the community. I thank the program committee members for their relevant reviews, their responsiveness and timeliness. I thank the steering commitee of ELS for entrusting me this task of which I had no previous experience. I thank Michał Psota for giving life to these contributions in organizing the conference in Kraków. Many thanks to Didier Verna who assisted me all along the process, taking care of distributing calls and helping me whether for practical matters or for scientific decisions. Finally, thanks to the authors, to all those that submitted contributions, and to the participants for keeping the community alive. I hope you have a great time. Irène Durand, Bordeaux, May 2016 ELS 2016 vii Message from the Organizing Chair Welcome to Kraków! Kraków is one of the oldest cities in Poland, the place where many of the Polish kings lived and ruled, this was the capital city until the 18th century. According to an old legend the city was built by ’Krakus’ above a cave occupied by a Dragon. The city is one of the leading centers of Polish academic, cultural, and artistic life. Today one can discover many attractions here – walking around the main market square, shopping at the old Cloth Hall, admiring the Wawel Castle – the residence of Polish Kings, listening to the famous trumpet signal from the top of St. Mary’s Basilica that’s being transmitted throughout Poland every day at noon through the national radio. The AGH University of Science and Technology which is hosting us now, was established in 1919 as the University of Mining and Metallurgy. Today it is a respectable University with well-qualified staff, doing innovative research. I am really glad so many people have registered and come to Poland to listen about the Lisp language family. I hope you will have good time not only at the lecture room, but also outside wandering around the city. It would be really hard to organize a symposium without help. I would like to thank Didier Verna, his experience and patience to guide me through the process was invaluable (This is the first symposium I’m helping organizing). I would like to also thank "BIT" – a students’ scientific association which is hosting us together with the Department of Computer Science. Last but not least I would like to thank all other sponsors for their support: EPITA, Université de Bordeaux, LispWorks, Franz Inc. I hope you enjoy your time at the 9th European Lisp Symposium and those few days you are spending in Poland. Michał Psota, Kraków, May 2016 Organization Programme Chair • Irène Anne Durand, University of Bordeaux, France Local Chair • Michał Psota — Emergent Network Defense, Kraków, Poland Programme Committee • Antonio Leitao — INESC-ID/IST, Universidade de Lisboa, Portugal • Charlotte Heerzel — IMEC, Leuven, Belgium • Christian Queinnec — University Pierre et Marie Curie, Paris 6, France • Christophe Rhodes — Goldsmiths, University of London, United Kingdom • Didier Verna — EPITA Research and Development Laboratory, France • Erick Gallesio — University of Nice-Sophia Antipolis, France • François-René Rideau, Google, USA • Giuseppe Attardi — University of Pisa, Italy • Kent Pitman, HyperMeta Inc., USA • Leonie Dreschler-Fischer — University of Hamburg, Germany • Pascal Costanza — Intel Corporation, Belgium • Robert Strandh — University of Bordeaux, France Organizing Committee • Michał Psota — Emergent Network Defense, Kraków, Poland • Maciej Ciołek — Scientific Society BIT, AGH University of Science and Technology, Kraków, Poland ELS 2016 xi Sponsors We gratefully acknowledge the support given to the 9thth European Lisp Symposium by the following sponsors: AGH University of Science and Technology Kraków, Poland www.agh.edu.pl/en Kolo Naukowe Kraków, Poland http://knbit. edu.pl/en/ EPITA 14-16 rue Voltaire FR-94276 Le Kremlin-Bicêtre CEDEX France www.epita.fr Université de Bordeaux Excellence Initiative Collège Science et Technologie 351 cours de la libération 33405 Talence Cedex France www.u-bordeaux.fr LispWorks Ltd. St John’s Innovation Centre Cowley Road Cambridge, CB4 0WS England www.lispworks.com Franz Inc. 2201 Broadway, Suite 715 Oakland, CA 94612 www.franz.com xii ELS 2016 Invited Contributions Program Proving with Coq Pierre Castéran, LaBRI, University of Bordeaux, France This talk aims to present some aspects of the Coq proof assistant, mainly the possibility of veri- fying and/or synthesizing correct programs. The talk will start with an introduction to the main features of Coq, both as a statically typed functional programming language and as a proof assistant, i.e. a tool for helping its user to prove theorems, including — but not limited to — correctness statements about his/her pro- grams. In the second part of the talk, we propose to use the efficient computation of powers of the form xn as a pretext for presenting various techniques for obtaining certified programs within the Coq system, with various levels of automaticity. Besides “classical” proof methods, we will present briefly some approaches and compare them with respect to their ability to efficiently return correctness proofs. • Proof by reflection, • The “refinement for free” approach, • Composition of certified components (correctness by construction) Pierre Castéran is an associate professor at the University of Bordeaux. His research interests are type theory, interactive theorem proving and programming language semantics. He co-authored the book on Coq: "Interactive Theorem Proving and Program Development" with Yves Bertot, and is the scientific co-organizer of 7 international summer schools on Coq, 2 in Paris, 4 in China, and 1 in Japan. He also co- authored two tutorials on advanced features of Coq: inductive and co- inductive types, type classes and generalized rewriting. Pierre Castéran is now working on a sequel of the aforementionned book, dedicated to the presentation of recent trends in using the Coq proof assistant. Pierre Castéran is one of the nine co-laureates of the ACM Software Systems Award given to the Coq Proof Assistant (2013). ∗ ∗ ∗ ∗ ∗ Julia: to Lisp or Not to Lisp? Stefan Karpinski, Julia Computing and New York University, New York, USA Julia is a general purpose dynamic language, designed to make numerical computing fast and convenient. Many aspects of Julia should be quite familiar since they are "stolen" straight from Lisp: it’s expression-oriented, lexically scoped, has closures, coroutines, and macros that oper- ate on code as data. But Julia departs from the Lisp tradition in other ways. Julia has syntax – lots of it. Macro invocations