Skip to content

@liamoc /gist:3643591
Created

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Type-safe sum types in C
// needs -fnested-functions. Can be done without, but makes the whole thing a lot more cumbersome
// and less useful.
#include <stdio.h>
#define my_data_alts ( void (*A)(int) , void (*B)(int, int) , void (*C)(char, int) )
#define make_my_data(n) void n my_data_alts
typedef void (*my_data) my_data_alts;
void show(my_data match) {
void A(int n) { printf("A %d", n); }
void B(int a, int b) { printf("B %d %d", a, b); }
void C(char a, int b) { printf("C %d %c", a, b); }
match(A,B,C);
}
int main() {
make_my_data (foo) { A(1); };
show (foo);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.