Skip to content
0:00 / 0:00

#corecursion#co-programs#haskell

Jeremy Gibbons – How to design co-programs

Konfy

4K subscribers • 13 videos on Hallway

YouTube
  • Recommended by 1 person: 1 in engineering communities.
  • Presented by Jeremy Gibbons, Professor of Computing at the University of Oxford

Advanced. Deep dive for people who know the field.

2.8K views6 years ago1 recommendation

Programming languagesComputer scienceFunctional programmingHaskellAlgorithms

Jeremy Gibbons explains how to design co-programs by letting the structure of the desired output data guide the algorithm.

Jeremy Gibbons Jeremy Gibbons is Professor of Computing at the University of Oxford, where he teaches on the part-time professional Master’s programme in Software Engineering, and leads the Algebra of Programming research group. He is co-Editor-in-Chief of the Journal of Functional Programming, and former Chair of IFIP Working Group 2.1 on Algorithmic Languages and Calculi (which designed Algol68) and former Vice Chair of ACM SIGPLAN (which runs ICFP). His recent book “Algorithm Design with Haskell" with Richard Bird has just been published by Cambridge University Press. How to design co-programs The observation that program structure follows data structure is a key lesson in introductory programming: good hints for possible program designs can be found by considering the structure of the data to be processed. In particular, this lesson is a core message of the influential textbook “How to Design Programs" by Felleisen, Findler, Flatt, and Krishnamurthi. However, that book discusses using only the structure of input data for guiding program design, typically leading towards structurally recursive programs. I argue that programmers should consider the structure of output data, leading them also towards structurally corecursive programs. haskell.love twitter.com/_haskellove

Why it's here

1 person recommends this

What people say. Recommended as a super useful resource on letting data structure guide algorithm design, specifically for output-driven programming.

u/tobegain r/ProgrammingLanguages • Recommends

On “Can You Teach Me Some Novel Concepts?”

…gured out for the Midori language https://joeduffyblog.com/2016/02/07/the-error-model/ The thing I think is super-useful in Tailspin is how it lets me focus on the structure of the data and let that structure guide the algorithm to either write it in terms of the input data or in terms of the desired output data (see Jeremy Gibbons' talk on that [video or his paper https://www.cs.ox.ac.uk/jeremy.gibbons/publications/copro.pdf ) Specifically in my latest version, I have enhanced the "projection" idea so that it is easier to transform data while retaining most of the structure (if you think of the data as a document, for example). In most languages you have to deconstruct the document and…