I’ve been playing with Haskell a lot lately. I’ve learn some neat things to do with a lazy language. The normal method to normalize a vector is to compute the length of a vector, and then scale the vector. This requires two passes. I wrote up on the Haskell Wiki how to normalize a vector in one pass based on the work by Richard Bird.