#include #include #include #include "flist.h" struct pair { void * car; void * cdr; }; const flist nil = NULL; flist cons(void * obj, flist l) { flist pair = (flist) malloc(sizeof(struct pair)); assert(pair); pair -> car = obj; pair -> cdr = l; return pair; } void * car(flist l) { return l -> car; } flist cdr(flist l) { return l -> cdr; } int is_null(flist l) { return l == nil; } #ifdef MAIN #include int main(int argc, char * argv[]) { flist l = nil; int i; for (i = 1; i < argc; i++) l = cons(argv[i], l); printf("("); while (! is_null(l)) { printf("%s ", (char *)car(l)); l = cdr(l); } printf(")\n"); exit(EXIT_SUCCESS); } #endif