It is surprising that Prelude.Linear exports the non-linear version of projection fst :: (a,b) -> a.
This tripped me up (with non-inspiring errors about multiplicity) when writing evalState:
I was naturally expecting that fst :: Consumable b => (a,b) -> a would be by default in scope if a fst is in scope. After all, we want linear programs when we import Prelude.Linear!
So, I suggest either to not export fst (and alike) or export them from Data.Tuple.Linear.
It is surprising that
Prelude.Linearexports the non-linear version of projectionfst :: (a,b) -> a.This tripped me up (with non-inspiring errors about multiplicity) when writing
evalState:evalState(toControl.Functor.Linear) #404I was naturally expecting that
fst :: Consumable b => (a,b) -> awould be by default in scope if afstis in scope. After all, we want linear programs when we importPrelude.Linear!So, I suggest either to not export
fst(and alike) or export them fromData.Tuple.Linear.