Safe Haskell | None |
---|---|
Language | Haskell2010 |
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 ->Semantic
(Reader
i ': r) a ->Semantic
r arunReader
i =interpretH
$ \caseAsk
->pureT
iLocal
f m -> do mm <-runT
mraise
$runReader
(f i) mm |]