I tried using gap for the product explained in your paper Composing bidirectional programs monadically but the generic function has strictness in the parameters which caused the biparser drop bp = try bp *> drop bp <!> pure () to infinitely loop.
This is also problematic in base Data.Functor.Product.Product and I have detailed the problem more thoroughly in
haskell/core-libraries-committee#268
or
https://gitlab.haskell.org/ghc/ghc/-/issues/24898
This is probably a problem in more than just gap because I found with Product it to be a problem with
- Applicative
- Alternative
- MonadPlus
- MonadZip
- Semigroup - impossible to create infinite data structures
so it would be worth checking those generic functions as well.
I tried using
gapfor the product explained in your paper Composing bidirectional programs monadically but the generic function has strictness in the parameters which caused the biparserdrop bp = try bp *> drop bp <!> pure ()to infinitely loop.This is also problematic in base Data.Functor.Product.Product and I have detailed the problem more thoroughly in
haskell/core-libraries-committee#268
or
https://gitlab.haskell.org/ghc/ghc/-/issues/24898
This is probably a problem in more than just
gapbecause I found withProductit to be a problem withso it would be worth checking those generic functions as well.