Nondeterministic Functional Programming