From Newsgroup: comp.lang.prolog
Hi,
Now the moron @jp-diegidio writes:
In general, on Windows or else, I suggest
setting up your code editor(s) to only use \n
as a newline for all text files, i.e. irrespective
of the programming language and even for the data files.
What a complete jerk. He doesn't understand
the modern world which the Unicode consortium
characterizes as follows:
"Newlines are represented on different platforms
by carriage return (CR), line feed (LF), CRLF, or
next line (NEL). Not only are newlines represented
by different characters on different platforms, but
they also have ambiguous behavior even on the
same platform. These characters are often transcoded
directly into the corresponding Unicode code points
when a character set is transcoded; this means that even
programs handling pure Unicode have to deal with
the problems. Especially with the advent of the Web,
where text on a single machine can arise from many
sources, this causes a significant problem."
He is totally clueless about Unicode standard,
such as the following to adress the significant problem:
"Newline Functions are defined in the Unicode
Standard as providing additional mandatory breaks.
They are not individual characters, but are encoded
as sequences of the control characters NEL, LF,
and CR. If a character sequence for a Newline
Function contains more than one character, it
is kept together."
Bye
See also:
CR: Carriage Return (Non-tailorable)
A CR indicates a mandatory break after, unless followed by a LF.
https://www.unicode.org/reports/tr14/#CR
Unicode-< 17.0.0 2025 September 9
5.8 Newline Guidelines
https://www.unicode.org/versions/Unicode17.0.0/UnicodeStandard-17.0.pdf
Mild Shock schrieb:
Hi,
BTW: Most Prolog Systems didn't solve it yet.
Unlike the Java solution with a state machine.
There are also solutions, especially for the terminal,
that use a timer. Like if a CR arrives, and inside
a certain time internal no LF arrives, then its
recognized as sole CR inducing a <NEWLINE>.
Sounds good, doesn't work well. What if a the
content gets piped to the stdin and has this
"abnormal" sole CR, from an old Mac file maybe,
or from an editor that produces old Mac file format?
Bye
P.S.: The Java solution is quite straight
forward from Java class LineNumberReader since
JDK 1.1. I have used the realization trick
for a while in Jekejeke Prolog, with compressing
the CR, CR LF and LF unto LF. And in Dogelog
Player I even don't compress it anymore,
which of course challenges the Prolog tokenizer.
Mild Shock schrieb:
Hi,
How it started:
@jp-diegidio started obstructing my posts on
SWI-Prolog discourse forum, where I proposed
solutions to the new line problem, detailed
the quirks of Python universal newline.
How its going:
EricGT morons and other ban me from the
SWI-Prolog discourse forum on pretense of
aggressive behaviour. Still SWI-Prolog is
stuck with a brittle stream subsystem:
Random colorized code looks nice but isnrCOt helpful
@jp-diegidio: with a sole CR at the end
https://swi-prolog.discourse.group/t/random-colorized-code-looks-nice-
but-isnt-helpful/9347
"a sole CR" is exactly the newline case
that SWI-Prolog cannot handle well automatically.
How do we call this, FAFO, Fuck Around and Find Out?
F around and Find Out
https://www.youtube.com/watch?v=AOPZuXh-f5M
With morons on board like @jp-diegidio and
EricGT things only slow down, and will not
be fixed in due time.
Have Fun!
Bye
Mild Shock schrieb:
Hi,
We are happy to announce:
Go Fund Me for ISO Core Standard of Prolog
===========================================
"The power of PrologrCoits elegant logic and unique
approach to problem-solvingrCoshould be accessible
to every curious mind, regardless of their
financial situation. Yet for many talented
students worldwide, the high cost of the
official ISO standard (approximately $220 USD)
creates a prohibitive barrier to a deep and
formal understanding of the language.
This Go Fund Me seeks to shatter that barrier.
Your contribution will directly sponsor access
to the ISO Prolog standard for students who
cannot afford it, ensuring that the next
generation of programmers, AI researchers,
and logic enthusiasts can learn from the
definitive source.
By investing in their education, you're
not just donating a document; you're fueling
innovation, diversifying the field, and
empowering the future pioneers of logic
programming. Let's ensure that a price tag
never stands in the way of a great idea."
For more information contact us at:
https://r.mtdv.me/giveaways/getisoprolog
Bye
P.S.: This Go Fund Me is not affiliated with
PEG 2.0 "The Prolog Education Group".
Mild Shock schrieb:
Dialect modules requires that you have a
SuperProlog, that can manage different dialects.
Currenty SuperPrologs are mostly ModulePrologs
that just swap in additional predicate definitions,
also allow overwriting their own predicate
definitions locally, in favor of some dialect
predicate definition. And so own etc etc, I don't
know how successful this approach, it might
then also require that set_prolog_flag/2 can work
module locally, that you can do set_prolog_flag(
double_quotes, chars) to have a Scryer, Trealla,
etc. dialect, and set_prolog_flag(double_codes,
string) to have some SWI dialect, or
set_prolog_flag(double_codes, codes) to have
some ISO defaults dialect. For example an ISO dialect
might have this definition in their commons module:
false :- fail.
Since the Corrigendum 2 came rather later, so
some Prolog might have missed it, or balantly ignore
it. The Corrigendum 2 came 2012, but the ISO
standard was from 1995. Thats a gap
of almost 20 years. Quite amazing nonsense.
--- Synchronet 3.21a-Linux NewsLink 1.2