For me it helped when I worked out the syntax and then the semantics
of mutually recursive letrec. Doing that provides a nice guide that helps
you to figure out the implementation. Furthermore, if you have trouble
figuring out the semantics then you should step through the semantics
of the program and reason out what needs to happen at each step.
i.e.
(value-of <<letrec even(x) ... odd(x) ... in (odd 13)>> p)
= (value-of <<(odd 13)>> ?)
How should the environment be extended so that it all works out. That's
the key thing you need to figure out. Play with some ideas and see how
you can continue the computation.
Hope that helps.