Hostname: page-component-76fb5796d-25wd4 Total loading time: 0 Render date: 2024-04-25T10:19:11.768Z Has data issue: false hasContentIssue false

No value restriction is needed for algebraic effects and handlers*

Published online by Cambridge University Press:  24 January 2017

OHAD KAMMAR
Affiliation:
Computer Laboratory, University of Cambridge, England (e-mail: ohad.kammar@cl.cam.ac.uk) Department of Computer Science, University of Oxford, England (e-mail: ohad.kammar@cs.ox.ac.uk)
MATIJA PRETNAR
Affiliation:
Faculty of Mathematics and Physics, University of Ljubljana, Slovenia (e-mail: matija.pretnar@fmf.uni-lj.si)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

We present a straightforward, sound, Hindley–Milner polymorphic type system for algebraic effects and handlers in a call-by-value calculus, which, to our surprise, allows type variable generalisation of arbitrary computations, and not just values. We first recall that the soundness of unrestricted call-by-value Hindley–Milner polymorphism is known to fail in the presence of computational effects such as reference cells and continuations, and that many programming examples can be recast to use effect handlers instead of these effects. After presenting the calculus and its soundness proof, formalised in Twelf, we analyse the expressive power of effect handlers with respect to state effects. We conjecture handlers alone cannot express reference cells, but show they can simulate dynamically scoped state, establishing that dynamic binding also does not need a value restriction.

Type
Articles
Copyright
Copyright © Cambridge University Press 2017 

References

