27 lines
		
	
	
		
			629 B
		
	
	
	
		
			Scheme
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			629 B
		
	
	
	
		
			Scheme
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env ikarus --r6rs-script
 | |
| 
 | |
| (import (ikarus) (objc))
 | |
| 
 | |
| (define-framework Cocoa)
 | |
| (define-class NSObject)
 | |
| 
 | |
| (define IKFact 
 | |
|   (create-class "IKFact" NSObject '() #f))
 | |
| 
 | |
| (class-add-class-method IKFact 'fact: 'int '(class selector int)
 | |
|   (trace-lambda fact (self sel n)
 | |
|     (if (zero? n)
 | |
|         1
 | |
|         (* n [$ self fact: (sub1 n)]))))
 | |
| 
 | |
| (class-add-class-method IKFact 'fact:ac: 'int '(class selector int int)
 | |
|   (trace-lambda fact (self sel n ac)
 | |
|     (if (zero? n)
 | |
|         ac
 | |
|         [$ self fact: (sub1 n) ac: (* n ac)])))
 | |
| 
 | |
| (printf "(fact 5) = ~s\n" [$ IKFact fact: 5])
 | |
| 
 | |
| (printf "(fact 5) = ~s\n" [$ IKFact fact: 5 ac: 1])
 | |
| 
 |