Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > comp.lang.prolog > #14492
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Newsgroups | comp.lang.prolog |
| Subject | Re: Streamable DOM and obsolete put_code/[1,2] |
| Date | 2025-04-02 12:03 +0200 |
| Message-ID | <vsj227$m717$1@solani.org> (permalink) |
| References | <vsj1an$m6gi$1@solani.org> <vsj1k3$m6op$1@solani.org> |
Hi,
But a "HTML Writer" as a statemachine shouldn't be a problem
in the Prolog world. If you have a concept of engine,
you can write a the HTMLParser as an ordinary parser,
which yields to get its input:
The HTMLParser service:
/* some ordinary code that reads a stream
and writes a stream, only the stream is
read via the engine interface */
parser_get_code(X) :-
engine_fetch(X).
The HTMLParser client:
/* Basically the HTMLParser is used inverted.
Just like in ordinary document.write() from
the JavaScript world, one uses the parser as sink (sic!) */
parser_put_code(ParserEngine, X) :-
engine_post(ParserEngine, X).
But from the above once can also develop statemachine,
and eliminate the "engine", by modelling what happens
between subsequent engine_fetch inside the ParserEngine,
and have an inverted parser which doesn't need "engin",
is pure Prolog code. An impurity can be the state changes,
but you can delegate it to the DOM.
But for streams you have always state changes, thats
what streams do, they change the sink.
Bye
Mild Shock schrieb:
> 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 | Next — Previous in thread | Next in thread | Find similar
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