|  |  | @ -198,6 +198,11 @@ Pointer fn_fn(Pointer args, Pointer env) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   return func(args, env); |  |  |  |   return func(args, env); | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | Pointer exit_fn(Pointer args, Pointer env) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   (void) args; (void) env; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   exit(1); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #define SET_FUNC(s, fn) environment_set(NIL, symbol1(s), native_func(fn)) |  |  |  | #define SET_FUNC(s, fn) environment_set(NIL, symbol1(s), native_func(fn)) | 
			
		
	
		
		
			
				
					
					|  |  |  | #define SET_FORM(s, fn) environment_set(NIL, symbol1(s), special_form(fn)) |  |  |  | #define SET_FORM(s, fn) environment_set(NIL, symbol1(s), special_form(fn)) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -226,6 +231,7 @@ void init(void) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   SET_FUNC("~", lognot_fn); |  |  |  |   SET_FUNC("~", lognot_fn); | 
			
		
	
		
		
			
				
					
					|  |  |  |   SET_FUNC("peek-char", peek_char_fn); |  |  |  |   SET_FUNC("peek-char", peek_char_fn); | 
			
		
	
		
		
			
				
					
					|  |  |  |   SET_FUNC("read-char", read_char_fn); |  |  |  |   SET_FUNC("read-char", read_char_fn); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   SET_FUNC("exit", exit_fn); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   SET_FORM("if", if_fn); |  |  |  |   SET_FORM("if", if_fn); | 
			
		
	
		
		
			
				
					
					|  |  |  |   SET_FORM("let", let_fn); |  |  |  |   SET_FORM("let", let_fn); | 
			
		
	
	
		
		
			
				
					|  |  | @ -238,7 +244,9 @@ void init(void) { | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | void repl(void) { |  |  |  | void repl(void) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   Pointer readed = read_fn(NIL, NIL); |  |  |  |   while(true) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   print(eval(readed, NIL), stdout); |  |  |  |     printf(">>> "); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     print(eval(read_fn(NIL, NIL), NIL), stdout); | 
			
		
	
		
		
			
				
					
					|  |  |  |     printf("\n"); |  |  |  |     printf("\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |