On 2020-05-31 17:13, Peter Pentchev wrote:
On Mon, Jun 01, 2020 at 03:12:05AM +0300, Peter Pentchev wrote:
On Sun, May 31, 2020 at 04:29:55PM -0700, ToddAndMargo via perl6-users wrote:
On 2020-05-31 04:58, Peter Pentchev wrote:
So my beef is when you feed these guys an undefined
variable, that they needs to tell you it requires
a "defined" variable. Not a bunch of useless rubbish.
For example (useless rubbish):
And also... I thought I mentioned this before. You want a more clear
error message for*one* *single* specific case of a "can't find this
method, did you mean one of these?" error message. I tried to explain
that this error message is one that is displayed in many cases, not only
for "you passed an undefined thing, I want a defined thing"; in my
opinion, it is actually quite helpful in that it actually lists
the candidates in a "did you mean one of these?" style.
You want it to be clear if you pass an undefined value where a defined
value was expected; that would mean that somebody would have to write
the code to make it check whether it is this very specific case and then
that code would have to be maintained for years and years. Tomorrow
you'll say "but can't it give me a more clear message when I pass an
integer and it expected a string?" and the day after tomorrow you'll say
"but can't it give me a more clear message when I pass a string and it
expected a function?".
The error message says "you passed an object of this type, and I can't
find this method for this type; here are a couple of types that have
this method, did you mean one of these?" It tells you what the types
are, and it doesn't have to have thousands of special cases. It tells
you what the types are.
Hi Peter,
I like that you in-line and bottom post. You are a lot
easier to follow.
I think are talking at cross purposes. Let me give an
example:
Q: is a "cow" a "Plant"?
A: a "cow" in not a hazel nut
A: a "cow" in not a radish
A: a "cow" in not a carrot
A: a "cow" in not a cabbage
...
Are all of the answers a correct?
Yes.. Evey answer is completely correct.
Are any of the answers helpful?
No
Right. So, once again, just as I said, you are only interested in one of
the answers - "Str:U is not a Str:D, you want a Str:D". However, how
should Raku know *which* one of the answers you are interested in?
Tomorrow you may pass an integer to a function that only accepts strings
and floating-point numbers; should Raku tell you "you must pass a
string, not an integer" or "you must pass a floating-point number, not
an integer"? Raku doesn't know which one of those you meant.
...accepts strings *or* floating-point numbers, of course...
G'luck,
Peter
Hi Peter,
I screw up A LOT. When something REQUIRES "Str:D" and I
send it a "Str:U", I want to be told such. Not all
the things it can't do, which I see thrashing around the
protuberance of the scrubbary.
starts-with's invocant requires a defined value (Str:D)
would be perfect. Not appreciated is a list of all the
things it can't do. This makes me have to BOTH troubleshoot
my screw up and the everything it can't do error message.
I think what you are trying to do is help me fix my screw
ups, which is of course, much appreciated. You are trying
to help me understand what the error message means.
What I am after in this thread is a better error message.
Thank you for all the help and tips.
-T
p.s believe me, there will be a lot more screw ups on my
part in the future for you to help me fix! Of that you
can rest assured.