It's GG

Life is simple...

0 notes

Mixins in Scheme

#lang scheme

(define person% (class object% 
		       (init name)
		       (super-new)
		       (define current-name name)
		       (define/public (set-name name)
			 (set! current-name name))
		       (define/public (get-name)
			 current-name)))

(define (talkable-person %)
  (class % (super-new) 
	 (define/public (talk)
	   "blah blah")))

(define talking-person% (talkable-person person%))

(define gg (new talking-person% (name "GG")))
(send gg get-name)
(send gg talk)

bash-3.2$ mzscheme mixin.ss 
"GG"
"blah blah"

Filed under scheme

0 notes

Interfaces in Scheme

#lang scheme

(define person-interface (interface() get-name set-name))

(define person% (class* object% (person-interface)
			(init name)
			(define current-name name)
			(super-new)
			(define/public (get-name)
			  current-name)
			(define/public (set-name name)
			  (set! current-name name))
			))

(define gg (new person% [name "GG"]))
(send gg get-name)
(send gg set-name "Ganesh Gunasegaran")
(send gg get-name)

(is-a? gg person-interface)
(is-a? gg person%)


bash-3.2$ mzscheme oops.ss
"GG"
"Ganesh Gunasegaran"
#t
#t

Filed under scheme

0 notes

OOP in Scheme

#lang scheme

(define student% (class object%
                  (init name age)
                  
                  (define this-name name)
                  (define this-age age)                  
                  
                  (super-new)
                  
                  (define/public (get-name)
                    this-name)
                  
                  (define/public (set-name name)
                    (set! this-name name))
                  
                  (define/public (get-age)
                    this-age)
                  
                  (define/public (set-age age)
                    (set! this-age age))
                  ))
> (define gg (new student% [name "Ganesh"] [age 28]))
> (send gg get-name)
"Ganesh"
> (send gg get-age)
28
> (send gg set-name "GG")
> (send gg get-name)
"GG"

Filed under scheme