Left to Right Programming: Programs Should Be Valid as They Are Typed