lambda {} $head {$cons {set p} {set q}}  
This would be a typical way of invoking the evaluation of a body with arguments which contained lambda abstractions.
-> $head {$cons {set p} {set q}}
Lambda reduction because the argument list is empty. Reduce first list element, though in this case the operation is redundant
-> {lambda c {$c {lambda {x y} {$x}}}} {$cons {set p} {set q}}
Variable substitution of first list element
-> lambda c {$c {lambda {x y} {$x}}} {$cons {set p} {set q}}
List reduction of the first element after variable substitution.
-> lambda {} {{$cons {set p} {set q}} {lambda {x y} {$x}}}
By currying.
-> {$cons {set p} {set q}} {lambda {x y} {$x}}
Lambda reduction
-> $cons {set p} {set q} {lambda {x y} {$x}}
First element list reduction after lambda reduction
-> {lambda {a b f} {$f $a $b}} {set p} {set q} {lambda {x y} {$x}}
Variable substitution of first element
-> lambda {a b f} {$f $a $b} {set p} {set q} {lambda {x y} {$x}}
First element list reduction after variable substitution
-> lambda {} {{lambda {x y} {$x}} {set p} {set q}}
by currying
-> {lambda {x y} {$x}} {set p} {set q}
Lambda reduction
-> lambda {x y} {$x} {set p} {set q}  
First element list reduction after lambda reduction
-> lambda {} {{set p}} 
By currying
->{set p}
Lambda reduction
->set p
First element list reduction after lambda reduction. This is not a lambda command so return eval {set p}