redExp env (ELet bs e)          = do bs'@(Binds rec te eqs) <- redBinds env bs
                                     if rec then
                                        liftM (ELet bs') (redExp env e)
                                      else
                                        redBeta (addArgs env (dom te)) te e (map (lookup' eqs) (dom te))
redExp env (ELet bs e)          = do bs'@(Binds rec te eqs) <- redBinds env bs
                                     if rec then
                                        liftM (ELet bs') (redExp env e)
                                      else
                                        redBeta (addArgs env (dom te)) te e (map (lookup' eqs) (dom te))
redExp env (ELet bs e)          = do bs'@(Binds rec te eqs) <- redBinds env bs
                                     if rec then
                                        liftM (ELet bs') (redExp env e)
                                      else
                                        redBeta (addArgs env (dom te)) te e (map (lookup' eqs) (dom te))