diff options
| author | Keith Packard <keithp@keithp.com> | 2017-11-25 17:29:10 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2017-11-25 17:29:10 -0800 | 
| commit | 00bf2ca86b60e6501880011897cea073865c5a03 (patch) | |
| tree | d7125e77052843a32000d5aef631b3054f20aba5 | |
| parent | 5f9f97cc2d43936d1941da3a9a130c279bc70b99 (diff) | |
altos/lisp: Rename progn to begin
Match scheme name.
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | src/lisp/ao_lisp.h | 2 | ||||
| -rw-r--r-- | src/lisp/ao_lisp_builtin.c | 4 | ||||
| -rw-r--r-- | src/lisp/ao_lisp_builtin.txt | 2 | ||||
| -rw-r--r-- | src/lisp/ao_lisp_const.lisp | 22 | ||||
| -rw-r--r-- | src/lisp/ao_lisp_eval.c | 20 | ||||
| -rw-r--r-- | src/lisp/ao_lisp_stack.c | 2 | 
6 files changed, 36 insertions, 16 deletions
| diff --git a/src/lisp/ao_lisp.h b/src/lisp/ao_lisp.h index cbbbe9a4..858212dd 100644 --- a/src/lisp/ao_lisp.h +++ b/src/lisp/ao_lisp.h @@ -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 */ diff --git a/src/lisp/ao_lisp_builtin.c b/src/lisp/ao_lisp_builtin.c index d4dc8a86..693cc3ca 100644 --- a/src/lisp/ao_lisp_builtin.c +++ b/src/lisp/ao_lisp_builtin.c @@ -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;  } diff --git a/src/lisp/ao_lisp_builtin.txt b/src/lisp/ao_lisp_builtin.txt index 2e11bdad..236cadb4 100644 --- a/src/lisp/ao_lisp_builtin.txt +++ b/src/lisp/ao_lisp_builtin.txt @@ -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 diff --git a/src/lisp/ao_lisp_const.lisp b/src/lisp/ao_lisp_const.lisp index 9fb7634c..f8a70979 100644 --- a/src/lisp/ao_lisp_const.lisp +++ b/src/lisp/ao_lisp_const.lisp @@ -25,7 +25,7 @@  (set (quote define) (macro (name val rest)  			(list -			 'progn +			 'begin  			 (list  			  'set  			  (list 'quote name) @@ -520,6 +520,26 @@  	     '(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)))  					; diff --git a/src/lisp/ao_lisp_eval.c b/src/lisp/ao_lisp_eval.c index cfa71fa7..1044aa48 100644 --- a/src/lisp/ao_lisp_eval.c +++ b/src/lisp/ao_lisp_eval.c @@ -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", diff --git a/src/lisp/ao_lisp_stack.c b/src/lisp/ao_lisp_stack.c index af68b656..9d6cccc4 100644 --- a/src/lisp/ao_lisp_stack.c +++ b/src/lisp/ao_lisp_stack.c @@ -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;  } | 
