{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,3,26]],"date-time":"2025-03-26T10:03:52Z","timestamp":1742983432533,"version":"3.40.3"},"publisher-location":"Cham","reference-count":37,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783319563893"},{"type":"electronic","value":"9783319563909"}],"license":[{"start":{"date-parts":[[2016,1,1]],"date-time":"2016-01-01T00:00:00Z","timestamp":1451606400000},"content-version":"unspecified","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":[[2016]]},"DOI":"10.1007\/978-3-319-56390-9_7","type":"book-chapter","created":{"date-parts":[[2017,4,6]],"date-time":"2017-04-06T01:23:59Z","timestamp":1491441839000},"page":"129-157","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":1,"title":["Software Engineering Foundations of Zoetic Data and Totally Functional Programming"],"prefix":"10.1007","author":[{"given":"Paul","family":"Bailes","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Colin","family":"Kemp","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2017,4,7]]},"reference":[{"issue":"2","key":"7_CR1","doi-asserted-by":"publisher","first-page":"98","DOI":"10.1093\/comjnl\/32.2.98","volume":"32","author":"J Hughes","year":"1989","unstructured":"Hughes, J.: Why functional programming matters. Comput. J. 32(2), 98\u2013107 (1989)","journal-title":"Comput. J."},{"key":"7_CR2","volume-title":"Introduction to Functional Programming","author":"R Bird","year":"1988","unstructured":"Bird, R., Wadler, P.: Introduction to Functional Programming. Prentice-Hall International, Upper Saddle River (1988)"},{"key":"7_CR3","volume-title":"Structure and Interpretation of Computer Programs","author":"H Abelson","year":"1996","unstructured":"Abelson, H., Sussman, G.J., Sussman, J.: Structure and Interpretation of Computer Programs, 2nd edn. MIT Press, Cambridge (1996)","edition":"2"},{"key":"7_CR4","unstructured":"Collins English Dictionary. \n                  http:\/\/www.collinsdictionary.com\n                  \n                . Accessed 4 July 2014"},{"key":"7_CR5","volume-title":"Software Engineering","author":"I Sommerville","year":"2007","unstructured":"Sommerville, I.: Software Engineering, 8th edn. Addison Wesley, Boston (2007)","edition":"8"},{"key":"7_CR6","volume-title":"Software Engineering","author":"I Sommerville","year":"2015","unstructured":"Sommerville, I.: Software Engineering, 10th edn. Pearson, Essex (2015)","edition":"10"},{"key":"7_CR7","volume-title":"Object-Oriented Software Construction","author":"B Meyer","year":"1997","unstructured":"Meyer, B.: Object-Oriented Software Construction. Prentice Hall, Englewood Cliffs (1997)"},{"key":"7_CR8","volume-title":"The Lambda Calculus - Its Syntax and Semantics","author":"H Barendregt","year":"1984","unstructured":"Barendregt, H.: The Lambda Calculus - Its Syntax and Semantics, 2nd edn. North-Holland, Amsterdam (1984)","edition":"2"},{"key":"7_CR9","series-title":"Texts and Monographs in Computer Science","doi-asserted-by":"publisher","first-page":"60","DOI":"10.1007\/978-1-4612-5695-3_12","volume-title":"Selected writings on Computing: A Personal Perspective","author":"E Dijkstra","year":"1982","unstructured":"Dijkstra, E.: On the role of scientific thought. In: Dijkstra, E.W. (ed.) Selected writings on Computing: A Personal Perspective. Texts and Monographs in Computer Science, pp. 60\u201366. Springer-Verlag, New York (1982)"},{"key":"7_CR10","volume-title":"Programming Language Pragmatics","author":"M Scott","year":"2009","unstructured":"Scott, M.: Programming Language Pragmatics, 3rd edn. Morgan Kaufmann, San Francisco (2009)","edition":"3"},{"key":"7_CR11","doi-asserted-by":"crossref","unstructured":"Kiczales, G., Lamping., J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J. M., Irwin, J.: Aspect-oriented programming. In: Proceedings of the 11th European Conference on Object-Oriented Programming ECOOP\u201997. LNCS 1241, pp. 220\u2013242 (1997)","DOI":"10.1007\/BFb0053381"},{"key":"7_CR12","first-page":"308","volume-title":"Encyclopedia of Software Engineering","author":"M Hinchey","year":"2010","unstructured":"Hinchey, M., Bowen, J., Vassev, E.: Formal Methods. In: Laplante, P.A. (ed.) Encyclopedia of Software Engineering, pp. 308\u2013320. Taylor & Francis, New York (2010)"},{"key":"7_CR13","unstructured":"Haskell Programming Language. \n                  http:\/\/www.haskell.org\n                  \n                . Accessed 4 July 2014"},{"key":"7_CR14","volume-title":"Introduction to Automata Theory, Languages, and Computation","author":"J Hopcroft","year":"1979","unstructured":"Hopcroft, J., Ullman, J.: Introduction to Automata Theory, Languages, and Computation. Addison-Wesley, Boston (1979)"},{"key":"7_CR15","doi-asserted-by":"publisher","first-page":"323","DOI":"10.1017\/S0956796800000411","volume":"2","author":"G Hutton","year":"1992","unstructured":"Hutton, G.: Higher-order functions for parsing. J. Funct. Program. 2, 323\u2013343 (1992)","journal-title":"J. Funct. Program."},{"key":"7_CR16","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"113","DOI":"10.1007\/3-540-15975-4_33","volume-title":"Functional Programming Languages and Computer Architecture","author":"P Wadler","year":"1985","unstructured":"Wadler, P.: How to replace failure by a list of successes a method for exception handling, backtracking, and pattern matching in lazy functional languages. In: Jouannaud, J.-P. (ed.) FPCA 1985. LNCS, vol. 201, pp. 113\u2013128. Springer, Heidelberg (1985). doi:\n                  10.1007\/3-540-15975-4_33"},{"key":"7_CR17","doi-asserted-by":"crossref","unstructured":"Backhouse, R., Jansson, P., Jeuring, J., Meertens, L.: Generic programming - an introduction. In: Swierstra, S., Henriques, P., Oliveira, J. (eds.) Advanced Functional Programming. LNCS, vol. 1608, pp. 28\u2013115 (1999)","DOI":"10.1007\/10704973_2"},{"key":"7_CR18","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"124","DOI":"10.1007\/3540543961_7","volume-title":"Functional Programming Languages and Computer Architecture","author":"E Meijer","year":"1991","unstructured":"Meijer, E., Fokkinga, M., Paterson, R.: Functional programming with bananas, lenses, envelopes and barbed wire. In: Hughes, J. (ed.) FPCA 1991. LNCS, vol. 523, pp. 124\u2013144. Springer, Heidelberg (1991). doi:\n                  10.1007\/3540543961_7"},{"key":"7_CR19","doi-asserted-by":"publisher","first-page":"355","DOI":"10.1017\/S0956796899003500","volume":"9","author":"G Hutton","year":"1999","unstructured":"Hutton, G.: A tutorial on the universality and expressiveness of fold. J. Funct. Program. 9, 355\u2013372 (1999)","journal-title":"J. Funct. Program."},{"key":"7_CR20","doi-asserted-by":"crossref","unstructured":"Bailes, P., Brough, L.: Making sense of recursion patterns. In: Proceedings of 1st FormSERA: Rigorous and Agile Approaches, pp. 16\u201322. IEEE (2012)","DOI":"10.1109\/FormSERA.2012.6229782"},{"issue":"3","key":"7_CR21","first-page":"366","volume":"8","author":"T Uustalu","year":"2001","unstructured":"Uustalu, T., Vene, V., Pardo, A.: Recursion schemes from comonads. Nordic J. Comput. 8(3), 366\u2013390 (2001)","journal-title":"Nordic J. Comput."},{"key":"7_CR22","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"97","DOI":"10.1007\/3-540-15198-2_7","volume-title":"Mathematical Foundations of Software Development","author":"JC Reynolds","year":"1985","unstructured":"Reynolds, J.C.: Three approaches to type structure. In: Ehrig, H., Floyd, C., Nivat, M., Thatcher, J. (eds.) CAAP 1985. LNCS, vol. 185, pp. 97\u2013138. Springer, Heidelberg (1985). doi:\n                  10.1007\/3-540-15198-2_7"},{"key":"7_CR23","unstructured":"Bailes, P., Kemp, C.: Fusing folds and data structures into zoetic data. In: Proceedings of 23rd IASTED International Multi-Conference on Applied Informatics (AI 2005), pp. 299\u2013306 (2005)"},{"key":"7_CR24","doi-asserted-by":"crossref","unstructured":"Bailes, P., Kemp, C.: Zoetic data and their generators. In: Proceedings of 11th International Conference on Evaluation of Novel Software Approaches to Software Engineering (ENASE 2016), pp. 260\u2013271 (2016)","DOI":"10.5220\/0005914902600271"},{"key":"7_CR25","volume-title":"New Trends in Software Methodologies","author":"P Bailes","year":"2014","unstructured":"Bailes, P., Brough, L., Kemp, C.: From computer science to software engineering \u2013 a programming-level perspective. In: Fujita, H., et al. (eds.) New Trends in Software Methodologies. Tools and Techniques. IOS Press, Amsterdam (2014)"},{"issue":"8","key":"7_CR26","doi-asserted-by":"publisher","first-page":"613","DOI":"10.1145\/359576.359579","volume":"21","author":"J Backus","year":"1978","unstructured":"Backus, J.: Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs. Commun. ACM 21(8), 613\u2013641 (1978)","journal-title":"Commun. ACM"},{"key":"7_CR27","volume-title":"Structured Programming","author":"O-J Dahl","year":"1972","unstructured":"Dahl, O.-J., Dijkstra, E.W., Hoare, C.A.R.: Structured Programming. Academic Press, Cambridge (1972)"},{"issue":"7","key":"7_CR28","first-page":"751","volume":"10","author":"DA Turner","year":"2004","unstructured":"Turner, D.A.: Total functional programming. J. Univers. Comput. Sci. 10(7), 751\u2013768 (2004)","journal-title":"J. Univers. Comput. Sci."},{"key":"7_CR29","unstructured":"Coq proof assistant. \n                  https:\/\/coq.inria.fr\/\n                  \n                . Accessed 22 Feb 2016"},{"issue":"1","key":"7_CR30","doi-asserted-by":"publisher","first-page":"2001","DOI":"10.1016\/S1571-0661(04)80906-X","volume":"44","author":"J Gibbons","year":"2001","unstructured":"Gibbons, J., Hutton, G., Altenkirch, T.: When is a function a fold or an unfold? Electron. Notes Theor. Comput. Sci. 44(1), 2001 (2001)","journal-title":"Electron. Notes Theor. Comput. Sci."},{"key":"7_CR31","doi-asserted-by":"publisher","first-page":"348","DOI":"10.1016\/0022-0000(78)90014-4","volume":"17","author":"R Milner","year":"1977","unstructured":"Milner, R.: A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 348\u2013375 (1977)","journal-title":"J. Comput. Syst. Sci."},{"key":"7_CR32","unstructured":"Haskell platform. \n                  http:\/\/www.haskell.org\/platform\/\n                  \n                . Accessed 4 July 2014"},{"key":"7_CR33","doi-asserted-by":"crossref","unstructured":"Vytiniotis, D., Weirich, S., Jones, S.L.P.: Boxy types: inference for higher-rank types and impredicativity. In: Proceedings of ICFP, pp. 251\u2013262 (2006)","DOI":"10.1145\/1160074.1159838"},{"key":"7_CR34","doi-asserted-by":"crossref","unstructured":"Bailes, P.: Recursion patterns and their impact on programming language design. In: Proceedings of IASTED International Conference Advances in Computer Science (ACS 2013), pp. 450\u2013459 (2013)","DOI":"10.2316\/P.2013.801-023"},{"key":"7_CR35","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"150","DOI":"10.1007\/10704973_4","volume-title":"Advanced Functional Programming","author":"SD Swierstra","year":"1999","unstructured":"Swierstra, S.D., Azero Alcocer, P.R., Saraiva, J.: Designing and implementing combinator languages. In: Swierstra, S.D., Oliveira, J.N., Henriques, P.R. (eds.) AFP 1998. LNCS, vol. 1608, pp. 150\u2013206. Springer, Heidelberg (1999). doi:\n                  10.1007\/10704973_4"},{"key":"7_CR36","volume-title":"Analog Computation","author":"A Jackson","year":"1960","unstructured":"Jackson, A.: Analog Computation. McGraw-Hill, New York (1960)"},{"key":"7_CR37","unstructured":"Bailes, P., Brough, L., Kemp, C.: Higher-order catamorphisms as bases for program structuring and design recovery. In: Proceedings of IASTED International Conference Software Engineering (SE 2013), pp. 775\u2013782 (2013)"}],"container-title":["Communications in Computer and Information Science","Evaluation of Novel Approaches to Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-319-56390-9_7","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,5,20]],"date-time":"2019-05-20T23:24:10Z","timestamp":1558394650000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-319-56390-9_7"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2016]]},"ISBN":["9783319563893","9783319563909"],"references-count":37,"URL":"https:\/\/doi.org\/10.1007\/978-3-319-56390-9_7","relation":{},"ISSN":["1865-0929","1865-0937"],"issn-type":[{"type":"print","value":"1865-0929"},{"type":"electronic","value":"1865-0937"}],"subject":[],"published":{"date-parts":[[2016]]},"assertion":[{"value":"7 April 2017","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"ENASE","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on Evaluation of Novel Approaches to Software Engineering","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Rome","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Italy","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2016","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"27 April 2016","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"28 April 2016","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"11","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"enase2016","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"http:\/\/www.enase.org\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}