semantic
semantic copied to clipboard
Give Parse effect the ability to parse concurrently
Now that #614 is taken care of (or will be soon), we need to reexamine our approach to concurrency.
The simplest big win is to change
data Parse (m :: Type -> Type) k where
Parse :: Parser term -> Blob -> Parse m term
to
data Parse (m :: Type -> Type) k where
Parse :: Traversable t => Parser term -> t Blob -> Parse m term
Because Parse
ends up running an IO
action, we can use mapConcurrently
to perform said operations. Unfortunately, this requires a bit of plumbing; I’ve taken two swings at this and whiffed. Now that alacarte syntax is gone, this might be a good move.