On Tue, Apr 22, 2008 at 05:28:27PM +0000, Michael Karcher wrote:
> I am quite late to join this thread, but as I just read the thread
> about Conal's AddBounds where he had a very valid point for
> implementing min/max without resorting to <= or compare:
> 
> min [] ys = []
> min xs [] = []
> min (x:xs) (y:ys)
>  | cmp == LT = (x:xs)
>  | cmp == GT = (y:ys)
>  | cmp == EQ = x:min xs ys
>     where cmp = compare x y
> 
> This is a properly lazy implementation for min (the one in GHC's
> prelude is not), as it is able to calculate (take 5 $ min [1,2..]
> [1,2..]). This is not possible if min has to wait for compare or <= to
> compare the full lists before returning the head.

In addition, you need special min and max functions to implement IEEE
floating point properly. Of course, floating point is odd in general,
but we should be correct when we can.

        John

-- 
John Meacham - ⑆repetae.net⑆john⑈
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to