On 2006-09-10, Ashley Yakeley <ashley at semantic.org> wrote:
> 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
Can you pass p and q to two new threads, have them each force their
argument, and then write it to the same channel? Then read from that
channel once in the original thread.
--
Aaron Denney
-><-