The Guile Object Oriented Programming System (GOOPS) is an extension to the Guile Scheme implementation that adds object oriented programming capabilities.
While there is a home page, GOOPS is distributed and installed along with the Guile core distribution.
Its implementation is derived from STk-3.99.3 by Erick Gallesio and version 1.3 of Gregor Kiczales Tiny-Clos. It is designed in the spirit of tiny-clos, CLOS and stklos. It has multiple inheritance, generic functions with multi-method dispatch and a meta-object-protocol in the spirit of CLOS.
Here is a simple example of: class definition, method definition, class instantiation and method invocation.
(define-module (example) #:use-module (oop goops) #:duplicates merge-generics) (define-class <spiffy> () (a #:accessor value)) (define-method (do-something-with (o <spiffy>)) (format #t "the value of the slot 'a' is ~A~%" (value o))) (define o (make <spiffy>)) (set! (value o) 123) (do-something-with o)