//takes a non-atomic list and returns true if the list is a list(potentially empty) of atoms. //bombs out if p is an atom int is_lat(list p) { if(is_null(p)) return true; if( !atom(car(p))) return false; return is_lat(cdr(p)); }
int main() { char c; int dig=0,space=0,prep=0,lat=0; while((c=getchar())!=EOF){ if(is_digit(c)) dig++; else if(isspace(c)) space++; else if(is_prep(c)) prep++; else if(is_lat(c)) lat++; } printf("%Digits: %d\nSpace: %d\nPrep: %d\nLatin: %d\n",dig,space,prep,lat); _getch(); }