Some ML-family languages such as OCaml allow the definition of coinductive types as well as their inhabitants using a let rec construct. An example of such elements is coinductive streams. However, there is very little that one can do to manipulate them: pattern matching on the top elements is possible, but recursion will never finish. More importantly, it is virtually impossible to generate coinductive elements on the fly. Recent work with the CoCaml language has started fixing this issue, but it is limited to regular coinductive types, that is where the elements eventually point to themselves. For coinductive streams, this corresponds to streams that have a pattern that eventually repeats (e.g., [3;4;5;1;2;1;2;1;2]). In this talk we will show how to build on well-established theory on rational streams – a much more comprehensive family of streams – to extend CoCaml to deal with those rational streams.
Preprint (icfp19mlworkshop-paper83.pdf) | 95KiB |
Thu 22 AugDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 15:00 | |||
13:30 25mTalk | Transparent Synchronous Dataflow ML Steven Cheung University of Birmingham, UK File Attached | ||
13:55 25mTalk | Programming with Rational Coinductive Streams ML Jean-Baptiste Jeannin University of Michigan, USA File Attached | ||
14:20 25mTalk | Efficient Deconstruction with Typed Pointer Reversal ML Pre-print |