Ahman, D. (2015) Refinement types for algebraic effects (2015). In: Abstracts of the 21st Meeting ‘Types for Proofs and Programs’ (TYPES), Institute of Cybernetics, Tallinn University of Technology, pp. 10–11.Google Scholar
Ahman, D., Ghani, N. & Plotkin, G. D. (2016) Dependent types and fibred computational effects. In Proceedings of the 19th International Conference, Foundations of Software Science and Computation Structures - FOSSACS 2016, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2016, Eindhoven, The Netherlands, April 2–8, 2016, Jacobs, B. & Löding, C. (eds), Lecture Notes in Computer Science, vol. 9634. Berlin: Springer, pp. 3654.Google Scholar
Ahman, D. & Staton, S. (2013) Normalization by evaluation and algebraic effects. Electr. Notes Theor. Comput. Sci. 298, 5169.CrossRefGoogle Scholar
Appel, A. W. & MacQueen, D. B. (1991) Standard ML of New Jersey. In PLILP, pp. 1–13.CrossRefGoogle Scholar
Asai, K. & Kameyama, Y. (2007) Polymorphic delimited continuations. In APLAS, Lecture Notes in Computer Science, vol. 4807. Springer, pp. 239254.Google Scholar
Bauer, A. & Pretnar, M. (2014) An effect system for algebraic effects and handlers. Log. Methods Comput. Sci. 10 (4:9), pp. 129.Google Scholar
Bauer, A. & Pretnar, M. (2015) Programming with algebraic effects and handlers. J. Log. Algebr. Meth. Program. 84 (1), 108123.CrossRefGoogle Scholar
Benton, N., Kennedy, A. & Russell, G. (1998) Compiling standard ML to java bytecodes. In Proceedings of the 3rd ACM SIGPLAN International Conference on Functional Programming (ICFP '98), Baltimore, Maryland, USA, September 27–29, 1998, Felleisen, M., Hudak, P. & Queinnec, C. (eds), ACM, pp. 129140.Google Scholar
Brady, E. (2013) Programming and reasoning with algebraic effects and dependent types. In Proceedings of ACM SIGPLAN International Conference on Functional Programming, ICFP'13, Boston, MA, USA, September 25–27, 2013, Morrisett, G. & Uustalu, T. (eds), ACM, pp. 133144.Google Scholar
Brady, E. (2014) Resource-dependent algebraic effects. In Proceedings of the 15th International Symposium on Trends in Functional Programming, TFP 2014, Soesterberg, The Netherlands, May 26–28, 2014. Revised Selected Papers. Hage, J., & McCarthy, J. (eds), Lecture Notes in Computer Science, pp. 1833. Berlin: Springer.Google Scholar
Cardelli, L. (1991) Typeful programming. In Formal Description of Programming Concepts, Neuhold, E. J. & Paul, M. (eds). Berlin: Springer-Verlag, pp. 431507.Google Scholar
Cardelli, L. & Mitchell, J. C. (1991) Operations on records. Math. Struct. Comput. Sci. 1 (1), 348.CrossRefGoogle Scholar
Cartwright, R. & Felleisen, M. (1994) Extensible denotational language specifications. In Proceedings of International Conference TACS '94 on Theoretical Aspects of Computer Software, Sendai, Japan, April 19–22, 1994, Hagiya, M. & Mitchell, J. C. (eds). Lecture Notes in Computer Science, vol. 789. Springer pp. 244272.CrossRefGoogle Scholar
Cooper, E., Lindley, S., Wadler, P. & Yallop, J. (2006) Links: Web programming without tiers. In Proceedings of the 5th International Symposium on Formal Methods for Components and Objects, FMCO 2006, Amsterdam, The Netherlands, November 7–10, 2006, Revised Lectures, de Boer, F. S., Bonsangue, M. M., Graf, S. & de Roever, W. P. (eds), Lecture Notes in Computer Science, vol. 4709. Springer, pp. 266296.Google Scholar
Danvy, O. (2006) An Analytical Approach to Programs as Data oObjects. DSc dissertation, Department of Computer Science, University of Aarhus.Google Scholar
Danvy, O. & Filinski, A. (1989) A Functional Abstraction of Typed Contexts. Technical Report 89/12. DIKU.Google Scholar
Danvy, O. & Filinski, A. (1990) Abstracting control. In LISP and Functional Programming. pp. 151–160.CrossRefGoogle Scholar
Felleisen, M. (1988) The theory and practice of first-class prompts. In Conference Record of the 15th Annual ACM Symposium on Principles of Programming Languages, San Diego, California, USA, January 10–13, 1988, Ferrante, J. & Mager, P. (eds), ACM Press, pp. 180190.Google Scholar
Felleisen, M. (1991) On the expressive power of programming languages. Sci. Comput. Program. 17 (1–3), 3575.CrossRefGoogle Scholar
Felleisen, M., Wand, M., Friedman, D. P. & Duba, B. F. (1988) Abstract continuations: A mathematical semantics for handling full jumps. In LISP and Functional Programming, pp. 52–62.CrossRefGoogle Scholar
Filinski, A. (1994) Representing monads. In Conference Record of POPL'94: 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Portland, Oregon, USA, January 17–21, 1994, Boehm, H.-J., Lang, B. & Yellin, D. M. (eds), ACM Press, pp. 446457.CrossRefGoogle Scholar
Fiore, M. P. & Staton, S. (2014) Substitution, jumps, and algebraic effects. In CSL-LICS. ACM, pp. 41:1–41:10.Google Scholar
Forster, Y., Kammar, O., Lindley, S. & Pretnar, M. (2016) On the expressive power of user-defined effects: Effect handlers, monadic reflection, delimited control. arXiv:1610.09161 [cs.LO].CrossRefGoogle Scholar
Garrigue, J. (2001) Simple type inference for structural polymorphism. In Proceedings of the 2nd Asian Workshop on Programming Languages and Systems, APLAS'01, Korea Advanced Institute of Science and Technology, Daejeon, Korea, December 17–18, 2001, pp. 329343.Google Scholar
Garrigue, J. (2004) Relaxing the value restriction. In FLOPS. Lecture Notes in Computer Science, vol. 2998. Berlin: Springer, pp. 196213.Google Scholar
Garrigue, J. (2010) A certified implementation of ML with structural polymorphism. In Proceedings of the 8th Asian Symposium on Programming Languages and Systems, APLAS 2010, Shanghai, China, November 28–December 1, 2010, Ueda, K. (ed), Lecture Notes in Computer Science, vol. 6461. Springer, pp. 360375 Google Scholar
Garrigue, J. (2015) A certified implementation of ML with structural polymorphism and recursive types. Math. Struct. Comput. Sci. 25 (4), 867891.CrossRefGoogle Scholar
Gifford, D. K. & Lucassen, J. M. (1986) Integrating functional and imperative programming. In LISP and Functional Programming, pp. 28–38.CrossRefGoogle Scholar
Girard, J.-Y. (1972) (June) Interprétation fonctionnelle et élimination des coupures de l'arith-métique d'ordre supérieur. Thèse de doctorat d'état, Université Paris VII.Google Scholar
Gordon, A. D. (ed). (2017) Proceedings of the 44th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages Paris, France—January 18–20, 2017, ACM New York, NY, USA, 978-1-4503-4660-3.Google Scholar
Gordon, M. J. C., Milner, R. & Wadsworth, C. P. (1979) Edinburgh LCF. Lecture Notes in Computer Science, vol. 78. Berlin: Springer.CrossRefGoogle Scholar
Gunter, C. A., Rémy, D. & Riecke, J. G. (1995) A generalization of exceptions and control in ML-like languages. In FPCA. ACM, pp. 1223 CrossRefGoogle Scholar
Hancock, P. & Setzer, A. (2000) Interactive programs in dependent type theory. In Proceedings of the 14th Annual Conference of the EACSL on Computer Science Logic, Fischbachau, Germany, August 21–26, 2000, Clote, P. & Schwichtenberg, H. (eds), Lecture Notes in Computer Science, vol. 1862. Springer, pp. 317331 Google Scholar
Harper, R. & Lillibridge, M. (1993a) Explicit polymorphism and CPS conversion. In Conference Record of the 20th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Charleston, South Carolina, USA, January 1993, Deusen, M. S. Van & Lang, B. (eds), ACM Press, pp. 206219.CrossRefGoogle Scholar
Harper, R. & Lillibridge, M. (1993b) Polymorphic type assignment and CPS conversion. Lisp Symbolic Comput. 6 (3–4), 361380.CrossRefGoogle Scholar
Harper, R. & Mitchell, J. C. (1993) On the type structure of standard ML. ACM Trans. Program. Lang. Syst. 15 (2), 211252.CrossRefGoogle Scholar
Harper, R. & Pierce, B. C. (1991) A record calculus based on symmetric concatenation. In Conference Record of the 18th Annual ACM Symposium on Principles of Programming Languages, Orlando, Florida, USA, January 21–23, 1991, Wise, D. S. (ed), ACM Press, pp. 131142.Google Scholar
Hillerström, D. & Lindley, S. (2016) Liberating effects with rows and handlers. In Proceedings of the 1st International Workshop on Type-Driven Development, September 2016, Chapman, J. & Swierstra, W. (eds), ACM, pp. 1527.CrossRefGoogle Scholar
Hyland, M., Plotkin, G. D. & Power, J. (2006) Combining effects: Sum and tensor. Theor. Comput. Sci. 357 (1–3), 7099.CrossRefGoogle Scholar
Jaber, G. & Tzevelekos, N. (2016) Trace semantics for polymorphic references. In Proceedings of the 31st Annual ACM/IEEE Symposium on Logic in Computer Science (LICS '16). ACM, New York, NY, USA, 585594. DOI: https://doi.org/10.1145/2933575.2934509 CrossRefGoogle Scholar
Kameyama, Y. & Yonezawa, T. (2008) Typed dynamic control operators for delimited continuations. In Proceedings of Functional and Logic Programming, 9th International Symposium, FLOPS 2008, Ise, Japan, April 14–16, 2008, Garrigue, J. & Hermenegildo, M. V. (eds), Lecture Notes in Computer Science, vol. 4989. Springer, pp. 239254.Google Scholar
Kammar, O. (2014) An Algebraic Theory of Type-and-Effect Systems. Ph.D. Thesis, University of Edinburgh, UK.Google Scholar
Kammar, O. & Plotkin, G. D. (2012) Algebraic foundations for effect-dependent optimisations. In Proceedings of the 39th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2012, Philadelphia, Pennsylvania, USA, January 22–28, 2012, Field, J. & Hicks, M. (eds), ACM, pp. 349360.Google Scholar
Kammar, O., Lindley, S. & Oury, N. (2013) Handlers in action. In ICFP, ACM, pp. 145158.Google Scholar
Katsumata, S. (2013) Relating computational effects by ⊤⊤-lifting. Inf. Comput. 222, 228246.CrossRefGoogle Scholar
Katsumata, S. (2014) Parametric effect monads and semantics of effect systems. In Proceedings of the 41st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL '14, San Diego, CA, USA, January 20–21, 2014, Jagannathan, S. & Sewell, P. (eds), ACM, pp. 633646.Google Scholar
Kiselyov, O. (2015) Generating Code with Polymorphic Let. Technical Report, Tohoku University, Japan. Extended abstract submitted to the ACM SIGPLAN Workshop on ML.Google Scholar
Kiselyov, O. & Ishii, H. (2015) Freer monads, more extensible effects. In Proceedings of the 8th ACM SIGPLAN Symposium on Haskell, Haskell 2015, Vancouver, BC, Canada, September 3–4, 2015, Lippmeier, B. (ed), ACM, pp. 94105.CrossRefGoogle Scholar
Kiselyov, O. & Shan, C.-C. (2007) A substructural type system for delimited continuations. In Proceedings of the 8th International Conference on Typed Lambda Calculi and Applications, TLCA 2007, Paris, France, June 26–28, 2007, Rocca, S. & Ronchi, D. (ed), Lecture Notes in Computer Science, vol. 4583. Springer, pp. 223239.Google Scholar
Kiselyov, O., Shan, C.-C. & Sabry, A. (2006) Delimited dynamic binding. In ICFP. ACM, pp. 2637.Google Scholar
Kiselyov, O., Sabry, A. & Swords, C. (2013) Extensible effects: An alternative to monad transformers. In Haskell. ACM, pp. 5970.Google Scholar
Landin, P. J. (1964) The mechanical evaluation of expressions. Comput. J. 6 (4), 308320.CrossRefGoogle Scholar
Leijen, D. (2014) Koka: Programming with row polymorphic effect types. In MSFP. EPTCS, vol. 153, pp. 100–126.CrossRefGoogle Scholar
Leijen, D. (2017) Type directed compilation of row-typed algebraic effects. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages (POPL 2017), Gordon A. D. (ed), ACM, New York, NY, USA, pp. 486499.CrossRefGoogle Scholar
Lepigre, R. (2016) A classical realizability model for a semantical value restriction. In Proceedings of the 25th European Symposium on Programming, Programming Languages and Systems, ESOP 2016, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2016, Eindhoven, The Netherlands, April 2–8, 2016, Thiemann, P. (ed), Lecture Notes in Computer Science, vol. 9632. Springer, pp. 476502.Google Scholar
Leroy, X. (1992) Typage Polymorphe D'un Langage Algorithmique. PhD Thesis (in French), Université Paris 7.Google Scholar
Leroy, X. (1993) Polymorphism by name for references and continuations. In POPL. ACM Press, pp. 220231.Google Scholar
Leroy, X. & Weis, P. (1991) Polymorphic type inference and assignment. In POPL. ACM Press, pp. 291302.Google Scholar
Levy, P. B. (2004) Call-by-Push-Value: A Functional/Imperative Synthesis. Semantics Structures in Computation, vol. 2. Berlin: Springer.Google Scholar
Levy, P. B., Power, J. & Thielecke, H. (2003) Modelling environments in call-by-value programming languages. Inf. Comput. 185 (2), 182210.CrossRefGoogle Scholar
Lillibridge, M. (1999) Unchecked exceptions can be strictly more powerful than call/cc. Higher-Order Symbol. Comput. 12 (1), 75104.CrossRefGoogle Scholar
Lindley, S. & Cheney, J. (2012) Row-based effect types for database integration. In TLDI. ACM, pp. 91102.CrossRefGoogle Scholar
Lindley, S., McBride, C. & McLaughlin, C. (2017) Do be do be do. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages (POPL 2017), Gordon, A. D. (ed), ACM, New York, NY, USA, pp. 500514.CrossRefGoogle Scholar
Lippmeier, B. (2009) Witnessing purity, constancy and mutability. In Proceedings of the 7th Asian Symposium on Programming Languages and Systems, APLAS 2009, Seoul, Korea, December 14–16, 2009, Hu, Z. (ed), Lecture Notes in Computer Science, vol. 5904. Springer, pp. 95110.Google Scholar
Lucassen, J. M. & Gifford, D. K. (1988) Polymorphic effect systems. In POPL. ACM Press, pp. 4757.Google Scholar
Marino, D. & Millstein, T. D. (2009) A generic type-and-effect system. In Proceedings of TLDI'09: 2009 ACM SIGPLAN International Workshop on Types in Languages Design and Implementation, Savannah, GA, USA, January 24, 2009, Kennedy, A. & Ahmed, A. (eds), ACM, pp. 3950.CrossRefGoogle Scholar
Melliès, P.-A. (2010) Segal condition meets computational effects. In Proceedings of the 25th Annual IEEE Symposium on Logic in Computer Science, LICS 2010, 11–14 July 2010, Edinburgh, United Kingdom. IEEE Computer Society, pp. 150159.CrossRefGoogle Scholar
Melliès, Paul-André. (2014) Local states in string diagrams. In Proceedings of Rewriting and Typed Lambda Calculi - Joint International Conference, RTA-TLCA 2014, Held as Part of the Vienna Summer of Logic, VSL 2014, Vienna, Austria, July 14–17, 2014, Dowek, G. (ed), Lecture Notes in Computer Science, vol. 8560. Springer, pp. 334348.Google Scholar
Milner, R. (1978) A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17 (3), 348375.CrossRefGoogle Scholar
Moggi, E. (1991) Notions of computation and monads. Inf. Comput. 93 (1), 5592.CrossRefGoogle Scholar
Moreau, L. (1998) A syntactic theory of dynamic binding. Higher-order and Symbolic Computation 11 (3), 233279.CrossRefGoogle Scholar
Munch-Maccagnoni, G. (2009) Focalisation and classical realisability. In Computer Science Logic '09, Grädel, E. & Kahle, R. (eds), Lecture Notes in Computer Science, vol. 5771. Heidelberg: Springer, pp. 409423.CrossRefGoogle Scholar
Nielson, F. & Nielson, H. R. (1999) Type and effect systems. In Correct System Design, Recent Insight and Advances, (to Hans Langmaack on the Occasion of his Retirement from his Professorship at the University of Kiel), Olderog, E.-R. & Steffen, B. (eds), Lecture Notes in Computer Science, vol. 1710. Berlin: Springer, pp. 114136.Google Scholar
Ohori, A. (1989) A simple semantics for ML polymorphism. In Proceedings of the 4th International Conference on Functional Programming Languages and Computer Architecture, FPCA 1989, London, UK, September 11–13, 1989, Stoy, J. E. (ed), ACM, pp. 281292.Google Scholar
Ohori, A. (1992) A compilation method for ML-style polymorphic record calculi. In Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '92), January 19–22, 1992, Sethi, R. (ed), ACM, New York, NY, USA, pp. 154165.Google Scholar
Ohori, A. (1995) A polymorphic record calculus and its compilation. ACM Trans. Program. Lang. Syst. 17 (6), 844895.CrossRefGoogle Scholar
Pfenning, F. & Schürmann, C. (1999) System description: Twelf - A meta-logical framework for deductive systems. In CADE. Lecture Notes in Computer Science, vol. 1632. Springer, pp. 202206.Google Scholar
Pierce, B. C. (2002) Types and Programming Languages. Cambridge, MA, USA: MIT Press.Google Scholar
Pitts, A. M. (2011–2016) Types. Lecture notes, University of Cambridge Computer Laboratory.Google Scholar
Plotkin, G. D. (1977) LCF considered as a programming language. Theor. Comput. Sci. 5 (3), 223255.CrossRefGoogle Scholar
Plotkin, G. D. & Power, J. (2002) Notions of computation determine monads. In Proceedings of the 5th International Conference, Foundations of Software Science and Computation Structures, FOSSACS 2002. Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2002, Grenoble, France, April 8–12, 2002, Nielsen, M. & Engberg, U. (eds), Lecture Notes in Computer Science, vol. 2303. Springer, pp. 342356.Google Scholar
Plotkin, G. D. & Power, J. (2003) Algebraic operations and generic effects. Appl. Categorical Struct. 11 (1), 6994.CrossRefGoogle Scholar
Plotkin, G. D. & Pretnar, M. (2008) A logic for algebraic effects. In Proceedings of the 23rd Annual IEEE Symposium on Logic in Computer Science, LICS 2008, 24–27 June 2008, Pittsburgh, PA, USA. IEEE Computer Society, pp. 118129 Google Scholar
Plotkin, G. D. & Pretnar, M. (2013) Handling algebraic effects. Logical Methods in Comput. Sci. 9 (4).Google Scholar
Pretnar, M. (2010) Logic and Handling of Algebraic Effects. Ph.D. thesis, University of Edinburgh, UK.Google Scholar
Pretnar, M. (2014) Inferring algebraic effects. Log. Methods Comput. Sci. 10 (3).Google Scholar
Pretnar, M. (2015) An introduction to algebraic effects and handlers. invited tutorial paper. Electr. Notes Theor. Comput. Sci. 319, 1935.CrossRefGoogle Scholar
Rémy, D. (1990) Algèbres touffues. application au typage polymorphe des objets enregistrements dans les langages fonctionnels. Thèse de doctorat, Université de Paris 7.Google Scholar
Rémy, D. 1991 (May) Type Inference for Records in a Natural Extension of ML. Research Report 1431. Institut National de Recherche en Informatique et Automatisme, Rocquencourt, BP 105, 78 153 Le Chesnay Cedex, France.Google Scholar
Rémy, D. (2015) Type Systems. Lecture notes, Parisian Master of Research in Computer Science.Google Scholar
Reynolds, J. C. (1974) Towards a theory of type structure. In Programming Symposium, Proceedings Colloque Sur La Programmation. London, UK: Springer-Verlag, pp. 408423.CrossRefGoogle Scholar
Reynolds, J. C. (1984) Polymorphism is not set-theoretic. In Proceedings of Semantics of Data Types, International Symposium, Sophia-Antipolis, France, June 27–29, 1984, Kahn, G., MacQueen, D. B. & Plotkin, G. D. (eds), Lecture Notes in Computer Science, vol. 173. Springer. pp. 145156.CrossRefGoogle Scholar
Rompf, T., Maier, I. & Odersky, M. (2009) Implementing first-class polymorphic delimited continuations by a type-directed selective cps-transform. In Proceeding of the 14th ACM SIGPLAN International Conference on Functional Programming, ICFP 2009, Edinburgh, Scotland, UK, August 31–September 2, 2009, Hutton, G. & Tolmach, A. P. (eds), ACM, pp. 317328.Google Scholar
Saleh, A. H. & Schrijvers, T. (2016) Efficient algebraic effect handlers for prolog. Corr abs/1608.00816.CrossRefGoogle Scholar
Scott, D. S. (1993) A type-theoretical alternative to ISWIM, CUCH, OWHY. Theor. Comput. Sci. 121 (1&2), 411440.CrossRefGoogle Scholar
Sethi, R. (ed). (1992) Proceedings of the 19th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. January 19–22, 1992. ACM, New York, NY, USA.Google Scholar
Shan, C.-C. (2007) A static simulation of dynamic delimited control. Higher-Order Symbol. Comput. 20 (4), 371401.CrossRefGoogle Scholar
Staton, S. (2009) Two cotensors in one: Presentations of algebraic theories for local state and fresh names. Electr. Notes Theor. Comput. Sci. 249, 471490.CrossRefGoogle Scholar
Staton, S. (2010) Completeness for algebraic theories of local state. In Proceedings of 13th International Conference, Foundations of Software Science and Computational Structures, FOSSACS 2010, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2010, Paphos, Cyprus, March 20–28, 2010, Ong, C.-H. Luke (ed), Lecture Notes in Computer Science, vol. 6014. Springer, pp. 4863.Google Scholar
Staton, S. (2013a) An algebraic presentation of predicate logic - (extended abstract). In Proceedings of 16th International Conference, Foundations of Software Science and Computation Structures, FOSSACS 2013, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2013, Rome, Italy, March 16–24, Pfenning, F. (ed), Lecture Notes in Computer Science, vol. 7794, Springer, pp. 401417.Google Scholar
Staton, S. (2013b) Instances of computational effects: An algebraic perspective. In LICS, IEEE Computer Society., pp. 519.Google Scholar
Staton, S. (2015) Algebraic effects, linearity, and quantum programming languages. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2015, Mumbai, India, January 15–17, 2015, Rajamani, S. K. & Walker, D. (eds), ACM, pp. 395406.Google Scholar
Swierstra, W. (2008) Data types à la carte. J. Funct. Program. 18 (4), 423436.CrossRefGoogle Scholar
Tofte, M. (1990) Type inference for polymorphic references. Inf. Comput. 89 (1), 134.CrossRefGoogle Scholar
Tolmach, A. P. (1998) Optimizing ML using a hierarchy of monadic types. In Proceedings of the 2nd International Workshop on Types in Compilation, TIC '98, Kyoto, Japan, March 25–27, 1998, Leroy, X. & Ohori, A. (eds), Lecture Notes in Computer Science, vol. 1473. Springer, pp. 97115.Google Scholar
Wadler, P. (1992) The essence of functional programming. In Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '92), January 19–22, 1992, Sethi, R. (ed), ACM, New York, NY, USA, pp. 114.Google Scholar
Wadler, P. & Thiemann, P. (2003) The marriage of effects and monads. ACM Trans. Comput. Log. 4 (1), 132.CrossRefGoogle Scholar
Wand, M. (1987) Complete type inference for simple objects. In Proceedings of the Symposium on Logic in Computer Science (LICS '87), Ithaca, New York, USA, June 22–25, 1987. IEEE Computer Society, pp. 3744.Google Scholar
Wells, J. B. (1999) Typability and type checking in System F are equivalent and undecidable. Ann. Pure Appl. Logic 98 (1–3), 111156.CrossRefGoogle Scholar
Wright, A. K. (1995) Simple imperative polymorphism. Lisp Symbol. Comput. 8 (4), 343355.CrossRefGoogle Scholar
Wu, N. & Schrijvers, T. (2015) Fusion for free—efficient algebraic effect handlers. In Proceedings of the 12th International Conference on Mathematics of Program Construction, MPC 2015, Königswinter, Germany, June 29–July 1, 2015, Hinze, R. & Voigtländer, J. (eds), Lecture Notes in Computer Science, vol. 9129. Springer, pp. 302322.Google Scholar
Wu, N., Schrijvers, T. & Hinze, R. (2014) Effect handlers in scope. In Haskell. ACM, pp. 112.Google Scholar
Zeilberger, N. (2009) Refinement types and computational duality. In Proceedings of the 3rd ACM Workshop on Programming Languages meets Program Verification, PLPV 2009, Savannah, GA, USA, January 20, 2009, Altenkirch, T. & Millstein, T. D. (eds), ACM, pp. 1526.Google Scholar
Supplementary material: File

Kammar and Pretnar supplementary material

Kammar and Pretnar supplementary material 1

Download Kammar and Pretnar supplementary material(File)
File 38.5 KB
Submit a response

Discussions

No Discussions have been published for this article.