commit 009e450ec50263f7d3ecbe3d5af81fe0aacc2f3d
parent 0927fd391a7bb06fa67a2aeb977ddd0cf0175ad6
Author: tomas <tomas@logand.com>
Date:   Wed,  7 Oct 2009 23:55:59 +0200
pop and con implemented in java
Diffstat:
| M | wl.java |  |  | 22 | ++++++++++++++++++++++ | 
1 file changed, 22 insertions(+), 0 deletions(-)
diff --git a/wl.java b/wl.java
@@ -609,6 +609,28 @@ class wl implements Runnable {
         fn("intern", new Fn() {public Any fn(Any E) {
             return intern((String) eval(E.cdr().car()).cxr());
         }});
+        fn("pop", new Fn() {public Any fn(Any E) {
+            Any Z = NIL;
+            Any X = eval(E.cdr().car());
+            if(X.isCons()) {
+                Any V = X.car();
+                Z = V.car();
+                X.car(V.cdr());
+            } else if(X.isSym()) {
+                Any V = X.val();
+                Z = V.car();
+                X.val(V.cdr());
+            } else err(E, "Don't know how to pop");
+            return Z;
+        }});
+        fn("con", new Fn() {public Any fn(Any E) {
+            Any I = E.cdr();
+            Any L = eval(I.car());
+            I = I.cdr();
+            Any Z = eval(I.car());
+            L.cdr(Z);
+            return Z;
+        }});
 
         fn("jnew", new Fn() {public Any fn(Any E) { // jnew 'cls [arg ...]
             Any I = E.cdr();