:print and :sprint sometimes fully evaluates strings
Not too confident in my terminology but
:sprinting a string that has been evaluated down to its spine seems to fully evaluate the string:
Prelude> let a = map (Debug.Trace.trace "!!!") "abc" Prelude> a `seq` () () Prelude> :sprint a a = _ : _ -- looks fine Prelude> length a 3 Prelude> :sprint a a = "!!! -- strange! a!!! b!!! c"
What I expect to see is
a = [_,_,_].
:sprint is supposed to force any evaluation this seems like a bug. At least it can make debugging quite confusing if you're not aware of it!