I found this after wondering why the main data structure in the `nondeterminism` package on Hackage [1] was called `Amb`. Seems like this operator can be used to generate a constraint-solving engine elegantly.
[1] https://github.com/abarbu/nondeterminism-haskell