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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
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
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)
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)
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)
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)
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)
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)
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)
Bellè, G., Jay, C.B., Moggi, E.: Functorial ML. In: Kuchen, H., Swierstra, S.D. (eds.) PLILP 1996. LNCS, vol. 1140, Springer, Heidelberg (1996)
Bird, R., de Moor, O., Hoogendijk, P.: Generic functional programming with types and relations. J. of Functional Programming 6(1), 1–28 (1996)
Bird, R.S., de Moor, O.: Algebra of Programming. Prentice-Hall International, Englewood Cliffs (1996)
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)
Cockett, R., Fukushima, T.: About Charity. Yellow Series Report No. 92/480/18, Dep. of Computer Science, Univ. of Calgary (1992)
Doornbos, H.: Reductivity arguments and program construction. PhD thesis, Eindhoven University of Technology, Department of Mathematics and Computing Science (June 1996)
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)
Doornbos, H., Backhouse, R.: Reductivity. Science of Computer Programming 26(1-3), 217–236 (1996)
Floyd, R.W.: Algorithm 97. Shortest Path. Comm. ACMÂ 5(6), 345 (1962)
Fokkinga, M.M.: Law and Order in Algorithmics. PhD thesis, Universiteit Twente, The Netherlands (1992)
Fokkinga, M.M.: Datatype laws without signatures. Mathematical Structures in Computer Science 6, 1–32 (1996)
Fokkinga, M.M.: Monadic maps and folds for arbitrary datatypes. Memoranda Informatica 94-28, University of Twente (June 1994)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns – Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)
Hoogendijk, P.: A Generic Theory of Datatypes. PhD thesis, Department of Mathematics and Computing Science, Eindhoven University of Technology (1997)
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)
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
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)
Jansson, P., Jeuring, J.: Functional pearl: Polytypic unification. Journal of Functional Programming (1998) (in press)
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/
Jay, C.B.: A semantics for shape. Science of Computer Programming 25, 251–283 (1995)
Jay, C.B., Bellè, G., Moggi, E.: Functorial ML. Extended version of [9] in press for Journal of Functional Programming 1998 (1998)
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)
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)
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)
Malcolm, G.: Algebraic data types and program transformation. PhD thesis, Groningen University (1990)
Malcolm, G.: Data structures and program transformation. Science of Computer Programming 14(2/3), 255–280 (1990)
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)
Meertens, L.: Paramorphisms. Formal Aspects of Computing 4(5), 413–424 (1992)
Meertens, L.: Calculate polytypically! In: Kuchen, H., Swierstra, S.D. (eds.) PLILP 1996. LNCS, vol. 1140, pp. 1–16. Springer, Heidelberg (1996)
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)
Pardo, A.: Monadic corecursion – definition, fusion laws, and applications. Electronic Notes in Theoretical Computer Science, vol. 11 (1998)
Reynolds, J.C.: Types, abstraction and parametric polymorphism. In: Mason, R.E. (ed.) IFIP 1983, pp. 513–523. Elsevier Science Publishers, Amsterdam (1983)
Riguet, J.: Relations binaires, fermetures, correspondances de Galois. Bulletin de la Société Mathématique de France 76, 114–155 (1948)
Roy, B.: Transitivité et connexité. C.R. Acad. Sci. 249, 216 (1959)
Ruehr, F.: Analytical and Structural Polymorphism Expressed Using Patterns Over Types. PhD thesis, University of Michigan (1992)
Sheard, T.: Automatic generation and use of abstract structure operators. ACM TOPLAS 13(4), 531–557 (1991)
Wadler, P.: Theorems for free! In: 4th Symposium on Functional Programming Languages and Computer Architecture. ACM, London (1989)
Warshall, S.: A theorem on boolean matrices. J. ACM 9, 11–12 (1962)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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