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