I am currently messing around with profunctors in Gleam. Here is what I am writing,
pub type Profunctor(p, q, a, b, c, d) {
Profunctor(dimap: fn(#(fn(a) -> b, fn(c) -> d, p)) -> q)
}
What I would like to write is,
pub type Profunctor(p, a, b, c, d) {
Profunctor(dimap: fn(#(fn(a) -> b, fn(c) -> d, p(b, c)) -> p(a, d))
}
Fwiw, I understand if there are no plans to support this 😅