This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: How use formatted output in `print` method?


Per Bothner wrote:
It would be helpful if you have a question you include
the actual error messages, and also a small complete
program we can run.

Ok.


#|kawa:5|# (define-simple-class <my-class> (<java.lang.Object>
<gnu.text.Printable>)
#|(---:6|#   (name :: <String> init-value: "Bob")
#|(---:7|#   ((print out :: <gnu.lists.Consumer>) :: #!void
#|(---:8|#    (out:write (format #f "#<my-class ~A>" name))))
/dev/stdin:8:4: warning - more than one possibly applicable method
'write' in gnu.lists.Consumer
  candidate: void gnu.lists.Consumer.write(int)
  candidate: void gnu.lists.Consumer.write(java.lang.String)
#|kawa:9|# (make <my-class> name: "Lisa")
java.lang.AbstractMethodError: my$Mnclass.print(Lgnu/lists/Consumer;)V
        at
gnu.kawa.functions.DisplayFormat.writeObjectRaw(DisplayFormat.java:235)
        at
gnu.kawa.functions.DisplayFormat.writeObject(DisplayFormat.java:127)
        at gnu.lists.AbstractFormat.writeObject(AbstractFormat.java:85)
        at gnu.mapping.OutPort.print(OutPort.java:238)
        at gnu.lists.PrintConsumer.writeObject(PrintConsumer.java:131)
        at atInteractiveLevel$3.run(stdin)
        at gnu.expr.ModuleExp.evalModule(ModuleExp.java:306)
        at kawa.Shell.run(Shell.java:275)
        at kawa.Shell.run(Shell.java:186)
        at kawa.Shell.run(Shell.java:167)
        at kawa.repl.main(repl.java:870)

In this case, my guess is you might want:

(out:write (as <String> (format #f ...))))

Thanks! Now warning is absent. But error has remained:


#|kawa:1|# (define-simple-class <my-class> (<java.lang.Object>
<gnu.text.Printable>)
#|(---:2|#   (name :: <String> init-value: "Bob")
#|(---:3|#   ((print out :: <gnu.lists.Consumer>) :: #!void
#|(---:4|#    (out:write (as <String> (format #f "#<my-class ~A>" name)))))
#|kawa:5|# (make <my-class> name: "Lisa")
java.lang.AbstractMethodError: my$Mnclass.print(Lgnu/lists/Consumer;)V
        at
gnu.kawa.functions.DisplayFormat.writeObjectRaw(DisplayFormat.java:235)
        at
gnu.kawa.functions.DisplayFormat.writeObject(DisplayFormat.java:127)
        at gnu.lists.AbstractFormat.writeObject(AbstractFormat.java:85)
        at gnu.mapping.OutPort.print(OutPort.java:238)
        at gnu.lists.PrintConsumer.writeObject(PrintConsumer.java:131)
        at atInteractiveLevel$2.run(stdin)
        at gnu.expr.ModuleExp.evalModule(ModuleExp.java:306)
        at kawa.Shell.run(Shell.java:275)
        at kawa.Shell.run(Shell.java:186)
        at kawa.Shell.run(Shell.java:167)
        at kawa.repl.main(repl.java:870)
#|kawa:6|#

Many thanks for your answer!

--
WBR, Yaroslav Kavenchuk.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]