A variation on the theme:
exprToFunction[expr_, vars_] := Function[Evaluate[expr /. Thread[vars -> Array[Slot, Length[vars]]]]]
If you didn't insist on pure functions, you could get away with
exprToFunction[expr_, vars_] := Function[vars, expr]