Rather than trying to address the symptom, lets look at the problem and try and solve it in a general fassion...
the problem is that by using an alias or a function, you create a new scope. ksh treats functions and aliases as mini-scripts, and when you run a script it creates a whole new sub-environment for that script to run in... when the script exits, you are left with the same environment you were in when you started it.
Because of this, any variables you set or cd's you make will be lost when you exit the function. Of course, filesystem changes remain because you're actually modifying permanent storage.
I've hit this problem several times before... not quite sure how to fix it
Oh, and also... I believe the difference between ' and " is that ' is strict and " is not... meaning variables inside " " are processed by the shell, and variables inside ' ' are not.
echo $b <-- shows: $a
echo $c <--- shows: this