added recursive types/values, roll, unroll, letrec