Ein nichtdeterministisches Programm, zum Beispiel zum Bestimmen aller Faktoren einer Zahl, ist in Haskell schnell geschrieben:

-- A non-deterministic programme that finds all factor pairs of a given number.  
factors :: Integral a => a -> [(a, a)]  
factors = do  
  x <- [1..num]  
  guard $ num `mod` x == 0  
  let y = num `div` x  
  return (x, y) 

In Scala geht das ganz ähnlich:

// A non-deterministic programme that finds all factor pairs of a given number.  
def factors(num: Int) = {  
  for {  
    x <- 1 to num  
    if num % x == 0  
    val y = num / x  
  } yield (x, y);  
} 

Klar, Obiges ist einfach eine Listenkomprehension, aber in der Tat geht das in beiden Sprachen auch über ganz anderen Datentypen, die die jeweils geforderten Schnittstellen implementieren. Auch, wenn die Scala-Schnittstelle rein namensmäßig auf Listen zugeschnitten ist (flatMap für bind, filter für fail), ist die Funktionalität identisch. Nur rein nebenwirkungsorientierte Anweisungen ohne Variablenbindung scheinen in Scala-Komprehensionen nicht möglich zu sein.