`Profunctor.Strong` vs Haskell’s `Control.Arrow`

Hi,

I’m finding the Strong methods a bit too restrictive because they’re specialised to functions. I’m wondering why they don’t have the types:

first :: p b c -> p (b, d) (c, d)
second :: p b c -> p (d, b) (d, c)
(***) :: p b c -> p b' c' -> p (b, b’) (c, c’)
(&&&) :: p b c -> p b c' -> p b (c, c’)

Obviously I can roll my own Arrow-style methods but I’m wondering why the PureScript versions are defined as they are. Sorry if I’m missing something obvious…

I don’t quite follow. They do have those signatures.
https://pursuit.purescript.org/packages/purescript-profunctor/6.0.0/docs/Data.Profunctor.Strong#v:first

1 Like

Yep, sorry not sure what confused me there. Thanks.