(* Q4, scope rules*) let fun a() = let fun b() = a()+b(); (* ...e1...; *) fun c() = a()+b()+c(); (* ...e2... *) in a()+b()+c() (* ...e3... *) end; fun d() = let fun e() = a()+d()+e() (* ...e4... *) in a()+d()+e() (* ...e5... *) end in a()+d() (* ...e6... *) end (* No other function calls can be added without error. (However it infinite-loops.) *)