Can Haskell use short floats; i.e. 16 bit floats to save space?
GHC pads all basic data types to one word in its in-memory representation, so no. It's possible that the boxed vectors in the "vector" package has a more compact representation for arrays of Floats.