[Haskell-cafe] ANN: strictify 0.1
Sterling Clover
s.clover at gmail.com
Sun Feb 3 16:29:57 EST 2008
Dear Friend,
Have you ever stared at a maze of Haskell code and thought "Gosh,
I'm just feeling lazy today. Everything works, and I mainly
understand the strictness characteristics of my program. But I just
can't decide where to put those last few bangs. Maybe I don't need to
micro-optimize anyway." Sure you have. It's ok. You can let it out.
You're among friends here. Why, I bet you've even gone and sprinkled
some bangs randomly, hoping for the best. We've all been there.
Maybe you even got those pesky strictness annotations right, but a
new version of GHC with its ever improving strictness analyzer came
along and rendered some obsolete. And yet there they still lie,
consuming whole tens of picoseconds worth of your hard-earned
processor cycles and troubling your dreams.
Well, friend, your dreams need be troubled no more. The time has
come for a new era! The era of strictifiericization version 0.1. An
era where you can kiss those micro-optimization troubles over silly
shootout entries goodbye! Instead of brute-forcing your way through
permutations of strictness entries let your computer do the work for
you. That's why we invented them after all!
Rather than putting "!" in just the right places, put "{- ! -}" in
every place you _might_ want a strictness annotation. Then sit back,
pop open a cool refreshing brew, and wait (and wait and wait) as
strictify does the rest!*
Available now now now at hackage: http://hackage.haskell.org/cgi-bin/
hackage-scripts/package/strictify-0.1
Darcs repository at: http://code.haskell.org/~sclv/strictify/
*To prevent exponential running time, strictify only produces a local
rather than global optimum of strictness patterns, which should be
sufficient in 99% of all cases. Strictify only works on POSIX-
compliant systems. Strictify is currently only suitable for
"shootout"-style executables which are contained in a single main
file, accepting input from argv, stdin, or both. Strictify will not
fully execute until it recieves an EOF in stdin. If you cannot
produce an EOF through ctrl-D and are not streaming an input file in,
you may be forced to run "echo "" | strictify". No guarantee is made,
express or implied, as to strictify improving the speed of your
program or your mental acuity regarding strictness. Offer void where
prohibited. As strictify contains small parts, it is not suitable for
children under the age of five. Do not ingest strictify more than
seventy five times in a one hour period. If symptoms persist, consult
your physician.
--S
More information about the Haskell-Cafe
mailing list