; objpat3.scm -
(define kebab%
(class object% ()
(public
[name "kebab"]
[what-holder (void)]
[is-veggie? (void)]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define holder%
(class kebab% (_o)
(public
[o _o])
(override
[name "holder"]
[what-holder (lambda () o)]
[is-veggie? (lambda () #t)]
[to-string (lambda () (string-append "new " name " (" (send o to-string) ")"))])
(sequence (super-init)) ))
(define shallot%
(class kebab% (_k)
(public
[k _k])
(override
[name "shallot"]
[what-holder (lambda () (send k what-holder))]
[is-veggie? (lambda () (send k is-veggie?))]
[to-string (lambda () (string-append "new " name " (" (send k to-string) ")"))])
(sequence (super-init)) ))
(define shrimp%
(class kebab% (_k)
(public
[k _k])
(override
[name "shrimp"]
[what-holder (lambda () (send k what-holder))]
[is-veggie? (lambda () #f)]
[to-string (lambda () (string-append "new " name " (" (send k to-string) ")"))])
(sequence (super-init)) ))
(define radish%
(class kebab% (_k)
(public
[k _k])
(override
[name "radish"]
[what-holder (lambda () (send k what-holder))]
[is-veggie? (lambda () (send k is-veggie?))]
[to-string (lambda () (string-append "new " name " (" (send k to-string) ")"))])
(sequence (super-init)) ))
(define rod%
(class object% ()
(public
[name "rod"]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define dagger%
(class rod% ()
(override
[name "dagger"]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define sabre%
(class rod% ()
(override
[name "sabre"]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define sword%
(class rod% ()
(override
[name "sword"]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define plate%
(class object% ()
(public
[name "plate"]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define gold%
(class plate% ()
(override
[name "gold"]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define silver%
(class plate% ()
(override
[name "silver"]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define brass%
(class plate% ()
(override
[name "brass"]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define copper%
(class plate% ()
(override
[name "copper"]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define wood%
(class plate% ()
(override
[name "wood"]
[to-string (lambda () (string-append "new " name " ()"))])
(sequence (super-init)) ))
(define kebab-1
(make-object holder%
(make-object dagger%)))
(send kebab-1 to-string)
(send kebab-1 is-veggie?)
(send kebab-1 what-holder)
(define kebab-2
(make-object shallot%
(make-object holder%
(make-object sword%))))
(send kebab-2 to-string)
(send kebab-2 is-veggie?)
(send kebab-2 what-holder)
(define kebab-3
(make-object shallot%
(make-object radish%
(make-object holder%
(make-object gold%)))))
(send kebab-3 to-string)
(send kebab-3 is-veggie?)
(send kebab-3 what-holder)
(define kebab-4
(make-object shallot%
(make-object shrimp%
(make-object holder%
(make-object wood%)))))
(send kebab-4 to-string)
(send kebab-4 is-veggie?)
(send kebab-4 what-holder)
;(define kebab-1
; (make-object shallot%
; (make-object radish%
; (make-object holder%
; (make-object dagger%)))))
Text file Source (historic): geocities.com/soho/square/3472
geocities.com/soho/squaregeocities.com/soho
(to report bad content: archivehelp @ gmail)
|
|
|
|
|