Our great sponsors
-
linear-builder
Strict Text and ByteString builder, which hides mutable buffer behind linear types and takes amortized linear time.
-
countwords
Playing with counting word frequencies (and performance) in various languages. (by unhammer)
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Another interesting area of performance optimisation is linear types. It's already possible to take advantage of them in libraries https://github.com/Bodigrim/linear-builder with real world performance gains and in the future in GHC. More about this here https://www.reddit.com/r/haskell/comments/5z6mxb/linear_types_make_performance_more_predictable/?utm_source=share&utm_medium=ios_app&utm_name=iossmf
Wow, thanks for the code review! Noted – I'll try them out when I have some time
The lack of concatMap fusion is a notorious issue in stream fusion. I recently implemented Higher Order Patterns in Rewrite Rules which should make it possible to write a rewrite rule for fusing concatMap in GHC 9.8.
If you want to get stream-fusion in base then I think you should first try to get https://github.com/composewell/fusion-plugin in GHC. It takes care of most of the optimization corner cases that you will invariably run into if you want to use stream-fusion reliably.