The lambda-list of fn* is: ('lambda-list ... 'body) so ,c and ,d are not evaluated at the time of function creation.
Let is defined in terms of fn.
I'm not sure what behavior you're hoping for from that double quote.
(aif *elses)
-----