{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,3,26]],"date-time":"2025-03-26T08:11:52Z","timestamp":1742976712601,"version":"3.40.3"},"publisher-location":"Cham","reference-count":40,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030185053"},{"type":"electronic","value":"9783030185060"}],"license":[{"start":{"date-parts":[[2019,1,1]],"date-time":"2019-01-01T00:00:00Z","timestamp":1546300800000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2019]]},"DOI":"10.1007\/978-3-030-18506-0_6","type":"book-chapter","created":{"date-parts":[[2019,4,23]],"date-time":"2019-04-23T12:03:19Z","timestamp":1556020999000},"page":"114-135","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":1,"title":["Improving Haskell"],"prefix":"10.1007","author":[{"given":"Martin A. T.","family":"Handley","sequence":"first","affiliation":[]},{"given":"Graham","family":"Hutton","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2019,4,24]]},"reference":[{"key":"6_CR1","doi-asserted-by":"crossref","unstructured":"Moran, A.K., Sands, D.: Improvement in a Lazy Context: An Operational Theory for Call-By-Need. Extended version of [40] (1999)","DOI":"10.1145\/292540.292547"},{"key":"6_CR2","doi-asserted-by":"crossref","unstructured":"Hackett, J., Hutton, G.: Worker\/wrapper\/makes it\/faster. In: ICFP (2014)","DOI":"10.1145\/2628136.2628142"},{"key":"6_CR3","doi-asserted-by":"crossref","unstructured":"Schmidt-Schau\u00df, M., Sabel, D.: Improvements in a functional core language with call-by-need operational semantics. In: PPDP (2015)","DOI":"10.1145\/2790449.2790512"},{"key":"6_CR4","doi-asserted-by":"crossref","unstructured":"Hackett, J., Hutton, G.: Parametric polymorphism and operational improvement. University of Nottingham (2017, in preparation)","DOI":"10.1145\/3236763"},{"key":"6_CR5","unstructured":"Harper, R.: The Structure and Efficiency of Computer Programs. Carnegie Mellon University (2014)"},{"key":"6_CR6","unstructured":"Farmer, A.: Hermit: Mechanized Reasoning During Compilation in the Glasgow Haskell Compiler. Ph.D. thesis, University of Kansas (2015)"},{"key":"6_CR7","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"86","DOI":"10.1007\/978-3-642-41582-1_6","volume-title":"Implementation and Application of Functional Languages","author":"N Sculthorpe","year":"2013","unstructured":"Sculthorpe, N., Farmer, A., Gill, A.: The HERMIT in the tree: mechanizing program transformations in the GHC core language. In: Hinze, R. (ed.) IFL 2012. LNCS, vol. 8241, pp. 86\u2013103. Springer, Heidelberg (2013). https:\/\/doi.org\/10.1007\/978-3-642-41582-1_6"},{"key":"6_CR8","doi-asserted-by":"crossref","unstructured":"Farmer, A., H\u00f6ner zu Siederdissen, C., Gill, A.: The Hermit in the stream. In: PEMP (2014)","DOI":"10.1145\/2543728.2543736"},{"key":"6_CR9","doi-asserted-by":"crossref","unstructured":"Farmer, A., Sculthorpe, N., Gill, A.: Reasoning with the Hermit: tool support for equational reasoning on GHC core programs. In: Haskell Symposium (2015)","DOI":"10.1145\/2804302.2804303"},{"key":"6_CR10","doi-asserted-by":"crossref","unstructured":"Adams, M.D., Farmer, A., Magalh\u00e3es, J.P.: Optimizing SYB Is easy! In: PEPM (2014)","DOI":"10.1145\/2543728.2543730"},{"key":"6_CR11","doi-asserted-by":"publisher","first-page":"170","DOI":"10.1016\/j.scico.2015.09.003","volume":"112","author":"MD Adams","year":"2015","unstructured":"Adams, M.D., Farmer, A., Magalh\u00e3es, J.P.: Optimizing SYB traversals is easy!. Sci. Comput. Program. 112, 170\u2013193 (2015)","journal-title":"Sci. Comput. Program."},{"key":"6_CR12","doi-asserted-by":"crossref","unstructured":"Farmer, A., Gill, A., Komp, E., Sculthorpe, N.: The Hermit in the machine: a plugin for the interactive transformation of GHC core language programs. In: Haskell Symposium (2012)","DOI":"10.1145\/2364506.2364508"},{"key":"6_CR13","unstructured":"Handley, M.A.T.: GitHub Repository for the University of Nottingham Improvement Engine (Unie) (2017). https:\/\/github.com\/mathandley\/Unie"},{"key":"6_CR14","unstructured":"Wadler, P.: The Concatenate Vanishes. University of Glasgow (1987)"},{"issue":"3","key":"6_CR15","first-page":"231","volume":"7","author":"P Sestoft","year":"1997","unstructured":"Sestoft, P.: Deriving a lazy abstract machine. JFP 7(3), 231\u2013264 (1997)","journal-title":"JFP"},{"key":"6_CR16","doi-asserted-by":"crossref","unstructured":"Ariola, Z.M., Maraist, J., Odersky, M., Felleisen, M., Wadler, P.: A call-by-need lambda calculus. In: POPL (1995)","DOI":"10.1145\/199448.199507"},{"key":"6_CR17","first-page":"434","volume":"24","author":"N Sculthorpe","year":"2014","unstructured":"Sculthorpe, N., Frisby, N., Gill, A.: The Kansas university rewrite engine. JFP 24, 434\u2013473 (2014)","journal-title":"JFP"},{"key":"6_CR18","unstructured":"L\u00e4mmel, R., Visser, E., Visser, J.: The Essence of Strategic Programming (2002)"},{"key":"6_CR19","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/978-3-540-76786-2_1","volume-title":"Datatype-Generic Programming","author":"J Gibbons","year":"2007","unstructured":"Gibbons, J.: Datatype-generic programming. In: Backhouse, R., Gibbons, J., Hinze, R., Jeuring, J. (eds.) SSDGP 2006. LNCS, vol. 4719, pp. 1\u201371. Springer, Heidelberg (2007). https:\/\/doi.org\/10.1007\/978-3-540-76786-2_1"},{"issue":"2","key":"6_CR20","first-page":"227","volume":"19","author":"A Gill","year":"2009","unstructured":"Gill, A., Hutton, G.: The worker\/wrapper transformation. JFP 19(2), 227\u2013251 (2009)","journal-title":"JFP"},{"issue":"1","key":"6_CR21","first-page":"113","volume":"24","author":"N Sculthorpe","year":"2014","unstructured":"Sculthorpe, N., Hutton, G.: Work it, wrap it, fix it, fold it. JFP 24(1), 113\u2013127 (2014)","journal-title":"JFP"},{"key":"6_CR22","unstructured":"Tullsen, M.A.: Path, A Program Transformation System for Haskell. Ph.D. thesis. Yale University (2002)"},{"key":"6_CR23","first-page":"173","volume":"9","author":"W Guttmann","year":"2003","unstructured":"Guttmann, W., Partsch, H., Schulte, W., Vullinghs, T.: Tool support for the interactive derivation of formally correct functional programs. J. Univers. Comput. Sci. 9, 173 (2003)","journal-title":"J. Univers. Comput. Sci."},{"issue":"3","key":"6_CR24","first-page":"293","volume":"23","author":"S Thompson","year":"2013","unstructured":"Thompson, S., Li, H.: Refactoring tools for functional languages. JFP 23(3), 293\u2013350 (2013)","journal-title":"JFP"},{"key":"6_CR25","doi-asserted-by":"crossref","unstructured":"Li, H., Reinke, C., Thompson, S.: Tool support for refactoring functional programs. In: Haskell Workshop (2003)","DOI":"10.1145\/871895.871899"},{"key":"6_CR26","doi-asserted-by":"crossref","unstructured":"Gill, A.: Introducing the Haskell equational reasoning assistant. In: Haskell Workshop (2006)","DOI":"10.1145\/1159842.1159856"},{"issue":"5","key":"6_CR27","first-page":"545","volume":"19","author":"SC Mu","year":"2009","unstructured":"Mu, S.C., Ko, H.S., Jansson, P.: Algebra of programming in Agda: dependent types for relational program derivation. JFP 19(5), 545\u2013579 (2009)","journal-title":"JFP"},{"key":"6_CR28","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"412","DOI":"10.1007\/3-540-63104-6_41","volume-title":"Automated Deduction\u2014CADE-14","author":"R Bornat","year":"1997","unstructured":"Bornat, R., Sufrin, B.: Jape: a calculator for animating proof-on-paper. In: McCune, W. (ed.) CADE 1997. LNCS, vol. 1249, pp. 412\u2013415. Springer, Heidelberg (1997). https:\/\/doi.org\/10.1007\/3-540-63104-6_41"},{"issue":"3","key":"6_CR29","doi-asserted-by":"publisher","first-page":"177","DOI":"10.1093\/comjnl\/42.3.177","volume":"42","author":"R Bornat","year":"1999","unstructured":"Bornat, R., Sufrin, B.: Animating formal proof at the surface: the jape proof calculator. Comput. J. 42(3), 177\u2013192 (1999)","journal-title":"Comput. J."},{"key":"6_CR30","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-07964-5","volume-title":"Interactive Theorem Proving and Program Development: Coq\u2019Art: The Calculus of Inductive Constructions","author":"Y Bertot","year":"2013","unstructured":"Bertot, Y., Cast\u00e9ran, P.: Interactive Theorem Proving and Program Development: Coq\u2019Art: The Calculus of Inductive Constructions. Springer, Heidelberg (2013). https:\/\/doi.org\/10.1007\/978-3-662-07964-5"},{"key":"6_CR31","unstructured":"Norell, U.: Towards a Practical Programming Language Based on Dependent Type Theory. Ph.D. thesis, Chalmers University of Technology (2007)"},{"key":"6_CR32","doi-asserted-by":"crossref","unstructured":"Wadler, P.: Strictness analysis aids time analysis. In: POPL (1988)","DOI":"10.1145\/73560.73571"},{"key":"6_CR33","doi-asserted-by":"crossref","unstructured":"Bjerner, B., Holmstr\u00f6m, S.: A composition approach to time analysis of first order lazy functional programs. In: FPCA (1989)","DOI":"10.1145\/99370.99382"},{"key":"6_CR34","volume-title":"Purely Functional Data Structures","author":"C Okasaki","year":"1999","unstructured":"Okasaki, C.: Purely Functional Data Structures. Cambridge University Press, Cambridge (1999)"},{"issue":"1","key":"6_CR35","doi-asserted-by":"publisher","first-page":"133","DOI":"10.1145\/1328897.1328457","volume":"43","author":"Nils Anders Danielsson","year":"2008","unstructured":"Danielsson, N.A.: Lightweight semiformal time complexity analysis for purely functional data structures. In: POPL (2008)","journal-title":"ACM SIGPLAN Notices"},{"key":"6_CR36","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"74","DOI":"10.1007\/11964681_5","volume-title":"Implementation and Application of Functional Languages","author":"E Brady","year":"2006","unstructured":"Brady, E., Hammond, K.: A dependently typed framework for static analysis of program execution costs. In: Butterfield, A., Grelck, C., Huch, F. (eds.) IFL 2005. LNCS, vol. 4015, pp. 74\u201390. Springer, Heidelberg (2006). https:\/\/doi.org\/10.1007\/11964681_5"},{"key":"6_CR37","doi-asserted-by":"crossref","unstructured":"\u00c7i\u00e7ek, E., Barthe, G., Gaboardi, M., Garg, D., Hoffmann, J.: Relational cost analysis. In: POPL (2017)","DOI":"10.1145\/3009837.3009858"},{"key":"6_CR38","doi-asserted-by":"crossref","unstructured":"Sansom, P.M., Peyton Jones, S.L.: Formally based profiling for higher-order functional languages. TOPLAS (1997)","DOI":"10.1145\/244795.244802"},{"key":"6_CR39","doi-asserted-by":"crossref","unstructured":"Claessen, K., Hughes, J.: QuickCheck: a lightweight tool for random testing of Haskell Programs. In: ICFP (2011)","DOI":"10.1145\/1988042.1988046"},{"key":"6_CR40","doi-asserted-by":"crossref","unstructured":"Moran, A.K., Sands, D.: Improvement in a lazy context: an operational theory for call-by-need. In: POPL (1999)","DOI":"10.1145\/292540.292547"}],"container-title":["Lecture Notes in Computer Science","Trends in Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-18506-0_6","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,9,16]],"date-time":"2022-09-16T16:24:59Z","timestamp":1663345499000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-18506-0_6"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019]]},"ISBN":["9783030185053","9783030185060"],"references-count":40,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-18506-0_6","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2019]]},"assertion":[{"value":"24 April 2019","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"TFP","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Symposium on Trends in Functional Programming","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Gothenburg","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Sweden","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2018","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"11 June 2018","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"13 June 2018","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"19","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"tfp2018","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"http:\/\/www.cse.chalmers.se\/~myreen\/tfp2018\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Single-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"EasyChair","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"13","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"7","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"0","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"54% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"3","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"2,4","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"No","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}}]}}