Concrete generic functionals - Principles, design and applications

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.

[1]  A. Tarski,et al.  A Formalization Of Set Theory Without Variables , 1987 .

[2]  Raymond T. Boute,et al.  Fundamentals of Hardware Description Languages and Declarative Languages , 1993 .

[3]  Stephen A. Dyer,et al.  Digital signal processing , 2018, 8th International Multitopic Conference, 2004. Proceedings of INMIC 2004..

[4]  Wolfgang Wechler,et al.  Universal Algebra for Computer Scientists , 1992, EATCS Monographs on Theoretical Computer Science.

[5]  Paul Hudak,et al.  A gentle introduction to Haskell , 1992, SIGP.

[6]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[7]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[8]  Fred B. Schneider,et al.  A Logical Approach to Discrete Math , 1993, Texts and Monographs in Computer Science.

[9]  John C. Reynolds,et al.  Using category theory to design implicit conversions and generic operators , 1980, Semantics-Directed Compiler Generation.

[10]  Merriam-Webster Webster's New World Dictionary of the American Language , 1976 .

[11]  Michael Barr,et al.  Category theory for computing science , 1995, Prentice Hall International Series in Computer Science.

[12]  Bertrand Meyer,et al.  Introduction to the Theory of Programming Languages , 1990 .

[13]  Michael Barr,et al.  Category theory for computing science (2. ed.) , 1995, Prentice Hall international series in computer science.

[14]  F.A.M. van den Beuken,et al.  A functional approach to syntax and typing , 1997 .

[15]  Roland Carl Backhouse,et al.  Logical Relations and Galois Connections , 2002, MPC.

[16]  Raymond T. Boute,et al.  Supertotal Function Definition in Mathematics and Software Engineering , 2000, IEEE Trans. Software Eng..

[17]  Edsger W. Dijkstra,et al.  Predicate Calculus and Program Semantics , 1989, Texts and Monographs in Computer Science.

[18]  Richard S. Bird,et al.  Introduction to functional programming using haskeu , 1998 .

[19]  Natarajan Shankar,et al.  Subtypes for Specifications: Predicate Subtyping in PVS , 1998, IEEE Trans. Software Eng..

[20]  W. Gareth J. Howells,et al.  Implementation of the Veritas Design Logic , 1992, TPCD.

[21]  Robert D. Tennent,et al.  Semantics of programming languages , 1991, Prentice Hall International Series in Computer Science.

[22]  David Lorge Parnas,et al.  Predicate Logic for Software Engineering , 1993, IEEE Trans. Software Eng..

[23]  Alonzo Church,et al.  Set Theory with a Universal Set , 1974 .

[24]  Ellis Horowitz,et al.  The design of data type specifications , 1976, ICSE '76.

[25]  Robert H. Bishop,et al.  Learning with LabVIEW 8 , 1999 .