What problem does it solve?
Helps diagnose and remediate Haskell performance, memory, and evaluation-order issues by aligning code with GHC optimization behavior and profiling evidence. It is focused on eliminating space leaks, improving strictness where appropriate, enabling fusion-friendly pipelines, and guiding pragmatic use of pragmas and newtypes.
Core Features & Use Cases
- Profiling-guided fixes: Interpret profiler output and eventlog hints to locate allocation or time hotspots.
- Strictness & memory: Recommend strict fields, bang patterns, foldl' usage, and UNPACK to avoid thunk buildup and indirection.
- Specialization & inlining: Advise on INLINE/INLINABLE/SPECIALIZE pragmas and worker/wrapper transformations when Core shows dictionary or allocation overhead.
- Core inspection: Tell developers what to look for in simplified Core (-ddump-simpl) and how it validates optimizations.
- Use Case: Review a slow Haskell function, run profiling and Core dumps, and receive prioritized changes to reduce allocations and improve throughput.
Quick Start
Analyze the provided Haskell module using GHC profiling and simplified Core output and recommend concrete strictness, fusion, and specialization changes to reduce allocations and improve performance.