Re: how does print-to-codes work?

Daniel Diaz <[email protected]>
Newsgroups gmane.comp.gnu.prolog.bugs
Message-ID <[email protected]>
You are right there is a bug with dynamic buffer. It will be corrected
in 1.2.15 :-)
Thx

Jasper Taylor wrote:
> 
> On Thursday 12 Sep 2002 11:17 am, Daniel Diaz wrote:
> > Try to use get_print_stream/1 inside your portray predicate: like:
> >
> > portray(F) :-
> >         float(F),
> >         format_to_codes(Fs, "~6f", [F]),
> >         append(Ns, Os, Fs),
> >         \+ (member(Ch, Os), \+ member(Ch, "0.")), !,
> >       get_print_stream(Stream),
> >       format(Stream,"~s",[Ns]).
> >
> >
> > This should work
> 
> Yes, it does, thanks very much -- my mistake for not reading the manual
> thoroughly enough.
> 
> However I am getting some bizarre behaviour -- the behaviour of print_to_codes
> seems erratic, and this causes problems with my application. Here is an
> example I tried on two different machines (both RedHat 7.3) to show you what
> I mean, and note that varying the order of calls even a little can change the
> outcome...nicefloat contains the predicate listed above...
> 
> $ gprolog
> GNU Prolog 1.2.14
> By Daniel Diaz
> Copyright (C) 1999-2002 Daniel Diaz
> | ?- print(2.92).
> 2.9199999999999999
> 
> yes
> | ?- print_to_codes(A,2.92).
> 
> A = [50,46,57,49,57,57,57,57,57,57,57,57,57,57,57,57,57,57]
> 
> yes
> | ?- consult(nicefloat).
> compiling /win98/Program Files/Simile/Develop/Tests/nicefloat.pl for byte
> code...
> /win98/Program Files/Simile/Develop/Tests/nicefloat.pl compiled, 9 lines read
> - 1616 bytes written, 8 ms
> 
> yes
> | ?- portray(2.92).
> 2.92
> 
> yes
> | ?- print(2.92).
> 2.92
> 
> yes
> | ?- print_to_codes(A,2.92).
> 
> A = [50,46,57,50]
> 
> yes
> | ?- print_to_chars(A,2.92).
> 
> A = ['2','.','9','2']
> 
> yes
> | ?- print_to_codes(2.92).
> uncaught exception:
> error(existence_error(procedure,print_to_codes/1),top_level/0)
> | ?- print_to_codes(A,2.92).
> 
> A = [50,46,57,50]
> 
> yes
> | ?- print_to_chars(A,2.92).
> 
> A = [à,á,'\x12\','B',à,á,'\x12\','B']
> 
> yes
> | ?- print_to_codes(A,2.92).
> 
> A = [224,225,18,66,224,225,18,66]
> 
> yes
> | ?- print(2.92).
> 2.92
> 
> yes
> | ?- print_to_codes(A,2.92).
> 
> A = [224,225,18,66,224,225,18,66]
> 
> yes
> | ?-
> 
> Any workaround would be welcome !!
>         --Jasper
> 
> --
> Ce message a subi une analyse antivirus
> par MailScanner ; il est vraisemblablement
> sans danger.

--
Ce message a subi une analyse antivirus 
par MailScanner ; il est vraisemblablement
sans danger.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.