PapersSee also DBLP and Google Scholar.
Encoding product types
Draft, May 2022.
High-level type-safe effect handlers in C++
Draft, April 2022.
Constraint-based type inference for FreezeML
Draft, March 2022.
A typed slicing compilation of the polymorphic RPC calculus
In the proceedings of PPDP 2021.
Separating sessions smoothly
In the proceedings of CONCUR 2021.
Practical normalization by evaluation for EDSLs
In the proceedings of Haskell 2021.
Extended abstract. Presented at HOPE 2021.
The virtues of semi-explicit polymorphism
Extended abstract. Presented at ML 2020.
Effects for efficiency: asymptotic speedup with first-class control
In the proceedings of ICFP 2020.
- A polymorphic RPC calculusScience of Computer Programming 197:102499, October 2020.
- Doo bee doo bee dooIn the Journal of Functional Programming (special issue on algebraic effects and handlers) 30:e9, March 2020.
- Effect handlers via generalised continuationsIn the Journal of Functional Programming (special issue on algebraic effects and handlers) 30:e5, March 2020.
- FreezeML: complete and easy type inference for first-class polymorphismIn the proceedings of PLDI 2020.
- On the expressive power of user-defined effects: effect handlers, monadic reflection, delimited controlIn the Journal of Functional Programming (ICFP 2017 special issue) 29:e15, October 2019.
- Exceptional asynchronous session types: session types without tiersIn the proceedings of POPL 2019.
- Data Parallel Idealised AlgolRobert Atkey, Michel Steuwer, Sam Lindley, and Christophe DubachDraft, July 2018.
- Shallow effect handlersIn the proceedings of APLAS 2018.
- Continuation passing style for effect handlersIn the proceedings of FSCD 2017.
- On the expressive power of user-defined effects: effect handlers, monadic reflection, delimited controlIn the proceedings of ICFP 2017.
- Lightweight functional session typesIn Behavioural types: from theory to tools. June 2017.
- Mixing metaphors: actors as channels and channels as actorsIn the proceedings of ECOOP 2017.
- Do be do be doIn the proceedings of POPL 2017.
- Embedding session types in HaskellIn the proceedings of Haskell 2016.
- Liberating effects with rows and handlersIn the proceedings of TyDe 2016.
- Coherence generalises duality: a logical explanation of multiparty session typesIn the proceedings of CONCUR 2016.
- Talking bananas: structural recursion for session typesIn the proceedings of ICFP 2016.
- Conflation confers concurrencyIn the proceedings of WF 2016.
- Everything old is new again: Quoted Domain Specific LanguagesIn the proceedings of PEPM 2016.
- Generating performance portable code using rewrite rules: from high-level functional expressions to high-performance OpenCL codeIn the proceedings of ICFP 2015.
- A semantics for propositions as sessionsIn the proceedings of ESOP 2015.
- Algebraic effects and effect handlers for idioms and arrowsIn the proceedings of WGP 2014.
- Query shredding: efficient relational evaluation of queries over nested multisetsIn the proceedings of SIGMOD 2014.
- Sessions as propositionsIn the proceedings of PLACES 2014.
- Effective quotationIn the proceedings of PEPM 2014.
- Hasochism: the pleasure and pain of dependently typed Haskell programmingIn the proceedings of Haskell 2013.
- Handlers in actionIn the proceedings of ICFP 2013.
- A practical theory of language-integrated queryIn the proceedings of ICFP 2013.
- Lenses for web dataIn the proceedings of BX 2013.
- Dr. Formlens, Or: How I Learned to Stop Worrying and Love Monoidal FunctorsDraft, June 2012.
- Embedding FIn the proceedings of WGP 2012.
- Row-based effect types for database integrationIn the proceedings of TLDI 2012.
- The Database Wiki project: a general-purpose platform for data curation and collaborationIn SIGMOD Record 40(3), pages 15-20, September 2011.
- Using Links to prototype a database wikiIn the proceedings of DBPL 2011.
- DBWiki: a structured wiki for curated data and collaborative data managementIn the proceedings of SIGMOD 2011.
- The arrow calculusIn the Journal of Functional Programming 20:1, pages 51-69, January 2010.
- Accumulating bindingsIn the proceedings of 2009 Workshop on Normalization by Evaluation.
- Unembedding domain-specific languagesIn the proceedings of Haskell Symposium 2009. ACM Digital Library.
- The essence of form abstractionIn the proceedings of APLAS 2008. LNCS 5356.
- Many holes in Hindley-MilnerIn the proceedings of ML 2008. ACM Digital Library.
- Idioms are oblivious, arrows are meticulous, monads are promiscuous.In the proceedings of MSFP 2008. ENTCS 229(5).
- The arrow calculusTechnical report EDI-INF-RR-1258.
- An idiom's guide to formletsTechnical report EDI-INF-RR-1263.
- Links: web programming without tiersIn the proceedings of FMCO 2006. LNCS 4709.
- Extensional rewriting with sumsIn the proceedings of TLCA 2007. LNCS 4583.
- Implementing deterministic declarative concurrency using sievesIn the proceedings of DAMP 2007. ACM Digital Library.
- Normalisation by evaluation in the compilation of typed functional programming languagesPhD Thesis, The University of Edinburgh, 2005.
- Reducibility and TT-lifting for computation typesIn the proceedings of TLCA 2005. LNCS 3461.
- Shrinking reductions in SML.NETIn the proceedings of IFL 2004. LNCS 3474.
Proceedings of the 8th Workshop on Mathematically Structured Functional Programming
CoRR, volume abs/2004.14735, 2020.
Post-proceedings of the 2017 ML Family and OCaml Users and Developers Workshops
CoRR, volume abs/1905.05909, 2019.
Proceedings of the 7th Workshop on Mathematically Structured Functional Programming
CoRR, volume abs/1807.03732, 2018.
Proceedings of the 2nd ACM SIGPLAN International Workshop on Type-Driven Development
A list of successes that can change the world
Essays dedicated to Philip Wadler on the occasion of his 60th birthday.LNCS 9600, Springer 2016.
Programme committeesICFP 2022, ESOP 2022, APLAS 2021, PEPM 2021 (co-chair), APLAS 2020, MSFP 2020 (co-chair), POPL 2020, TFP 2019, DBPL 2019, ProWeb 2019, Haskell Symposium 2018, ICFP 2018, MSFP 2018 (co-chair), WWW-WPDAI 2018, ProWeb 2018, OCaml 2017, ML Family Workshop 2017 (chair), TyDe 2017 (co-chair), PLACES 2017, POPL-ERC 2017, ICFP-ERC 2016, DPRTCPS 2015, DBPL 2015, HOPE 2015, ML 2015, PADL 2015, TFP 2015, TYPES 2015, PEPM 2015, PADL 2014, Haskell Symposium 2011, ICFP 2011, DBPL 2011
- A polymorphic RPC calculus