Update README
This commit is contained in:
		
							
								
								
									
										32
									
								
								README.adoc
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								README.adoc
									
									
									
									
									
								
							@@ -10,7 +10,9 @@ reasonably comfortable to use.
 | 
				
			|||||||
This package is an implementation of said language, meant to be self-contained,
 | 
					This package is an implementation of said language, meant to be self-contained,
 | 
				
			||||||
portable and reusable.  Performance is specifically not an intent.
 | 
					portable and reusable.  Performance is specifically not an intent.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The project is currently in a "working proof of concept" stage.
 | 
					The project is currently in a "proof of concept" stage with many useful data
 | 
				
			||||||
 | 
					operations missing but I believe it won't be a problem to implement them as
 | 
				
			||||||
 | 
					needed for anyone interested.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Syntax
 | 
					Syntax
 | 
				
			||||||
------
 | 
					------
 | 
				
			||||||
@@ -45,6 +47,8 @@ which gets expanded to the following:
 | 
				
			|||||||
Observe that the whole program is enclosed in an implicit pair of `{}` and that
 | 
					Observe that the whole program is enclosed in an implicit pair of `{}` and that
 | 
				
			||||||
`quote` is a very powerful special form which can replace many others if needed.
 | 
					`quote` is a very powerful special form which can replace many others if needed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For a slightly more realistic example have a look at 'greet.ell'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Runtime
 | 
					Runtime
 | 
				
			||||||
-------
 | 
					-------
 | 
				
			||||||
All variables are put in a single global namespace with no further scoping.
 | 
					All variables are put in a single global namespace with no further scoping.
 | 
				
			||||||
@@ -59,13 +63,14 @@ The last expression in a block is the return value.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Special Forms
 | 
					Special Forms
 | 
				
			||||||
-------------
 | 
					-------------
 | 
				
			||||||
`quote <arg>`
 | 
					`quote [<arg>]...`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns the first argument.
 | 
					Returns the arguments without any evaluation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`arg <name>...`
 | 
					`arg [<name>]...`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Assigns arguments to the current call in order to given names.
 | 
					Assigns arguments to the current call in order to given names.
 | 
				
			||||||
 | 
					Names for which there are no values left are set to `[]`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Standard library
 | 
					Standard library
 | 
				
			||||||
----------------
 | 
					----------------
 | 
				
			||||||
@@ -112,6 +117,18 @@ Print all items in sequence--strings directly, lists as source code.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Run a system command and return its return value.
 | 
					Run a system command and return its return value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`parse <program>`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Parse a program into a list of lists.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`try <body> <handler>`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Execute the body and pass any error to the handler instead of propagating it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`throw <message>`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Throw an error.  Messages starting on an underscore don't generate backtraces.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`+`, `-`, `*`, `/`
 | 
					`+`, `-`, `*`, `/`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Arithmetic operations on floating point numbers.
 | 
					Arithmetic operations on floating point numbers.
 | 
				
			||||||
@@ -136,6 +153,13 @@ Install development packages for GNU Readline to get a REPL for toying around:
 | 
				
			|||||||
 $ make repl
 | 
					 $ make repl
 | 
				
			||||||
 $ ./repl
 | 
					 $ ./repl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Possible Ways of Complicating
 | 
				
			||||||
 | 
					-----------------------------
 | 
				
			||||||
 | 
					 * variable scoping: the simplest is to set values in the nearest scope they
 | 
				
			||||||
 | 
					   can be found in but make `arg` an exception to that, just like in AWK
 | 
				
			||||||
 | 
					 * reference counting: currently all values are always copied as needed, which
 | 
				
			||||||
 | 
					   is good enough for all imaginable use cases, simpler and less error-prone
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Contributing and Support
 | 
					Contributing and Support
 | 
				
			||||||
------------------------
 | 
					------------------------
 | 
				
			||||||
Use this project's GitHub to report any bugs, request features, or submit pull
 | 
					Use this project's GitHub to report any bugs, request features, or submit pull
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user