Last night I implemented the SHA-2 hash functions in Haskell.
When writing in a function language, one often writes fun, odd bits of code.  Today’s example is foldr (flip (.)) id (zipWith mkStep3 ks ws) h. In this example, mkStep3 is a function taking three parameters.  So the result of zipWith mkStep3 ks ws is a list of functions that take one parameter.  These all need to be composed together.  I first composed them together with foldr (.) id, but I found out my functions were composed the wrong way.  I wasn’t so keen on foldr (.) id $ reverse $ (zipWith mkStep3 ks ws), so I settled on foldr (flip (.)) id (zipWith mkStep3 ks ws) as above.
The SHA-2 functions are patented by the NSA. However, since software is not patentable, I don’t really care at the moment.