home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / intrvews / xgrab.lha / xgrab / ui / GC / cons.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-04-25  |  665 b   |  31 lines

  1. struct SEXPR {
  2.     struct SEXPR * sexpr_car;
  3.     struct SEXPR * sexpr_cdr;
  4. };
  5.  
  6. typedef struct SEXPR * sexpr;
  7.  
  8. extern sexpr cons();
  9.  
  10. # define nil ((sexpr) 0)
  11. # define car(x) ((x) -> sexpr_car)
  12. # define cdr(x) ((x) -> sexpr_cdr)
  13. # define null(x) ((x) == nil)
  14.  
  15. # define head(x) car(x)
  16. # define tail(x) cdr(x)
  17.  
  18. # define caar(x) car(car(x))
  19. # define cadr(x) car(cdr(x))
  20. # define cddr(x) cdr(cdr(x))
  21. # define cdar(x) cdr(car(x))
  22. # define caddr(x) car(cdr(cdr(x)))
  23.  
  24. # define first(x) car(x)
  25. # define second(x) cadr(x)
  26. # define third(x) caddr(x)
  27.  
  28. # define list1(x) cons(x, nil)
  29. # define list2(x,y) cons(x, cons(y, nil))
  30. # define list3(x,y,z) cons(x, cons(y, cons(z, nil)))
  31.