default search action
Proceedings of the ACM on Programming Languages, Volume 1
Volume 1, Number ICFP, September 2017
- Vincent St-Amour, Daniel Feltey, Spencer P. Florence, Shu-Hung You, Robert Bruce Findler:
Herbarium Racketensis: a stroll through the woods (functional pearl). 1:1-1:15 - Ivan Perez, Henrik Nilsson:
Testing and debugging functional reactive programming. 2:1-2:27 - Joachim Breitner, Chris Smith:
Lock-step simulation is child's play (experience report). 3:1-3:15 - Benjamin Canou, Roberto Di Cosmo, Grégoire Henry:
Scaling up functional programming education: under the hood of the OCaml MOOC. 4:1-4:25
- J. Michael Spivey:
Faster coroutine pipelines. 5:1-5:23 - Jean-Philippe Bernardy:
A pretty but not greedy printer (functional pearl). 6:1-6:21 - Conal Elliott:
Generic functional parallel algorithms: scan and FFT. 7:1-7:25 - William E. Byrd, A. Ballantyne, Gregory Rosenblatt, Matthew Might:
A unified approach to solving seven programming problems (functional pearl). 8:1-8:26
- Joshua S. Auerbach, Martin Hirzel, Louis Mandel, Avraham Shinnar, Jérôme Siméon:
Prototyping a query compiler using Coq (experience report). 9:1-9:15 - Daniel Winograd-Cort, Andreas Haeberlen, Aaron Roth, Benjamin C. Pierce:
A framework for adaptive differential privacy. 10:1-10:29 - Praveen Narayanan, Chung-chieh Shan:
Symbolic conditioning of arrays in probabilistic programs. 11:1-11:25
- David Darais, Nicholas Labich, Phuc C. Nguyen, David Van Horn:
Abstracting definitional interpreters (functional pearl). 12:1-12:25 - Yannick Forster, Ohad Kammar, Sam Lindley, Matija Pretnar:
On the expressive power of user-defined effects: effect handlers, monadic reflection, delimited control. 13:1-13:29 - Wilmer Ricciotti, Jan Stolarek, Roly Perera, James Cheney:
Imperative functional programs that explain their work. 14:1-14:28 - Jan Midtgaard, Mathias Nygaard Justesen, Patrick Kasting, Flemming Nielson, Hanne Riis Nielson:
Effect-driven QuickChecking of compilers. 15:1-15:23
- Juan Pedro Bolívar Puente:
Persistence for the masses: RRB-vectors in a systems language. 16:1-16:28 - Jonathan Protzenko, Jean Karim Zinzindohoué, Aseem Rastogi, Tahina Ramananandro, Peng Wang, Santiago Zanella Béguelin, Antoine Delignat-Lavaud, Catalin Hritcu, Karthikeyan Bhargavan, Cédric Fournet, Nikhil Swamy:
Verified low-level programming embedded in F. 17:1-17:29 - Scott Owens, Michael Norrish, Ramana Kumar, Magnus O. Myreen, Yong Kiam Tan:
Verifying efficient function calls in CakeML. 18:1-18:27 - Geoffrey Mainland:
Better living through operational semantics: an optimizing compiler for radio protocols. 19:1-19:26
- Thibaut Balabonski, Pablo Barenbaum, Eduardo Bonelli, Delia Kesner:
Foundations of strong call by need. 20:1-20:29 - Alejandro Aguirre, Gilles Barthe, Marco Gaboardi, Deepak Garg, Pierre-Yves Strub:
A relational logic for higher-order programs. 21:1-21:29 - Makoto Hamana:
How to prove your calculus is decidable: practical applications of second-order algebraic theories and computation. 22:1-22:28 - Milo Davis, William Meehan, Olin Shivers:
No-brainer CPS conversion (functional pearl). 23:1-23:25
- Joonwon Choi, Muralidaran Vijayaraghavan, Benjamin Sherman, Adam Chlipala, Arvind:
Kami: a platform for high-level parametric hardware specification and its modular verification. 24:1-24:30 - Konstantin Weitz, Steven Lyubomirsky, Stefan Heule, Emina Torlak, Michael D. Ernst, Zachary Tatlock:
SpaceSearch: a library for building and verifying solver-aided tools. 25:1-25:28 - Benjamin Cosman, Ranjit Jhala:
Local refinement typing. 26:1-26:27
- Conal Elliott:
Compiling to categories. 27:1-27:27 - François Pottier:
Visitors unchained. 28:1-28:28 - Jeremy Yallop:
Staged generic programming. 29:1-29:29
- Leif Andersen, Stephen Chang, Matthias Felleisen:
Super 8 languages for making movies (functional pearl). 30:1-30:29
- Stephanie Weirich, Antoine Voizard, Pedro Henrique Azevedo de Amorim, Richard A. Eisenberg:
A specification for dependent types in Haskell. 31:1-31:29 - Andreas Nuyts, Andrea Vezzosi, Dominique Devriese:
Parametric quantifiers for dependent type theory. 32:1-32:29 - Andreas Abel, Andrea Vezzosi, Théo Winterhalter:
Normalization by evaluation for sized dependent types. 33:1-33:30 - Gabriel Ebner, Sebastian Ullrich, Jared Roesch, Jeremy Avigad, Leonardo de Moura:
A metaprogramming framework for formal verification. 34:1-34:29
- Hernán C. Melgratti, Luca Padovani:
Chaperone contracts for higher-order sessions. 35:1-35:29 - Lucas Waye, Stephen Chong, Christos Dimoulas:
Whip: higher-order contracts for modern services. 36:1-36:28 - Stephanie Balzer, Frank Pfenning:
Manifest sharing with session types. 37:1-37:29 - Atsushi Igarashi, Peter Thiemann, Vasco T. Vasconcelos, Philip Wadler:
Gradual session types. 38:1-38:28
- Amal Ahmed, Dustin Jamner, Jeremy G. Siek, Philip Wadler:
Theorems for free for free: parametricity, with and without types. 39:1-39:28 - Yuu Igarashi, Taro Sekiyama, Atsushi Igarashi:
On polymorphic gradual typing. 40:1-40:29 - Giuseppe Castagna, Victor Lanvin:
Gradual typing with union and intersection types. 41:1-41:28
- J. Garrett Morris, Richard A. Eisenberg:
Constrained type families. 42:1-42:28 - Martin Avanzini, Ugo Dal Lago:
Automating sized-type inference for complexity analysis. 43:1-43:29 - Justin Pombrio, Shriram Krishnamurthi, Mitchell Wand:
Inferring scope through syntactic sugar. 44:1-44:28
Volume 1, Number OOPSLA, October 2017
- Izzat El Hajj, Thomas B. Jablin, Dejan S. Milojicic, Wen-Mei W. Hwu:
SAVI objects: sharing and virtuality incorporated. 45:1-45:24 - Marianna Rapoport, Ifaz Kabir, Paul He, Ondrej Lhoták:
A simple soundness proof for dependent object types. 46:1-46:27 - Yanpeng Yang, Bruno C. d. S. Oliveira:
Unifying typing and subtyping. 47:1-47:26 - Avik Chaudhuri, Panagiotis Vekris, Sam Goldman, Marshall Roch, Gabriel Levi:
Fast and precise type checking for JavaScript. 48:1-48:30
- Lun Liu, Todd D. Millstein, Madanlal Musuvathi:
A volatile-by-default JVM for server applications. 49:1-49:25 - Gabriel Poesia, Breno Campos Ferreira Guimarães, Fabricio Ferracioli, Fernando Magno Quintão Pereira:
Static placement of computation on heterogeneous devices. 50:1-50:28 - Sarah E. Chasins, Rastislav Bodík:
Skip blocks: reusing execution history to accelerate web scripts. 51:1-51:28 - Edd Barrett, Carl Friedrich Bolz-Tereick, Rebecca Killick, Sarah Mount, Laurence Tratt:
Virtual machine warmup blows hot and cold. 52:1-52:27
- Tomoharu Ugawa, Tatsuya Abe, Toshiyuki Maeda:
Model checking copy phases of concurrent copying garbage collection with various memory models. 53:1-53:26 - Spenser Bauman, Carl Friedrich Bolz-Tereick, Jeremy G. Siek, Sam Tobin-Hochstadt:
Sound gradual typing: only mostly dead. 54:1-54:24 - Gregor Richards, Ellen Arteca, Alexi Turcotte:
The VM already knew that: leveraging compile-time knowledge to optimize gradual typing. 55:1-55:27 - Fabian Muehlboeck, Ross Tate:
Sound gradual typing is nominally alive and well. 56:1-56:30
- Xin Zhang, Radu Grigore, Xujie Si, Mayur Naik:
Effective interactive resolution of static analysis alarms. 57:1-57:30 - Binhang Yuan, Vijayaraghavan Murali, Christopher M. Jermaine:
Abridging source code. 58:1-58:26 - Guilherme Cavalcanti, Paulo Borba, Paola R. G. Accioly:
Evaluating and improving semistructured merge. 59:1-59:27 - Eric L. Seidel, Huma Sibghat, Kamalika Chaudhuri, Westley Weimer, Ranjit Jhala:
Learning to blame: localizing novice type errors with data-driven diagnosis. 60:1-60:27
- Venkatesh Srinivasan, Ara Vartanian, Thomas W. Reps:
Model-assisted machine-code synthesis. 61:1-61:26 - Xinyu Wang, Isil Dillig, Rishabh Singh:
Synthesis of data completion scripts using finite tree automata. 62:1-62:26 - Navid Yaghmazadeh, Yuepeng Wang, Isil Dillig, Thomas Dillig:
SQLizer: query synthesis from natural language. 63:1-63:26 - Mark Santolucito, Ennan Zhai, Rahul Dhodapkar, Aaron Shim, Ruzica Piskac:
Synthesizing configuration file specifications with association rule learning. 64:1-64:20 - Xiaokang Qiu, Armando Solar-Lezama:
Natural synthesis of provably-correct data-structure manipulations. 65:1-65:28
- Christoffer Quist Adamsen, Anders Møller, Frank Tip:
Practical initialization race detection for JavaScript web applications. 66:1-66:22 - Nachshon Cohen, Michal Friedman, James R. Larus:
Efficient logging in non-volatile memory by exploiting coherency protocols. 67:1-67:24 - Neville Grech, George Fourtounis, Adrian Francalanza, Yannis Smaragdakis:
Heaps don't lie: countering unsoundness with heap snapshots. 68:1-68:27 - Benjamin P. Wood, Man Cao, Michael D. Bond, Dan Grossman:
Instrumentation bias for dynamic data race detection. 69:1-69:31
- Yizhou Zhang, Andrew C. Myers:
Familia: unifying interfaces, type classes, and family polymorphism. 70:1-70:31 - Adrian Sampson, Kathryn S. McKinley, Todd Mytkowicz:
Static stages for heterogeneous programming. 71:1-71:27 - Sylvan Clebsch, Juliana Franco, Sophia Drossopoulou, Albert Mingkun Yang, Tobias Wrigstad, Jan Vitek:
Orca: GC and type system co-design for actor languages. 72:1-72:28 - Ryan G. Scott, Omar S. Navarro Leija, Joseph Devietti, Ryan R. Newton:
Monadic composition for deterministic, parallel batch processing. 73:1-73:26
- Yufei Ding, Xipeng Shen:
GLORE: generalized loop redundancy elimination upon LER-notation. 74:1-74:28 - Dominic A. Orchard, Mistral Contrastin, Matthew Danish, Andrew C. Rice:
Verifying spatial properties of array computations. 75:1-75:30 - Laith Sakka, Kirshanthan Sundararajah, Milind Kulkarni:
TreeFuser: a framework for analyzing and fusing general recursive tree traversals. 76:1-76:30 - Fredrik Kjolstad, Shoaib Kamil, Stephen Chou, David Lugato, Saman P. Amarasinghe:
The tensor algebra compiler. 77:1-77:29
- Manolis Papadakis, Gilbert Louis Bernstein, Rahul Sharma, Alex Aiken, Pat Hanrahan:
Seam: provably safe local edits on graphs. 78:1-78:29 - Peng Wang, Di Wang, Adam Chlipala:
TiML: a functional language for practical complexity analysis with invariants. 79:1-79:26 - Aws Albarghouthi, Loris D'Antoni, Samuel Drews, Aditya V. Nori:
FairSquare: probabilistic verification of program fairness. 80:1-80:30 - Davide Ancona, Francesco Dagnino, Elena Zucca:
Reasoning on divergent computations with coaxioms. 81:1-81:26
- Michael D. Adams, Matthew Might:
Restricting grammars with tree automata. 82:1-82:25 - Syeda Khairunnesa Samantha, Hoan Anh Nguyen, Tien N. Nguyen, Hridesh Rajan:
Exploiting implicit beliefs to resolve sparse usage problem in usage-based specification mining. 83:1-83:29 - Cristina V. Lopes, Petr Maj, Pedro Martins, Vaibhav Saini, Di Yang, Jakub Zitny, Hitesh Sajnani, Jan Vitek:
DéjàVu: a map of code duplicates on GitHub. 84:1-84:28 - Davood Mazinanian, Ameya Ketkar, Nikolaos Tsantalis, Danny Dig:
Understanding the use of lambda expressions in Java. 85:1-85:31
- Magnus Madsen, Ondrej Lhoták, Frank Tip:
A model for reasoning about JavaScript promises. 86:1-86:24 - William Mansky, Andrew W. Appel, Aleksey Nogin:
A verified messaging system. 87:1-87:28 - Alastair Reid:
Who guards the guards? formal validation of the Arm v8-m architecture specification. 88:1-88:24 - David Swasey, Deepak Garg, Derek Dreyer:
Robust and compositional verification of object capability patterns. 89:1-89:26
- Erik Krogh Kristensen, Anders Møller:
Type test scripts for TypeScript testing. 90:1-90:25 - Talia Ringer, Dan Grossman, Daniel Schwartz-Narbonne, Serdar Tasiran:
A solver-aided language for test input generation. 91:1-91:24 - Xia Li, Lingming Zhang:
Transforming programs and tests in tandem for fault localization. 92:1-92:30 - Alastair F. Donaldson, Hugues Evrard, Andrei Lascu, Paul Thomson:
Automated testing of graphics shader compilers. 93:1-93:29 - Ahmet Çelik, Sreepathi Pai, Sarfraz Khurshid, Milos Gligoric:
Bounded exhaustive test-input generation on GPUs. 94:1-94:25
- Matthew J. Parkinson, Dimitrios Vytiniotis, Kapil Vaswani, Manuel Costa, Pantazis Deligiannis, Dylan McDermott, Aaron Blankstein, Jonathan Balkind:
Project snowflake: non-blocking safe manual memory management in .NET. 95:1-95:25 - Kiwan Maeng, Alexei Colin, Brandon Lucia:
Alpaca: intermittent execution without checkpoints. 96:1-96:30 - Ennan Zhai, Ruzica Piskac, Ronghui Gu, Xun Lao, Xi Wang:
An auditing language for preventing correlated failures in the cloud. 97:1-97:28 - Ted Kaminski, Lucas Kramer, Travis Carlson, Eric Van Wyk:
Reliable and automatic composition of language extensions to C: the ableC extensible language framework. 98:1-98:29
- Johannes Späth, Karim Ali, Eric Bodden:
IDEal: efficient and precise alias-aware dataflow analysis. 99:1-99:27 - Sehun Jeong, Minseok Jeon, Sung Deok Cha, Hakjoo Oh:
Data-driven context-sensitivity for points-to analysis. 100:1-100:28 - Kwonsoo Chae, Hakjoo Oh, Kihong Heo, Hongseok Yang:
Automatically generating features for learning program analysis heuristics for C-like languages. 101:1-101:25 - Neville Grech, Yannis Smaragdakis:
P/Taint: unified points-to and taint analysis. 102:1-102:28
- Tiago Cogumbreiro, Rishi Surendran, Francisco Martins, Vivek Sarkar, Vasco T. Vasconcelos, Max Grossman:
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers. 103:1-103:26 - Andrew Rice, Edward Aftandilian, Ciera Jaspan, Emily Johnston, Michael Pradel, Yulissa Arroyo-Paredes:
Detecting argument selection defects. 104:1-104:22 - Baijun Wu, Sheng Chen:
How type errors were fixed and what students did? 105:1-105:27 - Baijun Wu, John Peter Campora III, Sheng Chen:
Learning user friendly type-error messages. 106:1-106:29
- Philip A. Bernstein, Sebastian Burckhardt, Sergey Bykov, Natacha Crooks, Jose M. Faleiro, Gabriel Kliot, Alok Kumbhare, Muntasir Raihan Rahman, Vivek Shah, Adriana Szekeres, Jorgen Thelin:
Geo-distribution of actor-based services. 107:1-107:26 - Oded Padon, Giuliano Losa, Mooly Sagiv, Sharon Shoham:
Paxos made EPR: decidable reasoning about distributed protocols. 108:1-108:31 - Victor B. F. Gomes, Martin Kleppmann, Dominic P. Mulligan, Alastair R. Beresford:
Verifying strong eventual consistency in distributed systems. 109:1-109:28 - Alexander Bakst, Klaus von Gleissenthall, Rami Gökhan Kici, Ranjit Jhala:
Verifying distributed programs via canonical sequentialization. 110:1-110:27
manage site settings
To protect your privacy, all features that rely on external API calls from your browser are turned off by default. You need to opt-in for them to become active. All settings here will be stored as cookies with your web browser. For more information see our F.A.Q.