That's why Arc/Nu provides alet and awith...
(alet foo 1 (self (+ foo 1)) (awith (foo 1) (self (+ foo 1))
((afn (foo) (self (+ foo 1))) 1)