#!/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])