Classical (Co)Recursion: Programming

03/11/2021
by   Paul Downen, et al.
0

Our aim here is to illustrate how the benefits of structural corecursion can be found in a broader swath of the programming landscape than previously thought. Beginning from a tutorial on structural corecursion in the total, pure functional language Agda, we show how these same ideas are mapped to familiar concepts in a variety of different languages. We show how corecursion can be done in strict functional languages like Scheme, and even escapes the functional paradigm entirely, showing up in the natural expression of common object-oriented features found in languages like Python and Java. Opening up structural corecursion to a much wider selection of languages and paradigms – and therefore, also to a much larger audience of programmers – lets us also ask how corecursion interacts with computational effects. Of note, we demonstrate that combining structural corecursion with effects can increase its expressive power. We show a classical version of corecursion – using first-class control made possible by Scheme's classical call/cc – that enables us to write some new stream-processing algorithms that aren't possible in effect-free languages.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/11/2023

Simple Reference Immutability for System F-sub

Reference immutability is a type based technique for taming mutation tha...
research
01/17/2021

Proceedings of the 2020 Scheme and Functional Programming Workshop

This report aggregates the papers presented at the twenty-first annual S...
research
12/25/2018

Induction, Coinduction, and Fixed Points: A Concise Survey (and Tutorial)

In this survey paper we present the formulation of the induction and coi...
research
09/05/2022

An Exploratory Study on the Predominant Programming Paradigms in Python Code

Python is a multi-paradigm programming language that fully supports obje...
research
09/05/2022

Detecting unanticipated mutual recursion using Elegant Objects representation of object-oriented programs

Elegant Objects (EO) is a variation of the object-oriented programming p...
research
11/02/2022

Fluent APIs in Functional Languages (full version)

Fluent API is an object-oriented pattern for elegant APIs and embedded D...
research
10/30/2021

Equinox: neural networks in JAX via callable PyTrees and filtered transformations

JAX and PyTorch are two popular Python autodifferentiation frameworks. J...

Please sign up or login with your details

Forgot password? Click here to reset