mirror of
				https://github.com/janet-lang/janet
				synced 2025-10-31 07:33:01 +00:00 
			
		
		
		
	Add with-env.
				
					
				
			This commit is contained in:
		| @@ -2,6 +2,7 @@ | ||||
| All notable changes to this project will be documented in this file. | ||||
|  | ||||
| ## Unreleased - ??? | ||||
| - Add `with-env` | ||||
| - Add *module-make-env* dynamic binding | ||||
| - Add buffer/format-at | ||||
| - Add long form command line options for readable CLI usage | ||||
|   | ||||
| @@ -1423,6 +1423,11 @@ | ||||
|       ~(setdyn ,(bindings i) ,(bindings (+ i 1))))) | ||||
|   ~(,resume (,fiber/new (fn [] ,;dyn-forms ,;body) :p))) | ||||
|  | ||||
| (defmacro with-env | ||||
|   `Run a block of code with a given environment table` | ||||
|   [env & body] | ||||
|   ~(,resume (,fiber/new (fn [] ,;body) : ,env))) | ||||
|  | ||||
| (defmacro with-vars | ||||
|   ``Evaluates `body` with each var in `vars` temporarily bound. Similar signature to | ||||
|   `let`, but each binding must be a var.`` | ||||
|   | ||||
| @@ -976,4 +976,7 @@ | ||||
| (assert (= () '() (macex '())) "macex ()") | ||||
| (assert (= '[] (macex '[])) "macex []") | ||||
|  | ||||
| (assert (= :a (with-env @{:b :a} (dyn :b))) "with-env dyn") | ||||
| (assert-error "unknown symbol +" (with-env @{} (eval '(+ 1 2)))) | ||||
|  | ||||
| (end-suite) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Calvin Rose
					Calvin Rose