diff --git a/library/charsio.yap b/library/charsio.yap index 416627bf0..0c7b67d11 100644 --- a/library/charsio.yap +++ b/library/charsio.yap @@ -49,13 +49,6 @@ format_to_chars(Form, Args, OUT, L0) :- write_to_chars(Term, OUT) :- write_to_chars(Term, [], OUT). -write_to_chars(Term, L0, OUT) :- - open_mem_write_stream(Stream), - write(Stream, Term), - peek_mem_write_stream(Stream, L0, O), - close(Stream), - O = OUT. - atom_to_chars(Atom, OUT) :- atom_to_chars(Atom, [], OUT). @@ -88,12 +81,6 @@ number_to_chars(Number, L0, OUT) :- number_to_chars(Number, L0, OUT) :- throw(error(type_error(number,Number),number_to_chars(Number, L0, OUT))). -read_from_chars(Chars, Term) :- - open_mem_read_stream(Chars, Stream), - read(Stream, T), - close(Stream), - T = Term. - open_chars_stream(Chars, Stream) :- open_mem_read_stream(Chars, Stream). diff --git a/pl/utils.yap b/pl/utils.yap index f0635810e..80829018f 100644 --- a/pl/utils.yap +++ b/pl/utils.yap @@ -684,6 +684,23 @@ term_to_atom(Term,Atom) :- charsio:write_to_chars(Term,S), atom_codes(Atom,S). +% +% hack this here. +% +charsio:write_to_chars(Term, L0, OUT) :- + charsio:open_mem_write_stream(Stream), + prolog:write(Stream, Term), + charsio:peek_mem_write_stream(Stream, L0, O), + prolog:close(Stream), + O = OUT. + +charsio:read_from_chars(Chars, Term) :- + charsio:open_mem_read_stream(Chars, Stream), + prolog:read(Stream, T), + prolog:close(Stream), + T = Term. + + simple(V) :- var(V), !. simple(A) :- atom(A), !. simple(N) :- number(N).