[Haskell-cafe] nondet function

Ashley Yakeley ashley at semantic.org
Sun Sep 10 00:21:33 EDT 2006

Is it possible to write nondet?

  nondet :: a -> a -> a

  nondet _|_ _|_ = _|_
  nondet _|_ q = q
  nondet p _|_ = p
  nondet p q = p or q

nondet evaluates its arguments in parallel, and returns the first one of 
them to evaluate. It's thus a bit different from the "par" of GPH. This 
isn't referentially transparent, of course, but maybe it could be 
written in the IO monad:

  nondet p q = unsafePerformIO (getnondet p q)

  getnondet :: a -> a -> IO a

Ashley Yakeley, Seattle WA

More information about the Haskell-Cafe mailing list