63 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 1. Syntax
 | |
| 
 | |
| symbols
 | |
| numbers
 | |
| conses and vectors
 | |
| comments
 | |
| special prefix tokens: ' ` , ,@ ,.
 | |
| other read macros: #. #' #\ #< #n= #n# #: #ctor
 | |
| builtins
 | |
| 
 | |
| 2. Data and execution models
 | |
| 
 | |
| 3. Primitive functions
 | |
| 
 | |
| eq atom not set prog1 progn
 | |
| symbolp numberp builtinp consp vectorp boundp
 | |
| + - * / <
 | |
| apply eval
 | |
| 
 | |
| 4. Special forms
 | |
| 
 | |
| quote if lambda macro while label cond and or
 | |
| 
 | |
| 5. Data structures
 | |
| 
 | |
| cons car cdr rplaca rplacd list
 | |
| alloc vector aref aset length
 | |
| 
 | |
| 6. Other functions
 | |
| 
 | |
| read, print, princ, load, exit
 | |
| equal, compare
 | |
| gensym
 | |
| 
 | |
| 7. Exceptions
 | |
| 
 | |
| trycatch raise
 | |
| 
 | |
| 8. Cvalues
 | |
| 
 | |
| introduction
 | |
| type representations
 | |
| constructors
 | |
| access
 | |
| memory management concerns
 | |
| ccall
 | |
| 
 | |
| 
 | |
| If deliberate 50% heap utilization seems wasteful, consider:
 | |
| 
 | |
| - malloc has per-object overhead. for small allocations you might use
 | |
|   much more space than you think.
 | |
| - any non-moving memory manager (whether malloc or a collector) can
 | |
|   waste arbitrary amounts of memory through fragmentation.
 | |
| 
 | |
| With a copying collector, you agree to give up 50% of your memory
 | |
| up front, in exchange for significant benefits:
 | |
| 
 | |
| - really fast allocation
 | |
| - heap compaction, improving locality and possibly speeding up computation
 | |
| - collector performance O(1) in number of dead objects, essential for
 | |
|   maximal performance on generational workloads
 |