[Haskell-cafe] enforcing strictness on arbitrary subexpressions
fis at wiwi.hu-berlin.de
Thu Feb 16 05:16:55 EST 2006
I want to force evaluation on an arbitrary expression. What I have
found is only strict datatypes (the '!' thing), but not a strictness
idiom for arbitrary subexpressions. (I want this for debugging
mostly, so if there is a better way to unsafePerformIO something in
one piece I would be happy with that, too.)
veryLongString = "..."
data StrictThingy = StrictThingy ! String
main :: IO ()
main = do
hPutStr stdout veryLongString -- lazy
veryLongString `seq` hPutStr stdout veryLongString -- still lazy?
(StrictThingy veryLongString) `seq` hPutStr stdout veryLongString -- strict (or at least i hope it is)
Problem with the last line is that it doesn't work for arbitrary
types, and it's kind of ugly. What I would like to have is something
hPutStr stdout ! veryLongString
but I guess it's not that easy?
Sorry for asking without consulting the list archives, but I promise
I'll add it to the faq in the wiki once i understood. (-:
I am using ghci and ghc, latest ubuntu package, but I am happy to
switch to new versions.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 189 bytes
Desc: Digital signature
Url : http://www.haskell.org//pipermail/haskell-cafe/attachments/20060216/b23c41d4/attachment.bin
More information about the Haskell-Cafe