Haskell implementation of Arithmetic Coding using lazy evaluation and infinite lists to perform encoding/decoding on the fly