From 3b4e555649a8f7431ae3ca57a466dc709cf40b6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?b=CA=B0edoh=E2=82=82=20sw=C3=A9?= Date: Thu, 10 Apr 2025 00:58:05 +0500 Subject: [PATCH] Update README. --- README.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 1ea3623..865cad4 100644 --- a/README.md +++ b/README.md @@ -6,20 +6,23 @@ #include -#define WITH99_resource_type_intptr_IMPL(...) v(int*) -#define WITH99_resource_init_intptr_IMPL(var, init, ...) v((printf("Allocated to %p\n", var), var = malloc(sizeof(int)), *var = init, 0)) -#define WITH99_resource_free_intptr_IMPL(var, ...) v((printf("Freed %p at %p\n", var, var), free(var))) -#define WITH99_resource_throws_intptr_IMPL(...) ML99_false() +#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) - ) { - *a += *b; - printf("%d\n", *a); - } + With( + (intptr, a, 1), + (intptr, b, 3) + ) do { // All resources are allocated here. + *a += *b; + printf("%d\n", *a); + } Never; // And deallocated here. } ```