Surprisingly, we can write non-deterministic programs in an ML-like language just as naturally and elegantly as in the functional-logic language Curry – ML’s call-by-value and the lack of support for monads notwithstanding. The key idea is to forget about (the popular conception of) monads and to write non-deterministic computations in a small, tagless-final embedded DSL, with ML playing the role of the `preprocessor’. The DSL turns out surprisingly small, essentially first-order – compensated by the richness of the Meta Language.
Thu 7 SepDisplayed time zone: Belfast change
16:50 - 17:40
|Effects without monads: non-determinism|
|Effectively tackling the awkward squad|