Sujet : Re: Streamable DOM and obsolete put_code/[1,2]
De : janburse (at) *nospam* fastmail.fm (Mild Shock)
Groupes : comp.lang.prologDate : 02. Apr 2025, 10:56:20
Autres entêtes
Message-ID : <vsj1k3$m6op$1@solani.org>
References : 1
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0 SeaMonkey/2.53.20
Hi,
Streamable DOM in the form of a "HTML writer",
can be a real miracle. SWI, Ciao, etc.. none
of the Prolog systems have a "HTML writer",
it seems the prospect of a HTMLParser inside such
"HTML writer", and that it is a state machine
confuses the world view of many people. But
the idea was already pursued by Tau Prolog.
Just take an element:
> <div id="writeme"></div>
And then literally you only have to open it:
> :- use_module(library(dom)).
>
>output :-
> get_by_id(writeme, WriteMe),
> open(WriteMe, write, Stream),
> write(Stream, hello),
> write(Stream, world).
But it didn't have much adoption, rather cause more
problems than solved any:
> How getting all the sandbox output into html?
> joseph-vidal-rosset opened on Aug 2, 2022
>
https://github.com/tau-prolog/tau-prolog/issues/326I do not blame the Philosopher trying to be a
Prolog programmer. It had not much utility since
write/1 now accepted and inserted HTML.
Bye
Mild Shock schrieb:
Hi,
The development of Novacore takes interesting turns.
Originally more accidentially, because I observed it
can serve a few interesting use cases, like atomic
logging with some unspoken or spoken gurantees,
I introduced put_atom/[1,2] in Novacore streams:
> put_atom(S, A):
> The built-in succeeds. As a side effect, it adds
> the atom to the stream S.
Now because I am revising my streamable DOMs, the
"HTML writer" part, I even went so far as to
bootstrap put_code/[1,2] from it:
> put_code(Stream, Code) :-
> char_code(Atom, Code),
> put_atom(Stream, Atom).
One can eliminate each put_code/[1,2] call such
as put_code(S, 0'\n) by a put_atom/[1,2] call
such as put_atom(S, '\n'). The performance is the
same, in my case can be slighly better since under
the hood put_code and put_atom called the same
stream meachnism.
But the main reason I eliminate put_code was
to have a single point. Because the Prolog
write_term/1 is 100% written in Prolog, in the
end it only only uses put_atom.
Bye