Creating Canned Recursion in Functional Programming Languages from Category Theory
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Functional Programming Applied to Computational Algebra
THESIS FUNCTIONAL PROGRAMMING APPLIED TO COMPUTATIONAL ALGEBRA Submitted by Ian H. Kessler Department of Mathematics In partial fulfillment of the requirements For the Degree of Master of Science Colorado State University Fort Collins, Colorado Fall 2018 Master’s Committee: Advisor: James B. Wilson Amit Patel Hamidreza Chitsaz Copyright by Ian H. Kessler 2018 All Rights Reserved ABSTRACT FUNCTIONAL PROGRAMMING APPLIED TO COMPUTATIONAL ALGEBRA Underlying many, if not all, areas of mathematics is category theory, an alternative to set the- ory as a foundation that formalizes mathematical structures and relations between them. These relations abstract the idea of a function, an abstraction used throughout mathematics as well as throughout programming. However, there is a disparity between the definition of a function used in mathematics from that used in mainstream programming. For mathematicians to utilize the power of programming to advance their mathematics, there is a demand for a paradigm of pro- gramming that uses mathematical functions, as well as the mathematical categories that support them, as the basic building blocks, enabling programs to be built by clever mathematics. This paradigm is functional programming. We wish to use functional programming to represent our mathematical structures, especially those used in computational algebra. ii ACKNOWLEDGEMENTS I want to thank God for the opportunity to go to graduate school, and for giving me the strength to persevere through it. I want to thank my mom, dad, and my brothers, Jerry and Joel, for believing in me. I am grateful for my mom for giving me emotional support and words of encouragement throughout my time in graduate school. -
IBM Cognos Analytics - Reporting Version 11.1
IBM Cognos Analytics - Reporting Version 11.1 User Guide IBM © Product Information This document applies to IBM Cognos Analytics version 11.1.0 and may also apply to subsequent releases. Copyright Licensed Materials - Property of IBM © Copyright IBM Corp. 2005, 2021. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. IBM, the IBM logo and ibm.com are trademarks or registered trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at " Copyright and trademark information " at www.ibm.com/legal/copytrade.shtml. The following terms are trademarks or registered trademarks of other companies: • Adobe, the Adobe logo, PostScript, and the PostScript logo are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States, and/or other countries. • Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. • Intel, Intel logo, Intel Inside, Intel Inside logo, Intel Centrino, Intel Centrino logo, Celeron, Intel Xeon, Intel SpeedStep, Itanium, and Pentium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. • Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. • UNIX is a registered trademark of The Open Group in the United States and other countries. • Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. -
NICOLAS WU Department of Computer Science, University of Bristol (E-Mail: [email protected], [email protected])
Hinze, R., & Wu, N. (2016). Unifying Structured Recursion Schemes. Journal of Functional Programming, 26, [e1]. https://doi.org/10.1017/S0956796815000258 Peer reviewed version Link to published version (if available): 10.1017/S0956796815000258 Link to publication record in Explore Bristol Research PDF-document University of Bristol - Explore Bristol Research General rights This document is made available in accordance with publisher policies. Please cite only the published version using the reference above. Full terms of use are available: http://www.bristol.ac.uk/red/research-policy/pure/user-guides/ebr-terms/ ZU064-05-FPR URS 15 September 2015 9:20 Under consideration for publication in J. Functional Programming 1 Unifying Structured Recursion Schemes An Extended Study RALF HINZE Department of Computer Science, University of Oxford NICOLAS WU Department of Computer Science, University of Bristol (e-mail: [email protected], [email protected]) Abstract Folds and unfolds have been understood as fundamental building blocks for total programming, and have been extended to form an entire zoo of specialised structured recursion schemes. A great number of these schemes were unified by the introduction of adjoint folds, but more exotic beasts such as recursion schemes from comonads proved to be elusive. In this paper, we show how the two canonical derivations of adjunctions from (co)monads yield recursion schemes of significant computational importance: monadic catamorphisms come from the Kleisli construction, and more astonishingly, the elusive recursion schemes from comonads come from the Eilenberg-Moore construction. Thus we demonstrate that adjoint folds are more unifying than previously believed. 1 Introduction Functional programmers have long realised that the full expressive power of recursion is untamable, and so intensive research has been carried out into the identification of an entire zoo of structured recursion schemes that are well-behaved and more amenable to program comprehension and analysis (Meijer et al., 1991). -
A Category Theory Explanation for the Systematicity of Recursive Cognitive
Categorial compositionality continued (further): A category theory explanation for the systematicity of recursive cognitive capacities Steven Phillips ([email protected]) Mathematical Neuroinformatics Group, National Institute of Advanced Industrial Science and Technology (AIST), Tsukuba, Ibaraki 305-8568 JAPAN William H. Wilson ([email protected]) School of Computer Science and Engineering, The University of New South Wales, Sydney, New South Wales, 2052 AUSTRALIA Abstract together afford cognition) whereby cognitive capacity is or- ganized around groups of related abilities. A standard exam- Human cognitive capacity includes recursively definable con- cepts, which are prevalent in domains involving lists, numbers, ple since the original formulation of the problem (Fodor & and languages. Cognitive science currently lacks a satisfactory Pylyshyn, 1988) has been that you don’t find people with the explanation for the systematic nature of recursive cognitive ca- capacity to infer John as the lover from the statement John pacities. The category-theoretic constructs of initial F-algebra, catamorphism, and their duals, final coalgebra and anamor- loves Mary without having the capacity to infer Mary as the phism provide a formal, systematic treatment of recursion in lover from the related statement Mary loves John. An in- computer science. Here, we use this formalism to explain the stance of systematicity is when a cognizer has cognitive ca- systematicity of recursive cognitive capacities without ad hoc assumptions (i.e., why the capacity for some recursive cogni- pacity c1 if and only if the cognizer has cognitive capacity tive abilities implies the capacity for certain others, to the same c2 (see McLaughlin, 2009). So, e.g., systematicity is evident explanatory standard used in our account of systematicity for where one has the capacity to remove the jokers if and only if non-recursive capacities). -
301669474.Pdf
Centrum voor Wiskunde en Informatica Centre for Mathematics and Computer Science L.G.L.T. Meertens Paramorphisms Computer Science/ Department of Algorithmics & Architecture Report CS-R9005 February Dib'I( I, 1fle.'1 Cootrumvoor ~', ;""'" ,,., tn!o.-1 Y.,'~• Am.,t,..-(,';if'! The Centre for Mathematics and Computer Science is a research institute of the Stichting Mathematisch Centrum, which was founded on February 11, 1946, as a nonprofit institution aiming at the promotion of mathematics, com puter science, and their applications. It is sponsored by the Dutch Govern ment through the Netherlands Organization for the Advancement of Research (N.W.O.). Copyright © Stichting Mathematisch Centrum, Amsterdam Paramorphisms Lambert Meertens CWI, Amsterdam, & University of Utrecht 0 Context This paper is a small contribution in the context of an ongoing effort directed towards the design of a calculus for constructing programs. Typically, the development of a program contains many parts that are quite standard, re quiring no invention and posing no intellectual challenge of any kind. If, as is indeed the aim, this calculus is to be usable for constructing programs by completely formal manipulation, a major concern is the amount of labour currently required for such non-challenging parts. On one level this concern can be addressed by building more or less spe cialised higher-level theories that can be drawn upon in a derivation, as is usual in almost all branches of mathematics, and good progress is being made here. This leaves us still with much low-level laboriousness, like admin istrative steps with little or no algorithmic content. Until now, the efforts in reducing the overhead in low-level formal labour have concentrated on using equational reasoning together with specialised notations to avoid the introduction of dummy variables, in particular for "canned induction" in the form of promotion properties for homomorphisms- which have turned out to be ubiquitous. -
Joyal's Arithmetic Universe As List-Arithmetic Pretopos 1
Theory and Applications of Categories, Vol. 24, No. 3, 2010, pp. 39{83. JOYAL'S ARITHMETIC UNIVERSE AS LIST-ARITHMETIC PRETOPOS MARIA EMILIA MAIETTI Abstract. We explain in detail why the notion of list-arithmetic pretopos should be taken as the general categorical definition for the construction of arithmetic universes introduced by Andr´eJoyal to give a categorical proof of G¨odel'sincompleteness results. We motivate this definition for three reasons: first, Joyal's arithmetic universes are list- arithmetic pretopoi; second, the initial arithmetic universe among Joyal's constructions is equivalent to the initial list-arithmetic pretopos; third, any list-arithmetic pretopos enjoys the existence of free internal categories and diagrams as required to prove G¨odel's incompleteness. In doing our proofs we make an extensive use of the internal type theory of the categorical structures involved in Joyal's constructions. The definition of list-arithmetic pretopos is equivalent to the general one that I came to know in a recent talk by Andr´eJoyal. 1. Introduction The categories of topoi and pretopoi can be viewed as universes of abstract sets in which to develop mathematics (see [LR03, Joh77, JM95, MM92, Hyl82]). Joyal's arithmetic universes provide further examples of such universes. Andr´eJoyal introduced arithmetic universes in some lectures given in the seventies, all still unpublished, to provide a categorical proof of G¨odel'sincompleteness theorems. He defined arithmetic universes by giving a general construction of examples including the free initial one. He then intended to prove incompleteness by mimicking the diagonal argument of Cantor's theorem within the initial arithmetic universe [Joy05]. -
List Objects with Algebraic Structure
List Objects with Algebraic Structure Marcelo Fiore1 and Philip Saville2 1 Computer Laboratory, University of Cambridge, Cambridge, UK [email protected] 2 Computer Laboratory, University of Cambridge, Cambridge, UK [email protected] Abstract We introduce and study the notion of list object with algebraic structure. The first key aspect of our development is that the notion of list object is considered in the context of monoidal structure; the second key aspect is that we further equip list objects with algebraic structure in this setting. Within our framework, we observe that list objects give rise to free monoids and moreover show that this remains so in the presence of algebraic structure. In addition, we provide a basic theory explicitly describing as an inductively defined object such free monoids with suitably compatible algebraic structure in common practical situations. This theory is accompanied by the study of two technical themes that, besides being of interest in their own right, are important for establishing applications. These themes are: parametrised initiality, central to the universal property defining list objects; and approaches to algebraic structure, in particular in the context of monoidal theories. The latter leads naturally to a notion of nsr (or near semiring) category of independent interest. With the theoretical development in place, we touch upon a variety of applications, considering Natural Numbers Objects in domain theory, giving a universal property for the monadic list transformer, providing free instances of algebraic extensions of the Haskell Monad type class, elucidating the algebraic character of the construction of opetopes in higher-dimensional algebra, and considering free models of second-order algebraic theories. -
Continuity and Geometric Logic
Continuity and Geometric Logic Steven Vickers1 School of Computer Science, University of Birmingham, Birmingham, B15 2TT. Abstract This paper is largely a review of known results about various aspects of geomet- ric logic. Following Grothendieck's view of toposes as generalized spaces, one can take geometric morphisms as generalized continuous maps. The constructivist constraints of geometric logic guarantee the continuity of maps constructed, and can do so from two different points of view: for maps as point transformers and maps as bundles. Keywords: geometric logic, topos, locale, bundle 2010 MSC: 03G30 18C10 06D22 1. Introduction Geometric logic has arisen in topos theory out of the fact that toposes (by \topos" unqualified we shall always mean Grothendieck topos) may be described as classifying toposes for geometric theories { that is to say, any topos may be presented as being generated by a generic model of some geometric theory. The historical roots of this idea must surely go back to Grothendieck's dic- tum that \A topos is a generalized topological space" [10], but there is a specific technical understanding that underlies this: that for the the purposes of sheaf cohomology, what was important was particular categorical structure and prop- erties of categories of sheaves over spaces; and that it was fruitful to generalize to other categories (the toposes) with the same structure and properties. I have not been able to trace in detail how this developed over the 1970s into the idea of toposes as geometric theories as mentioned above. Some of the difficulties are described in the 1986 paper Theories as Categories [9], which grew out of notes I made on a talk given by Mike Fourman to computer scientists and gave in outline form some of the ideas and results on which the present paper is based. -
A Note on the Under-Appreciated For-Loop
A Note on the Under-Appreciated For-Loop Jos´eN. Oliveira Techn. Report TR-HASLab:01:2020 Oct 2020 HASLab - High-Assurance Software Laboratory Universidade do Minho Campus de Gualtar – Braga – Portugal http://haslab.di.uminho.pt TR-HASLab:01:2020 A Note on the Under-Appreciated For-Loop by Jose´ N. Oliveira Abstract This short research report records some thoughts concerning a simple algebraic theory for for-loops arising from my teaching of the Algebra of Programming to 2nd year courses at the University of Minho. Interest in this so neglected recursion- algebraic combinator grew recently after reading Olivier Danvy’s paper on folding over the natural numbers. The report casts Danvy’s results as special cases of the powerful adjoint-catamorphism theorem of the Algebra of Programming. A Note on the Under-Appreciated For-Loop Jos´eN. Oliveira Oct 2020 Abstract This short research report records some thoughts concerning a sim- ple algebraic theory for for-loops arising from my teaching of the Al- gebra of Programming to 2nd year courses at the University of Minho. Interest in this so neglected recursion-algebraic combinator grew re- cently after reading Olivier Danvy’s paper on folding over the natural numbers. The report casts Danvy’s results as special cases of the pow- erful adjoint-catamorphism theorem of the Algebra of Programming. 1 Context I have been teaching Algebra of Programming to 2nd year courses at Minho Uni- versity since academic year 1998/99, starting just a few days after AFP’98 took place in Braga, where my department is located. -
Abstract Nonsense and Programming: Uses of Category Theory in Computer Science
Bachelor thesis Computing Science Radboud University Abstract Nonsense and Programming: Uses of Category Theory in Computer Science Author: Supervisor: Koen Wösten dr. Sjaak Smetsers [email protected] [email protected] s4787838 Second assessor: prof. dr. Herman Geuvers [email protected] June 29, 2020 Abstract In this paper, we try to explore the various applications category theory has in computer science and see how from this application of category theory numerous concepts in computer science are analogous to basic categorical definitions. We will be looking at three uses in particular: Free theorems, re- cursion schemes and monads to model computational effects. We conclude that the applications of category theory in computer science are versatile and many, and applying category theory to programming is an endeavour worthy of pursuit. Contents Preface 2 Introduction 4 I Basics 6 1 Categories 8 2 Types 15 3 Universal Constructions 22 4 Algebraic Data types 36 5 Function Types 43 6 Functors 52 7 Natural Transformations 60 II Uses 67 8 Free Theorems 69 9 Recursion Schemes 82 10 Monads and Effects 102 11 Conclusions 119 1 Preface The original motivation for embarking on the journey of writing this was to get a better grip on categorical ideas encountered as a student assistant for the course NWI-IBC040 Functional Programming at Radboud University. When another student asks ”What is a monad?” and the only thing I can ex- plain are its properties and some examples, but not its origin and the frame- work from which it comes. Then the eventual answer I give becomes very one-dimensional and unsatisfactory. -
Strong Functional Pearl: Harper's Regular-Expression Matcher In
Strong Functional Pearl: Harper’s Regular-Expression Matcher in Cedille AARON STUMP, University of Iowa, United States 122 CHRISTOPHER JENKINS, University of Iowa, United States of America STEPHAN SPAHN, University of Iowa, United States of America COLIN MCDONALD, University of Notre Dame, United States This paper describes an implementation of Harper’s continuation-based regular-expression matcher as a strong functional program in Cedille; i.e., Cedille statically confirms termination of the program on all inputs. The approach uses neither dependent types nor termination proofs. Instead, a particular interface dubbed a recursion universe is provided by Cedille, and the language ensures that all programs written against this interface terminate. Standard polymorphic typing is all that is needed to check the code against the interface. This answers a challenge posed by Bove, Krauss, and Sozeau. CCS Concepts: • Software and its engineering ! Functional languages; Recursion; • Theory of compu- tation ! Regular languages. Additional Key Words and Phrases: strong functional programming, regular-expression matcher, programming with continuations, recursion schemes ACM Reference Format: Aaron Stump, Christopher Jenkins, Stephan Spahn, and Colin McDonald. 2020. Strong Functional Pearl: Harper’s Regular-Expression Matcher in Cedille. Proc. ACM Program. Lang. 4, ICFP, Article 122 (August 2020), 25 pages. https://doi.org/10.1145/3409004 1 INTRODUCTION Constructive type theory requires termination of programs intended as proofs under the Curry- Howard isomorphism [Sørensen and Urzyczyn 2006]. The language of types is enriched beyond that of traditional pure functional programming (FP) to include dependent types. These allow the expression of program properties as types, and proofs of such properties as dependently typed programs. -
Recursion Patterns As Hylomorphisms
Recursion Patterns as Hylomorphisms Manuel Alcino Cunha [email protected] Techn. Report DI-PURe-03.11.01 2003, November PURe Program Understanding and Re-engineering: Calculi and Applications (Project POSI/ICHS/44304/2002) Departamento de Inform´atica da Universidade do Minho Campus de Gualtar — Braga — Portugal DI-PURe-03.11.01 Recursion Patterns as Hylomorphisms by Manuel Alcino Cunha Abstract In this paper we show how some of the recursion patterns typically used in algebraic programming can be defined using hylomorphisms. Most of these def- initions were previously known. However, unlike previous approaches that use fixpoint induction, we show how to derive the standard laws of each recursion pattern by using just the basic laws of hylomorphisms. We also define the accu- mulation recursion pattern introduced by Pardo using a hylomorphism, and use this definition to derive the strictness conditions that characterize this operator in the presence of partiality. All definitions are implemented and exemplified in Haskell. 1 Introduction The exponential growth in the use of computers in the past decades raised important questions about the correctness of software, specially in safety critical systems. Compared to other areas of engineering, software engineers are still very unfamiliar with the mathematical foundations of computation, and tend to approach programming more as (black) art and less as a science [5]. Ideally, final implementations should be calculated from their specifications, using simple laws that relate programs, in the same way we calculate with mathematical expressions in algebra. The calculational approach is particular appealing in the area of functional programming, since referential transparency ensures that expressions in func- tional programs behave as ordinary expressions in mathematics.