{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,9,5]],"date-time":"2024-09-05T00:30:26Z","timestamp":1725496226823},"publisher-location":"Berlin, Heidelberg","reference-count":138,"publisher":"Springer Berlin Heidelberg","isbn-type":[{"type":"print","value":"9783540767855"},{"type":"electronic","value":"9783540767862"}],"license":[{"start":{"date-parts":[[2007,1,1]],"date-time":"2007-01-01T00:00:00Z","timestamp":1167609600000},"content-version":"unspecified","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2007]]},"DOI":"10.1007\/978-3-540-76786-2_1","type":"book-chapter","created":{"date-parts":[[2007,11,29]],"date-time":"2007-11-29T05:37:47Z","timestamp":1196314667000},"page":"1-71","source":"Crossref","is-referenced-by-count":23,"title":["Datatype-Generic Programming"],"prefix":"10.1007","author":[{"given":"Jeremy","family":"Gibbons","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","reference":[{"key":"1_CR1","unstructured":"Reference manual for the Ada programming language. American National Standards Institute, Inc., ANSI\/MIL-STD-1815A-1983 (1983)"},{"key":"1_CR2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-05412-3","volume-title":"Proofs from The Book","author":"M. Aigner","year":"2004","unstructured":"Aigner, M., Ziegler, G.M.: Proofs from The Book, 3rd edn. Springer, Heidelberg (2004)","edition":"3"},{"key":"1_CR3","volume-title":"Modern C++ Design","author":"A. Alexandrescu","year":"2001","unstructured":"Alexandrescu, A.: Modern C++ Design. Addison-Wesley, Reading (2001)"},{"key":"1_CR4","volume-title":"Generic Programming and the STL: Using and Extending the C++ Standard Template Library","author":"M. Austern","year":"1998","unstructured":"Austern, M.: Generic Programming and the STL: Using and Extending the C++ Standard Template Library. Addison-Wesley, Reading (1998)"},{"key":"1_CR5","doi-asserted-by":"publisher","first-page":"161","DOI":"10.1093\/imamat\/15.2.161","volume":"15","author":"R.C. Backhouse","year":"1975","unstructured":"Backhouse, R.C., Carr\u00e9, B.A.: Regular algebra applied to path-finding problems. Journal of the Institute of Mathematics and Applications\u00a015, 161\u2013186 (1975)","journal-title":"Journal of the Institute of Mathematics and Applications"},{"key":"1_CR6","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"7","DOI":"10.1007\/3-540-57499-9_15","volume-title":"Formal Program Development","author":"R. Backhouse","year":"1993","unstructured":"Backhouse, R., Hoogendijk, P.: FIP TC2\/WG2.1 State-of-the-Art Report on Formal Program Development. In: M\u00f6ller, B., Schuman, S., Partsch, H. (eds.) Formal Program Development. LNCS, vol.\u00a0755, pp. 7\u201342. Springer, Heidelberg (1993)"},{"key":"1_CR7","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"28","DOI":"10.1007\/10704973_2","volume-title":"Advanced Functional Programming","author":"R.C. Backhouse","year":"1999","unstructured":"Backhouse, R.C., Jansson, P., Jeuring, J., Meertens, L.G.L.T.: Generic programming: An introduction. In: Swierstra, S.D., Oliveira, J.N. (eds.) AFP 1998. LNCS, vol.\u00a01608, pp. 28\u2013115. Springer, Heidelberg (1999)"},{"key":"1_CR8","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","DOI":"10.1007\/b11968","volume-title":"CASL User Manual","author":"M. Bidoit","year":"2004","unstructured":"Bidoit, M., Mosses, P.: User Manual. In: Bidoit, M., Mosses, P.D. (eds.) CASL User Manual. LNCS, vol.\u00a02900, Springer, Heidelberg (2004)"},{"key":"1_CR9","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-61455-2_12","volume-title":"The Algebra of Programming","author":"R. Bird","year":"1996","unstructured":"Bird, R., de Moor, O.: The Algebra of Programming. Prentice-Hall, Englewood Cliffs (1996)"},{"issue":"1","key":"1_CR10","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1017\/S0956796800001556","volume":"6","author":"R. Bird","year":"1996","unstructured":"Bird, R., de Moor, O., Hoogendijk, P.: Generic functional programming with types and relations. Journal of Functional Programming\u00a06(1), 1\u201328 (1996)","journal-title":"Journal of Functional Programming"},{"key":"1_CR11","doi-asserted-by":"publisher","first-page":"239","DOI":"10.1007\/BF00264249","volume":"21","author":"R.S. Bird","year":"1984","unstructured":"Bird, R.S.: Using circular programs to eliminate multiple traversals of data. Acta Informatica\u00a021, 239\u2013250 (1984)","journal-title":"Acta Informatica"},{"key":"1_CR12","first-page":"151","volume-title":"Constructive Methods in Computer Science","author":"R.S. Bird","year":"1988","unstructured":"Bird, R.S.: Lectures on constructive functional programming. In: Broy, M. (ed.) Constructive Methods in Computer Science, pp. 151\u2013218. Springer, Heidelberg Also available as Technical Monograph PRG-69, from the Programming Research Group, Oxford University (1988)"},{"key":"1_CR13","unstructured":"Bracha, G., Cohen, N., Kemper, C., Marx, S., Odersky, M., Panitz, S.-E., Stoutamire, D., Thorup, K., Wadler, P.: Add generic types to the Java programming language (April 2001), JSR 14 http:\/\/www.jcp.org \/en\/jsr\/detail?id=014"},{"key":"1_CR14","unstructured":"Bronstein, M., Burge, W., Daly, T., Davenport, J., Dewar, M., Dunstan, M., Fortenbacher, A., Gianni, P., Grabmeier, J., Guidry, J., Jenks, R., Lambe, L., Monagan, M., Morrison, S., Sit, W., Steinbach, J., Sutor, R., Trager, B., Watt, S., Wen, J., Williamson, C.: The Thirty-Year Horizon (2003), http:\/\/wiki.axiom-developer.org \/Mirrors?go=\/public\/book2.pdf"},{"key":"1_CR15","doi-asserted-by":"crossref","unstructured":"Buchlovsky, P., Thielecke, H.: A type-theoretic reconstruction of the Visitor pattern. In: 21st Conference on Mathematical Foundations of Programming Semantics. Electronic Notes in Theoretical Computer Science, vol.\u00a0155 (2005)","DOI":"10.1016\/j.entcs.2005.11.061"},{"issue":"4","key":"1_CR16","doi-asserted-by":"publisher","first-page":"471","DOI":"10.1145\/6041.6042","volume":"17","author":"L. Cardelli","year":"1985","unstructured":"Cardelli, L., Wegner, P.: On understanding types, data abstraction and polymorphism. ACM Computing Surveys\u00a017(4), 471\u2013522 (1985)","journal-title":"ACM Computing Surveys"},{"key":"1_CR17","doi-asserted-by":"crossref","unstructured":"Cheney, J., Hinze, R.: A lightweight implementation of generics and dynamics. In: Haskell Workshop, pp. 90\u2013104 (2002)","DOI":"10.1145\/581690.581698"},{"key":"1_CR18","doi-asserted-by":"crossref","first-page":"17","DOI":"10.1007\/978-1-349-91518-7_2","volume-title":"The Fun of Programming","author":"Koen Claessen","year":"2003","unstructured":"Claessen, K., Hughes, J.: Specification based testing with QuickCheck. In: Gibbons, de Moor[45], pp. 17\u201340"},{"key":"1_CR19","doi-asserted-by":"crossref","unstructured":"Clarke, D., L\u00f6h, A., Haskell, G.: specifically. In: Gibbons, Jeuring [47], pp. 21\u201347","DOI":"10.1007\/978-0-387-35672-3_2"},{"key":"1_CR20","series-title":"Lecture Notes in Computer Science","volume-title":"CASL Reference Manual","year":"2004","unstructured":"Mosses, P.D. (ed.): CASL Reference Manual. LNCS, vol.\u00a02960. Springer, Heidelberg (2004)"},{"key":"1_CR21","volume-title":"Introduction to Algorithms","author":"T.H. Cormen","year":"1990","unstructured":"Cormen, T.H., Leiserson, C.E., Rivest, R.L.: Introduction to Algorithms. MIT Press, Cambridge (1990)"},{"key":"1_CR22","volume-title":"Generative Programming: Methods, Tools and Applications","author":"K. Czarnecki","year":"2000","unstructured":"Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools and Applications. Addison-Wesley, Reading (2000)"},{"key":"1_CR23","doi-asserted-by":"crossref","unstructured":"Damas, L., Milner, R.: Principal type schemes for functional programs. In: Principles of Programming Languages, pp. 207\u2013212 (1982)","DOI":"10.1145\/582153.582176"},{"key":"1_CR24","unstructured":"Day, N., Launchbury, J., Lewis, J.: Logical abstractions in haskell. In: Haskell Workshop. Utrecht University Department of Computer Science, Technical Report UU-CS-1999-28 (October 1999)"},{"key":"1_CR25","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/3-540-39953-4_1","volume-title":"Generic Programming","author":"J.. Dehnert","year":"2000","unstructured":"Dehnert, J., Stepanov, A.: Fundamentals of generic programming. In: Jazayeri, M., Musser, D.R., Loos, R.G.K. (eds.) Generic Programming. LNCS, vol.\u00a01766, pp. 1\u201311. Springer, Heidelberg (2000)"},{"key":"1_CR26","doi-asserted-by":"crossref","unstructured":"dos Santos Oliveira, B.C., Gibbons, J.: TypeCase: A design pattern for type-indexed functions. In: Leijen, D. (ed.) Haskell Workshop (2005)","DOI":"10.1145\/1088348.1088358"},{"key":"1_CR27","doi-asserted-by":"publisher","first-page":"125","DOI":"10.1007\/BF01584082","volume":"1","author":"J. Edmonds","year":"1971","unstructured":"Edmonds, J.: Matroids and the Greedy Algorithm. Mathematical Programming\u00a01, 125\u2013136 (1971)","journal-title":"Mathematical Programming"},{"key":"1_CR28","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-69962-7","volume-title":"Fundamentals of Algebraic Specification 1: Equations and Initial Semantics","author":"H. Ehrig","year":"1985","unstructured":"Ehrig, H., Mahr, B.: Fundamentals of Algebraic Specification 1: Equations and Initial Semantics. Springer, Heidelberg (1985)"},{"key":"1_CR29","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-61284-8","volume-title":"Fundamentals of Algebraic Specification 2: Module Specifications and Constraints","author":"H. Ehrig","year":"1990","unstructured":"Ehrig, H., Mahr, B.: Fundamentals of Algebraic Specification 2: Module Specifications and Constraints. Springer, Heidelberg (1990)"},{"key":"1_CR30","unstructured":"Fokkinga, M.: Monadic maps and folds for arbitrary datatypes. Department INF, Universiteit Twente (June 1994)"},{"issue":"4","key":"1_CR31","first-page":"81","volume":"1","author":"M.M. Fokkinga","year":"1990","unstructured":"Fokkinga, M.M.: Tupling and mutumorphisms. The Squiggolist\u00a01(4), 81\u201382 (1990)","journal-title":"The Squiggolist"},{"key":"1_CR32","unstructured":"Fokkinga, M.M., Meijer, E.: Program calculation properties of continuous algebras. Technical Report CS-R9104, CWI, Amsterdam (January 1991)"},{"key":"1_CR33","volume-title":"Putting Metaclasses to Work","author":"I.R. Forman","year":"1999","unstructured":"Forman, I.R., Danforth, S.: Putting Metaclasses to Work. Addison-Wesley, Reading (1999)"},{"key":"1_CR34","unstructured":"Gamma, E., Beck, K.: JUnit: Testing resources for extreme programming (2000), http:\/\/www.junit.org\/"},{"key":"1_CR35","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"E. Gamma","year":"1995","unstructured":"Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)"},{"key":"1_CR36","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-30477-7_22","volume-title":"Programming Languages and Systems","author":"N. Ghani","year":"2004","unstructured":"Ghani, N., Uustalu, T., Vene, V.: Build, augment and destroy, universally. In: Chin, W.-N. (ed.) APLAS 2004. LNCS, vol.\u00a03302, Springer, Heidelberg (2004)"},{"key":"1_CR37","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"148","DOI":"10.1007\/3-540-47797-7_5","volume-title":"Algebraic and Coalgebraic Methods in the Mathematics of Program Construction","author":"J. Gibbons","year":"2002","unstructured":"Gibbons, J.: Calculating functional programs. In: Blackhouse, R., Crole, R.L., Gibbons, J. (eds.) Algebraic and Coalgebraic Methods in the Mathematics of Program Construction. LNCS, vol.\u00a02297, pp. 148\u2013203. Springer, Heidelberg (2002)"},{"key":"1_CR38","doi-asserted-by":"crossref","first-page":"41","DOI":"10.1007\/978-1-349-91518-7_3","volume-title":"The Fun of Programming","author":"Jeremy Gibbons","year":"2003","unstructured":"Gibbons, J.: Origami programming. In Gibbons, de\u00a0Moor [45], pp. 41\u201360"},{"key":"1_CR39","doi-asserted-by":"crossref","unstructured":"Gibbons, J.: Design patterns as higher-order datatype-generic programs (June 2005), Tutorial presented at ECOOP, http:\/\/2005.ecoop.org \/8.html","DOI":"10.1145\/1159861.1159863"},{"key":"1_CR40","doi-asserted-by":"crossref","unstructured":"Gibbons, J.: Design patterns as higher-order datatype-generic programs (October 2005), Tutorial presented at OOPSLA, http:\/\/www.oopsla.org \/2005\/ShowEvent.do?id=121","DOI":"10.1145\/1159861.1159863"},{"key":"1_CR41","doi-asserted-by":"crossref","unstructured":"Gibbons, J.: Design patterns as higher-order datatype-generic programs. In: Hinze, R. (ed.) Workshop on Generic Programming (September 2006)","DOI":"10.1145\/1159861.1159863"},{"key":"1_CR42","doi-asserted-by":"publisher","first-page":"108","DOI":"10.1016\/j.scico.2006.01.006","volume":"65","author":"J. Gibbons","year":"2007","unstructured":"Gibbons, J.: Metamorphisms: Streaming representation-changers. Science of Computer Programming\u00a065, 108\u2013139 (2007)","journal-title":"Science of Computer Programming"},{"key":"1_CR43","unstructured":"Gibbons, J., Backhouse, R., Oliveira, B., Reig, F.: Datatype-generic programming project (2003), http:\/\/web.comlab.ox.ac.uk \/oucl\/research\/pdt\/ap\/dgp\/"},{"key":"1_CR44","unstructured":"Gibbons, J., Oliveira, B.C.d.S.: The essence of the Iterator pattern. In: Uustalu, T., McBride, C. (eds.) Mathematically-Structured Functional Programming (2006)"},{"key":"1_CR45","doi-asserted-by":"crossref","unstructured":"Gibbons, J., de Moor, O. (eds.).: The Fun of Programming. Cornerstones in Computing, Palgrave (2003), ISBN 1-4039-0772-2","DOI":"10.1007\/978-1-349-91518-7"},{"issue":"1","key":"1_CR46","doi-asserted-by":"crossref","first-page":"146","DOI":"10.1016\/S1571-0661(04)80906-X","volume":"44","author":"Jeremy Gibbons","year":"2001","unstructured":"Gibbons, J., Hutton, G., Altenkirch, T.: When is a function a fold or an unfold? Electronic Notes in Theoretical Computer Science. In: Proceedings of Coalgebraic Methods in Computer Science, vol.\u00a044(1) (2001)","journal-title":"Electronic Notes in Theoretical Computer Science"},{"key":"1_CR47","doi-asserted-by":"publisher","DOI":"10.1007\/978-0-387-35672-3","volume-title":"Generic Programming","author":"J. Gibbons","year":"2003","unstructured":"Gibbons, J., Jeuring, J.: Generic Programming. Kluwer Academic Publishers, Dordrecht (2003)"},{"key":"1_CR48","doi-asserted-by":"crossref","unstructured":"Gibbons, J., Jones, G.: The under-appreciated unfold. In: Proceedings of the Third ACM SIGPLAN International Conference on Functional Programming, pp. 273\u2013279, Baltimore, Maryland (September 1998)","DOI":"10.1145\/289423.289455"},{"key":"1_CR49","doi-asserted-by":"publisher","first-page":"281","DOI":"10.1017\/S0956796806005880","volume":"16","author":"J. Gibbons","year":"2006","unstructured":"Gibbons, J., Lester, D., Bird, R.: Enumerating the rationals. Journal of Functional Programming\u00a016, 281\u2013291 (2006)","journal-title":"Journal of Functional Programming"},{"key":"1_CR50","doi-asserted-by":"crossref","unstructured":"Gill, A., Launchbury, J., Peyton Jones, S.: A short cut to deforestation. In: Functional Programming Languages and Computer Architecture (1993)","DOI":"10.1145\/165180.165214"},{"key":"1_CR51","unstructured":"Girard, J.-Y.: Interpr\u00e9tation Fonctionnelle et \u00c9limination des Coupures de l\u2019Arithm\u00e9tique d\u2019Ordre Sup\u00e9rieur. PhD thesis, Universit\u00e9 de Paris VII (1972)"},{"key":"1_CR52","doi-asserted-by":"crossref","unstructured":"Gorlatch, S., Lengauer, C.: Parallelization of divide-and-conquer in the Bird-Meertens Formalism. Formal Aspects of Computing\u00a03 (1995)","DOI":"10.1007\/BF01211000"},{"key":"1_CR53","doi-asserted-by":"crossref","unstructured":"Gregor, D., J\u00e4rvi, J., Siek, J.G., Reis, G.D., Stroustrup, B., Lumsdaine, A.: Concepts: Linguistic support for generic programming in C++. In: Object-Oriented Programming, Systems, Languages, and Applications (2006)","DOI":"10.1145\/1167473.1167499"},{"key":"1_CR54","doi-asserted-by":"crossref","first-page":"127","DOI":"10.1007\/978-0-387-35672-3_7","volume-title":"Generic Programming","author":"Douglas Gregor","year":"2003","unstructured":"Gregor, D., Schupp, S.: Making the usage of STL safe. In: Gibbons, Jeuring [47], pp. 127\u2013140"},{"key":"1_CR55","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4612-2704-5","volume-title":"Larch: Languages and Tools for Formal Specification. Texts and Monographs in Computer Science","author":"J.V. Guttag","year":"1993","unstructured":"Guttag, J.V., Horning, J.J., Garland, S.J., Jones, K.D., Modet, A., Wing, J.M.: Larch: Languages and Tools for Formal Specification. Texts and Monographs in Computer Science. Springer, New York (1993)"},{"key":"1_CR56","unstructured":"Hagino, T.: A Categorical Programming Language. PhD thesis, Department of Computer Science, University of Edinburgh (September 1987)"},{"key":"1_CR57","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"2","DOI":"10.1007\/10722010_2","volume-title":"Mathematics of Program Construction","author":"R. Hinze","year":"2000","unstructured":"Hinze, R.: Polytypic values possess polykinded types. In: Backhouse, R.C., Oliveira, J.N. (eds.) MPC 2000. LNCS, vol.\u00a01837, pp. 2\u201327. Springer, Heidelberg (2000)"},{"key":"1_CR58","first-page":"236","volume-title":"International Conference on Functional Programming","author":"R. Hinze","year":"2004","unstructured":"Hinze, R.: Generics for the masses. In: International Conference on Functional Programming, pp. 236\u2013243. ACM Press, New York (2004)"},{"issue":"1","key":"1_CR59","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1017\/S0956796804005313","volume":"15","author":"R. Hinze","year":"2005","unstructured":"Hinze, R.: Church numerals, twice! Journal of Functional Programming\u00a015(1), 1\u201313 (2005)","journal-title":"Journal of Functional Programming"},{"key":"1_CR60","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/978-3-540-45191-4_1","volume-title":"Generic Programming","author":"R. Hinze","year":"2003","unstructured":"Hinze, R., Jeuring, J.: Generic Haskell: Practice and theory. In: Backhouse, R., Gibbons, J. (eds.) Generic Programming. LNCS, vol.\u00a02793, pp. 1\u201356. Springer, Heidelberg (2003)"},{"key":"1_CR61","doi-asserted-by":"crossref","unstructured":"Hinze, R., Jeuring, J., L\u00f6h, A.: Comparing approaches to generic programming in Haskell. In this volume (2006)","DOI":"10.1007\/978-3-540-76786-2_2"},{"key":"1_CR62","doi-asserted-by":"crossref","unstructured":"Hinze, R., Peyton Jones, S.: Derivable type classes. In: Haskell Workshop (2000)","DOI":"10.1016\/S1571-0661(05)80542-0"},{"key":"1_CR63","doi-asserted-by":"crossref","unstructured":"Hinze, R., L\u00f6h, A.: Generic programming, now! In this volume (2006)","DOI":"10.1007\/978-3-540-76786-2_3"},{"key":"1_CR64","first-page":"83","volume-title":"Structured Programming, APIC studies in data processing","author":"C.A.R. Hoare","year":"1972","unstructured":"Hoare, C.A.R.: Notes on data structuring. In: Dahl, O.-J., Dijkstra, E.W., Hoare, C.A.R. (eds.) Structured Programming, APIC studies in data processing, pp. 83\u2013174. Academic Press, London (1972)"},{"key":"1_CR65","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"242","DOI":"10.1007\/BFb0026992","volume-title":"Category Theory and Computer Science","author":"P. Hoogendijk","year":"1997","unstructured":"Hoogendijk, P., Backhouse, R.: When do datatypes commute? In: Moggi, E., Rosolini, G. (eds.) CTCS 1997. LNCS, vol.\u00a01290, pp. 242\u2013260. Springer, Heidelberg (1997)"},{"issue":"2","key":"1_CR66","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. Computer Journal\u00a032(2), 98\u2013107 (1989)","journal-title":"Computer Journal"},{"key":"1_CR67","doi-asserted-by":"publisher","DOI":"10.1145\/1460833.1460872","volume-title":"A Programming Language","author":"K.E. Iverson","year":"1962","unstructured":"Iverson, K.E.: A Programming Language. Wiley, Chichester (1962)"},{"key":"1_CR68","doi-asserted-by":"crossref","unstructured":"Jansson, P., Jeuring, J.: PolyP - a polytypic programming language extension. In: Principles of Programming Languages, pp. 470\u2013482 (1997)","DOI":"10.1145\/263699.263763"},{"key":"1_CR69","unstructured":"Jansson, P.: Functional Polytypic Programming. PhD thesis, Computing Science, Chalmers University of Technology and G\u00f6teborg University, Sweden (May 2000)"},{"issue":"1","key":"1_CR70","doi-asserted-by":"publisher","first-page":"35","DOI":"10.1016\/S0167-6423(01)00020-X","volume":"43","author":"P. Jansson","year":"2002","unstructured":"Jansson, P., Jeuring, J.: Polytypic data conversion programs. Science of Computer Programming\u00a043(1), 35\u201375 (2002)","journal-title":"Science of Computer Programming"},{"key":"1_CR71","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"139","DOI":"10.1007\/BFb0053568","volume-title":"Programming Languages and Systems","author":"B. Jay","year":"1998","unstructured":"Jay, B., Steckler, P.: The functional imperative: Shape! In: Hankin, C. (ed.) ESOP 1998 and ETAPS 1998. LNCS, vol.\u00a01381, pp. 139\u2013153. Springer, Heidelberg (1998)"},{"issue":"2-3","key":"1_CR72","doi-asserted-by":"publisher","first-page":"251","DOI":"10.1016\/0167-6423(95)00015-1","volume":"25","author":"C.B. Jay","year":"1995","unstructured":"Jay, C.B.: A semantics for shape. Science of Computer Programming\u00a025(2-3), 251\u2013283 (1995)","journal-title":"Science of Computer Programming"},{"key":"1_CR73","volume-title":"Axiom: The Scientific Computing System","author":"R.D. Jenks","year":"1992","unstructured":"Jenks, R.D., Sutor, R.S.: Axiom: The Scientific Computing System. Springer, Heidelberg (1992)"},{"key":"1_CR74","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4615-9984-5","volume-title":"Pascal User Manual and Report","author":"K. Jensen","year":"1975","unstructured":"Jensen, K., Wirth, N.: Pascal User Manual and Report. Springer, Heidelberg (1975)"},{"key":"1_CR75","unstructured":"Jesperson, H.: POSIX shell and utilities (p1003.2) (September 1991), Draft 11.2 http:\/\/www.nic.funet.fi \/pub\/doc\/posix\/p1003.2\/"},{"key":"1_CR76","series-title":"Lecture Notes in Computer Science","volume-title":"Advanced Functional Programming","year":"1995","unstructured":"Jeuring, J., Meijer, E. (eds.): Advanced Functional Programming. LNCS, vol.\u00a0925. Springer, Heidelberg (1995)"},{"key":"1_CR77","unstructured":"Jones, M.P., Duponcheel, L.: Composing monads. Technical Report RR-1004, Department of Computer Science, Yale (December 1993)"},{"key":"1_CR78","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","DOI":"10.1007\/11783596_15","volume-title":"Mathematics of Program Construction","author":"J. Kabanov","year":"2006","unstructured":"Kabanov, J., Vene, V.: Recursion schemes for dynamic programming. In: Uustalu, T. (ed.) MPC 2006. LNCS, vol.\u00a04014, Springer, Heidelberg (2006)"},{"key":"1_CR79","doi-asserted-by":"crossref","unstructured":"Kahn, J.: It\u2019s alive! Wired, 10.03:72-77 (March 2002)","DOI":"10.1055\/s-2002-20572"},{"key":"1_CR80","doi-asserted-by":"crossref","unstructured":"Kennedy, A., Syme, D.: Design and implementation of generics for the.NET Common Language Runtime. In: Programming Language Design and Implementation, Snowbird, Utah, pp. 1\u201312 (2001)","DOI":"10.1145\/381694.378797"},{"key":"1_CR81","doi-asserted-by":"crossref","DOI":"10.7551\/mitpress\/1405.001.0001","volume-title":"The Art of the Metaobject Protocol.","author":"G. Kiczales","year":"1991","unstructured":"Kiczales, G., des Rivi\u00e9res, J., Bobrow, D.G.: The Art of the Metaobject Protocol. MIT Press, Cambridge (1991)"},{"key":"1_CR82","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"220","DOI":"10.1007\/BFb0053381","volume-title":"ECOOP \u201997 - Object-Oriented Programming","author":"G. Kiczales","year":"1997","unstructured":"Kiczales, G., Lamping, J., Menhdhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol.\u00a01241, pp. 220\u2013242. Springer, Heidelberg (1997)"},{"key":"1_CR83","volume-title":"Functional Programming","author":"D.J. King","year":"1993","unstructured":"King, D.J., Wadler, P.: Combining monads. In: Launchbury, J., Sansom, P.M. (eds.) Functional Programming, Glasgow 1992, Springer, Heidelberg (1993)"},{"key":"1_CR84","unstructured":"Kiselyov, O., L\u00e4mmel, R.: Haskell\u2019s Overlooked Object System. Technical Report cs\/0509027, arXiv.org (September 2005)"},{"key":"1_CR85","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-58191-5","volume-title":"Greedoids","author":"B. Korte","year":"1991","unstructured":"Korte, B., Lov\u00e1sz, L., Schrader, R.: Greedoids. Springer, Heidelberg (1991)"},{"key":"1_CR86","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"329","DOI":"10.1007\/3-540-48743-3_15","volume-title":"ECOOP \u201999 - Object-Oriented Programming","author":"T. K\u00fchne","year":"1999","unstructured":"K\u00fchne, T.: Internal iteration externalized. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol.\u00a01628, pp. 329\u2013350. Springer, Heidelberg (1999)"},{"key":"1_CR87","unstructured":"Lazic, R.: A Semantic Study of Data Independence with Applications to Model Checking. D.Phil. thesis, Oxford University Computing Laboratory (1999)"},{"key":"1_CR88","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"226","DOI":"10.1007\/3-540-44904-3_16","volume-title":"Typed Lambda Calculi and Applications","author":"R. Lazic","year":"2003","unstructured":"Lazic, R., Nowak, D.: On a semantic definition of data independence. In: Hofmann, M.O. (ed.) TLCA 2003. LNCS, vol.\u00a02701, pp. 226\u2013240. Springer, Heidelberg Technical Report CS-RR-392, Department of Computer Science, University of Warwick (2003)"},{"issue":"3","key":"1_CR89","doi-asserted-by":"publisher","first-page":"133","DOI":"10.1145\/155360.155367","volume":"28","author":"B. Liskov","year":"1993","unstructured":"Liskov, B.: A history of CLU. ACM SIGPLAN Notices\u00a028(3), 133\u2013147 (1993)","journal-title":"ACM SIGPLAN Notices"},{"key":"1_CR90","series-title":"MIT Electrical Engineering and Computer Science Series","volume-title":"Abstraction and Specification in Program Development","author":"B. Liskov","year":"1986","unstructured":"Liskov, B., Guttag, J.: Abstraction and Specification in Program Development. MIT Electrical Engineering and Computer Science Series. MIT Press, Cambridge (1986)"},{"key":"1_CR91","unstructured":"L\u00f6h, A.:Exploring Generic Haskell. PhD thesis, Utrecht University (2004)"},{"key":"1_CR92","doi-asserted-by":"publisher","first-page":"255","DOI":"10.1016\/0167-6423(90)90023-7","volume":"14","author":"G. Malcolm","year":"1990","unstructured":"Malcolm, G.: Data structures and program transformation. Science of Computer Programming\u00a014, 255\u2013279 (1990)","journal-title":"Science of Computer Programming"},{"key":"1_CR93","first-page":"233","volume-title":"IFIP TC2 Working Conference on Programming Concepts and Methods","author":"U. Martin","year":"1990","unstructured":"Martin, U., Nipkow, T.: Automating Squiggol. In: Broy, M., Jones, C.B. (eds.) IFIP TC2 Working Conference on Programming Concepts and Methods, Sea of Galilee, Israel, pp. 233\u2013246. North-Holland, Amsterdam (1990)"},{"key":"1_CR94","unstructured":"McBride, C.: Naperian functors. Personal communication by email (5th April 2006)"},{"key":"1_CR95","doi-asserted-by":"crossref","unstructured":"McBride, C., Paterson, R.: Applicative programming with effects. Journal of Functional Programming (to appear)","DOI":"10.1017\/S0956796807006326"},{"key":"1_CR96","doi-asserted-by":"crossref","unstructured":"McKinna, J.: Why dependent types matter. In: Principles of Programming Languages (2006)","DOI":"10.1145\/1111037.1111038"},{"key":"1_CR97","unstructured":"Meacham, J.: DrIFT homepage (2004), http:\/\/repetae.net \/~john\/computer\/haskell\/DrIFT\/"},{"issue":"5","key":"1_CR98","doi-asserted-by":"publisher","first-page":"413","DOI":"10.1007\/BF01211391","volume":"4","author":"L. Meertens","year":"1992","unstructured":"Meertens, L.: Paramorphisms. Formal Aspects of Computing\u00a04(5), 413\u2013424 (1992)","journal-title":"Formal Aspects of Computing"},{"key":"1_CR99","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/3-540-61756-6_73","volume-title":"Programming Languages: Implementations, Logics, and Programs","author":"L. Meertens","year":"1996","unstructured":"Meertens, L.: Calculate polytypically! In: Kuchen, H., Swierstra, S.D. (eds.) PLILP 1996. LNCS, vol.\u00a01140, pp. 1\u201316. Springer, Heidelberg (1996)"},{"key":"1_CR100","unstructured":"Meertens, L.: Functor pulling. In: Backhouse, R., Sheard, T. (eds.) Workshop on Generic Programming, Marstrand, Sweden (1998)"},{"key":"1_CR101","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.) Functional Programming Languages and Computer Architecture. LNCS, vol.\u00a0523, pp. 124\u2013144. Springer, Heidelberg (1991)"},{"key":"1_CR102","unstructured":"Meijer, E., Jeuring, J.: Merging monads and folds for functional programming. In: Jeuring and Meijer [76]"},{"key":"1_CR103","doi-asserted-by":"publisher","first-page":"348","DOI":"10.1016\/0022-0000(78)90014-4","volume":"17","author":"R. Milner","year":"1978","unstructured":"Milner, R.: A theory of type polymorphism in programming. Journal of Computer and System Sciences\u00a017, 348\u2013375 (1978)","journal-title":"Journal of Computer and System Sciences"},{"key":"1_CR104","doi-asserted-by":"crossref","DOI":"10.7551\/mitpress\/2319.001.0001","volume-title":"Definition of Standard ML","author":"R. Milner","year":"1997","unstructured":"Milner, R., Tofte, M., Harper, R., MacQueen, D.: Definition of Standard ML. revised edn., MIT Press, Cambridge (1997)"},{"issue":"1","key":"1_CR105","doi-asserted-by":"crossref","first-page":"55","DOI":"10.1016\/0890-5401(91)90052-4","volume":"93","author":"Eugenio Moggi","year":"1991","unstructured":"Moggi, E.: Notions of computation and monads. Information and Computation\u00a093(1) (1991)","journal-title":"Information and Computation"},{"key":"1_CR106","doi-asserted-by":"crossref","unstructured":"Moggi, E., Bell\u00e9, G., Barry Jay, C.: shapely functors and traversals. In: Hoffman, M., Pavlovic, D., Rosolini, P. (eds.) Category Theory in Computer Science (1999)","DOI":"10.1016\/S1571-0661(05)80316-0"},{"key":"1_CR107","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4684-7089-5","volume-title":"The Ada Generic Library linear list processing packages","author":"D.R. Musser","year":"1989","unstructured":"Musser, D.R., Stepanov, A.A.: The Ada Generic Library linear list processing packages. Springer, New York (1989)"},{"issue":"1","key":"1_CR108","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/366193.366201","volume":"6","author":"P. Naur","year":"1963","unstructured":"Naur, P., Backus, J.W., Bauer, F.L., Green, J., Katz, C., McCarthy, J., Perlis, A.J., Rutishauser, H., Samelson, K., Vauquois, B., Wegstein, J.H., van Wijngaarden, A., Woodger, M.: Revised report on the algorithmic language ALGOL 60. Communications of the ACM\u00a06(1), 1\u201317 (1963)","journal-title":"Communications of the ACM"},{"key":"1_CR109","doi-asserted-by":"publisher","first-page":"165","DOI":"10.1016\/S0304-3975(00)00127-4","volume":"260","author":"A. Pardo","year":"2001","unstructured":"Pardo, A.: Fusion of recursive programs with computation effects. Theoretical Computer Science\u00a0260, 165\u2013207 (2001)","journal-title":"Theoretical Computer Science"},{"key":"1_CR110","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"171","DOI":"10.1007\/11546382_4","volume-title":"Advanced Functional Programming","author":"A. Pardo","year":"2005","unstructured":"Pardo, A.: Combining datatypes and effects. In: Vene, V., Uustalu, T. (eds.) AFP 2004. LNCS, vol.\u00a03622, pp. 171\u2013209. Springer, Heidelberg (2005)"},{"issue":"12","key":"1_CR111","doi-asserted-by":"publisher","first-page":"8","DOI":"10.1145\/377924.594925","volume":"1","author":"A.J. Perlis","year":"1958","unstructured":"Perlis, A.J., Samelson, K.: Preliminary report: International Algebraic Language. Communications of the ACM\u00a01(12), 8\u201322 (1958)","journal-title":"Communications of the ACM"},{"key":"1_CR112","volume-title":"The Haskell 98 Language and Libraries: The Revised Report","author":"S. Peyton Jones","year":"2003","unstructured":"Peyton Jones, S.: The Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge (2003)"},{"key":"1_CR113","doi-asserted-by":"crossref","unstructured":"Peyton Jones, S., Vytiniotis, D., Weirich, S., Washburn, G.: Simple unification-based type inference for generalized algebraic data types. In: International Conference on Functional Programming (2006)","DOI":"10.1145\/1159803.1159811"},{"key":"1_CR114","doi-asserted-by":"crossref","unstructured":"Peyton Jones, S., Wadler, P.: Imperative functional programming. In: Principles of Programming Languages, pp. 71\u201384 (1993)","DOI":"10.1145\/158511.158524"},{"key":"1_CR115","unstructured":"Programatica Team. Programatica tools for certifiable, auditable development of high-assurance systems in Haskell. In: High Confidence Software and Systems Conference. National Security Agency (April 2003)"},{"key":"1_CR116","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"408","DOI":"10.1007\/3-540-06859-7_148","volume-title":"Programming Symposium","author":"J.C. Reynolds","year":"1974","unstructured":"Reynolds, J.C.: Towards a theory of type structure. In: Robinet, B. (ed.) Programming Symposium. LNCS, vol.\u00a019, pp. 408\u2013425. Springer, Heidelberg (1974)"},{"key":"1_CR117","first-page":"513","volume-title":"Information Processing 1983","author":"J.C. Reynolds","year":"1983","unstructured":"Reynolds, J.C.: Types, abstraction and parametric polymorphism. In: Information Processing 1983, pp. 513\u2013523. Elsevier, Amsterdam (1983)"},{"key":"1_CR118","unstructured":"Ruehr, F.: Analytical and Structural Polymorphism Expressed Using Patterns over Types. PhD thesis, University of Michigan (1992)"},{"key":"1_CR119","doi-asserted-by":"crossref","unstructured":"Tim Sheard. Generic programming in \u03a9mega. In: this volume (2006)","DOI":"10.1007\/978-3-540-76786-2_5"},{"key":"1_CR120","volume-title":"The Boost Graph Library","author":"J. Siek","year":"2002","unstructured":"Siek, J., Lee, L.-Q., Lumsdaine, A.: The Boost Graph Library. Addison-Wesley, Reading (2002)"},{"key":"1_CR121","doi-asserted-by":"crossref","unstructured":"Siek, J., Lumsdaine, A.: Essential language support for generic programming. In: Programming Language Design and Implementation, pp. 73\u201384 (2005)","DOI":"10.1145\/1064978.1065021"},{"key":"1_CR122","series-title":"NATO ASI Series F","volume-title":"Software for Parallel Computation","author":"D.B. Skillicorn","year":"1993","unstructured":"Skillicorn, D.B.: The Bird-Meertens Formalism as a parallel model. In: Kowalik, J.S., Grandinetti, L. (eds.) Software for Parallel Computation. NATO ASI Series F, vol.\u00a0106, Springer, Heidelberg (1993)"},{"key":"1_CR123","unstructured":"STOP project. International Summer School on Constructive Algorithmics, Hollum, Ameland (1989)"},{"issue":"1\/2","key":"1_CR124","first-page":"1","volume":"13","author":"C. Strachey","year":"2000","unstructured":"Strachey, C.: Fundamental concepts in programming languages. Higher-Order and Symbolic Computation. Lecture notes from Summer School in Computer Programming\u00a013(1\/2), 1\u201349 (2000)","journal-title":"Lecture notes from Summer School in Computer Programming"},{"key":"1_CR125","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"30","DOI":"10.1007\/978-3-540-25935-0_3","volume-title":"Domain-Specific Program Generation","author":"W. Taha","year":"2004","unstructured":"Taha, W.: A gentle introduction to multi-stage programming. In: Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.) Domain-Specific Program Generation. LNCS, vol.\u00a03016, pp. 30\u201350. Springer, Heidelberg (2004)"},{"key":"1_CR126","unstructured":"Unruh, E.: Prime number computation. ANSI X3J16-94-0075\/ISO WG21-462 (1994)"},{"issue":"1","key":"1_CR127","first-page":"5","volume":"10","author":"T. Uustalu","year":"1999","unstructured":"Uustalu, T., Vene, V.: Primitive (co)recursion and course-of-value (co)iteration. Informatica\u00a010(1), 5\u201326 (1999)","journal-title":"Informatica"},{"key":"1_CR128","doi-asserted-by":"crossref","unstructured":"van Wijngaarden, A., Mailloux, B.J., Peck, J.E.L., Koster, C.H.A., Sintzoff, M., Lindsey, C.H., Meertens, L.G.L.T., Fisker, R.G.: Revised report on the algorithmic language ALGOL 68. Acta Informatica\u00a05(1-3) (1975)","DOI":"10.1007\/978-3-642-95279-1"},{"key":"1_CR129","unstructured":"Veldhuizen, T.: Active Libraries and Universal Languages. PhD thesis, Computer Science, Indiana University (2004)"},{"issue":"3","key":"1_CR130","first-page":"147","volume":"47","author":"V. Vene","year":"1998","unstructured":"Vene, V., Uustalu, T.: Functional programming with apomorphisms (corecursion). Proceedings of the Estonian Academy of Sciences: Physics, Mathematics. In: 9th Nordic Workshop on Programming Theory 47(3), 147\u2013161 (1998)","journal-title":"Proceedings of the Estonian Academy of Sciences: Physics, Mathematics"},{"key":"1_CR131","doi-asserted-by":"crossref","unstructured":"Vytiniotis, D., Washburn, G., Weirich, S.: An open and shut typecase. In: International Conference on Functional Programming (2004)","DOI":"10.1145\/1040294.1040296"},{"key":"1_CR132","first-page":"347","volume-title":"Theorems for free! In Functional Programming Languages and Computer Architecture","author":"P. Wadler","year":"1989","unstructured":"Wadler, P.: Theorems for free! In Functional Programming Languages and Computer Architecture, pp. 347\u2013359. ACM, New York (1989)"},{"key":"1_CR133","doi-asserted-by":"publisher","first-page":"231","DOI":"10.1016\/0304-3975(90)90147-A","volume":"73","author":"P. Wadler","year":"1990","unstructured":"Wadler, P.: Deforestation: Transforming programs to eliminate trees. Theoretical Computer Science\u00a073, 231\u2013248 (1990)","journal-title":"Theoretical Computer Science"},{"issue":"4","key":"1_CR134","doi-asserted-by":"publisher","first-page":"461","DOI":"10.1017\/S0960129500001560","volume":"2","author":"P. Wadler","year":"1992","unstructured":"Wadler, P.: Comprehending monads. Mathematical Structures in Computer Science\u00a02(4), 461\u2013493 (1992)","journal-title":"Mathematical Structures in Computer Science"},{"key":"1_CR135","doi-asserted-by":"crossref","unstructured":"Wadler, P.: Monads for functional programming. In: Broy, M. (ed.) Program Design Calculi: Proceedings of the Marktoberdorf Summer School. Also in [76] (1992)","DOI":"10.1007\/978-3-662-02880-3_8"},{"key":"1_CR136","first-page":"371","volume-title":"International Conference on Software Reuse","author":"P. Wadler","year":"1998","unstructured":"Wadler, P.: How to solve the reuse problem? Functional programming. In: International Conference on Software Reuse, pp. 371\u2013372. IEEE, Los Alamitos (1998), http:\/\/doi.ieeecomputersociety.org \/10.1109\/ICSR.1998.685772"},{"key":"1_CR137","unstructured":"Wadler, P.L.: The expression problem. Posting to java-genericity mailing list (November 12, 1998)"},{"issue":"6","key":"1_CR138","doi-asserted-by":"publisher","first-page":"413","DOI":"10.1145\/365696.365702","volume":"9","author":"N. Wirth","year":"1966","unstructured":"Wirth, N., Hoare, C.A.R.: A contribution to the development of ALGOL. Communications of the ACM\u00a09(6), 413\u2013432 (1966)","journal-title":"Communications of the ACM"}],"container-title":["Lecture Notes in Computer Science","Datatype-Generic Programming"],"original-title":[],"link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-540-76786-2_1","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,5,14]],"date-time":"2023-05-14T20:31:14Z","timestamp":1684096274000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-540-76786-2_1"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2007]]},"ISBN":["9783540767855","9783540767862"],"references-count":138,"URL":"https:\/\/doi.org\/10.1007\/978-3-540-76786-2_1","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2007]]}}}