[Haskell-cafe] Re: 'par' - why has it the type a -> b -> b ?

Malcolm Wallace Malcolm.Wallace at cs.york.ac.uk
Mon Sep 29 11:01:06 EDT 2008


> par2 :: (a -> b -> c) -> a -> b -> c
> > > par2 f x y =
> > >    f x (par x y) 

Here is the dual: 'par' implemented in terms of parallel application:

    a `par` b = par2 (\x y-> y) a b

> ($!)    :: (a -> b) -> a -> b
> f $! x  = x `seq` f x
> 
> It's terseness vs. maximum composability. I don't even want to think
> about implementing seq in terms of $!, makes my brain twist.

It's not so difficult.  (And you may see some similarity with the above
defn of par.)

    a `seq` b = (\x y-> y) $! a b

Regards,
    Malcolm


More information about the Haskell-Cafe mailing list