/* curried addition program in ANSI C */
#include <stdio.h>

typedef int (*func)(int);  /* functions that take and return ints */

int takes_y(int y) { return(x + y); }

func cadd(int x) { return(&takes_y); }

int main() { printf("%i\n", (cadd(2))(3)); }
