3. Optimizations¶
- 3.1. GHC Flags
- 3.2. GHC Optimizations
- 3.3. Library Based Changes
- 3.4. Library Agnostic Changes
- 3.4.1. Ordering Data Constructors
- 3.4.2. Wrangling Lazy Tuples
- 3.4.3. Appropriate Folding
- 3.4.4. Avoid Runtime Checks with Parse Don’t Validate:
- 3.4.5. Data-Oriented Design
- 3.4.6. Using GHC.Exts
- 3.4.7. Inlining Pragma and Friends
- 3.4.8. Specialization
- 3.4.9. Fusion and Rules
- 3.4.10. Unboxing
- 3.4.11. Unpacked Product Types
- 3.4.12. Avoiding Nested Monad Transformers
- 3.4.13. Unroll Monad Transformer Stacks
- 3.4.14. The OneShot Monad Trick
- 3.4.15. Continuation Passing Style
- 3.4.16. Using Levity Polymorphism
- 3.4.17. Using Backpack to Unroll Data Structures