Thanks Brent, this should do the trick, although what I was asking was
something more general:

For "explicitly pass" I meant passing them without the eta reduce, in other
terms:

swapA' :: (Arrow a) => a ((b,c), (b,c)) (c,b)
swapA'  t = (????) swapFirst >>> swapSecond (???)
  where
    swapFirst  = first $ arr snd
    swapSecond = second $ arr fst

 where the question marks indicate that I don't know how to tell swapFirst
"hey, even though from the outside
I'm passing you a tuple *t*, you have to take as input a (t,t)."

Hope this is clearer or it has some sense at all, maybe I'm not getting
correctly the way arrows work!

bye,
A.


Like this?
>
>   swapA' = dup >>> swapFirst >>> swapSecond
>     where
>       dup = id &&& id
>       ...
>
> I'm afraid I'm not confident I really understand your question,
> however, so if that doesn't answer it, try asking again!
>
> -Brent
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to