├── .travis.yml ├── README.md └── check_urls.py /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - "3.4" 4 | install: pip install requests markdown beautifulsoup4 5 | script: python check_urls.py README.md 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Links to [accepted papers][icfp15-accepted] for the [20th ACM SIGPLAN International Conference on Functional Programming][icfp15] (ICFP 2015). 2 | 3 | [icfp15]: http://icfpconference.org/icfp2015/ 4 | [icfp15-accepted]: http://icfpconference.org/icfp2015/accepted.html 5 | 6 | (Similar pages are available for [ICFP 2012][icfp12], [ICFP 2013][icfp13] and [ICFP 2014][icfp14]. You may also be interested in [Haskell 2014 accepted papers][haskell2014-accepted] and [PLDI 2014 accepted papers][pldi2014-accepted].) 7 | 8 | Status of links at last commit: [![Build Status](https://travis-ci.org/mpickering/icfp2015-papers.svg)](https://travis-ci.org/mpickering/icfp2015-papers) 9 | 10 | [icfp12]: https://github.com/technogeeky/icfp12-paper-links 11 | [icfp13]: https://github.com/gasche/icfp2013-papers 12 | [icfp14]: https://github.com/yallop/icfp2014-papers 13 | [haskell2014-accepted]: https://github.com/yallop/haskell2014-papers 14 | [pldi2014-accepted]: https://github.com/yallop/pldi2014-papers 15 | 16 | ## ICFP 17 | 18 | * **Foundational Extensible Corecursion: A Proof Assistant Perspective** 19 | ([paper](http://www21.in.tum.de/~blanchet/fouco.pdf)) 20 | Jasmin Christian Blanchette (Inria & LORIA, Nancy), Andrei Popescu 21 | (Middlesex University), and Dmitriy Traytel (TU München) 22 | 23 | * **Noninterference for Free** 24 | ([paper](https://www.williamjbowman.com/resources/nonintforfree.pdf)) 25 | William J. Bowman (Northeastern University CCIS) and Amal Ahmed 26 | (Northeastern University CCIS) 27 | 28 | * **Adaptive Lock-Free Data: Purely-Functional to Scalable** 29 | ([paper])(http://www.cs.indiana.edu/~rrnewton/papers/icfp15_adaptive_data.pdf) 30 | Peter Fogg (Indiana University), Ali Varamesh (Indiana University), 31 | and Ryan R. Newton (Indiana University) 32 | 33 | * **Efficient Communication and Collection with Compact Normal Forms** 34 | ([paper](http://ezyang.com/papers/ezyang15-cnf.pdf)) 35 | Abhishek Kulkarni (Indiana University), Ahmed El-Hassany (Indiana 36 | University), Edward Z. Yang (Stanford University), Giovanni Campagna 37 | (Stanford University), Ryan Newton (Indiana University), and Ömer S. 38 | Ağacan (Indiana University) 39 | 40 | * **Partial Aborts for Transactions via First-Class Continuations** 41 | ([paper](http://www.cs.rit.edu/~ml9951/icfp15.pdf)) 42 | Matthew Le (Rochester Institute of Technology) and Matthew Fluet 43 | (Rochester Institute of Technology) 44 | 45 | * **Blame Assignment for Higher-Order Contracts with Intersection and Union** 46 | ([paper](http://www2.informatik.uni-freiburg.de/~keilr/papers/icfp2015-blame.pdf)) 47 | Matthias Keil (University of Freiburg) and Peter Thiemann 48 | (University of Freiburg) 49 | 50 | * **1ML - Core and modules united (F-ing first-class modules)** 51 | ([paper](https://www.mpi-sws.org/~rossberg/papers/Rossberg%20-%201ML%20--%20Core%20and%20modules%20united%20[Draft].pdf)) 52 | Andreas Rossberg (Google) 53 | 54 | * **RRB Vector: A Practical General Purpose Immutable Sequence** 55 | ([paper](http://infoscience.epfl.ch/record/213452/files/rrbvector.pdf)) 56 | Nicolas Stucki (EPFL, Switzerland), Tiark Rompf (Purdue University), 57 | and Vlad Ureche (EPFL, Switzerland) 58 | 59 | * **Pycket: A Tracing JIT For a Functional Language** 60 | ([paper](http://homes.soic.indiana.edu/samth/pycket-draft.pdf)) 61 | Spenser Bauman (Indiana University), Carl Friedrich Bolz (Kings 62 | College, London), Robert Hirschfeld (Hassno-Plattner-Institut, 63 | Potsdam), Vasily Krilichev (Hassno-Plattner-Institut, Potsdam), 64 | Tobias Pape (Hassno-Plattner-Institut, Potsdam), Jeremy G. Siek 65 | (Indiana University), and Sam Tobin-Hochstadt (Indiana University) 66 | 67 | * **An Optimizing Compiler for a Purely Functional Web-Application Language** 68 | ([paper](http://adam.chlipala.net/papers/UrWebICFP15/UrWebICFP15.pdf)) 69 | Adam Chlipala (MIT CSAIL) 70 | 71 | * **Expressing Contract Monitors as Patterns of Communication** 72 | ([paper](http://www.cswords.com/paper/mon.strats.pdf)) 73 | Cameron Swords (Indiana University), Amr Sabry (Indiana University), 74 | and Sam Tobin-Hochstadt (Indiana University) 75 | 76 | * **Functional Pearl: A Smart View on Datatypes** 77 | ([paper](http://www.fceia.unr.edu.ar/~mauro/pubs/smartviews/smartviews.pdf)) 78 | Mauro Jaskelioff (CIFASIS - CONICET) and Exequiel Rivas (CIFASIS - 79 | CONICET) 80 | 81 | * **Elaborating Evaluation-Order Polymorphism** 82 | ([paper](http://www.cs.cmu.edu/~joshuad/papers/eo/Dunfield15_evaluation.pdf)) 83 | Joshua Dunfield (University of British Columbia) 84 | 85 | * **Bounded Refinement Types** 86 | ([paper](http://goto.ucsd.edu/~nvazou/icfp15/main.pdf)) 87 | Niki Vazou (UC San Diego), Alexander Bakst (UC San Diego), and 88 | Ranjit Jhala (UC San Diego) 89 | 90 | * **XQuery and Static Typing: Tackling the Problem of Backward Axes** 91 | ([paper](https://hal.inria.fr/hal-01082635v2/document)) 92 | Pierre Genevès (CNRS) and Nils Gesbert (Université Grenoble Alpes) 93 | 94 | * **Certified Symbolic Management of Financial Multi-Party Contracts** 95 | ([paper](http://www.diku.dk/~paba/pubs/files/bahr15icfp-paper.pdf)) 96 | Patrick Bahr (University of Copenhagen), Jost Berthold (University 97 | of Copenhagen), and Martin Elsman (University of Copenhagen) 98 | 99 | * **GADTs meet their match** 100 | ([paper](http://research.microsoft.com/en-us/um/people/simonpj/papers/pattern-matching/gadtpm.pdf)) 101 | Georgios Karachalias (Ghent University), Tom Schrijvers (KU Leuven), 102 | Dimitrios Vytiniotis (Microsoft Research Cambridge), and Simon 103 | Peyton Jones (Microsoft Research Cambridge) 104 | 105 | * **Denotational cost semantics for functional languages with inductive types** 106 | ([paper](http://arxiv.org/pdf/1506.01949v1.pdf)) 107 | Norman Danner (Wesleyan University), Daniel R. Licata (Wesleyan 108 | University), and Ramyaa (Wesleyan University) 109 | 110 | * **Bidirectional Programming in a More Applicative Style** 111 | ([paper](http://www2.sf.ecei.tohoku.ac.jp/~kztk/papers/kztk_icfp2015.pdf)) 112 | Kazutaka Matsuda (The University of Tokyo) and Meng Wang (University 113 | of Kent) 114 | 115 | * **A Predictable Unification Algorithm for Coq Featuring Universe Polymorphism and Overloading** 116 | ([paper](http://www.pps.univ-paris-diderot.fr/~sozeau/research/publications/drafts/unif.pdf)) 117 | Beta Ziliani (MPI-SWS) and Matthieu Sozeau (Inria & PPS, Université 118 | Paris Diderot) 119 | 120 | * **Practical Principled FRP: Forget the past, change the future, FRPNow!** 121 | ([paper](http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf)) 122 | Atze van der Ploeg (Chalmers University of Technology) and Koen 123 | Claessen (Chalmers University of Technology) 124 | 125 | * **Analysing the Complexity of Functional Programs: Higher-Order Meets First-Order** 126 | ([paper](http://arxiv.org/pdf/1506.05043v1.pdf)) 127 | Martin Avanzini (University of Bologna, Italy & Inria, France), Ugo 128 | Dal Lago (University of Bologna, Italy & Inria, France), and Georg 129 | Moser (University of Innsbruck) 130 | 131 | * **Generating Performance Portable Code using Rewrite Rules: From High-level Functional Expressions to High-Performance OpenCL Code** 132 | ([paper](http://homepages.inf.ed.ac.uk/slindley/papers/array-gpu-draft-february2015.pdf)) 133 | Michel Steuwer (The University of Edinburgh, UK), Christian Fensch 134 | (Heriot-Watt University, UK), Sam Lindley (The University of 135 | Edinburgh, UK), and Christophe Dubach (The University of Edinburgh, 136 | UK) 137 | 138 | * **Hygienic Resugaring of Compositional Desugaring** 139 | ([paper](http://cs.brown.edu/~sk/Publications/Papers/Published/pk-hyg-resugaring-comp-desugaring/paper.pdf)) 140 | Justin Pombrio (Brown University) and Shriram Krishnamurthi (Brown 141 | University) 142 | 143 | * **Functional Pearl: Two can keep a secret, if one of them uses Haskell** 144 | ([paper](http://www.cse.chalmers.se/~russo/publications_files/pearl-russo.pdf)) 145 | Alejandro Russo (Chalmers University of Technology) 146 | 147 | * **Which simple types have a unique inhabitant?** 148 | ([paper](http://gallium.inria.fr/~scherer/research/unique_inhabitants/unique_stlc_sums-long.pdf)) 149 | Gabriel Scherer (INRIA) and Didier Rémy (INRIA) 150 | 151 | * **HLIO: Mixing Static and Dynamic Typing for Information-Flow Control in Haskell** 152 | ([paper](http://www.cse.chalmers.se/~russo/publications_files/hybrid-icfp2015.pdf)) 153 | Pablo Buiras (Chalmers University of Technology), Dimitrios 154 | Vytiniotis (Microsoft Research), and Alejandro Russo (Chalmers 155 | University of Technology) 156 | 157 | * **Algebras and Coalgebras in the Light Affine Lambda Calculus** 158 | ([paper])(https://hal.inria.fr/hal-01112165/file/main.pdf) 159 | Marco Gaboardi (University of Dundee and Harvard University) and 160 | Romain Péchoux (Universitè de Lorraine) 161 | 162 | * **Functional Pearl: A SQL to C Compiler in 500 Lines of Code** 163 | ([paper](https://www.cs.purdue.edu/homes/rompf/papers/rompf-icfp15.pdf)) 164 | Tiark Rompf (Purdue University) and Nada Amin (EPFL) 165 | 166 | * **A Fast Compiler for NetKAT** 167 | ([paper](http://arxiv.org/pdf/1506.06378v2.pdf)) 168 | Steffen Smolka (Cornell University), Spiridon Eliopoulos (Inhabited 169 | Type), Nate Foster (Cornell University), and Arjun Guha (University 170 | of Massachusetts Amherst) 171 | 172 | * **Structures for structural recursion** 173 | ([paper](http://ix.cs.uoregon.edu/~pdownen/publications/structure-recursion.pdf)) 174 | Paul Downen (University of Oregon), Philip Johnson-Freyd (University 175 | of Oregon), and Zena M. Ariola (University of Oregon) 176 | 177 | * **Automatic Refunctionalization to a Language with Copattern Matching: With Applications to the Expression Problem** 178 | ([paper](http://ps.informatik.uni-tuebingen.de/publications/rendel15automatic.pdf)) 179 | Tillmann Rendel (University of Tübingen), Julia Trieflinger 180 | (University of Tübingen), and Klaus Ostermann (University of 181 | Tübingen) 182 | 183 | * **Pilsner: A Compositionally Verified Compiler for a Higher-Order Imperative Language** 184 | ([paper](https://www.mpi-sws.org/~viktor/papers/pilsner.pdf)) 185 | Georg Neis (MPI-SWS, Germany), Chung-Kil Hur (Seoul National 186 | University), Jan-Oliver Kaiser (MPI-SWS, Germany), Craig McLaughlin 187 | (University of Glasgow), Derek Dreyer (MPI-SWS, Germany), and Viktor 188 | Vafeiadis (MPI-SWS, Germany) 189 | 190 | * **Practical SMT-Based Type Error Localization** 191 | ([paper](http://www.cs.nyu.edu/~zvonimir/papers/icfp15.pdf)) 192 | Zvonimir Pavlinovic (New York University), Tim King (Verimag), and 193 | Thomas Wies (New York University) 194 | 195 | * **Learning Refinement Types** 196 | ([paper](http://research.microsoft.com/pubs/245062/icfp_my_version.pdf)) 197 | He Zhu (Purdue University), Aditya V. Nori (Microsoft Research), and 198 | Suresh Jagannathan (Purdue University) 199 | -------------------------------------------------------------------------------- /check_urls.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | ### Validate URLs found in markdown documents using HEAD requests 4 | 5 | import sys, markdown, requests, bs4 as BeautifulSoup 6 | 7 | def check_url(url): 8 | try: 9 | return bool(requests.head(url, allow_redirects=True)) 10 | except Exception as e: 11 | print ('Error checking URL %s: %s' % (url, e)) 12 | return False 13 | 14 | def retrieve_urls(filename): 15 | with open(filename) as fd: 16 | mdtext = fd.read() 17 | html_text = markdown.markdown(mdtext) 18 | soup = BeautifulSoup.BeautifulSoup(html_text) 19 | return [a['href'] for a in soup.findAll('a')] 20 | 21 | def check_urls(filename): 22 | print ('checking URLs for %s' % (filename,)) 23 | ok = True 24 | for url in retrieve_urls(filename): 25 | msg = 'Checking %s => ' % (url,) 26 | if check_url(url): 27 | print (msg + 'OK') 28 | else: 29 | print (msg + 'FAILED') 30 | ok = False 31 | return ok 32 | 33 | def main(): 34 | ok = True 35 | for filename in sys.argv[1:]: 36 | try: 37 | ok &= check_urls(filename) 38 | except IOError as e: 39 | print (e) 40 | ok = False 41 | exit (0 if ok else 1) 42 | 43 | if __name__ == '__main__': 44 | main() 45 | --------------------------------------------------------------------------------