I don't know if this helps, but the way I see lambda calculus works is that you assemble one expression in which you build all the things you need and then evaluate it to yield a result. After that, everything vanishes from existence.
For example, here I'm building cons, car and cdr just to create a list, from which I'll get its second value:
(cons => car => cdr =>
// this block is my little world where I have lists
car(cdr(cons(1)(cons(2)(cons(3)(4)))))
)( // cons
carValue => cdrValue => extractor => extractor(carValue)(cdrValue)
)( // car
consValue => (consValue)(x => y => x)
)( // cdr
consValue => (consValue)(x => y => y)
)
(This is JavaScript-looking lambda calculus, so you can evaluate it in your browser's developer console).