| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Polysemy.Internal.TH.Performance
Synopsis
- inlineRecursiveCalls :: Q [Dec] -> Q [Dec]
Documentation
inlineRecursiveCalls :: Q [Dec] -> Q [Dec] Source #
GHC has a really hard time inlining recursive calls---such as those used in interpreters for higher-order effects. This can have disastrous repercussions for your performance.
Fortunately there's a solution, but it's ugly boilerplate. You can enable
-XTemplateHaskell and use inlineRecursiveCalls to convince GHC to make
these functions fast again.
inlineRecursiveCalls[d|runReader:: i ->Sem(Readeri ': r) a ->Semr arunReaderi =interpretH$ \caseAsk->pureTiLocalf m -> do mm <-runTmraise$runReader(f i) mm |]