| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Polysemy.Internal.Performance.TH
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| factorial :: Int -> Int factorial 0 = 1 factorial n = n * factorial (n - 1) |]