This paper proposes an operational semantics for value recursion in the context of monadic metalanguages. Our technique for combining value recursion with computational effects works uniformly for all monads. The operational nature of our approach is related to the implementation of recursion in Scheme and its monadic version proposed by Friedman and Sabry, but it defines a different semantics and does not rely on assignments. When contrasted to the axiomatic approach proposed by Erkök and Launchbury, our semantics for the continuation monad invalidates one of the axioms, adding to the evidence that this axiom is problematic in the presence of continuations.
@article{ITA_2004__38_4_375_0, author = {Moggi, Eugenio and Sabry, Amr}, title = {An abstract monadic semantics for value recursion}, journal = {RAIRO - Theoretical Informatics and Applications - Informatique Th\'eorique et Applications}, volume = {38}, year = {2004}, pages = {375-400}, doi = {10.1051/ita:2004018}, mrnumber = {2098196}, zbl = {1089.68029}, language = {en}, url = {http://dml.mathdoc.fr/item/ITA_2004__38_4_375_0} }
Moggi, Eugenio; Sabry, Amr. An abstract monadic semantics for value recursion. RAIRO - Theoretical Informatics and Applications - Informatique Théorique et Applications, Tome 38 (2004) pp. 375-400. doi : 10.1051/ita:2004018. http://gdmltest.u-ga.fr/item/ITA_2004__38_4_375_0/
[1] Modular Formal Frameworks for Module Systems. Ph.D. Thesis, Univ. di Pisa (1998).
,[2] Mixin modules and computational effects, in Proc. 30th Int'l Coll. Automata, Languages, and Programming, Springer-Verlag. Lect. Notes Comput. Sci. 2719 (2003). | Zbl 1039.68541
, , and ,[3] A primitive calculus for module systems, in Proc. Int'l Conf. Principles & Practice Declarative Programming. Springer-Verlag. Lect. Notes Comput. Sci. 1702 (1999) 62-79.
and ,[4] A calculus of module systems. J. Funct. Programming 12 (2002) 91-132. Extended version of [3]. | Zbl 0994.68033
and ,[5] The call-by-need lambda calculus. J. Funct. Programming 7 (1997) 265-301. | Zbl 0887.68007
and ,[6] A call-by-need lambda calculus in Conference record of POPL '95, 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, papers presented at the Symposium: San Francisco, California, January 22-25, 1995, New York, USA, ACM Press (1995) 233-246.
, , , and ,[7] The Lambda Calculus: Its Syntax and Semantics, revised ed. North-Holland (1984). | MR 774952 | Zbl 0551.03007
,[8] Letrec and callcc implement references. Message to comp.lang.scheme (1988).
,[9] Traced pre-monoidal categories, in Fixed Points in Computer Science, July 20-21, 2002, edited by Z. Ésik and A. Ingólfsdóttir. BRICS Notes Series, NS-02-2 12-19.
and ,[10] The recursive record semantics of objects revisited. Lect. Notes Comput. Sci. 2028 (2001) 269-283. | Zbl 0977.68517
,[11] The recursive record semantics of objects revisited. J. Funct. Programming 14 (2004) 263-315. | Zbl 1088.68036
,[12] Recursion in the call-by-value -calculus. Fixed Points in Comput. Sci., BRICS Notes Series NS-02-2 (2002).
and ,[13] The Programming Language Jigsaw: Mixins, Modularity, and Multiple Inheritance. Ph.D. Thesis, Univ. of Utah (Mar. 1992).
,[14] Value recursion in the continuation monad. Unpublished Note (2003).
,[15] A Denotational Semantics of Inheritance. Ph.D. Thesis, Brown University (1989).
,[16] A denotational semantics of inheritance and its correctness, in Conf. on Object-Oriented Programming: Systems, Languages and Applications, ACM (1989).
and ,[17] The categorical abstract machine, in Functional Programming Languages and Computer Architecture, edited by J.-P. Jouannaud, Springer Verlag. Lect. Notes Comput. Sci. 201 (Sept. 1985) 50-64. | Zbl 0592.68045
, and ,[18] A type system for well-founded recursion. Tech. Rep. CMU-CS-03-163, Carnegie Mellon University (2003).
, and ,[19] Value Recursion in Monadic Computations. Ph.D. Thesis, OGI School of Science and Engineering, OHSU, Portland, Oregon (2002).
,[20] Recursive monadic bindings, in Proc. of the ACM Sigplan International Conference on Functional Programming (ICFP-00), New York, 18-21 Sept. ACM Sigplan Notices 35.9 (2000) 174-185.
and ,[21] Semantics of value recursion for monadic input/output. J. Theor. Inform. Appl. 36 (2002) 155-180. | Numdam | Zbl 1011.68017
, and ,[22] Representing monads, in Conf. Record of 21st ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, POPL'94, Portland, OR, USA, 17-21 Jan., ACM Press, New York (1994) 446-457.
,[23] Recursion is a computational effect. Tech. Rep. 546, Computer Science Department, Indiana University (2000).
and ,[24] T. GHC Team, The glasgow haskell compiler user's guide, version 4.08. Available online from http://haskell.org/ghc/. Viewed on 12/28/2000.
[25] Mixin Modules, Modules and Extended Value Binding in a Call-By-Value Setting. Ph.D. Thesis, Univ. Paris 7 (2003).
,[26] Mixin modules in a call-by-value setting, in 11th European Symp. Programming, Springer-Verlag. Programming Languages & Systems 2305 (2002) 6-20. | Zbl 1077.68557
and ,[27] Compilation of extended recursion in call-by-value functional languages, in Proc. 5th Int'l Conf. Principles & Practice Declarative Programming (2003).
, and ,[28] Generalising monads to arrows. Sci. Comput. Program. 37 (2000) 67-111. | Zbl 0954.68034
,[29] Report on the programming language Haskell 98 (Feb. 1999).
[30] Hugs 1.4 User Manual. Research Report YALEU/DCS/RR-1123. Yale University, Department of Computer Science (1997).
and ,[31] Revised report on the algorithmic language Scheme. ACM SIGPLAN Notices 33 (1998) 26-76.
, and ,[32] The mechanical evaluation of expressions. Comput. J. 6 (1964) 308-320. | Zbl 0122.36106
,[33] On embedding a microarchitectural design language within Haskell, in Proc. 1999 Int'l Conf. Functional Programming, ACM Press (1999) 60-69.
, and ,[34] The call-by-need lambda calculus. J. Funct. Programming 8 (1998) 275-317. | Zbl 0918.03019
, and ,[35] A monadic multi-stage metalanguage, in Proc. FoSSaCS '03, Springer-Verlag. Lect. Notes Comput. Sci. 2620 (2003). | Zbl 1029.68042
and ,[36] Lambda-Calculus Method of Programming Language. Ph.D. Thesis, MIT (Dec. 1968).
,[37] A new notation for arrows, in Proc. of the sixth ACM SIGPLAN international conference on Functional programming, ACM Press (2001) 229-240.
,[38] Premonoidal categories and notions of computation. Math. Struct. Comput. Sci. 7 (1997) 453-468. | Zbl 0897.18002
and ,[39] Robust and effective transformation of letrec, in Scheme Workshop (Oct. 2002).
, and ,[40] A syntactic approach to type soundness. Inform. Comput. 115 (1994) 38-94. | Zbl 0938.68559
and ,