<p dir="ltr">This is not a proposal. I know that for reasons I don't know, the decision was made to move extra-strict functions for the other containers into separate .Strict modules. I greatly dislike the result of that decision (both from the API standpoint and especially from a maintenance standpoint), but I'm not arguing to change that.</p>
<p dir="ltr">However, I am adding an extra-strict function to Data.Sequence, with the following non-negotiable semantics:</p>
<p dir="ltr">adjust' f i xs =<br>
case xs !? i of<br>
Nothing -> xs<br>
Just x -> let !x' = f x in update i x' xs</p>
<p dir="ltr">This will provide an efficient way to adjust a sequence element without risking thunk chains and memory leaks.</p>
<p dir="ltr">I'm sure some people will be angry. I just wanted to make sure no one says I snuck this in behind their back.</p>