34 lines
		
	
	
		
			813 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			813 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ; Numeric procedures
 | |
| ; Uses: startup
 | |
| 
 | |
| (define > (lambda (n1 n2) (< n2 n1)))
 | |
| (define <= (lambda (n1 n2) (not (< n2 n1))))
 | |
| (define >= (lambda (n1 n2) (not (< n1 n2))))
 | |
| 
 | |
| (define abs
 | |
|   (lambda (n)
 | |
|     (if (< n 0) (- 0 n) n)))
 | |
| 
 | |
| (define minus (lambda (n) (- 0 n)))
 | |
| 
 | |
| (define even? (lambda (n) (= (remainder n 2) 0)))
 | |
| (define odd? (lambda (n) (not (even? n))))
 | |
| 
 | |
| (define zero? (lambda (n) (= n 0)))
 | |
| 
 | |
| (define 1+ (lambda (n) (+ n 1)))
 | |
| (define -1+ (lambda (n) (- n 1)))
 | |
| 
 | |
| (define min (lambda (n1 n2) (if (< n1 n2) n1 n2)))
 | |
| (define max (lambda (n1 n2) (if (< n1 n2) n2 n1)))
 | |
| 
 | |
| (define expt			; Pre: 0 <= power
 | |
|   (lambda (base power)
 | |
|     (if (= power 0)
 | |
|         1
 | |
|         (if (even? power)
 | |
|             (square (expt base (quotient power 2)))
 | |
|             (* base (expt base (- power 1)))))))
 | |
| 
 | |
| (define square (lambda (n) (* n n)))
 |