• ECliPSe Prolog not a SuperProlog (Was: There is something likeSuperPrologs ? [SWI, ECLiPSe, etc..])

    From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Wed Aug 6 08:30:31 2025
    From Newsgroup: comp.lang.prolog

    Hi,

    Woa! ECliPSe Prolog isn't well versed in
    cyclic terms. It even gets into a state where
    it cannot be anymore interrupted:

    [eclipse 1]: X = f(X), Y = f(Y), X == Y.

    Interrupt: [a]bort [b]reak [c]ontinue [e]ngines e[x]it ? [a]bort
    Posting abort to running engine 1
    Abort
    [eclipse 2]: X = f(X), Y = f(Y), X = Y.

    Interrupt: [a]bort [b]reak [c]ontinue [e]ngines e[x]it ? [a]bort
    Posting abort to running engine 1
    Abort
    [eclipse 3]: X = f(X), Y = f(Y), compare(_, X, Y).

    Interrupt: [a]bort [b]reak [c]ontinue [e]ngines e[x]it ? [a]bort
    Posting abort to running engine 1

    Where is the Abort from looping compare/3?
    SWI Prolog terminates in all 3 calls. Although
    the result it gives via compare/3 is sometimes

    not very satisfying.

    Bye

    Mild Shock schrieb:
    I have no useful advice in writing portable
    Prolog code. There is also the concept of dialects
    and dialect modules, implemented by SWI-Prolog,

    ECLiPSe Prolog, etc.. You can declare a module
    written in some dialect:

    :- module(+Module, +PublicList, +Dialect) https://www.swi-prolog.org/pldoc/doc_for?object=module/3

    I think Logtalk cannot do this. Logtalk would require
    that you convert your code to Logtalk, where as
    the dialect approach requires you do nothing.

    Logtalk has the stance that a dialect sits in the
    backend and not in the front end. Its not a
    SuperProlog, it only has this idea:

    prolog_dialect
    Identifier of the backend Prolog compiler (an atom).
    This flag can be used for conditional compilation of
    Prolog compiler specific code. https://logtalk.org/manuals/userman/programming.html#compiler-flags
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Thu Oct 9 18:10:58 2025
    From Newsgroup: comp.lang.prolog

    Hi,

    We are happy to announce:

    Go Fund Me for ISO Core Standard of Prolog ===========================================

    "The power of Prolog—its elegant logic and unique
    approach to problem-solving—should 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
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Fri Oct 10 09:36:05 2025
    From Newsgroup: comp.lang.prolog

    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 isn’t 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 Prolog—its elegant logic and unique
    approach to problem-solving—should 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
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Fri Oct 10 09:48:25 2025
    From Newsgroup: comp.lang.prolog

    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 isn’t 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 Prolog—its elegant logic and unique
    approach to problem-solving—should 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
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Fri Oct 10 10:22:45 2025
    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 isn’t 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 Prolog—its elegant logic and unique
    approach to problem-solving—should 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