• Re: Preventing further Brainwash by Logtalk

    From Mostowski Collapse@bursejan@gmail.com to comp.lang.prolog on Tue Apr 4 01:05:17 2023
    From Newsgroup: comp.lang.prolog

    Ha Ha, LogNonsenseTalk at its best:
    Future work
    Arm–twist Prolog implementers for better
    support for rational terms and tabling https://logtalk.org/papers/colp2012/coinduction_colp2012_slides.pdf
    Ok, here is a suggestion. Propose a (@<)/2 for rational terms.
    Then talk again.
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mostowski Collapse@bursejan@gmail.com to comp.lang.prolog on Tue Apr 4 01:10:54 2023
    From Newsgroup: comp.lang.prolog

    (@<) can be useful for tabling tries. So I guess LogNonsenseTalk
    work about co-induction was highly influenced by the following
    seminal paper in logic programming dating back to the 70s:
    How to Levitate
    https://www.youtube.com/watch?v=z2I5J1ArmeM
    LMAO!
    Mostowski Collapse schrieb am Dienstag, 4. April 2023 um 10:05:18 UTC+2:
    Ha Ha, LogNonsenseTalk at its best:

    Future work
    Arm–twist Prolog implementers for better
    support for rational terms and tabling https://logtalk.org/papers/colp2012/coinduction_colp2012_slides.pdf

    Ok, here is a suggestion. Propose a (@<)/2 for rational terms.

    Then talk again.
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mostowski Collapse@bursejan@gmail.com to comp.lang.prolog on Tue Apr 4 01:19:59 2023
    From Newsgroup: comp.lang.prolog

    Other Levitating experts on the scene: Ulrich Neumerkel
    and Markus Triska. It is now the year 2023, and they
    still discuss number_chars/3:
    number_chars/2 sometimes yields wrong results https://github.com/mthom/scryer-prolog/issues/1773
    Whereas their Scryer Prolog cannot do correctly
    (@<) on rational trees aka cyclic terms. It even never
    comes to their mind, to apply KISS principle
    to the number_chars/3 problem, and instead
    read the requirement for what number_chars/3
    accepts to read it as "integer" where:
    integer (* 6.4 *)
    = [ layout text sequence (* 6.4.1 *) ] ,
    integer token (* 6.4.4 *) ;
    Why not simply strip down the relevant production
    requirement for number_chars/3 "integer token" only,
    or maybe something even simpler, and forget about
    all the layout nonsense? Most programming languages
    do it this way. Just checkout parseInteger() or parseFloat()
    across languages such as Java, JavaScript, Python etc..
    No language designer is so debilated to include in the integer
    or float syntax layout or comments. This happens only when
    you have Levitating experts on the scene.
    LoL
    Mostowski Collapse schrieb am Dienstag, 4. April 2023 um 10:10:56 UTC+2:
    (@<) can be useful for tabling tries. So I guess LogNonsenseTalk
    work about co-induction was highly influenced by the following
    seminal paper in logic programming dating back to the 70s:

    How to Levitate
    https://www.youtube.com/watch?v=z2I5J1ArmeM

    LMAO!
    Mostowski Collapse schrieb am Dienstag, 4. April 2023 um 10:05:18 UTC+2:
    Ha Ha, LogNonsenseTalk at its best:

    Future work
    Arm–twist Prolog implementers for better
    support for rational terms and tabling https://logtalk.org/papers/colp2012/coinduction_colp2012_slides.pdf

    Ok, here is a suggestion. Propose a (@<)/2 for rational terms.

    Then talk again.
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mostowski Collapse@bursejan@gmail.com to comp.lang.prolog on Tue Apr 4 01:33:42 2023
    From Newsgroup: comp.lang.prolog

    About the KISS principle:
    KISS, an acronym for "Keep it simple, stupid!", https://en.wikipedia.org/wiki/KISS_principle
    Hope this Helps!
    Mostowski Collapse schrieb am Dienstag, 4. April 2023 um 10:20:01 UTC+2:
    Other Levitating experts on the scene: Ulrich Neumerkel
    and Markus Triska. It is now the year 2023, and they
    still discuss number_chars/3:

    number_chars/2 sometimes yields wrong results https://github.com/mthom/scryer-prolog/issues/1773

    Whereas their Scryer Prolog cannot do correctly
    (@<) on rational trees aka cyclic terms. It even never
    comes to their mind, to apply KISS principle

    to the number_chars/3 problem, and instead
    read the requirement for what number_chars/3
    accepts to read it as "integer" where:

    integer (* 6.4 *)
    = [ layout text sequence (* 6.4.1 *) ] ,
    integer token (* 6.4.4 *) ;

    Why not simply strip down the relevant production
    requirement for number_chars/3 "integer token" only,
    or maybe something even simpler, and forget about

    all the layout nonsense? Most programming languages
    do it this way. Just checkout parseInteger() or parseFloat()
    across languages such as Java, JavaScript, Python etc..

    No language designer is so debilated to include in the integer
    or float syntax layout or comments. This happens only when
    you have Levitating experts on the scene.

    LoL
    Mostowski Collapse schrieb am Dienstag, 4. April 2023 um 10:10:56 UTC+2:
    (@<) can be useful for tabling tries. So I guess LogNonsenseTalk
    work about co-induction was highly influenced by the following
    seminal paper in logic programming dating back to the 70s:

    How to Levitate
    https://www.youtube.com/watch?v=z2I5J1ArmeM

    LMAO!
    Mostowski Collapse schrieb am Dienstag, 4. April 2023 um 10:05:18 UTC+2:
    Ha Ha, LogNonsenseTalk at its best:

    Future work
    Arm–twist Prolog implementers for better
    support for rational terms and tabling https://logtalk.org/papers/colp2012/coinduction_colp2012_slides.pdf

    Ok, here is a suggestion. Propose a (@<)/2 for rational terms.

    Then talk again.
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mostowski Collapse@bursejan@gmail.com to comp.lang.prolog on Sat Apr 22 06:26:18 2023
    From Newsgroup: comp.lang.prolog

    This blog post has a nice easter egg at the end. https://www.philipzucker.com/harrop-checkpoint/
    Elaborating on it I get the following:

    /* File comvars2.p */
    :- op(1200, xfy, =>).
    :- op(1150, fx, hypo).

    term_expansion((:- hypo(F/N)), (H :- shift(in(H)))) :-
    functor(H, F, N).

    (A => B) :-
    reset(B, in(C), Cont),
    (Cont == 0 -> true; (C = A; shift(in(C))), Cont).

    Here is test case of embedded implication backtracking:

    :- hypo p/1.

    ?- reset((p(1) => p(2) => p(X)), in(_), Cont), Cont==0.
    X = 2,
    Cont = 0 ;
    X = 1,
    Cont = 0 ;
    false.
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mostowski Collapse@bursejan@gmail.com to comp.lang.prolog on Sat Apr 22 06:28:19 2023
    From Newsgroup: comp.lang.prolog

    When I try the same with Scryer Prolog:

    /* File comvars2sc.p */
    :- use_module(library(cont)).

    :- op(1200, xfy, =>).
    :- op(1150, fx, hypo).

    term_expansion((:- hypo(F/N)), (H :- shift(in(H)))) :-
    functor(H, F, N).

    (A => B) :-
    reset(B, in(C), Cont),
    (Cont = none -> true; Cont = cont(G) -> (C = A; shift(in(C))), G).

    I get a segmentation fault during backtracking:

    ?- reset((p(1) => p(2) => p(X)), in(_), Cont), Cont==none.
    X = 2, Cont = none
    ; Segmentation fault

    Mostowski Collapse schrieb am Samstag, 22. April 2023 um 15:26:19 UTC+2:
    This blog post has a nice easter egg at the end. https://www.philipzucker.com/harrop-checkpoint/
    Elaborating on it I get the following:

    /* File comvars2.p */
    :- op(1200, xfy, =>).
    :- op(1150, fx, hypo).

    term_expansion((:- hypo(F/N)), (H :- shift(in(H)))) :-
    functor(H, F, N).

    (A => B) :-
    reset(B, in(C), Cont),
    (Cont == 0 -> true; (C = A; shift(in(C))), Cont).

    Here is test case of embedded implication backtracking:

    :- hypo p/1.

    ?- reset((p(1) => p(2) => p(X)), in(_), Cont), Cont==0.
    X = 2,
    Cont = 0 ;
    X = 1,
    Cont = 0 ;
    false.
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mostowski Collapse@bursejan@gmail.com to comp.lang.prolog on Thu May 11 06:43:47 2023
    From Newsgroup: comp.lang.prolog

    I always thought these new type systems only provide gradual
    typing. But a keyword here seems to be flow sensitive typing(**). And
    there are more players in town:
    Microsoft: Typescript
    Facebook: Flow(***)
    What else?
    Flow has funny things like an exact object type {| .. |}. A straight
    forward Prolog “linter”(*) isn’t flow sensitive, since it wouldn’t validate
    different types along disjunction or if-then-else branches?
    (*) Logtalk even barks on disjunctions?
    Clauses whose body is a disjunction https://logtalk.org/manuals/devtools/linter.html
    (**)
    Flow-sensitive typing
    https://en.wikipedia.org/wiki/Flow-sensitive_typing
    (***)
    Flow vs TypeScript: Which is Better in 2023? https://www.scalablepath.com/javascript/flow-vs-typescript
    Mostowski Collapse schrieb am Mittwoch, 12. September 2018 um 21:28:29 UTC+2:
    As a last note, thanks for all your publicity
    on Logtalk. There's true in the saying that
    there isn't such thing as bad publicity!
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mostowski Collapse@bursejan@gmail.com to comp.lang.prolog on Sat May 13 06:52:00 2023
    From Newsgroup: comp.lang.prolog

    Ha Ha, twice nonsense doesn't give something Ok.
    Now Logtalk has this implemention:

    variant(Term1, Term2) :-
    \+ \+ subsumes_term(Term1, Term2),
    \+ \+ subsumes_term(Term2, Term1). https://github.com/LogtalkDotOrg/logtalk3/blob/master/library/types/term.lgt#L102

    Spot the 2 errors. Here are the errors:

    Error 1: There is no need for garbage collection \+ \+ in
    subsumes_term/2. It does already undo its bindings.
    Thats the difference between subsumes/2 and subsumes_term/2,

    that subsumes_term/2 does not leave some bindings,
    is only a test predicate.
    See also here:

    On success, the bindings are undone. https://www.swi-prolog.org/pldoc/man?predicate=subsumes_term/2

    Error 2: According to Ulrich Neumerkels account
    here this is only half correct. There is a copy_term/2
    missing:

    variant_correct(A, B) :-
    copy_term(A, AC),
    subsumes_term(AC, B),
    subsumes_term(B, AC). https://www.complang.tuwien.ac.at/ulrich/iso-prolog/built-in_predicates
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mostowski Collapse@bursejan@gmail.com to comp.lang.prolog on Sat May 13 06:54:44 2023
    From Newsgroup: comp.lang.prolog

    In as far this Quintus adapter is nonsense:

    subsumes_term(General, Specific) :-
    subsumes(General, Specific). https://github.com/LogtalkDotOrg/logtalk3/blob/master/adapters/quintus.pl#L255

    SICStus Prolog tells me it should be either:

    subsumes_term(General, Specific) :-
    subsumes_chk(General, Specific).

    Or then this here:

    subsumes_term(General, Specific) :-
    \+ \+ subsumes(General, Specific). https://quintus.sics.se/isl/quintus/html/quintus/lib-tma-subsumes.html

    Mostowski Collapse schrieb am Samstag, 13. Mai 2023 um 15:52:02 UTC+2:
    Ha Ha, twice nonsense doesn't give something Ok.
    Now Logtalk has this implemention:

    variant(Term1, Term2) :-
    \+ \+ subsumes_term(Term1, Term2),
    \+ \+ subsumes_term(Term2, Term1). https://github.com/LogtalkDotOrg/logtalk3/blob/master/library/types/term.lgt#L102

    Spot the 2 errors. Here are the errors:

    Error 1: There is no need for garbage collection \+ \+ in
    subsumes_term/2. It does already undo its bindings.
    Thats the difference between subsumes/2 and subsumes_term/2,

    that subsumes_term/2 does not leave some bindings,
    is only a test predicate.
    See also here:

    On success, the bindings are undone. https://www.swi-prolog.org/pldoc/man?predicate=subsumes_term/2

    Error 2: According to Ulrich Neumerkels account
    here this is only half correct. There is a copy_term/2
    missing:

    variant_correct(A, B) :-
    copy_term(A, AC),
    subsumes_term(AC, B),
    subsumes_term(B, AC). https://www.complang.tuwien.ac.at/ulrich/iso-prolog/built-in_predicates
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@bursejan@gmail.com to comp.lang.prolog on Fri Jul 28 04:58:04 2023
    From Newsgroup: comp.lang.prolog

    Thats probably the most brain damaged nonsense I
    have ever seen. Whats the programming pattern?
    Inverted control, which inverted again?
    Printing messages and asking questions https://logtalk.org/manuals/userman/printing.html
    Nobody uses such nonsense in practice. Neither
    Python, nor JavaScript, provide something as absurd
    as this "framework". Its kind of a perverted logging
    framework, that lacks Internationalization/Localization.
    And the bad news is, it goes really back to Quintus Prolog,
    you find it here in this documentation:
    Quintus Prolog User’s Manual https://quintus.sics.se/isl/quintus/pdf/quintus.pdf
    But its not something that somebody would use in a
    modern application. The most horrible section in the
    Quintus Prolog User's Manual is the idea to
    translate DCG. What can go wrong? You need to
    understand the syntax and semantics of DCG to do that.
    Ever found a translator that can massage DCGs?
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@bursejan@gmail.com to comp.lang.prolog on Fri Jul 28 05:06:10 2023
    From Newsgroup: comp.lang.prolog

    The Quintus Prolog User's Manual describes a method that predates
    the idea of resource bundles, as found for example Java. It not only
    predates that idea, it also shows a different idea. It goes on:
    "By default, generate_message/3 sends the
    message term through the English message
    generator, messages(’english/QU_messages’)."
    The misery is then this advice:
    To have all messages printed in another language, the basic steps are as follows
    1. Take a copy of ‘QU_messages.pl’ and translate all the messages.
    2. Test the translated ‘QU_messages.pl’ and then install it
    in the Quintus Prolog directory hierarchy.
    3. Install or re-install Quintus Prolog to get a version that uses the translated messages.
    So there is no locale parameter in the runtime? And there is
    no extension mechanism, you need to go into the system folders
    and change them? And you cannot build applications, libraries
    or systems that offer multiple languages, have bundled multiple
    languages. Why, is there not enough memory on the disk
    and in the RAM? LoL
    Mild Shock schrieb am Freitag, 28. Juli 2023 um 13:58:06 UTC+2:
    Thats probably the most brain damaged nonsense I
    have ever seen. Whats the programming pattern?
    Inverted control, which inverted again?

    Printing messages and asking questions https://logtalk.org/manuals/userman/printing.html

    Nobody uses such nonsense in practice. Neither
    Python, nor JavaScript, provide something as absurd
    as this "framework". Its kind of a perverted logging

    framework, that lacks Internationalization/Localization.
    And the bad news is, it goes really back to Quintus Prolog,
    you find it here in this documentation:

    Quintus Prolog User’s Manual https://quintus.sics.se/isl/quintus/pdf/quintus.pdf

    But its not something that somebody would use in a
    modern application. The most horrible section in the
    Quintus Prolog User's Manual is the idea to

    translate DCG. What can go wrong? You need to
    understand the syntax and semantics of DCG to do that.
    Ever found a translator that can massage DCGs?
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Mild Shock@bursejan@gmail.com to comp.lang.prolog on Fri Jul 28 05:12:43 2023
    From Newsgroup: comp.lang.prolog

    Now I have added the power of resources bundles, through
    a very simple new 100% pure Prolog solution to Dogelog Player,
    which I am currently backporting to formerly Jekejeke Prolog.
    One can try the following in Example 02: Website Sandbox:
    ?- X is 1/0.
    Error: Division by zero.
    user:1
    ?- set_prolog_flag(sys_locale, de_CH).
    true.
    ?- X is 1/0.
    Fehler: Nulldivision.
    user:2
    Very beautiful and very simple! Not the brainless Quintus
    copypasta of Logtalk. Whats the competence behing Logtalk?
    Is it a demonstration of how to be stupid, dumb and uninspired?
    Mild Shock schrieb am Freitag, 28. Juli 2023 um 14:06:11 UTC+2:
    The Quintus Prolog User's Manual describes a method that predates
    the idea of resource bundles, as found for example Java. It not only predates that idea, it also shows a different idea. It goes on:

    "By default, generate_message/3 sends the
    message term through the English message
    generator, messages(’english/QU_messages’)."

    The misery is then this advice:

    To have all messages printed in another language, the basic steps are as follows
    1. Take a copy of ‘QU_messages.pl’ and translate all the messages.
    2. Test the translated ‘QU_messages.pl’ and then install it
    in the Quintus Prolog directory hierarchy.
    3. Install or re-install Quintus Prolog to get a version that uses the translated messages.

    So there is no locale parameter in the runtime? And there is
    no extension mechanism, you need to go into the system folders
    and change them? And you cannot build applications, libraries

    or systems that offer multiple languages, have bundled multiple
    languages. Why, is there not enough memory on the disk
    and in the RAM? LoL
    Mild Shock schrieb am Freitag, 28. Juli 2023 um 13:58:06 UTC+2:
    Thats probably the most brain damaged nonsense I
    have ever seen. Whats the programming pattern?
    Inverted control, which inverted again?

    Printing messages and asking questions https://logtalk.org/manuals/userman/printing.html

    Nobody uses such nonsense in practice. Neither
    Python, nor JavaScript, provide something as absurd
    as this "framework". Its kind of a perverted logging

    framework, that lacks Internationalization/Localization.
    And the bad news is, it goes really back to Quintus Prolog,
    you find it here in this documentation:

    Quintus Prolog User’s Manual https://quintus.sics.se/isl/quintus/pdf/quintus.pdf

    But its not something that somebody would use in a
    modern application. The most horrible section in the
    Quintus Prolog User's Manual is the idea to

    translate DCG. What can go wrong? You need to
    understand the syntax and semantics of DCG to do that.
    Ever found a translator that can massage DCGs?
    --- Synchronet 3.20a-Linux NewsLink 1.114