[Haskell-cafe] HXT and types in Control.Arrow.ArrowTree

Albert Y. C. Lai trebla at vex.net
Sun Mar 23 13:53:55 EDT 2008

Robert Vollmert wrote:
> In short, I'm constantly running into what appear to be artificial type 
> restrictions in Control.Arrow.ArrowTree. For example, the signature of 
> "deep" is
> deep :: (Tree t, ArrowTree a) => a (t b) (t b) -> a (t b) (t b)
> instead of the more general
> deep :: (Tree t, ArrowTree a) => a (t b) c -> a (t b) c

You are right, there is no harm generalizing deep, since a related 
combinator, multi, has the more general type.  Meanwhile, I don't think

> deep (hasName "a") >>> getLink

looks too bad. :)

Under suitable assumptions, you can use

multi getLink

if you want.

More information about the Haskell-Cafe mailing list