implement letrec*