you can hack up eval, map, and apply in c without too much headache. I'd recommend int char and some sort of string representation as primitive. I'd also recommend not garbage collecting, and just malloc everything. Like, a weekend of effort for a really really bad implementation. So much magic disappears. Well, I guess this sort of assumes you know what a pointer is. If not, it's going to be a tough slog regardless.
as a second pass, check out the later parts of sicp and expose some array type, and implement the gc in scheme.
also I'll never pass up an opportunity to reference 3imp. http://agl.cs.unm.edu/~williams/cs491/three-imp.pdf
I know, I know, scheme is a vespa and CL is a Ferrari. For someone who learns more bottom up, the bare minimum of scheme, but all the way is amazing.