Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > comp.lang.prolog > #14491

Re: Streamable DOM and obsolete put_code/[1,2]

From Mild Shock <janburse@fastmail.fm>
Newsgroups comp.lang.prolog
Subject Re: Streamable DOM and obsolete put_code/[1,2]
Date 2025-04-02 11:56 +0200
Message-ID <vsj1k3$m6op$1@solani.org> (permalink)
References <vsj1an$m6gi$1@solani.org>

Show all headers | View raw


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/326

I 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

Back to comp.lang.prolog | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Streamable DOM and obsolete put_code/[1,2] Mild Shock <janburse@fastmail.fm> - 2025-04-02 11:51 +0200
  Re: Streamable DOM and obsolete put_code/[1,2] Mild Shock <janburse@fastmail.fm> - 2025-04-02 11:56 +0200
    Re: Streamable DOM and obsolete put_code/[1,2] Mild Shock <janburse@fastmail.fm> - 2025-04-02 12:03 +0200
      Space Junk might fall on your head [Scryer Prolog WASM] (Was: Streamable DOM and obsolete put_code/[1,2]) Mild Shock <janburse@fastmail.fm> - 2025-04-05 18:33 +0200
        Editor’s Draf, 10 January 2025 - Trusted Types (Was: Space Junk might fall on your head [Scryer Prolog WASM]) Mild Shock <janburse@fastmail.fm> - 2025-04-05 19:00 +0200
        *** 2025 Prolog Awards *** (Was: Space Junk might fall on your head [Scryer Prolog WASM]) Mild Shock <janburse@fastmail.fm> - 2025-05-25 13:48 +0200
          Scryer Prolog has dethroned SWI-Prolog (Was: *** 2025 Prolog Awards ***) Mild Shock <janburse@fastmail.fm> - 2025-05-26 12:22 +0200
            Nevertheless I have bad news for Prolog (Was: Scryer Prolog has dethroned SWI-Prolog) Mild Shock <janburse@fastmail.fm> - 2025-05-26 12:31 +0200
            Cannot consult/1 after listing/1 (Was: Scryer Prolog has dethroned SWI-Prolog) Mild Shock <janburse@fastmail.fm> - 2025-05-28 12:09 +0200
        Tau-Prolog Code Mirror Integration has Flaws (Was: Space Junk might fall on your head) Mild Shock <janburse@fastmail.fm> - 2025-06-05 09:54 +0200
  Code Generation with write/[1,2] [Some Testcases] (Was: Streamable DOM and obsolete put_code/[1,2]) Mild Shock <janburse@fastmail.fm> - 2025-04-07 09:58 +0200

csiph-web