Yesterday, I discussed with some students who are implementing an SML plug-in for eclipse, whether types are necessary for a lambda-lifting refactoring for SML.
So today’s quiz is simply: Are types necessary for lambda-lifting refactoring in SML? Why/Why not?
Remember, the refactoring works on valid SML programs, and after the transformation the program should still be valid.
fun foo x = let fun bar y = (x,y) in bar x end
is transformed/refactored to
fun bar x y = (x,y) fun foo x = bar x x
I’ll give the answer tomorrow.