   return NULL;
 }
 
+// In-place operations
+
+object **place (object *args, object *env) {
+  if (!consp(args)) return &cdr(findvalue(args, env));
+  object* function = first(args);
+  if (issymbol(function, CAR) || issymbol(function, FIRST)) {
+    object *value = eval(second(args), env);
+    if (!listp(value)) error(F("Can't take car"));
+    return &car(value);
+  }
+  if (issymbol(function, CDR) || issymbol(function, REST)) {
+    object *value = eval(second(args), env);
+    if (!listp(value)) error(F("Can't take cdr"));
+    return &cdr(value);
+  }
+  if (issymbol(function, NTH)) {
+    int index = integer(eval(second(args), env));
+    object *list = eval(third(args), env);
+    if (!consp(list)) error(F("'nth' second argument is not a list"));
+    while (index > 0) {
+      list = cdr(list);
+      if (list == NULL) error(F("'nth' index out of range"));
+      index--;
+    }
+    return &car(list);
+  }
+  error(F("Illegal place"));
+  return nil;
+}
+
 // Checked car and cdr
 
 inline object *carx (object *arg) {

enum token { UNUSED, BRA, KET, QUO, DOT };
enum stream { SERIALSTREAM, I2CSTREAM, SPISTREAM };

enum function { SYMBOLS, NIL, TEE, LAMBDA, LET, LETSTAR, CLOSURE, SPECIAL_FORMS, QUOTE, DEFUN, DEFVAR, 
SETQ, LOOP, PUSH, POP, INCF, DECF, DOLIST, DOTIMES, FORMILLIS, WITHI2C, WITHSPI, TAIL_FORMS, PROGN, RETURN, 
IF, COND, WHEN, UNLESS, AND, OR, FUNCTIONS, NOT, NULLFN, CONS, ATOM, LISTP, CONSP, NUMBERP, STREAMP, EQ,
CAR, FIRST, CDR, REST, CAAR, CADR, SECOND, CDAR, CDDR, CAAAR, CAADR, CADAR, CADDR, THIRD, CDAAR, CDADR, 
CDDAR, CDDDR, LENGTH, LIST, REVERSE, NTH, ASSOC, MEMBER, APPLY, FUNCALL, APPEND, MAPC, MAPCAR, ADD, SUBTRACT, 
MULTIPLY, DIVIDE, MOD, ONEPLUS, ONEMINUS, ABS, RANDOM, MAX, MIN, NUMEQ, LESS, LESSEQ, GREATER, GREATEREQ, 
NOTEQ, PLUSP, MINUSP, ZEROP, ODDP, EVENP, LOGAND, LOGIOR, LOGXOR, LOGNOT, ASH, LOGBITP, READ, EVAL, GLOBALS, 
MAKUNBOUND, BREAK, PRINT, PRINC, WRITEBYTE, READBYTE, RESTARTI2C, GC, SAVEIMAGE, LOADIMAGE, PINMODE, DIGITALREAD,
DIGITALWRITE, ANALOGREAD, ANALOGWRITE, DELAY, MILLIS, NOTE, ENDFUNCTIONS };

// Typedefs


    list = cdr(list);
  }
  return nil;
}

object *fn_locals (object *args, object *env) {
  (void) args;
  return env;
}

object *fn_makunbound (object *args, object *env) {
