This is the mail archive of the
kawa@sourceware.org
mailing list for the Kawa project.
Re: How use formatted output in `print` method?
- From: Yaroslav Kavenchuk <kavenchuk at gmail dot com>
- To: Per Bothner <per at bothner dot com>
- Cc: kawa at sourceware dot org
- Date: Sat, 29 Dec 2007 09:48:03 +0200
- Subject: Re: How use formatted output in `print` method?
- References: <477559EB.9040605@bothner.com>
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.