Abstract type: Difference between revisions

Content added Content deleted
m (sort omit tags)
(racket IS scheme)
Line 1,021: Line 1,021:
for i in self.contents:
for i in self.contents:
print i,</lang>
print i,</lang>

=={{header|Racket}}==
<lang scheme>
#lang racket

(define animal-interface (interface () say))

(define cat% (class* object% (animal-interface) (super-new))) ;; error

(define cat% (class* object% (animal-interface)
(super-new)
(define/public (say)
(display "meeeeew!"))))

(define tom (new cat%))
(send tom say)
</lang>


=={{header|REBOL}}==
=={{header|REBOL}}==
Line 1,151: Line 1,134:


When integrating with Java, traits without implementation appear as interfaces.
When integrating with Java, traits without implementation appear as interfaces.

=={{header|Scheme}}==
(moved from Racket)
{{works with|Racket}}
<lang scheme>
#lang racket

(define animal-interface (interface () say))

(define cat% (class* object% (animal-interface) (super-new))) ;; error

(define cat% (class* object% (animal-interface)
(super-new)
(define/public (say)
(display "meeeeew!"))))

(define tom (new cat%))
(send tom say)
</lang>


=={{header|Tcl}}==
=={{header|Tcl}}==