[Haskell-cafe] nondet function

Lennart Augustsson lennart at augustsson.net
Sun Sep 10 08:42:56 EDT 2006


To make it referentially transparent you might want to consider  
adding 'por', parallel or, instead.  It's like (||), but symmetric in  
its treatment of bottom.

	-- Lennart

On Sep 10, 2006, at 00:21 , Ashley Yakeley 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
>
> -- 
> Ashley Yakeley, Seattle WA
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



More information about the Haskell-Cafe mailing list