Anyway, for yours: try to implement (.) :: Property b c -> Property a
b -> Property a c, and first :: Property a b -> Property (a,c) (b,c).
Then you will have an arrow.

(.) = flip (>==>)

first p = p >==< pure id

No, not quite.

 \p -> p >==< pure id :: Property a b -> Property a (b, a)

What you want is

 first p = (pure fst >==> p) >==< (pure snd)

which has the required type.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to