{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,2,1]],"date-time":"2025-02-01T05:21:47Z","timestamp":1738387307783,"version":"3.35.0"},"publisher-location":"Berlin, Heidelberg","reference-count":62,"publisher":"Springer Berlin Heidelberg","isbn-type":[{"type":"print","value":"9783540705932"},{"type":"electronic","value":"9783540705949"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"DOI":"10.1007\/978-3-540-70594-9_8","type":"book-chapter","created":{"date-parts":[[2008,8,12]],"date-time":"2008-08-12T16:07:43Z","timestamp":1218557263000},"page":"110-133","source":"Crossref","is-referenced-by-count":4,"title":["Unfolding Abstract Datatypes"],"prefix":"10.1007","author":[{"given":"Jeremy","family":"Gibbons","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","reference":[{"issue":"3","key":"8_CR1","doi-asserted-by":"publisher","first-page":"347","DOI":"10.1017\/S0956796801003914","volume":"11","author":"R. Bird","year":"2001","unstructured":"Bird, R.: Unfolding pointer algorithms. Journal of Functional Programming\u00a011(3), 347\u2013358 (2001)","journal-title":"Journal of Functional Programming"},{"key":"8_CR2","volume-title":"Introduction to Functional Programming Using Haskell","author":"R.S. Bird","year":"1998","unstructured":"Bird, R.S.: Introduction to Functional Programming Using Haskell. Prentice-Hall, Englewood Cliffs (1998)"},{"key":"8_CR3","doi-asserted-by":"publisher","first-page":"135","DOI":"10.1016\/0304-3975(85)90135-5","volume":"39","author":"C. B\u00f6hm","year":"1985","unstructured":"B\u00f6hm, C., Berarducci, A.: Automatic synthesis of typed \u03bb-programs on term algebras. Theoretical Computer Science\u00a039, 135\u2013154 (1985)","journal-title":"Theoretical Computer Science"},{"issue":"3","key":"8_CR4","doi-asserted-by":"crossref","first-page":"221","DOI":"10.1002\/j.1096-9942.1995.tb00019.x","volume":"1","author":"K. Bruce","year":"1995","unstructured":"Bruce, K., Cardelli, L., Castagna, G.: The Hopkins Object Group, Gary\u00a0T. Leavens, and Benjamin Pierce. On binary methods. Theory and Practice of Object Systems\u00a01(3), 221\u2013242 (1995)","journal-title":"Theory and Practice of Object Systems"},{"issue":"2","key":"8_CR5","doi-asserted-by":"crossref","first-page":"171","DOI":"10.1017\/S095679680000068X","volume":"3","author":"F.W. Burton","year":"1993","unstructured":"Burton, F.W., Cameron, R.D.: Pattern matching with abstract data types. Journal of Functional Programming\u00a03(2), 171\u2013190 (1993)","journal-title":"Journal of Functional Programming"},{"key":"8_CR6","unstructured":"Burton, W., Meijer, E., Sansom, P., Thompson, S., Wadler, P.: Views: An extension to Haskell pattern matching (October 1996), http:\/\/www.haskell.org\/development\/views.html"},{"key":"8_CR7","unstructured":"Cockett, R., Fukushima, T.: About Charity. Department of Computer Science, University of Calgary (May 1992)"},{"key":"8_CR8","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"151","DOI":"10.1007\/BFb0019443","volume-title":"Foundations of Object-Oriented Languages","author":"W.R. Cook","year":"1991","unstructured":"Cook, W.R.: Object-oriented programming versus abstract data types. In: de Bakker, J.W., Rozenberg, G., de Roever, W.-P. (eds.) REX 1990. LNCS, vol.\u00a0489, pp. 151\u2013178. Springer, Heidelberg (1991)"},{"key":"8_CR9","doi-asserted-by":"crossref","unstructured":"Coutts, D., Leshchinskiy, R., Stewart, D.: Stream fusion: From lists to streams to nothing at all. In: International Conference on Functional Programming, pp. 315\u2013326 (2007)","DOI":"10.1145\/1291151.1291199"},{"issue":"10","key":"8_CR10","doi-asserted-by":"publisher","first-page":"859","DOI":"10.1145\/355604.361591","volume":"15","author":"E.W. Dijkstra","year":"1972","unstructured":"Dijkstra, E.W.: The humble programmer. Communications of the ACM\u00a015(10), 859\u2013866 (1972), http:\/\/www.cs.utexas.edu\/~EWD\/transcriptions\/EWD03xx\/EWD340.html","journal-title":"Communications of the ACM"},{"key":"8_CR11","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"273","DOI":"10.1007\/978-3-540-73589-2_14","volume-title":"ECOOP 2007 \u2013 Object-Oriented Programming","author":"B. Emir","year":"2007","unstructured":"Emir, B., Odersky, M., Williams, J.: Matching Objects with Patterns. In: Ernst, E. (ed.) ECOOP 2007. LNCS, vol.\u00a04609, pp. 273\u2013298. Springer, Heidelberg (2007)"},{"key":"8_CR12","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"406","DOI":"10.1007\/3-540-49253-4_29","volume-title":"Algebraic Methodology and Software Technology","author":"M. Erwig","year":"1998","unstructured":"Erwig, M.: Categorical Programming with Abstract Data Types. In: Haeberer, A.M. (ed.) AMAST 1998. LNCS, vol.\u00a01548, pp. 406\u2013421. Springer, Heidelberg (1998)"},{"key":"8_CR13","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":"8_CR14","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","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.\u00a04719. Springer, Heidelberg (2007)"},{"issue":"4","key":"8_CR15","first-page":"353","volume":"66","author":"J. Gibbons","year":"2005","unstructured":"Gibbons, J., Hutton, G.: Proof methods for corecursive programs. Fundamenta Informaticae\u00a066(4), 353\u2013366 (2005)","journal-title":"Fundamenta Informaticae"},{"key":"8_CR16","doi-asserted-by":"crossref","unstructured":"Gibbons, J., Jones, G.: The under-appreciated unfold. In: International Conference on Functional Programming, Baltimore, Maryland, pp. 273\u2013279 (September 1998)","DOI":"10.1145\/289423.289455"},{"key":"8_CR17","unstructured":"Gill, A.: Cheap Deforestation for Non-strict Functional Languages. PhD thesis, Glasgow (1998)"},{"key":"8_CR18","doi-asserted-by":"crossref","unstructured":"Gill, A., Launchbury, J., Jones, S.P.: A short cut to deforestation. In: Functional Programming Languages and Computer Architecture (1993)","DOI":"10.1145\/165180.165214"},{"key":"8_CR19","series-title":"Tracts in Theoretical Computer Science","volume-title":"Proofs and Types","author":"J.-Y. Girard","year":"1989","unstructured":"Girard, J.-Y., Lafont, Y., Taylor, P.: Proofs and Types. Tracts in Theoretical Computer Science, vol.\u00a07. Cambridge University Press, Cambridge (1989), http:\/\/www.monad.me.uk\/stable\/Proofs+Types.html"},{"key":"8_CR20","doi-asserted-by":"publisher","first-page":"287","DOI":"10.1017\/S0960129599002777","volume":"9","author":"J. Goguen","year":"1999","unstructured":"Goguen, J., Malcolm, G.: Hidden coinduction: Behavioural correctness proofs for objects. Mathematical Structures in Computer Science\u00a09, 287\u2013319 (1999)","journal-title":"Mathematical Structures in Computer Science"},{"key":"8_CR21","doi-asserted-by":"crossref","unstructured":"Gordon, A.D.: A tutorial on co-induction and functional programming. In: Glasgow Workshop on Functional Programming (1994)","DOI":"10.1007\/978-1-4471-3573-9_6"},{"key":"8_CR22","unstructured":"Howe, D.: Free on-line dictionary of computing (1993), http:\/\/foldoc.org"},{"key":"8_CR23","doi-asserted-by":"crossref","first-page":"83","DOI":"10.1007\/978-1-4613-1437-0_5","volume-title":"Object-Orientation with Parallelism and Persistence","author":"B. Jacobs","year":"1996","unstructured":"Jacobs, B.: Objects and classes, coalgebraically. In: Freitag, B., Jones, C.B., Lengauer, C., Schek, H.-J. (eds.) Object-Orientation with Parallelism and Persistence, pp. 83\u2013103. Kluwer, Dordrecht (1996)"},{"key":"8_CR24","first-page":"15","volume":"3","author":"B. Jacobs","year":"1999","unstructured":"Jacobs, B.: Coalgebras in specification and verification for object-oriented languages. Newsletter of the Dutch Association for Theoretical Computer Science (NVTI)\u00a03, 15\u201327 (1999)","journal-title":"Newsletter of the Dutch Association for Theoretical Computer Science (NVTI)"},{"key":"8_CR25","first-page":"222","volume":"62","author":"B. Jacobs","year":"1997","unstructured":"Jacobs, B., Rutten, J.: A tutorial on (co)algebras and (co)induction. Bulletin of the European Association for Theoretical Computer Science\u00a0(62), 222\u2013259 (1997)","journal-title":"Bulletin of the European Association for Theoretical Computer Science"},{"issue":"1","key":"8_CR26","doi-asserted-by":"publisher","first-page":"97","DOI":"10.1145\/357195.357202","volume":"5","author":"S. Kamin","year":"1983","unstructured":"Kamin, S.: Final data types and their specification. ACM Transactions on Programming Languages and Systems\u00a05(1), 97\u2013123 (1983)","journal-title":"ACM Transactions on Programming Languages and Systems"},{"key":"8_CR27","unstructured":"R.B. Kieburtz.: Codata and comonads in Haskell. Oregon Graduate Institute (unpublished manuscript, 1999)"},{"key":"8_CR28","unstructured":"L\u00e4ufer, K., Odersky, M.: An extension of ML with first-class abstract types. In: SIGPLAN Workshop on ML and its Applications (June 1992)"},{"issue":"5","key":"8_CR29","doi-asserted-by":"publisher","first-page":"1411","DOI":"10.1145\/186025.186031","volume":"16","author":"K. L\u00e4ufer","year":"1994","unstructured":"L\u00e4ufer, K., Odersky, M.: Polymorphic type inference and abstract data types. ACM Transactions on Programming Languages and Systems\u00a016(5), 1411\u20131430 (1994)","journal-title":"ACM Transactions on Programming Languages and Systems"},{"key":"8_CR30","doi-asserted-by":"publisher","first-page":"50","DOI":"10.1145\/800233.807045","volume-title":"ACM SIGPLAN Symposium on Very High Level Languages","author":"B. Liskov","year":"1974","unstructured":"Liskov, B., Zilles, S.: Programming with abstract data types. In: ACM SIGPLAN Symposium on Very High Level Languages, pp. 50\u201359. ACM Press, New York (1974)"},{"key":"8_CR31","doi-asserted-by":"crossref","first-page":"305","DOI":"10.1016\/B978-0-12-450010-5.50023-2","volume-title":"Artificial Intelligence and Mathematical Theory of Computation: Papers in Honor of John McCarthy","author":"J.C. Mitchell","year":"1991","unstructured":"Mitchell, J.C.: On the equivalence of data representations. In: Artificial Intelligence and Mathematical Theory of Computation: Papers in Honor of John McCarthy, pp. 305\u2013329. Academic Press Professional, Inc., San Diego (1991)"},{"issue":"3","key":"8_CR32","doi-asserted-by":"publisher","first-page":"470","DOI":"10.1145\/44501.45065","volume":"10","author":"J.C. Mitchell","year":"1988","unstructured":"Mitchell, J.C., Plotkin, G.D.: Abstract types have existential type. ACM Transactions on Programming Languages and Systems\u00a010(3), 470\u2013502 (1988)","journal-title":"ACM Transactions on Programming Languages and Systems"},{"key":"8_CR33","unstructured":"N\u00e9meth, L.: Catamorphism Based Program Transformations for Non-Strict Functional Languages. PhD thesis, Department of Computing Science, University of Glasgow (2000)"},{"key":"8_CR34","unstructured":"Okasaki, C.: Views for Standard ML. In: SIGPLAN Workshop in ML, pp. 14\u201323 (1998)"},{"key":"8_CR35","first-page":"110","volume-title":"International Conference on Functional Programming","author":"P.P. Gostanza","year":"1996","unstructured":"Gostanza, P.P., Pe\u00f1a, R., N\u00fa\u00f1ez, M.: A new look at pattern matching in abstract data types. In: International Conference on Functional Programming, pp. 110\u2013121. ACM Press, New York (1996)"},{"key":"8_CR36","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"167","DOI":"10.1007\/BFb0017309","volume-title":"Theoretical Computer Science","author":"D. Park","year":"1981","unstructured":"Park, D.: Concurrency and automata on infinite sequences. In: Deussen, P. (ed.) GI-TCS 1981. LNCS, vol.\u00a0104, pp. 167\u2013183. Springer, Heidelberg (1981)"},{"issue":"12","key":"8_CR37","doi-asserted-by":"publisher","first-page":"1053","DOI":"10.1145\/361598.361623","volume":"15","author":"D.L. Parnas","year":"1972","unstructured":"Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Communications of the ACM\u00a015(12), 1053\u20131058 (1972)","journal-title":"Communications of the ACM"},{"key":"8_CR38","unstructured":"Paterson, R.: Haskell hierarchical libraries: Data.Sequence (accessed, 2007), http:\/\/www.haskell.org\/ghc\/docs\/latest\/html\/libraries\/base\/Data-Sequence.html"},{"key":"8_CR39","unstructured":"Jones, S.P.: Explicit quantification in Haskell (1998), http:\/\/research.microsoft.com\/~simonpj\/Haskell\/quantification.html"},{"key":"8_CR40","volume-title":"The Haskell 98 Language and Libraries: The Revised Report","author":"S.P. Jones","year":"2003","unstructured":"Jones, S.P.: The Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge (2003)"},{"key":"8_CR41","unstructured":"Jones, S.P.: View patterns: Lightweight views for Haskell (January 2007), http:\/\/hackage.haskell.org\/trac\/ghc\/wiki\/ViewPatternsArchive"},{"key":"8_CR42","unstructured":"Jones, S.P., Tolmach, A., Hoare, T.: Playing by the rules: Rewriting as a practical optimisation technique in GHC. In: Hinze, R. (ed.) Haskell Workshop (2001)"},{"key":"8_CR43","volume-title":"Types and Programming Languages","author":"B.C. Pierce","year":"2002","unstructured":"Pierce, B.C.: Types and Programming Languages. MIT Press, Cambridge (2002)"},{"key":"8_CR44","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"361","DOI":"10.1007\/BFb0037118","volume-title":"Typed Lambda Calculi and Applications","author":"G. Plotkin","year":"1993","unstructured":"Plotkin, G., Abadi, M.: A logic for parametric polymorphism. In: Bezem, M., Groote, J.F. (eds.) TLCA 1993. LNCS, vol.\u00a0664, pp. 361\u2013375. Springer, Heidelberg (1993)"},{"key":"8_CR45","doi-asserted-by":"publisher","first-page":"129","DOI":"10.1017\/S0960129500000694","volume":"5","author":"H. Reichel","year":"1995","unstructured":"Reichel, H.: An approach to object semantics based on terminal co-algebras. Mathematical Structures in Computer Science\u00a05, 129\u2013152 (1995)","journal-title":"Mathematical Structures in Computer Science"},{"key":"8_CR46","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"crossref","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":"8_CR47","first-page":"513","volume-title":"Information Processing","author":"J.C. Reynolds","year":"1983","unstructured":"Reynolds, J.C.: Types, abstraction and parametric polymorphism. In: Information Processing, vol.\u00a083, pp. 513\u2013523. Elsevier, Amsterdam (1983)"},{"key":"8_CR48","doi-asserted-by":"crossref","unstructured":"Svenningsson, J.: Shortcut fusion for accumulating parameters and zip-like functions. In: International Conference on Functional Programming (2002)","DOI":"10.1145\/581478.581491"},{"key":"8_CR49","doi-asserted-by":"crossref","unstructured":"Syme, D., Neverov, G., Margetson, J.: Extensible pattern matching via a lightweight language extension. In: International Conference on Functional Programming, pp. 29\u201340 (2007)","DOI":"10.1145\/1291151.1291159"},{"key":"8_CR50","unstructured":"Thompson, S.: Higher-order + polymorphic = reusable. Technical Report 224, University of Kent at Canterbury (May 1997), http:\/\/www.cs.kent.ac.uk\/pubs\/1997\/224\/"},{"key":"8_CR51","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/3-540-46584-7_1","volume-title":"Practical Aspects of Declarative Languages","author":"M. Tullsen","year":"2000","unstructured":"Tullsen, M.: First Class Patterns. In: Pontelli, E., Santos Costa, V. (eds.) PADL 2000. LNCS, vol.\u00a01753, pp. 1\u201315. Springer, Heidelberg (2000)"},{"key":"8_CR52","series-title":"Lecture Notes in Computer Science","volume-title":"Functional Programming Languages in Education","author":"D.A. Turner","year":"1995","unstructured":"Turner, D.A.: Elementary strong functional programming. In: Hartel, P.H., Plasmeijer, R. (eds.) FPLE 1995. LNCS, vol.\u00a01022. Springer, Heidelberg (1995)"},{"issue":"7","key":"8_CR53","first-page":"751","volume":"10","author":"D.A. Turner","year":"2004","unstructured":"Turner, D.A.: Total functional programming. Journal of Universal Computer Science\u00a010(7), 751\u2013768 (2004)","journal-title":"Journal of Universal Computer Science"},{"key":"8_CR54","doi-asserted-by":"crossref","unstructured":"Ungar, D., Smith, R.B.: Self: The power of simplicity. In: Object-Oriented Programming: Systems, Languages and Applications, pp. 227\u2013242 (1987)","DOI":"10.1145\/38765.38828"},{"issue":"3","key":"8_CR55","doi-asserted-by":"publisher","first-page":"8","DOI":"10.1145\/24697.24706","volume":"22","author":"P. Wadler","year":"1987","unstructured":"Wadler, P.: A critique of Abelson and Sussman: Why calculating is better than scheming. SIGPLAN Notices\u00a022(3), 8 (1987)","journal-title":"SIGPLAN Notices"},{"key":"8_CR56","first-page":"307","volume-title":"Principles of Programming Languages","author":"P. Wadler","year":"1987","unstructured":"Wadler, P.: Views: A way for mattern matching to cohabit with data abstraction. In: Principles of Programming Languages, pp. 307\u2013313. ACM Press, New York (1987)"},{"key":"8_CR57","doi-asserted-by":"publisher","first-page":"347","DOI":"10.1145\/99370.99404","volume-title":"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":"8_CR58","unstructured":"Wadler, P.: Recursive types for free! (July 1990) (unpublished manuscript), http:\/\/homepages.inf.ed.ac.uk\/wadler\/papers\/free-rectypes\/free-rectypes.txt"},{"key":"8_CR59","doi-asserted-by":"publisher","first-page":"27","DOI":"10.1016\/0022-0000(79)90011-4","volume":"19","author":"M. Wand","year":"1979","unstructured":"Wand, M.: Final algebra semantics and data type extensions. Journal of Computer and System Sciences\u00a019, 27\u201344 (1979)","journal-title":"Journal of Computer and System Sciences"},{"key":"8_CR60","unstructured":"Wang, D.C., Murphy VII, T.: Programming with recursion schemes. Agere Systems\/Carnegie Mellon University (unpublished manuscript, 2002)"},{"key":"8_CR61","unstructured":"Wang, M., Gibbons, J.: Translucent abstraction: Algebraic datatypes with safe views (April 2008) (submitted)"},{"key":"8_CR62","series-title":"Lecture Notes in Computer Science","volume-title":"Category Theory and Computer Science","author":"G. Wraith","year":"1989","unstructured":"Wraith, G.: A note on categorical datatypes. In: Pitt, D.H., Rydeheard, D.E., Dyjber, P., Pitts, A.M., Poign\u00e9, A. (eds.) Category Theory and Computer Science. LNCS, vol.\u00a0389. Springer, Heidelberg (1989)"}],"container-title":["Lecture Notes in Computer Science","Mathematics of Program Construction"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-540-70594-9_8.pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,1,31]],"date-time":"2025-01-31T12:15:45Z","timestamp":1738325745000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-540-70594-9_8"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[null]]},"ISBN":["9783540705932","9783540705949"],"references-count":62,"URL":"https:\/\/doi.org\/10.1007\/978-3-540-70594-9_8","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[]}}