*** empty log message ***
[bpt/guile.git] / module / system / repl / describe.scm
index 966ea7d..15f0b0b 100644 (file)
 (define-module (system repl describe)
   :use-module (oop goops)
   :use-module (ice-9 regex)
-  :use-module (ice-9 format))
+  :use-module (ice-9 format)
+  :use-module (ice-9 and-let-star)
+  :export (describe))
 
-(define *describe-format* #t)
-
-(define-public (describe symbol)
-  (assert symbol? symbol)
+(define-method (describe (symbol <symbol>))
   (format #t "`~s' is " symbol)
   (if (not (defined? symbol))
       (display "not defined in the current module.\n")
-      (describe-object (eval symbol))))
+      (describe-object (module-ref (current-module) symbol))))
 
 \f
 ;;;
 ;;; Instances
 ;;;
 
-(define-method display-type ((obj <object>))
+(define-method (display-type (obj <object>))
   (display-class <object> "an instance")
   (display " of class ")
   (display-class (class-of obj))
   (display ".\n"))
 
-(define-method display-value ((obj <object>))
+(define-method (display-value (obj <object>))
   (display-slot-list #f obj (class-slots (class-of obj))))
 
 \f
 ;;; Generic functions
 ;;;
 
-(define-method display-type ((obj <generic>))
+(define-method (display-type (obj <generic>))
   (display-class <generic> "a generic function")
   (display " of class ")
   (display-class (class-of obj))
   (display ".\n"))
 
-(define-method display-value ((obj <generic>))
+(define-method (display-value (obj <generic>))
   (display-list #f (generic-function-methods obj)))
 
 \f