#include <libq.h>

MODULE(creverse)

FUNCTION(creverse,creverse,argc,argv)
{
  if (argc == 1) {
    expr x = argv[0], y = mknil, hd, tl;
    while (y && iscons(x, &hd, &tl)) {
      expr z = mkcons(hd, y);
      y = z; x = tl;
    }
    if (!y)
      return __ERROR;
    else if (isnil(x))
      return y;
    else {
      dispose(y);
      return __FAIL;
    }
  } else
    return __FAIL;
}



syntax highlighted by Code2HTML, v. 0.9.1