# Metalang99-based library, adding Python-like "with" blocks ```c #include #include #include #define WITH99_resource_intptr_IMPL(var, init) \ ML99_tuple(\ ML99_just(v(int *var)),\ ML99_just(v((var = malloc(sizeof(int)),printf("Allocated %p(%s)\n", var, #var), *var = init, 0))),\ ML99_just(v((printf("Freed %p(%s)\n", var, #var), free(var))))\ ) #define With WITH99_With #define Never while(0) int main(void) { With( (intptr, a, 1), (intptr, b, 3) ) do { // All resources are allocated here. *a += *b; printf("%d\n", *a); } Never; // And deallocated here. } ```