Re: [m-users.] Announcement (aggregates module) + questions (window functions)

"Zoltan Somogyi" <[email protected]>
Newsgroups gmane.comp.lang.mercury.general
Message-ID <[email protected]>

On Sat, 4 Mar 2023 15:26:31 +0000, Mark Clements <[email protected]> wrote:
> As a follow-up: when should one use non-determinism and when should one use Mercury?

Sorry, I do not understand this question. Mercury supports non-determinism, so
those two things are not mutually exclusive.

> To motivate my questions: I came to Mercury because I was looking for a typed "Prolog"
> that allowed for elegant joins between relationships (essentially to replace SQL:).

Pretty much any logic programming language can be used to implement joins.
But whether a join is the right approach to solve a problem depends on the problem,
and even then, it can be (and in this case, is) a question of taste whether
a join-based approach is better than a non-join-based approach.

In your original code, what I was objecting to was NOT the nondeterminism.
What I was objecting to was

- baking the data to be operated on into the program, which made
  the program totally inflexible; and

- the use of nested lambda expressions, especially when the
  inner lambda expressions seem to be redundant.

> Zoltan's implementation for the CSV example is canonical and efficient code -
> but it is also comparatively long

Both my point and (I am pretty sure) Richard's point is that what matters
is the code's *readability*, and not its *length*.

> and uses several data structures

If those structures, including the definitions of their types, and
(in a real application) the documentation of those type definitions
help readers understand what the code is doing, which I think
was the case in my program, then these structures improve
the code, and you shouldn't *want* to replace them.

> that could be
> replaced by less efficient non-determinism.

Even disregarding the point above, why would that be an advantage?

> When is the elegance of a non-deterministic solution acceptable given its inefficiency?

This question makes the implicit assumption that a non-deterministic
solution is inherently more elegant than a deterministic solution.
I don't believe that assumption is justified. For some problems,
the assumption may be true; for other prblems, it may be false.
For this problem, both Richard and I think it is false.

As for when a less efficient solution is acceptable, the answer is
obvious: when profiling and/or analysis shows that the
inefficiency does not matter.

Zoltan.
_______________________________________________
users mailing list
[email protected]
https://lists.mercurylang.org/listinfo/users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.