I wonder whether a Haskell compiler optimizer couldn't generally split larger lazy data structures into smaller strict pieces to gain more performant programs.
For example, by Data.Text.Lazy we make the same behavior. Strict chunks of Data.Text in larger lazy structures. If this optimization would be possible, could we just use String instead with the same performance and make the code nicer?
Is there any conceptual/theoretical reason, why this optimization can't be made, or it is just practically so hard, nobody implemented it yet? Is it the current issue among GHC developers?