Nondeterministically choose an element from a
Foldable
collection. This can be used to emulate the style of nondeterminism
associated with programming in the list monad:
pythagoreanTriples = do
a <- oneOf [1..10]
b <- oneOf [1..10]
c <- oneOf [1..10]
guard (a^2 + b^2 == c^2)
pure (a, b, c)