{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,6,4]],"date-time":"2024-06-04T22:42:26Z","timestamp":1717540946355},"reference-count":39,"publisher":"Cambridge University Press (CUP)","issue":"4","license":[{"start":{"date-parts":[[2014,11,10]],"date-time":"2014-11-10T00:00:00Z","timestamp":1415577600000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Math. Struct. Comp. Sci."],"published-print":{"date-parts":[[2015,5]]},"abstract":"<jats:p>We propose a new type system for functional logic programming which is more liberal than the classical Damas\u2013Milner usually adopted, but it is also restrictive enough to ensure type soundness. Starting from Damas\u2013Milner typing of expressions, we propose a new notion of well-typed program that adds support for type-indexed functions, a particular form of existential types, opaque higher-order patterns and generic functions \u2013 as shown by an extensive collection of examples that illustrate the possibilities of our proposal. In the negative side, the types of functions must be declared, and therefore types are checked but not inferred. Another consequence is that parametricity is lost, although the impact of this flaw is limited as \u2018free theorems\u2019 were already compromised in functional logic programming because of non-determinism.<\/jats:p>","DOI":"10.1017\/s0960129513000091","type":"journal-article","created":{"date-parts":[[2014,11,10]],"date-time":"2014-11-10T11:41:28Z","timestamp":1415619688000},"page":"942-977","source":"Crossref","is-referenced-by-count":0,"title":["A liberal type system for functional logic programs"],"prefix":"10.1017","volume":"25","author":[{"given":"FRANCISCO JAVIER","family":"L\u00d3PEZ-FRAGUAS","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"ENRIQUE","family":"MARTIN-MARTIN","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"JUAN","family":"RODR\u00cdGUEZ-HORTAL\u00c1","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"56","published-online":{"date-parts":[[2014,11,10]]},"reference":[{"key":"S0960129513000091_ref38","first-page":"441","volume-title":"Machine Intelligence 10","author":"Warren","year":"1982"},{"key":"S0960129513000091_ref37","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75283"},{"key":"S0960129513000091_ref36","first-page":"347","volume-title":"4th International Conference on Functional Programming Languages and Computer Architecture","author":"Wadler","year":"1989"},{"key":"S0960129513000091_ref34","first-page":"208","volume-title":"8th ACM Conference on LISP and Functional Programming","author":"Thatt\u00e9","year":"1994"},{"key":"S0960129513000091_ref33","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-12251-4_14"},{"key":"S0960129513000091_ref32","doi-asserted-by":"crossref","first-page":"341","DOI":"10.1145\/1596550.1596599","volume-title":"14th ACM SIGPLAN International Conference on Functional Programming","author":"Schrijvers","year":"2009"},{"key":"S0960129513000091_ref31","first-page":"1574","article-title":"Constructive failure in functional-logic programming: From theory to implementation","volume":"12","author":"S\u00e1nchez-Hern\u00e1ndez","year":"2006","journal-title":"Journal of Universal Computer Science"},{"key":"S0960129513000091_ref29","unstructured":"Perry N. (1991) The Implementation of Practical Functional Programming Languages, Ph.D. thesis, Imperial College, London."},{"key":"S0960129513000091_ref1","doi-asserted-by":"publisher","DOI":"10.1007\/10705424_22"},{"key":"S0960129513000091_ref20","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-78969-7_12"},{"key":"S0960129513000091_ref3","doi-asserted-by":"publisher","DOI":"10.1145\/1707790.1707797"},{"key":"S0960129513000091_ref39","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1994.1093"},{"key":"S0960129513000091_ref14","first-page":"1","volume-title":"3rd ACM SIGPLAN Conference on History of Programming Languages","author":"Hudak","year":"2007"},{"key":"S0960129513000091_ref6","doi-asserted-by":"publisher","DOI":"10.1016\/S0743-1066(98)10029-8"},{"key":"S0960129513000091_ref30","doi-asserted-by":"crossref","unstructured":"Peyton Jones S. , Vytiniotis D. and Weirich S. (2006) Simple unification-based type inference for GADTs (Technical Appendix). Technical Report MS-CIS-05-22, University of Pennsylvania.","DOI":"10.1145\/1159803.1159811"},{"key":"S0960129513000091_ref9","doi-asserted-by":"publisher","DOI":"10.1145\/227699.227700"},{"key":"S0960129513000091_ref10","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-74610-2_5"},{"key":"S0960129513000091_ref13","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-76786-2_3"},{"key":"S0960129513000091_ref17","first-page":"133","volume-title":"8th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming","author":"L\u00f6h","year":"2006"},{"key":"S0960129513000091_ref26","doi-asserted-by":"publisher","DOI":"10.1016\/0022-0000(78)90014-4"},{"key":"S0960129513000091_ref7","doi-asserted-by":"crossref","first-page":"153","DOI":"10.7551\/mitpress\/4299.003.0017","volume-title":"14th International Conference on Logic Programming","author":"Gonz\u00e1lez-Moreno","year":"1997"},{"key":"S0960129513000091_ref27","doi-asserted-by":"publisher","DOI":"10.1145\/44501.45065"},{"key":"S0960129513000091_ref5","unstructured":"GHC-Team (2011) The glorious glasgow haskell compilation system user's guide. Available at http:\/\/www.haskell.org\/ghc\/docs\/latest\/html\/users_guide."},{"key":"S0960129513000091_ref25","doi-asserted-by":"publisher","DOI":"10.1145\/1929501.1929524"},{"key":"S0960129513000091_ref19","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-11999-6_9"},{"key":"S0960129513000091_ref8","first-page":"1","article-title":"Polymorphic types in functional logic programming","volume":"2001","author":"Gonz\u00e1lez-Moreno","year":"2001","journal-title":"Journal of Functional and Logic Programming"},{"key":"S0960129513000091_ref16","doi-asserted-by":"publisher","DOI":"10.1145\/186025.186031"},{"key":"S0960129513000091_ref2","unstructured":"Cheney J. and Hinze R. (2003) First-class phantom types. Technical Report TR2003-1901, Cornell University."},{"key":"S0960129513000091_ref4","first-page":"207","volume-title":"9th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages","author":"Damas","year":"1982"},{"key":"S0960129513000091_ref11","unstructured":"Hanus M. (ed.) (2006) Curry: An integrated functional logic language. Available at http:\/\/www.informatik.uni-kiel.de\/~curry\/report.html."},{"key":"S0960129513000091_ref15","doi-asserted-by":"publisher","DOI":"10.1145\/964001.964010"},{"key":"S0960129513000091_ref18","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-17164-2_7"},{"key":"S0960129513000091_ref35","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1996.2617"},{"key":"S0960129513000091_ref12","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796806006022"},{"key":"S0960129513000091_ref21","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-48685-2_19"},{"key":"S0960129513000091_ref22","unstructured":"Lux W. (2008) Adding Haskell-style overloading to Curry. In: Workshop of Working Group 2.1.4 of the German Computing Science Association GI 67\u201376."},{"key":"S0960129513000091_ref23","unstructured":"Lux W. (2009) Type-classes and call-time choice vs. run-time choice - post to the curry mailing list. Available at http:\/\/www.informatik.uni-kiel.de\/~curry\/listarchive\/0790.html."},{"key":"S0960129513000091_ref24","unstructured":"Martin-Martin E. (2009) Advances in type systems for functional logic programming, Master's thesis, Universidad Complutense de Madrid. Available at http:\/\/gpd.sip.ucm.es\/enrique\/publications\/master\/masterThesis.pdf."},{"key":"S0960129513000091_ref28","unstructured":"Moreno-Navarro J. , Mari\u00f1o J. , del Pozo-Pietro A. , Herranz-Nieva A. and Garc\u00eda-Mart\u00edn J. (1996) Adding type classes to functional-logic languages. In: Joint Conference on Declarative Programming, APPIA-GULP-PRODE'96 427\u2013438."}],"container-title":["Mathematical Structures in Computer Science"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0960129513000091","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,6,4]],"date-time":"2024-06-04T22:06:32Z","timestamp":1717538792000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0960129513000091\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2014,11,10]]},"references-count":39,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2015,5]]}},"alternative-id":["S0960129513000091"],"URL":"https:\/\/doi.org\/10.1017\/s0960129513000091","relation":{},"ISSN":["0960-1295","1469-8072"],"issn-type":[{"value":"0960-1295","type":"print"},{"value":"1469-8072","type":"electronic"}],"subject":[],"published":{"date-parts":[[2014,11,10]]}}}