1. Warning error

Hello everybody,

I think I found something like an error.

sequence pastaTops  pastaTops={}


That's  it I don't use or referrer to pastaTops again in any of my code.

But I do not get, "Warning the sequence pastaTops is not used".


Don Cole

new topic     » topic index » view message » categorize

2. Re: Warning error

don cole wrote:
> 
> Hello everybody,
> 
> I think I found something like an error.
> 
> }}}
<eucode>
> 
> sequence pastaTops  pastaTops={}
> 
> </eucode>
{{{

> 
> That's  it I don't use or referrer to pastaTops again in any of my code.
> 
> But I do not get, "Warning the sequence pastaTops is not used".
> 
> 
> Don Cole

Don:

   You did use it when you did this:
       pastaTops={}

Bernie

My files in archive:
WMOTOR, XMOTOR, W32ENGIN, MIXEDLIB, EU_ENGIN, WIN32ERU, WIN32API 

Can be downloaded here:
http://www.rapideuphoria.com/cgi-bin/asearch.exu?dos=on&win=on&lnx=on&gen=on&keywords=bernie+ryan

new topic     » goto parent     » topic index » view message » categorize

3. Re: Warning error

don cole wrote:
> Hello everybody,
> 
> I think I found something like an error.
> 
> }}}
<eucode>
> 
> sequence pastaTops  pastaTops={}
> 
> </eucode>
{{{

> 
> That's  it I don't use or referrer to pastaTops again in any of my code.
> 
> But I do not get, "Warning the sequence pastaTops is not used".

I think Euphoria used to catch that, but over the years
people complained about spurious warnings, e.g. they
might have:

   ignore = graphics_mode(18) -- if it fails, so what? 

or 

   ignore = getc(0)  -- wait for key press

to discard the result returned by a function, but then they'd
be warned about "ignore" not being used. 
Perhaps we can re-instate this warning in some cases.

Regards,
   Rob Craig
   Rapid Deployment Software
   http://www.RapidEuphoria.com

new topic     » goto parent     » topic index » view message » categorize

4. Re: Warning error

don cole wrote:
> }}}
<eucode>
> sequence pastaTops  pastaTops={}
> </eucode>
{{{

> I do not get, "Warning the sequence pastaTops is not used".

Yes, that once struck me too. Strictly speaking, you are correct in the sense
that it is not "used", but I think that particular warning applies much more to
routine parameters, where you wouldn't expect explicit assignment.

However, there is a HUGE bulk of legacy code which does exactly this (eg VOID in
win32lib) and you could even end up with eg (untested):
function pwr(atom base, integer raise)
-- returns base^^raise, eg pwr(5,3)=125
atom pwr
   pwr=1
   for i=1 to raise do
     pwr*=base
   end for
   return pwr
end function

Technically, the i in "for i" is "not used". OK, now I've typed it (;-((), I
guess it is "used" by the end for, but you ought to get the point that strict
enforcement would likely trigger far more scares than help any. Sorry for the
duff example, trying too hard to be different from win32lib's "VOID" I guess.

Bad example aside, I guess if we ever get (agreement on) an elegant method to
ignore return values then this will suddenly become much more pertinent.

Regards,
Pete
PS I vote for {}=xxx(), btw, very Eu-like, as I read it as "nothing becomes
equal to the result of xxx()" or I suppose if you prefer, "store the result of
xxx() in nothing/nowhere". Whereas I never really liked the ~xxx() idea.
Plus it ties up nicely with my plans for multiple assignment, and also I always
found "{}=" dead easy to type, actually easier/faster than "~" even thought it is
three keys(I regularly use) not one(I rarely use).

new topic     » goto parent     » topic index » view message » categorize

5. Re: Warning error

Pete Lomax wrote:

> }}}
<eucode>
> function pwr(atom base, integer raise)
> -- returns base^^raise, eg pwr(5,3)=125
> atom pwr
>    pwr=1
>    for i=1 to raise do
>      pwr*=base
>    end for
>    return pwr
> end function
> </eucode>
{{{



Sometime I code,


sequence pastaqTops  
pastaTops={}




Now late at night laying bed, I decide
sequence spagettiStraps
    spagettiStraps={}
     --tons more code
    


   By now I forgot all about all those (unused)pastaTops. 

True the i is not used but it's not declared either. Raise however is
   declared and used.
   
Don Cole

new topic     » goto parent     » topic index » view message » categorize

6. Re: Warning error

Pete Lomax wrote:

<snip>

> Regards,
> Pete
> PS I vote for {}=xxx(), btw, very Eu-like, as I read it as "nothing becomes
> equal to the result of xxx()" or I suppose if you prefer, "store the result
> of xxx() in nothing/nowhere". Whereas I never really liked the ~xxx() idea.
> Plus it ties up nicely with my plans for multiple assignment, and also I
> always
> found "{}=" dead easy to type, actually easier/faster than "~" even thought
> it is three keys(I regularly use) not one(I rarely use).

Hi Pete,

Multiple assignment would be terrific but please don't use braces for this.

I much prefer parentheses; e.g.

{a, b, c) = somefunc()

-- Using braces makes it look like sequence formation, which it is not:

{d,e,f} = another_func()


Also, (I may be nit-picking here) when you say "nothing becomes equal to..."
as in "{}=xxx()", the empty braces have a very specific meaning, that is,
"the empty sequence", not "nothing".  At least, I find it jarring to look at.

Unless, of course, I've misunderstood your intention. ;)

BTW, I take it you are familiar with Daryl Border's implementation of
multiple assignment called "seqparse" from 2005.

Thanks,
Bob

new topic     » goto parent     » topic index » view message » categorize

7. Re: Warning error

Bob Elia wrote:
> 
> Pete Lomax wrote:
> 
> <snip>
> 
> > Regards,
> > Pete
> > PS I vote for {}=xxx(), btw, very Eu-like, as I read it as "nothing becomes
> > equal to the result of xxx()" or I suppose if you prefer, "store the result
> > of xxx() in nothing/nowhere". Whereas I never really liked the ~xxx() idea.
> > Plus it ties up nicely with my plans for multiple assignment, and also I
> > always
> > found "{}=" dead easy to type, actually easier/faster than "~" even thought
> > it is three keys(I regularly use) not one(I rarely use).
> 
> Hi Pete,
> 
> Multiple assignment would be terrific but please don't use braces for this.
> 
> I much prefer parentheses; e.g.
> 
> }}}
<eucode>
> {a, b, c) = somefunc()
> 
> -- Using braces makes it look like sequence formation, which it is not:
> 
> {d,e,f} = another_func()
> </eucode>
{{{

> 
> Also, (I may be nit-picking here) when you say "nothing becomes equal to..."
> as in "{}=xxx()", the empty braces have a very specific meaning, that is,
> "the empty sequence", not "nothing".  At least, I find it jarring to look at.
> 
> Unless, of course, I've misunderstood your intention. ;)
> 
> BTW, I take it you are familiar with Daryl Border's implementation of
> multiple assignment called "seqparse" from 2005.
> 
> Thanks,
> Bob

Please don't use parentheses or square brackets. Look at the following code:
x=f
(d,e,c)=something()

The interpreter will be confused because f is not supposed to have any 
arguments, yet the code reads:
x=f(d,e,c)=something()

Even more irritating, the latter does have a meaning in Eu already, which is 
not the one that was intended.

As you can see, replacing parens by square brackets doesn't help, because, 
when the comma appears, the interpreter is already subscripting f.

This leaves us with:
* {...}, my preference,
* |...| : pipes are not often easy to tell from square brackets, and, on non
 english keyboards, | and [ are on adjacent keys, calling for more typos.
* <...> : will confuse the interpreter. Remember that it is very myopic, and
 has to know at each character how it is going to read that character. It 
exceptionally looks ahead one char forth so as to read the slice symbol
or relational operators, but that's nearly all.
* perhaps <<...>> would be acceptable.
* perhaps ;...; would be acceptable.

So my vote is for curly braces.

{}=func() doesn't shock me at all. It is an empty sequence of placeholders.
 So, no assignment is to take place, since there is no target for assignment.

In my private idEu preprocessor, I use a single _ as placeholder in various
 contexts. For instance, I write
a[b[c]][d]=append(_,something)

where _ resolves to the left hand side.
And
{a,_,c}=f

if I wish to ignore the second element in the right hand side.  I had coded 
the beast so that {}, {_} or _ on the left would all cause no assignment 
to take place.


Any thoughts?

CChris

new topic     » goto parent     » topic index » view message » categorize

8. Re: Warning error

CChris wrote:
> 
> Bob Elia wrote:
> > 
> > Pete Lomax wrote:
> > 
> > <snip>
> > 
> > > Regards,
> > > Pete
> > > PS I vote for {}=xxx(), btw, very Eu-like, as I read it as "nothing
> > > becomes
> > > equal to the result of xxx()" or I suppose if you prefer, "store the
> > > result
> > > of xxx() in nothing/nowhere". Whereas I never really liked the ~xxx()
> > > idea.
> > > Plus it ties up nicely with my plans for multiple assignment, and also I
> > > always
> > > found "{}=" dead easy to type, actually easier/faster than "~" even
> > > thought
> > > it is three keys(I regularly use) not one(I rarely use).
> > 
> > Hi Pete,
> > 
> > Multiple assignment would be terrific but please don't use braces for this.
> > 
> > I much prefer parentheses; e.g.
> > 
> > }}}
<eucode>
> > {a, b, c) = somefunc()
> > 
> > -- Using braces makes it look like sequence formation, which it is not:
> > 
> > {d,e,f} = another_func()
> > </eucode>
{{{

> > 
> > Also, (I may be nit-picking here) when you say "nothing becomes equal to..."
> > as in "{}=xxx()", the empty braces have a very specific meaning, that is,
> > "the empty sequence", not "nothing".  At least, I find it jarring to look
> > at.
> > 
> > Unless, of course, I've misunderstood your intention. ;)
> > 
> > BTW, I take it you are familiar with Daryl Border's implementation of
> > multiple assignment called "seqparse" from 2005.
> > 
> > Thanks,
> > Bob
> 
> Please don't use parentheses or square brackets. Look at the following code:
> }}}
<eucode>
> x=f
> (d,e,c)=something()
> </eucode>
{{{

> The interpreter will be confused because f is not supposed to have any 
> arguments, yet the code reads:
> }}}
<eucode>
> x=f(d,e,c)=something()
> </eucode>
{{{

> Even more irritating, the latter does have a meaning in Eu already, which is
> 
> not the one that was intended.

Yes, of course. That slipped by me completely.

> 
> As you can see, replacing parens by square brackets doesn't help, because, 
> when the comma appears, the interpreter is already subscripting f.
> 
> This leaves us with:
> * {...}, my preference,
> * |...| : pipes are not often easy to tell from square brackets, and, on non
>  english keyboards, | and [ are on adjacent keys, calling for more typos.
> * <...> : will confuse the interpreter. Remember that it is very myopic, and
>  has to know at each character how it is going to read that character. It 
> exceptionally looks ahead one char forth so as to read the slice symbol
> or relational operators, but that's nearly all.
> * perhaps <<...>> would be acceptable.
> * perhaps ;...; would be acceptable.
> 
> So my vote is for curly braces.
> 
> {}=func() doesn't shock me at all. It is an empty sequence of placeholders.
>  So, no assignment is to take place, since there is no target for assignment.
> 

If {} is okay, then I'd rather not introduce new syntax elements.  They might
be needed in the future for something else.  Agreed?

> In my private idEu preprocessor, I use a single _ as placeholder in various
>  contexts. For instance, I write
> }}}
<eucode>
> a[b[c]][d]=append(_,something)
> </eucode>
{{{

> where _ resolves to the left hand side.
> And
> }}}
<eucode>
> {a,_,c}=f
> </eucode>
{{{

> if I wish to ignore the second element in the right hand side.  I had coded
> 
> the beast so that {}, {_} or _ on the left would all cause no assignment 
> to take place.
> 
> 
> Any thoughts?
> 
> CChris

Thanks, Bob

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu