altos/lisp: Rename progn to begin
authorKeith Packard <keithp@keithp.com>
Sun, 26 Nov 2017 01:29:10 +0000 (17:29 -0800)
committerKeith Packard <keithp@keithp.com>
Sun, 26 Nov 2017 01:29:10 +0000 (17:29 -0800)
Match scheme name.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/lisp/ao_lisp.h
src/lisp/ao_lisp_builtin.c
src/lisp/ao_lisp_builtin.txt
src/lisp/ao_lisp_const.lisp
src/lisp/ao_lisp_eval.c
src/lisp/ao_lisp_stack.c

index cbbbe9a47ebf82fdf43b87ac5312a3f03fe9391b..858212dd5012fc9659fce01dea1a8ba384a0f4f5 100644 (file)
@@ -229,7 +229,7 @@ enum eval_state {
        eval_apply,             /* Execute apply */
        eval_cond,              /* Start next cond clause */
        eval_cond_test,         /* Check cond condition */
-       eval_progn,             /* Start next progn entry */
+       eval_begin,             /* Start next begin entry */
        eval_while,             /* Start while condition */
        eval_while_test,        /* Check while condition */
        eval_macro,             /* Finished with macro generation */
index d4dc8a8663f71876ce5cc0a6e7aca6bb22701ab1..693cc3ca9bd0f6a97a2732b50a2c36b2c08698f1 100644 (file)
@@ -232,9 +232,9 @@ ao_lisp_do_cond(struct ao_lisp_cons *cons)
 }
 
 ao_poly
-ao_lisp_do_progn(struct ao_lisp_cons *cons)
+ao_lisp_do_begin(struct ao_lisp_cons *cons)
 {
-       ao_lisp_stack->state = eval_progn;
+       ao_lisp_stack->state = eval_begin;
        ao_lisp_stack->sexprs = ao_lisp_cons_poly(cons);
        return AO_LISP_NIL;
 }
index 2e11bdad07421f41a9e1a3e2b1af8492e4028880..236cadb49c965c448372c2369dade72e7496d583 100644 (file)
@@ -13,7 +13,7 @@ nlambda               quote
 f_lambda       set
 macro          setq            set!
 nlambda                cond
-nlambda                progn
+nlambda                begin
 nlambda                while
 f_lexpr                write
 f_lexpr                display
index 9fb7634c5858e1cd7d4d76330b8ab72953ad9da6..f8a709799ff5b05b580246bc176910b4345545d2 100644 (file)
@@ -25,7 +25,7 @@
 
 (set (quote define) (macro (name val rest)
                        (list
-                        'progn
+                        'begin
                         (list
                          'set
                          (list 'quote name)
             '(54 0 37 -3 245 19))
    #t))
 
+(define repeat (macro (count rest)
+                       (list
+                        let
+                        (list
+                         (list '__count__ count))
+                        (append
+                         (list
+                          while
+                          (list
+                           <=
+                           0
+                           (list
+                            set!
+                            '__count__
+                            (list
+                             -
+                             '__count__
+                             1))))
+                         rest))))
+
 ;(define number->string (lexpr (arg opt)
 ;                            (let ((base (if (null? opt) 10 (car opt)))
                                        ;
index cfa71fa7584fdf9534967a5698ab532de51bdeee..1044aa48a6a3eff6122769dbdb95ea8c138cafcf 100644 (file)
@@ -283,7 +283,7 @@ ao_lisp_eval_exec(void)
                break;
        case AO_LISP_LAMBDA:
                DBGI(".. frame "); DBG_POLY(ao_lisp_frame_poly(ao_lisp_frame_current)); DBG("\n");
-               ao_lisp_stack->state = eval_progn;
+               ao_lisp_stack->state = eval_begin;
                v = ao_lisp_lambda_eval();
                ao_lisp_stack->sexprs = v;
                ao_lisp_stack->values = AO_LISP_NIL;
@@ -388,7 +388,7 @@ ao_lisp_eval_cond_test(void)
                ao_poly c = car->cdr;
 
                if (c) {
-                       ao_lisp_stack->state = eval_progn;
+                       ao_lisp_stack->state = eval_begin;
                        ao_lisp_stack->sexprs = c;
                } else
                        ao_lisp_stack->state = eval_val;
@@ -403,17 +403,17 @@ ao_lisp_eval_cond_test(void)
 /*
  * Evaluate a list of sexprs, returning the value from the last one.
  *
- * ao_lisp_progn records the list in stack->sexprs, so we just need to
+ * ao_lisp_begin records the list in stack->sexprs, so we just need to
  * walk that list. Set ao_lisp_v to the car of the list and jump to
  * eval_sexpr. When that's done, it will land in eval_val. For all but
- * the last, leave a stack frame with eval_progn set so that we come
+ * the last, leave a stack frame with eval_begin set so that we come
  * back here. For the last, don't add a stack frame so that we can
  * just continue on.
  */
 static int
-ao_lisp_eval_progn(void)
+ao_lisp_eval_begin(void)
 {
-       DBGI("progn: "); DBG_POLY(ao_lisp_v); DBG(" sexprs "); DBG_POLY(ao_lisp_stack->sexprs); DBG("\n");
+       DBGI("begin: "); DBG_POLY(ao_lisp_v); DBG(" sexprs "); DBG_POLY(ao_lisp_stack->sexprs); DBG("\n");
        DBGI(".. frame "); DBG_POLY(ao_lisp_frame_poly(ao_lisp_frame_current)); DBG("\n");
        DBGI(".. saved frame "); DBG_POLY(ao_lisp_stack->frame); DBG("\n");
 
@@ -428,7 +428,7 @@ ao_lisp_eval_progn(void)
                 * return the value of the last one by just landing in eval_sexpr
                 */
                if (ao_lisp_stack->sexprs) {
-                       ao_lisp_stack->state = eval_progn;
+                       ao_lisp_stack->state = eval_begin;
                        if (!ao_lisp_stack_push())
                                return 0;
                }
@@ -476,7 +476,7 @@ ao_lisp_eval_while_test(void)
                ao_lisp_stack->state = eval_while;
                if (!ao_lisp_stack_push())
                        return 0;
-               ao_lisp_stack->state = eval_progn;
+               ao_lisp_stack->state = eval_begin;
                ao_lisp_stack->sexprs = ao_lisp_v;
        }
        else
@@ -516,7 +516,7 @@ static int (*const evals[])(void) = {
        [eval_apply] = ao_lisp_eval_apply,
        [eval_cond] = ao_lisp_eval_cond,
        [eval_cond_test] = ao_lisp_eval_cond_test,
-       [eval_progn] = ao_lisp_eval_progn,
+       [eval_begin] = ao_lisp_eval_begin,
        [eval_while] = ao_lisp_eval_while,
        [eval_while_test] = ao_lisp_eval_while_test,
        [eval_macro] = ao_lisp_eval_macro,
@@ -530,7 +530,7 @@ const char *ao_lisp_state_names[] = {
        [eval_apply] = "apply",
        [eval_cond] = "cond",
        [eval_cond_test] = "cond_test",
-       [eval_progn] = "progn",
+       [eval_begin] = "begin",
        [eval_while] = "while",
        [eval_while_test] = "while_test",
        [eval_macro] = "macro",
index af68b6561f4d0c4a4cc556122a9a200a6f96c8b4..9d6cccc41f61175f486e7f65b90378da95c2c81c 100644 (file)
@@ -273,6 +273,6 @@ ao_lisp_do_call_cc(struct ao_lisp_cons *cons)
        cons->cdr = AO_LISP_NIL;
        v = ao_lisp_lambda_eval();
        ao_lisp_stack->sexprs = v;
-       ao_lisp_stack->state = eval_progn;
+       ao_lisp_stack->state = eval_begin;
        return AO_LISP_NIL;
 }