001: /*
002: * cxr.java
003: *
004: * Copyright (C) 2003 Peter Graves
005: * $Id: cxr.java,v 1.6 2003/11/15 11:03:32 beedlem Exp $
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License
009: * as published by the Free Software Foundation; either version 2
010: * of the License, or (at your option) any later version.
011: *
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
015: * GNU General Public License for more details.
016: *
017: * You should have received a copy of the GNU General Public License
018: * along with this program; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
020: */
021:
022: package org.armedbear.lisp;
023:
024: public final class cxr extends Lisp {
025: // ### %rplaca
026: private static final Primitive2 _RPLACA = new Primitive2("%rplaca",
027: PACKAGE_SYS, false) {
028: public LispObject execute(LispObject first, LispObject second)
029: throws ConditionThrowable {
030: first.setCar(second);
031: return second;
032: }
033: };
034:
035: // ### %rplacd
036: private static final Primitive2 _RPLACD = new Primitive2("%rplacd",
037: PACKAGE_SYS, false) {
038: public LispObject execute(LispObject first, LispObject second)
039: throws ConditionThrowable {
040: first.setCdr(second);
041: return second;
042: }
043: };
044:
045: // ### car
046: private static final Primitive1 CAR = new Primitive1("car") {
047: public LispObject execute(LispObject arg)
048: throws ConditionThrowable {
049: return arg.car();
050: }
051: };
052:
053: // ### cdr
054: private static final Primitive1 CDR = new Primitive1("cdr") {
055: public LispObject execute(LispObject arg)
056: throws ConditionThrowable {
057: return arg.cdr();
058: }
059: };
060:
061: // ### caar
062: private static final Primitive1 CAAR = new Primitive1("caar") {
063: public LispObject execute(LispObject arg)
064: throws ConditionThrowable {
065: return arg.car().car();
066: }
067: };
068:
069: // ### cadr
070: private static final Primitive1 CADR = new Primitive1("cadr") {
071: public LispObject execute(LispObject arg)
072: throws ConditionThrowable {
073: return arg.cadr();
074: }
075: };
076:
077: // ### cdar
078: private static final Primitive1 CDAR = new Primitive1("cdar") {
079: public LispObject execute(LispObject arg)
080: throws ConditionThrowable {
081: return arg.car().cdr();
082: }
083: };
084:
085: // ### cddr
086: private static final Primitive1 CDDR = new Primitive1("cddr") {
087: public LispObject execute(LispObject arg)
088: throws ConditionThrowable {
089: return arg.cdr().cdr();
090: }
091: };
092:
093: // ### caddr
094: private static final Primitive1 CADDR = new Primitive1("caddr") {
095: public LispObject execute(LispObject arg)
096: throws ConditionThrowable {
097: return arg.cdr().cdr().car();
098: }
099: };
100:
101: // ### caadr
102: private static final Primitive1 CAADR = new Primitive1("caadr") {
103: public LispObject execute(LispObject arg)
104: throws ConditionThrowable {
105: return arg.cdr().car().car();
106: }
107: };
108:
109: // ### caaar
110: private static final Primitive1 CAAAR = new Primitive1("caaar") {
111: public LispObject execute(LispObject arg)
112: throws ConditionThrowable {
113: return arg.car().car().car();
114: }
115: };
116:
117: // ### cdaar
118: private static final Primitive1 CDAAR = new Primitive1("cdaar") {
119: public LispObject execute(LispObject arg)
120: throws ConditionThrowable {
121: return arg.car().car().cdr();
122: }
123: };
124:
125: // ### cddar
126: private static final Primitive1 CDDAR = new Primitive1("cddar") {
127: public LispObject execute(LispObject arg)
128: throws ConditionThrowable {
129: return arg.car().cdr().cdr();
130: }
131: };
132:
133: // ### cdddr
134: private static final Primitive1 CDDDR = new Primitive1("cdddr") {
135: public LispObject execute(LispObject arg)
136: throws ConditionThrowable {
137: return arg.cdr().cdr().cdr();
138: }
139: };
140:
141: // ### cadar
142: private static final Primitive1 CADAR = new Primitive1("cadar") {
143: public LispObject execute(LispObject arg)
144: throws ConditionThrowable {
145: return arg.car().cdr().car();
146: }
147: };
148:
149: // ### cdadr
150: private static final Primitive1 CDADR = new Primitive1("cdadr") {
151: public LispObject execute(LispObject arg)
152: throws ConditionThrowable {
153: return arg.cdr().car().cdr();
154: }
155: };
156:
157: // ### first
158: private static final Primitive1 FIRST = new Primitive1("first") {
159: public LispObject execute(LispObject arg)
160: throws ConditionThrowable {
161: return arg.car();
162: }
163: };
164:
165: // ### rest
166: private static final Primitive1 REST = new Primitive1("rest") {
167: public LispObject execute(LispObject arg)
168: throws ConditionThrowable {
169: return arg.cdr();
170: }
171: };
172: }
|