{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:10Z","timestamp":1779836710001,"version":"3.53.1"},"reference-count":28,"publisher":"Cambridge University Press (CUP)","issue":"3","license":[{"start":{"date-parts":[[2008,11,7]],"date-time":"2008-11-07T00:00:00Z","timestamp":1226016000000},"content-version":"unspecified","delay-in-days":5973,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[1992,7]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    We present a new static system which reconstructs the types, regions and effects of expressions in an implicitly typed functional language that supports imperative operations on reference values. Just as types structurally abstract collections of concrete values,\n                    <jats:italic>regions<\/jats:italic>\n                    represent sets of possibly aliased reference values and\n                    <jats:italic>effects<\/jats:italic>\n                    represent approximations of the imperative behaviour on regions.\n                  <\/jats:p>\n                  <jats:p>We introduce a static semantics for inferring types, regions and effects, and prove that it is consistent with respect to the dynamic semantics of the language. We present a reconstruction algorithm that computes the types and effects of expressions, and assigns regions to reference values. We prove the correctness of the reconstruction algorithm with respect to the static semantics. Finally, we discuss potential applications of our system to automatic stack allocation and parallel code generation.<\/jats:p>","DOI":"10.1017\/s0956796800000393","type":"journal-article","created":{"date-parts":[[2008,11,7]],"date-time":"2008-11-07T11:14:19Z","timestamp":1226056459000},"page":"245-271","source":"Crossref","is-referenced-by-count":127,"title":["Polymorphic type, region and effect inference"],"prefix":"10.1017","volume":"2","author":[{"given":"Jean-Pierre","family":"Talpin","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Pierre","family":"Jouvelot","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2008,11,7]]},"reference":[{"key":"S0956796800000393_ref012","volume-title":"Proc. Workshop on Partial Evaluation and Mixed Computation","author":"Hughes","year":"1987"},{"key":"S0956796800000393_ref027","unstructured":"Talpin J. P. and Jouvelot P. 1991 b. The FX\/CM Compiler Backend, or Taming Massive Parallelism with an Effect System. Research Report EMP-CRI-A208, Ecole Nationale Sup\u00e9rieure des Mines de Paris (Nov.)."},{"key":"S0956796800000393_ref024","doi-asserted-by":"publisher","DOI":"10.1145\/322123.322135"},{"key":"S0956796800000393_ref023","doi-asserted-by":"publisher","DOI":"10.1145\/321250.321253"},{"key":"S0956796800000393_ref001","unstructured":"* Lisp Reference Manual. 1977. Thinking Machines Corporation."},{"key":"S0956796800000393_ref008","unstructured":"Harper R. , Milner R. and Tofte M. 1988. The definition of Standard ML. Edinburgh LFCS Report 88\u201362. University of Edinburgh."},{"key":"S0956796800000393_ref026","unstructured":"Talpin J. P. and Jouvelot P. 1991 a. The Type and Effect Discipline. Research Report EMP-CRI-A206 (revised version), Ecole Nationale Sup\u00e9rieure des Mines de Paris (Nov.)."},{"key":"S0956796800000393_ref022","volume-title":"Fourth Report on the Algorithmic Language Scheme","author":"Rees","year":"1988"},{"key":"S0956796800000393_ref018","volume-title":"Proc. ACM Conference on Principles of Programming Languages","author":"Mitchell","year":"1988"},{"key":"S0956796800000393_ref028","unstructured":"Tofte M. 1987. Operational semantics and polymorphic type inference. PhD Thesis, University of Edinburgh."},{"key":"S0956796800000393_ref025","volume-title":"Proc. ACM Conference on Lisp and Functional Programming","author":"Sheldon","year":"1990"},{"key":"S0956796800000393_ref011","volume-title":"Proc. ACM Conference on Programming Language Design and Implementation","author":"Hudak","year":"1986"},{"key":"S0956796800000393_ref016","unstructured":"Lucassen J. M. 1987. Types and Effects, towards the integration of functional and imperative programming. MIT\/LCS\/TR-408 (PhD Thesis), MIT Laboratory for Computer Science (Aug.)."},{"key":"S0956796800000393_ref007","unstructured":"Hammel R. T. and Gifford D. K. 1988. FX-87 Performance Measurements: Dataflow Implementation. MIT\/LCS\u201cTR-421, MIT Laboratory for Computer Science (Nov.)."},{"key":"S0956796800000393_ref004","volume-title":"Proc. ACM Conference on Principles of Programming Languages","author":"Deutsch","year":"1990"},{"key":"S0956796800000393_ref006","volume-title":"Lecture Notes in Computer Science","volume":"78","author":"Gordon","year":"1979"},{"key":"S0956796800000393_ref005","unstructured":"Gifford D. K. , Jouvelot P. , Lucassen J. M. and Sheldon M. A. 1987. FX-87 Reference Manual. MIT\/LCS\/TR-407, MIT Laboratory for Computer Science (Sept.)."},{"key":"S0956796800000393_ref013","volume-title":"Proc. ACM Conference on Principles of Programming Languages","author":"Jouvelot","year":"1991"},{"key":"S0956796800000393_ref014","volume-title":"Proc. ACM Conference on Programming Language Design and Implementation","author":"Larus","year":"1988"},{"key":"S0956796800000393_ref021","volume-title":"Technical report DAIMI-FN-19","author":"Plotkin","year":"1981"},{"key":"S0956796800000393_ref003","volume-title":"Proc. ACM Conference on Principles of Programming Languages","author":"Cousot","year":"1977"},{"key":"S0956796800000393_ref015","volume-title":"Proc. ACM Conference on Principles of Programming Languages","author":"Leroy","year":"1991"},{"key":"S0956796800000393_ref019","unstructured":"Morris J. H. 1968. Lambda Calculus Models of Programming Languages. MAC-TR-57, Massachusetts Institute of Technology."},{"key":"S0956796800000393_ref020","doi-asserted-by":"publisher","DOI":"10.1007\/BF01409744"},{"key":"S0956796800000393_ref017","doi-asserted-by":"publisher","DOI":"10.1016\/0022-0000(78)90014-4"},{"key":"S0956796800000393_ref002","volume-title":"Standard ML Reference Manual (Preliminary)","author":"Appel","year":"1990"},{"key":"S0956796800000393_ref009","article-title":"The Interprocedural Analysis and Automatic Parallelization of Scheme Programs","volume":"2","author":"Harrison","year":"1989","journal-title":"Lisp and Symbolic Computation, an Internal J."},{"key":"S0956796800000393_ref010","volume-title":"The Connection Machine","author":"Hillis","year":"1985"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796800000393","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:35:06Z","timestamp":1779834906000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796800000393\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1992,7]]},"references-count":28,"journal-issue":{"issue":"3","published-print":{"date-parts":[[1992,7]]}},"alternative-id":["S0956796800000393"],"URL":"https:\/\/doi.org\/10.1017\/s0956796800000393","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[1992,7]]}}}