Expanded dlambda example
This commit is contained in:
		
							parent
							
								
									2bd0c1a674
								
							
						
					
					
						commit
						ef4c03a672
					
				| @ -8,20 +8,76 @@ | ||||
| 
 | ||||
|     (eval | ||||
|       (dlambda | ||||
|         (:inc-apple () (setf apple-count (+ apple-count 1))) | ||||
|         (:dec-apple () (setf apple-count (- apple-count 1))) | ||||
|         (:get-apple () apple-count) | ||||
|         (:set-apple (value) (setf apple-count value)) | ||||
|         (:inc-banana () (setf banana-count (+ banana-count 1))) | ||||
|         (:dec-banana () (setf banana-count (- banana-count 1))) | ||||
|         (:get-banana () banana-count) | ||||
|         (:set-banana (value) (setf banana-count (- banana-count 1))) | ||||
|         (:inc-coconut () (setf coconut-count (+ coconut-count 1))) | ||||
|         (:dec-coconut () (setf coconut-count (- coconut-count 1))) | ||||
|         (:get-coconut () coconut-count) | ||||
|         (:set-coconut (value) (setf coconut-count value)) | ||||
| 
 | ||||
|         (:inc-apple () | ||||
|           (setf apple-count (+ apple-count 1)) | ||||
|         ) | ||||
| 
 | ||||
|         (:dec-apple () | ||||
|           (setf apple-count (- apple-count 1)) | ||||
|         ) | ||||
| 
 | ||||
|         (:get-apple () | ||||
|           apple-count | ||||
|         ) | ||||
| 
 | ||||
|         (:set-apple (value) | ||||
|           (setf apple-count value) | ||||
|         ) | ||||
| 
 | ||||
|         (:inc-banana () | ||||
|           (setf banana-count (+ banana-count 1)) | ||||
|         ) | ||||
| 
 | ||||
|         (:dec-banana () | ||||
|           (setf banana-count (- banana-count 1)) | ||||
|         ) | ||||
| 
 | ||||
|         (:get-banana () | ||||
|           banana-count | ||||
|         ) | ||||
| 
 | ||||
|         (:set-banana (value) | ||||
|           (setf banana-count value) | ||||
|         ) | ||||
| 
 | ||||
|         (:inc-coconut () | ||||
|           (setf coconut-count (+ coconut-count 1)) | ||||
|         ) | ||||
| 
 | ||||
|         (:dec-coconut () | ||||
|           (setf coconut-count (- coconut-count 1)) | ||||
|         ) | ||||
| 
 | ||||
|         (:get-coconut () | ||||
|           coconut-count | ||||
|         ) | ||||
| 
 | ||||
|         (:set-coconut (value) | ||||
|           (setf coconut-count value) | ||||
|         ) | ||||
| 
 | ||||
|       ) | ||||
|     ) | ||||
| 
 | ||||
|   ) | ||||
| ) | ||||
| 
 | ||||
| ; Create an instance | ||||
| ;  | ||||
| ; usage:  | ||||
| ;   ~ (my-counter :set-apple 23) | ||||
| ;   23 | ||||
| ; | ||||
| (let ((instance (fruit-counter 0))) | ||||
|   (defun my-counter (&rest args) (apply instance args)) | ||||
| ) | ||||
| 
 | ||||
| ; Another way | ||||
| ;  | ||||
| ; usage:  | ||||
| ;   ~ (funcall my-counter2 :set-apple 23) | ||||
| ;   23 | ||||
| ; | ||||
| (setf my-counter2 (fruit-counter 10000)) | ||||
| 
 | ||||
|  | ||||
| @ -47,7 +47,7 @@ public class CASE extends LispSpecialFunction { | ||||
|         else if (keyList.isCons()) | ||||
|             return containsMatch(key, keyList); | ||||
| 
 | ||||
|         return isEqual(key, keyList) || isKeyListT(keyList); | ||||
|         return isEqual(key, keyList) || isEqual(T, keyList); | ||||
|     } | ||||
| 
 | ||||
|     private boolean containsMatch(SExpression key, SExpression keyList) { | ||||
| @ -58,10 +58,6 @@ public class CASE extends LispSpecialFunction { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     private boolean isKeyListT(SExpression keyList) { | ||||
|         return isEqual(T, keyList); | ||||
|     } | ||||
| 
 | ||||
|     private SExpression advanceCons(SExpression knownCons) { | ||||
|         return ((Cons) knownCons).getRest(); | ||||
|     } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user