[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