Skip to main content

Generic Programming

  • Conference paper
Advanced Functional Programming (AFP 1998)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1608))

Included in the following conference series:

Abstract

The development of science proceeds in a cycle of activities, the so-called abstraction-specialisation cycle. Abstraction is the process of seeking patterns or commonalities, which are then classified, often in a formal mathematical framework. In the process of abstraction, we gain greater understanding by eliminating irrelevant detail in order to identify what is essential. The result is a collection of general laws which are then put to use in the second phase of the cycle, the specialisation phase. In the specialisation phase the general laws are instantiated to specific cases which, if the abstraction is a good one, leads to novel applications, yet greater understanding, and input for another round of abstraction followed by specialisation.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aarts, C.J., Backhouse, R.C., Hoogendijk, P., Voermans, T.S., van der Woude, J.: A relational theory of datatypes (September 1992), Available via World-Wide Web at http://www.win.tue.nl/cs/wp/papers

  2. Cayenne, L.A.: A language with dependent types. In: Swierstra, S.D., Oliveira, J.N. (eds.) AFP 1998. LNCS, vol. 1608, pp. 28–115. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  3. Backhouse, R.C., Bijsterveld, M., van Geldrop, R., van der Woude, J.C.S.P.: Category theory as coherently constructive lattice theory. Department of Mathematics and Computing Science, Eindhoven University of Technology, 146 pages (1995), Working document. Available via World-Wide Web at at http://www.win.tue.nl/cs/wp/papers , Last revision (March 1997)

  4. Backhouse, R.C., de Bruin, P., Hoogendijk, P., Malcolm, G., Voermans, T.S., van der Woude, J.: Polynomial relators. In: Nivat, M., Rattray, C.S., Rus, T., Scollo, G. (eds.) Proceedings of the 2nd Conference on Algebraic Methodology and Software Technology, AMAST 1991, pp. 303–326. Springer, Heidelberg (1992) (Workshops in Computing)

    Google Scholar 

  5. Backhouse, R.C., de Bruin, P., Malcolm, G., Voermans, T.S., van der Woude, J.: Relational catamorphisms. In: Möller, B. (ed.) Proceedings of the IFIP TC2/WG2.1 Working Conference on Constructing Programs from Specifications, pp. 287–318. Elsevier Science Publishers B.V, Amsterdam (1991)

    Google Scholar 

  6. Backhouse, R.C., Carré, B.A.: Regular algebra applied to path-finding problems. Journal of the Institute of Mathematics and its Applications 15, 161–186 (1975)

    Article  MATH  MathSciNet  Google Scholar 

  7. Backhouse, R.: Fixed point calculus applied to generic programming: Part 1. In: Esik, Z. (ed.) Proceedings, Workshop on Fixed Points in Computer Science (August 1998)

    Google Scholar 

  8. Backhouse, R.C., van den Eijnde, J.P.H.W., van Gasteren, A.J.M.: Calculating path algorithms. Science of Computer Programming 22(1-2), 3–19 (1994)

    Article  MATH  MathSciNet  Google Scholar 

  9. Bellè, G., Jay, C.B., Moggi, E.: Functorial ML. In: Kuchen, H., Swierstra, S.D. (eds.) PLILP 1996. LNCS, vol. 1140, Springer, Heidelberg (1996)

    Google Scholar 

  10. Bird, R., de Moor, O., Hoogendijk, P.: Generic functional programming with types and relations. J. of Functional Programming 6(1), 1–28 (1996)

    Article  MATH  Google Scholar 

  11. Bird, R.S., de Moor, O.: Algebra of Programming. Prentice-Hall International, Englewood Cliffs (1996)

    Google Scholar 

  12. Bird, R.S.: An introduction to the theory of lists. In: Broy, M. (ed.) Logic of Programming and Calculi of Discrete Design. NATO ASI Series, vol. F36. Springer, Heidelberg (1987)

    Google Scholar 

  13. Cockett, R., Fukushima, T.: About Charity. Yellow Series Report No. 92/480/18, Dep. of Computer Science, Univ. of Calgary (1992)

    Google Scholar 

  14. Doornbos, H.: Reductivity arguments and program construction. PhD thesis, Eindhoven University of Technology, Department of Mathematics and Computing Science (June 1996)

    Google Scholar 

  15. Doornbos, H., Backhouse, R.: Induction and recursion on datatypes. In: Möller, B. (ed.) MPC 1995. LNCS, vol. 947, pp. 242–256. Springer, Heidelberg (1995)

    Google Scholar 

  16. Doornbos, H., Backhouse, R.: Reductivity. Science of Computer Programming 26(1-3), 217–236 (1996)

    Article  MATH  MathSciNet  Google Scholar 

  17. Floyd, R.W.: Algorithm 97. Shortest Path. Comm. ACM 5(6), 345 (1962)

    Article  Google Scholar 

  18. Fokkinga, M.M.: Law and Order in Algorithmics. PhD thesis, Universiteit Twente, The Netherlands (1992)

    Google Scholar 

  19. Fokkinga, M.M.: Datatype laws without signatures. Mathematical Structures in Computer Science 6, 1–32 (1996)

    Article  MATH  MathSciNet  Google Scholar 

  20. Fokkinga, M.M.: Monadic maps and folds for arbitrary datatypes. Memoranda Informatica 94-28, University of Twente (June 1994)

    Google Scholar 

  21. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns – Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)

    Google Scholar 

  22. Hoogendijk, P.: A Generic Theory of Datatypes. PhD thesis, Department of Mathematics and Computing Science, Eindhoven University of Technology (1997)

    Google Scholar 

  23. Hoogendijk, P., Backhouse, R.: When do datatypes commute? In: Moggi, E., Rosolini, G. (eds.) CTCS 1997. LNCS, vol. 1290, pp. 242–260. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  24. Hoogendijk, P., de Moor, O.: What is a datatype? Technical Report 96/16, Department of Mathematics and Computing Science, Eindhoven University of Technology (1996), Submitted to Science of Computer Programming. Available via World-Wide Web, at http://www.win.tue.nl/cs/wp/papers

  25. Jansson, P., Jeuring, J.: PolyP - a polytypic programming language extension. In: POPL 1997: The 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 470–482. ACM Press, New York (1997)

    Chapter  Google Scholar 

  26. Jansson, P., Jeuring, J.: Functional pearl: Polytypic unification. Journal of Functional Programming (1998) (in press)

    Google Scholar 

  27. Jansson, P.: Functional polytypic programming – use and implementation. Technical report, Chalmers Univ. of Tech., Sweden (1997), Lic. thesis, Available from http://www.cs.chalmers.se/~patrikj/lic/

  28. Jay, C.B.: A semantics for shape. Science of Computer Programming 25, 251–283 (1995)

    Article  MATH  MathSciNet  Google Scholar 

  29. Jay, C.B., Bellè, G., Moggi, E.: Functorial ML. Extended version of [9] in press for Journal of Functional Programming 1998 (1998)

    Google Scholar 

  30. Jay, C.B., Cockett, J.R.B.: Shapely types and shape polymorphism. In: Sannella, D. (ed.) ESOP 1994. LNCS, vol. 788, pp. 302–316. Springer, Heidelberg (1994)

    Google Scholar 

  31. Jeuring, J.: Polytypic pattern matching. In: Conference Record of FPCA 1995, SIGPLAN-SIGARCH-WG2.8 Conference on Functional Programming Languages and Computer Architecture, pp. 238–248 (1995)

    Google Scholar 

  32. Jeuring, J., Jansson, P.: Polytypic programming. In: Launchbury, J., Sheard, T., Meijer, E. (eds.) AFP 1996. LNCS, vol. 1129, pp. 68–114. Springer, Heidelberg (1996)

    Google Scholar 

  33. Malcolm, G.: Algebraic data types and program transformation. PhD thesis, Groningen University (1990)

    Google Scholar 

  34. Malcolm, G.: Data structures and program transformation. Science of Computer Programming 14(2/3), 255–280 (1990)

    Article  MATH  MathSciNet  Google Scholar 

  35. Meertens, L.: Algorithmics – towards programming as a mathematical activity. In: Proceedings of the CWI Symposium on Mathematics and Computer Science, pp. 289–334. North-Holland, Amsterdam (1986)

    Google Scholar 

  36. Meertens, L.: Paramorphisms. Formal Aspects of Computing 4(5), 413–424 (1992)

    Article  MATH  Google Scholar 

  37. Meertens, L.: Calculate polytypically! In: Kuchen, H., Swierstra, S.D. (eds.) PLILP 1996. LNCS, vol. 1140, pp. 1–16. Springer, Heidelberg (1996)

    Google Scholar 

  38. de Moor, O., Sittampalam, G.: Generic program transformation. In: Swierstra, S.D., Oliveira, J.N. (eds.) AFP 1998. LNCS, vol. 1608, pp. 28–115. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  39. Pardo, A.: Monadic corecursion – definition, fusion laws, and applications. Electronic Notes in Theoretical Computer Science, vol. 11 (1998)

    Google Scholar 

  40. Reynolds, J.C.: Types, abstraction and parametric polymorphism. In: Mason, R.E. (ed.) IFIP 1983, pp. 513–523. Elsevier Science Publishers, Amsterdam (1983)

    Google Scholar 

  41. Riguet, J.: Relations binaires, fermetures, correspondances de Galois. Bulletin de la Société Mathématique de France 76, 114–155 (1948)

    MATH  MathSciNet  Google Scholar 

  42. Roy, B.: Transitivité et connexité. C.R. Acad. Sci. 249, 216 (1959)

    MATH  Google Scholar 

  43. Ruehr, F.: Analytical and Structural Polymorphism Expressed Using Patterns Over Types. PhD thesis, University of Michigan (1992)

    Google Scholar 

  44. Sheard, T.: Automatic generation and use of abstract structure operators. ACM TOPLAS 13(4), 531–557 (1991)

    Article  Google Scholar 

  45. Wadler, P.: Theorems for free! In: 4th Symposium on Functional Programming Languages and Computer Architecture. ACM, London (1989)

    Google Scholar 

  46. Warshall, S.: A theorem on boolean matrices. J. ACM 9, 11–12 (1962)

    Article  MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1999 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Backhouse, R., Jansson, P., Jeuring, J., Meertens, L. (1999). Generic Programming. In: Swierstra, S.D., Oliveira, J.N., Henriques, P.R. (eds) Advanced Functional Programming. AFP 1998. Lecture Notes in Computer Science, vol 1608. Springer, Berlin, Heidelberg. https://doi.org/10.1007/10704973_2

Download citation

  • DOI: https://doi.org/10.1007/10704973_2

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-66241-9

  • Online ISBN: 978-3-540-48506-3

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics