+typedef struct {
+ int i;
+ int (*fun) (int, list);
+ list initial;
+} listComprehensionRecursorR;
+
+void * listComprehensionRecursor (void* x) {
+ listComprehensionRecursorR* lcr = (listComprehensionRecursorR*) x;
+ int value = (lcr->fun)(lcr->i, lcr->initial);
+ lcr->i++;
+
+ list cdr = (list) lazy_alloc(listComprehensionRecursor, (void*)lcr);
+ cons * ret = (cons*) slice_alloc(sizeof(cons));
+ doCons(value, cdr, ret);