Catamorphisms ("foldr" on lists, but generally applicable to any regular recursive datatype) are not just useful but are an effective basis for a recursion-pattern-based discipline of program design. A new presentation for catamorphisms makes it clear how they provide functional semantics for symbolic datatypes, with the capacity to expose significant variations in program design. A further development of the new presentation exploits the higherorder capabilities of functional languages. This is the key enabler for a comprehensive replacement of symbolic data and their interpreters, either implicit or explicit, with direct functional representations. These extensions, of the applicability of catamorphisms and of their presentations, make them even more attractive as bases for program structuring and design, and likewise as targets for software reverse engineering and design recovery. KEY WORDS Software design and development; Programming Tools and languages; Functional programming; Recursion pattern. 2 Catamorphisms are Useful Catamorphisms represent a general, indeed generic recursion pattern on regular recursive datatypes. The design of programs is improved by expressing their recursive components as explicit instantiations of these general patterns.
Abstract. Taking functional programming to its extremities in search of simplicity still requires integration with other development (e.g. formal) methods. Induction is the key to deriving and verifying functional programs, but can be simplified through packaging proofs with functions, particularly "folds", on data (structures). "Totally Functional Programming" avoids the complexities of interpretation by directly representing data (structures) as "platonic combinators" -the functions characteristic to the data. The link between the two simplifications is that platonic combinators are a kind of partially-applied fold, which means that platonic combinators inherit fold-theoretic properties, but with some apparent simplifications due to the platonic combinator representation. However, despite observable behaviour within functional programming that suggests that TFP is widely-applicable, significant work remains before TFP as such could be widely adopted. Programming Is Too HardThere can be little doubt that "programming" (both as metaphor for and essence of the entirety of software development activity), after a half-century of unceasing research, remains too complex. The plethora of complaints about:• performance of software systems;• inefficiency of software development; and • the proposed remedies that have failed to accomplish dramatic change all encourage the search for a new view that will yield significant improvement.Our ultimate goal accordingly is to discover a radical simplification of software development. Our starting point in the achievement of this goal is functional programming, but with an important difference from previous treatments. Whereas functional programming has hitherto combined applicative behaviours (functions) and inert symbols (data), our approach is through replacement to the greatest extent possible of non-functional components, i.e. data and data structures, by appropriate applicative alternatives, i.e. functions. In other words, what distinguishes our approach is that it explores the functional paradigm to its limits (hence "Totally Functional" programming). This will be done by discovering functions that implement the essential applicative behaviour that is hypothesised to exist when processing each data (structure) type. The choice of functional programming as a basis is no mere accident or preference, but is rather objectively suggested for this purpose in formal terms because it inherently supplies most convenient access to the richest range of computable
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
customersupport@researchsolutions.com
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
Copyright © 2024 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.