Abstract
Generic design is not only pertinent to programs, but a fortiori to declarative formalisms as well, and the ensuing generalizations often benefit programming. In the considered framework, generality is obtained by (re)defining traditionally non-functional objects uniformly as functions. This results in intrinsic polymorphism, i.e., designing a collection of functionals without restriction on their arguments makes it intrinsically applicable to all objects captured by the uniformization.
Unlike the abstract operators on “arrows” in category theory, these generic functionals are concrete, as their definition explicitly takes into account relevant properties of their arguments, yet such that it benefits generality. This is done by associating types in a new, uniform fashion. The generic functionals thus designed include generalized composition and inverse, direct extension, transposition, override, merge etc., plus one more for expressing types, the functional cartesian product. Their genericity is fully general and extends beyond discrete mathematics.
As illustrated, their first purpose was providing smooth transformation between the point-wise style of expression and the point-free one (without variables) in the formal manipulation of analog and discrete signal flow circuit descriptions. In passing, this shows how a widely used graphical language can be seen as a functional programming language.
Once made generic, said functionals prove useful and convenient in diverse other areas including, as demonstrated, functional programming, aggregate data types, various kinds of polymorphism, predicate calculus, formal semantics, relational databases, relation algebra.
The original version of this chapter was revised: The copyright line was incorrect. This has been corrected. The Erratum to this chapter is available at DOI: 10.1007/978-0-387-35672-3_13
Chapter PDF
Similar content being viewed by others
Keywords
References
Kevin and Roland Backhouse, “Logical Relations and Galois Connections”, in: Eerke A. Boiten and Bernhard Möller, eds., Mathematics of Program Construction (MPC2002), pp. 23–39. LNCS 2386, Springer-Verlag, Berlin (July 2002)
Henk P. Barendregt, The Lambda Calculus — Its Syntax and Semantics, North-Holland, Amsterdam (1984)
Michael Barr, Charles Wells, Category Theory for Computing Science (2nd. ed.). Prentice Hall International Series in Computer Science, London (1995)
Richard Bird, Introduction to Functional Programming using Haskell. Prentice Hall International Series in Computer Science, London (1998)
Robert H. Bishop, Learning with LabVIEW. Addison Wesley Longman (1999)
Raymond T. Boute, “On the requirements for dynamic software modification”, in: C. J. van Spronsen and L. Richter, eds., MICROSYSTEMS: Architecture, Integration and Use (Euromicro Symposium 1982), pp. 259–271. North Holland, Amsterdam (1982)
Raymond T. Boute, “Fundamentals of Hardware Description Languages and Declarative Languages”, in: J. P. Mermet, ed., Fundamentals and Standards in Hardware Description Languages, pp. 3–38, Kluwer Academic Publishers (1993)
Raymond T. Boute, “Supertotal Function Definition in Mathematics and Software Engineering”, IEEE Transactions on Software Engineering, Vol. 26, No. 7, pp. 662–672 (July 2000)
Raymond T. Boute, Functional Mathematics: a Unifying Declarative and Calculational Approach to Systems, Circuits and Programs — Part I: Basic Mathematics. Course text, Ghent University (2001)
Edsger W. Dijkstra and Carel S. Scholten, Predicate Calculus and Program Semantics. Springer-Verlag, Berlin (1990)
T. E. Forster, Set Theory with a Universal Set. Clarendon Press, Oxford (1992)
G. Gierz, K. H. Hofmann, K. Keimel, J. D. Lawson, M. Mislove and D. S. Scott, A Compendium of Discrete Lattices. Springer-Verlag, Berlin (1980)
David Gries, Fred B. Schneider, A Logical Approach to Discrete Math. Springer-Verlag, Berlin (1994)
David B. Guralnik, ed., Webster’s New World Dictionary of the American Language. William Collins + World Publishing Co., Inc., Cleveland, Ohio (1976)
John V. Guttag, et al., “The design of data type specifications”, in: Raymomd T. Yeh, ed., Current Trends in Programming Methodology, Vol. 4: Data Structuring, pp. 60–79. Prentice-Hall, Inc., Englewood Cliffs, N. J. (1978)
Paul N. Hilfinger, Silage Reference Manual, Univ. of California, Berkeley (1993)
Keith Hanna and Neil Daeche and Gareth Howells, “Implementation of the Veritas design logic”, in: Victoria Stavridou and Tom F. Melham and Raymond T. Boute, eds., Theorem Provers in Circuit Design, pp. 77–84. North Holland, Amsterdam (1992)
Paul Hudak, John Peterson and Joseph H. Easel, A Gentle Introduction to Haskell 98. http: //www.haskell.org/tutorial/ (Oct. 1999)
Kathleen Jensen and Niklaus Wirth, PASCAL User Manual and Report. Springer-Verlag, Berlin (1978)
Serge Lang, Undergraduate Analysis. Springer-Verlag, Berlin (1983).
Lawrence T. Lorimer, New Webster’s Dictionary and Thesaurus of the English Language. Lexicon Publications, Inc., Danbury, CT (1995)
Bertrand Meyer, Introduction to the Theory of Programming Languages. Prentice Hall, New York (1991)
David L. Parnas, “Predicate Logic for Software Engineering”, IEEE Trans. SWE 19, 9, pp. 856–862 (Sept. 1993)
John C. Reynolds, “Using Category Theory to Design Implicit Conversions and Generic Operators”, in: Neil D. Jones, Semantics-Directed Compiler Generation, pp. 261–288, LNCS 94, Springer-Verlag, Berlin (1980)
Richard A. Roberts and Clifford T. Mullis, Digital Signal Processing. Addison-Wesley Publishing Company (1987)
John Rushby, Sam Owre and Natarajan Shankar, “Subtypes for Specifications: Predicate Subtyping in PVS”, Transactions on Software Engineering vol. 24, 9, pp. 709–720 (September 1998)
J. Michael Spivey, The Z notation: A Reference Manual. Prentice-Hall (1989)
Alfred Tarski and Steven Givant, A Formalization of Set Theory Without Variables. Colloquium Publications, Vol. 41. American Mathematical Society (1987)
R. D. Tennent, Semantics of Programming Languages. Prentice Hall, New York (1991)
Frank van den Beuken, A Functional Approach to Syntax and Typing, PhD thesis. School of Mathematics and Informatics, University of Nijmegen (1997)
Wolfgang Wechler, Universal Algebra for Computer Scientists. Springer-Verlag, Berlin (1987)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 IFIP International Federation for Information Processing
About this chapter
Cite this chapter
Boute, R.T. (2003). Concrete Generic Functionals. In: Gibbons, J., Jeuring, J. (eds) Generic Programming. IFIP — The International Federation for Information Processing, vol 115. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-35672-3_5
Download citation
DOI: https://doi.org/10.1007/978-0-387-35672-3_5
Publisher Name: Springer, Boston, MA
Print ISBN: 978-1-4757-5320-2
Online ISBN: 978-0-387-35672-3
eBook Packages: Springer Book Archive