Lazyness is already there, to a certain level at least, you can find it in the Stream module.
Also, nothing of the things you mentioned is necessary for a language to be FP, nor does a language need to be FP to make use of Algebraic Datatypes or lazyness.
But perhaps I got you wrong and you can get a bit more into detail what you actually mean.


















