Data.Graph.Inductive.Internal.Queue isn't efficient for persistent use. It would be easier to ensure that it's not accidentally used persistently if it's given a monadic interface. It should probably also be benchmarked against other queue implementations, such as Control.Monad.Queue.Corec from control-monad-queue, my own considerable simplification thereof, or perhaps something fancier in ST.
I'm hesitant to add any dependencies due to the fact that fgl is in the Platform. But I don't disagree that the various Data.Graph.Inductive.Internal.* modules aren't all that great.
Data.Graph.Inductive.Internal.Queue
isn't efficient for persistent use. It would be easier to ensure that it's not accidentally used persistently if it's given a monadic interface. It should probably also be benchmarked against other queue implementations, such asControl.Monad.Queue.Corec
fromcontrol-monad-queue
, my own considerable simplification thereof, or perhaps something fancier inST
.