Blogs (28) >>
ICFP 2017
Sun 3 - Sat 9 September 2017 Oxford, United Kingdom
Thu 7 Sep 2017 12:00 - 12:30 at L1 - Day 1, Session 3

We present the urn, a simple tree-based data structure that supports sampling from and updating discrete probability distributions in logarithmic time. We avoid the usual complexity of traditional self-balancing binary search trees by not keeping values in a specific order. Instead, we keep the tree maximally balanced at all times using a single machine word of overhead: its size.

Urns provide an alternative interface for the frequency combinator from the QuickCheck library that allows for asymptotically more efficient sampling from dynamically-updated distributions. They also facilitate backtracking in property-based random testing, and can be applied to such complex examples from the literature as generating well-typed lambda terms or information flow machine states, demonstrating up to a 3x speedup in one case.

Thu 7 Sep

Displayed time zone: Belfast change

12:00 - 12:30
Day 1, Session 3Haskell at L1
12:00
30m
Talk
Ode on a Random Urn (Functional Pearl)
Haskell