Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.prolog > #14630

Lets see what the "experts" say (Was: Scryer Prolog totally clueless how DCGs work)

From Mild Shock <janburse@fastmail.fm>
Newsgroups comp.lang.prolog
Subject Lets see what the "experts" say (Was: Scryer Prolog totally clueless how DCGs work)
Date 2025-07-09 11:36 +0200
Message-ID <104ld75$1vsct$2@solani.org> (permalink)
References <104ld1i$1vsct$1@solani.org>

Show all headers | View raw


Hi,

Well Ulrich Neumerkel is of course the biggest
quack of all as usual:

 > > order of clause can only influence termination properties
 > This depends on your definition of termination. There is universal
 > termination and (much rarer) existential termination.
 >
 > In a pure, monotonic program, order of clauses does not even 
influence > universal termination. That is, a goal G_0, false will 
terminate in
 > the very same way regardless of the clause order. (For a goal G_0,
 > false both universal and existential termination are the same.)

https://github.com/mthom/scryer-prolog/discussions/3004#discussioncomment-13704812

Complete idiots, nothing to do with terminations. DCGs
that consume characters do anyway terminate. What is he talking about?

Bye

Mild Shock schrieb:
> Woa! This nonsense really made my day:
> 
> https://github.com/mthom/scryer-prolog/discussions/3004
> 
> It starts with, where somebody "tried" a declarative DCG
> using constraint logic programming:
> 
> number_tail(0, 0) --> [].
> number_tail(Number, DigitsCount) -->
>    ("," | ""),
>    digit(Digit),
>    number_tail(Digits, RestDigitsCount),
>    {
>      DigitsCount #= RestDigitsCount + 1,
>      Number #= Digit * 10 ^ RestDigitsCount + Digits
>    }.
> 
> He then noticed that its not deterministic. And since
> it is not deterministic, clause ordering changes the
> result when onced via once/1.
> 
> LoL
> 
> If DCGs had a cut, one would any way do:
> 
> number_tail(Number, DigitsCount) -->
>    ("," | ""),
>    digit(Digit), !,
>    number_tail(Digits, RestDigitsCount),
>    {
>      DigitsCount #= RestDigitsCount + 1,
>      Number #= Digit * 10 ^ RestDigitsCount + Digits
>    }.
> number_tail(0, 0) --> [].
> 
> Push the determinancy into the DCG. Otherwise you have
> an explosion of choice points, and a lot of things go
> totally wrong.
> 
> But the new DCG standard has no cut (!)/2.

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


Thread

Scryer Prolog totally clueless how DCGs work Mild Shock <janburse@fastmail.fm> - 2025-07-09 11:33 +0200
  Lets see what the "experts" say (Was: Scryer Prolog totally clueless how DCGs work) Mild Shock <janburse@fastmail.fm> - 2025-07-09 11:36 +0200
    Payed Ass-Lickers all around (Was: Lets see what the "experts" say) Mild Shock <janburse@fastmail.fm> - 2025-07-09 11:38 +0200
      Its all about the money, not about quality (Was: Payed Ass-Lickers all around) Mild Shock <janburse@fastmail.fm> - 2025-07-09 11:42 +0200
        A case of dumbification by committee membership? (Was: Its all about the money, not about quality) Mild Shock <janburse@fastmail.fm> - 2025-07-09 20:01 +0200
    The stack overflow user by the name false (Was: Lets see what the "experts" say) Mild Shock <janburse@fastmail.fm> - 2025-07-15 11:50 +0200
      The choice is a little arbitrary from one angle (Re: The stack overflow user by the name false) Mild Shock <janburse@fastmail.fm> - 2025-07-15 11:59 +0200
  Does Scryer Prolog have all tricks up its sleeves? [Occurs Check] (Was: Scryer Prolog totally clueless how DCGs work) Mild Shock <janburse@fastmail.fm> - 2025-08-04 19:47 +0200

csiph-web