- if (ly_is_procedure (data))
- data = ly_make_simple_closure (scm_list_1 (data));
- else if (is_simple_closure (data))
- data = simple_closure_expression (data);
+ if (ly_is_procedure (data) || unsmob<Unpure_pure_container> (data))
+ data = Simple_closure::make_smob (scm_list_1 (data));
+ else if (Simple_closure *sc = unsmob<Simple_closure> (data))
+ data = sc->expression ();