ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* ! Declared variable conflicts with previous vardef [Metapost]
@ 2019-01-03  1:43 Fabrice Couvreur
  2019-01-03  3:22 ` Henri Menke
  0 siblings, 1 reply; 5+ messages in thread
From: Fabrice Couvreur @ 2019-01-03  1:43 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 1246 bytes --]

Hi,
I have a problem compiling this file.
Thanks.
Fabrice

###### test file ################################################
\starttext
\setupbodyfont [pagella,9pt]
\startMPpage[offset=2pt]
  path p, q, r, b ; pair z[];
  p  := unitsquare xyscaled (9cm,5cm) ;
  z[0] = (2cm,0cm) ;
  z[1] = (2cm,2cm) ;
  z[2] = (0cm,2cm) ;
  q := llcorner p--z[0]--z[1]--z[2]--cycle ;
  r := unitsquare xyscaled (7cm,3cm) shifted(2cm,2cm) ;
  b := z[2]--z[1]--ulcorner r--urcorner p--lrcorner r--z[1]--z[0]--llcorner
p--cycle ;
  draw p ;
  draw b numberstriped (.25,15,5) withcolor magenta ;
  label.llft("A", p) ;
  label.lrt("D", p) ;
  label.ulft("C", p) ;
  label.urt("B", p) ;
  label.lft("M", z[2]) ;
  label.ulft("N", z[1]) ;
  label.bot("P", z[0]) ;
  label.top("J", ulcorner r) ;
  label.rt("I", lrcorner r) ;
  label.bot(btex $x$ etex,(llcorner p+z[0])/2);
  label.lft(btex $x$ etex,(llcorner p+z[2])/2);
\stopMPpage

\stoptext
#############################################################
! Declared variable conflicts with previous vardef.
<to be read again>
;
<*> path p, q, r, b ; pair z[] ;
z[0] = (2cm,0cm) ; z[1] = (2cm,2cm) ; z[2] ...
You can't use, e.g., `numeric foo[]' after `vardef foo'.
Proceed, and I'll ignore the illegal redeclaration.

[-- Attachment #1.2: Type: text/html, Size: 3037 bytes --]

[-- Attachment #2: Type: text/plain, Size: 492 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ! Declared variable conflicts with previous vardef [Metapost]
  2019-01-03  1:43 ! Declared variable conflicts with previous vardef [Metapost] Fabrice Couvreur
@ 2019-01-03  3:22 ` Henri Menke
  2019-01-03  6:11   ` Alan Braslau
  0 siblings, 1 reply; 5+ messages in thread
From: Henri Menke @ 2019-01-03  3:22 UTC (permalink / raw)
  To: ntg-context

z is a MetaPost intrinsic, something along the lines of

    vardef z@#=(x@#,y@#) enddef;

so you can't use the same name for a pair.  Actually you can simply
delete the declaration

   pair z[];

from your file and it will work as intended.  If you insist on using
your own declaration of z, then you have to stash away MetaPost's
definition using

   save z; pair z[];

I recommend the former, just delete pair z[];

On 3/01/19 2:43 PM, Fabrice Couvreur wrote:
> Hi,
> I have a problem compiling this file.
> Thanks.
> Fabrice
> 
> ###### test file ################################################
> \starttext
> \setupbodyfont [pagella,9pt]
> \startMPpage[offset=2pt]
>   path p, q, r, b ; pair z[];
>   p  := unitsquare xyscaled (9cm,5cm) ;
>   z[0] = (2cm,0cm) ;
>   z[1] = (2cm,2cm) ;
>   z[2] = (0cm,2cm) ;
>   q := llcorner p--z[0]--z[1]--z[2]--cycle ;
>   r := unitsquare xyscaled (7cm,3cm) shifted(2cm,2cm) ;
>   b := z[2]--z[1]--ulcorner r--urcorner p--lrcorner r--z[1]--z[0]--llcorner
> p--cycle ;
>   draw p ;
>   draw b numberstriped (.25,15,5) withcolor magenta ;
>   label.llft("A", p) ;
>   label.lrt("D", p) ;
>   label.ulft("C", p) ;
>   label.urt("B", p) ;
>   label.lft("M", z[2]) ;
>   label.ulft("N", z[1]) ;
>   label.bot("P", z[0]) ;
>   label.top("J", ulcorner r) ;
>   label.rt("I", lrcorner r) ;
>   label.bot(btex $x$ etex,(llcorner p+z[0])/2);
>   label.lft(btex $x$ etex,(llcorner p+z[2])/2);
> \stopMPpage
> 
> \stoptext
> #############################################################
> ! Declared variable conflicts with previous vardef.
> <to be read again>
> ;
> <*> path p, q, r, b ; pair z[] ;
> z[0] = (2cm,0cm) ; z[1] = (2cm,2cm) ; z[2] ...
> You can't use, e.g., `numeric foo[]' after `vardef foo'.
> Proceed, and I'll ignore the illegal redeclaration.
> 
> 
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the Wiki!
> 
> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________
> 

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ! Declared variable conflicts with previous vardef [Metapost]
  2019-01-03  3:22 ` Henri Menke
@ 2019-01-03  6:11   ` Alan Braslau
  2019-01-03 10:31     ` Fabrice Couvreur
  0 siblings, 1 reply; 5+ messages in thread
From: Alan Braslau @ 2019-01-03  6:11 UTC (permalink / raw)
  To: Henri Menke; +Cc: mailing list for ConTeXt users

On Thu, 3 Jan 2019 16:22:06 +1300 (UTC)
Henri Menke <henrimenke@gmail.com> wrote:

> z is a MetaPost intrinsic, something along the lines of
> 
>     vardef z@#=(x@#,y@#) enddef;
> 
> so you can't use the same name for a pair.  Actually you can simply
> delete the declaration
> 
>    pair z[];

I had already told Fabrice this a couple of days ago...

Alan
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ! Declared variable conflicts with previous vardef [Metapost]
  2019-01-03  6:11   ` Alan Braslau
@ 2019-01-03 10:31     ` Fabrice Couvreur
  2019-01-03 11:03       ` Taco Hoekwater
  0 siblings, 1 reply; 5+ messages in thread
From: Fabrice Couvreur @ 2019-01-03 10:31 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 2734 bytes --]

Hi,
It is true that Alan has already answered this question but I was misled
because the file that I compiled without problem is this one, even leaving
pair z[ ] (I can think that it is because of this instruction   z := point
3.6 of p ;)

\starttext
\startMPpage[offset=2pt]
     path p, q, r, b ; pair z ;
     p := unitsquare scaled 4cm ;
    * z := point 3.6 of p ;*
     q := z--urcorner p ;
     r := z--urcorner p-- reverse bottomboundary p--cycle ;
     b := reverse bottomboundary p ;
     %r := q -- reverse bottomboundary p -- cycle ; definition of Hans
     draw b--q withpen pencircle scaled 1mm withcolor red ;
     draw p ;
     draw r numberstriped (.25,10,5) withcolor magenta ;
     label.llft("B", p) ;
     label.lrt("C", p) ;
     label.ulft("A", p) ;
     label.urt("D", p) ;
     label.lft("M", p) ;
\stopMPpage
\startMPpage[offset=2pt]
  defaultfont := "texgyrepagella-regular*default" ;
  defaultscale :=0.8 ;
  path p, q, r, b ;* pair z[];*
  p  := unitsquare xyscaled (9cm,5cm) ;
  z[0] = (2cm,0cm) ;
  z[1] = (2cm,2cm) ;
  z[2] = (0cm,2cm) ;
  q := llcorner p--z[0]--z[1]--z[2]--cycle ;
  r := unitsquare xyscaled (7cm,3cm) shifted(2cm,2cm) ;
  b := z[2]--z[1]--ulcorner r--urcorner p--lrcorner r--z[1]--z[0]--llcorner
p--cycle ;
  draw p ;
  draw b numberstriped (.25,15,5) withcolor magenta ;
  label.llft("A", p) ;
  label.lrt("D", p) ;
  label.ulft("C", p) ;
  label.urt("B", p) ;
  label.lft("M", z[2]) ;
  label.ulft("N", z[1]) ;
  label.bot("P", z[0]) ;
  label.top("J", ulcorner r) ;
  label.rt("I", lrcorner r) ;
  label.bot(btex $x$ etex,(llcorner p+z[0])/2);
  label.lft(btex $x$ etex,(llcorner p+z[2])/2);
\stopMPpage

\stoptext

Le jeu. 3 janv. 2019 à 07:12, Alan Braslau <braslau.list@comcast.net> a
écrit :

> On Thu, 3 Jan 2019 16:22:06 +1300 (UTC)
> Henri Menke <henrimenke@gmail.com> wrote:
>
> > z is a MetaPost intrinsic, something along the lines of
> >
> >     vardef z@#=(x@#,y@#) enddef;
> >
> > so you can't use the same name for a pair.  Actually you can simply
> > delete the declaration
> >
> >    pair z[];
>
> I had already told Fabrice this a couple of days ago...
>
> Alan
>
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to
> the Wiki!
>
> maillist : ntg-context@ntg.nl /
> http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
>
> ___________________________________________________________________________________

[-- Attachment #1.2: Type: text/html, Size: 4495 bytes --]

[-- Attachment #2: Type: text/plain, Size: 492 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ! Declared variable conflicts with previous vardef [Metapost]
  2019-01-03 10:31     ` Fabrice Couvreur
@ 2019-01-03 11:03       ` Taco Hoekwater
  0 siblings, 0 replies; 5+ messages in thread
From: Taco Hoekwater @ 2019-01-03 11:03 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Hi,



> On 3 Jan 2019, at 11:31, Fabrice Couvreur <fabrice1.couvreur@gmail.com> wrote:
> 
> Hi,
> It is true that Alan has already answered this question but I was misled because the file that I compiled without problem is this one, even leaving pair z[ ] (I can think that it is because of this instruction   z := point 3.6 of p ;)

It works because of the "pair z” statement. Attempted explanation:


Metapost variable names are built up hierarchically. When you
say “path p” or “color V.Q” or “numeric z[]” or “vardef z”, it 
changes the type of just the last segment, not other segments
(not even the immediately preceding one).

Note that in the case of z[], the last variable segment is the 
common subscript [] not the ‘alphabetical segment’ “z”. 

It is actually OK to say e,g, 

	pair z ; 
	color z[];
        numeric z[].a;
	z := point 3.6 of p ;
	z[1] := red;
	path z[]; % z[1] is now undefined again after this line,
                  % but z[].a is still numeric
        z[3] = unitsquare;
        z[2].a = 5;

Redeclaration of intermediate segments works for all declarations except 
for ‘vardef’. The reason behind this is that vardefs can have suffixes, 
and metapost does not really differentiate between vardefs defined with
and without suffixes (except when called). Of course actual suffixes 
would interfere with the parsing of any potentially following name 
segments, which is why re-declarations ‘below’ a vardef’d segment are 
illegal.

I hope that makes sense, it is not the easiest thing to explain.

Best wishes,
Taco 


> 
> \starttext
> \startMPpage[offset=2pt]
>      path p, q, r, b ; pair z ;
>      p := unitsquare scaled 4cm ;
>      z := point 3.6 of p ;
>      q := z--urcorner p ;
>      r := z--urcorner p-- reverse bottomboundary p--cycle ;
>      b := reverse bottomboundary p ; 
>      %r := q -- reverse bottomboundary p -- cycle ; definition of Hans
>      draw b--q withpen pencircle scaled 1mm withcolor red ;
>      draw p ;
>      draw r numberstriped (.25,10,5) withcolor magenta ;
>      label.llft("B", p) ;
>      label.lrt("C", p) ;
>      label.ulft("A", p) ;
>      label.urt("D", p) ;
>      label.lft("M", p) ;
> \stopMPpage
> \startMPpage[offset=2pt]
>   defaultfont := "texgyrepagella-regular*default" ;
>   defaultscale :=0.8 ;
>   path p, q, r, b ; pair z[];
>   p  := unitsquare xyscaled (9cm,5cm) ;
>   z[0] = (2cm,0cm) ;
>   z[1] = (2cm,2cm) ;
>   z[2] = (0cm,2cm) ;
>   q := llcorner p--z[0]--z[1]--z[2]--cycle ;
>   r := unitsquare xyscaled (7cm,3cm) shifted(2cm,2cm) ;
>   b := z[2]--z[1]--ulcorner r--urcorner p--lrcorner r--z[1]--z[0]--llcorner p--cycle ;
>   draw p ;
>   draw b numberstriped (.25,15,5) withcolor magenta ;
>   label.llft("A", p) ;
>   label.lrt("D", p) ;
>   label.ulft("C", p) ;
>   label.urt("B", p) ;
>   label.lft("M", z[2]) ;
>   label.ulft("N", z[1]) ;
>   label.bot("P", z[0]) ;
>   label.top("J", ulcorner r) ;
>   label.rt("I", lrcorner r) ;
>   label.bot(btex $x$ etex,(llcorner p+z[0])/2);
>   label.lft(btex $x$ etex,(llcorner p+z[2])/2);
> \stopMPpage
>    
> \stoptext
> 
> Le jeu. 3 janv. 2019 à 07:12, Alan Braslau <braslau.list@comcast.net> a écrit :
> On Thu, 3 Jan 2019 16:22:06 +1300 (UTC)
> Henri Menke <henrimenke@gmail.com> wrote:
> 
> > z is a MetaPost intrinsic, something along the lines of
> > 
> >     vardef z@#=(x@#,y@#) enddef;
> > 
> > so you can't use the same name for a pair.  Actually you can simply
> > delete the declaration
> > 
> >    pair z[];
> 
> I had already told Fabrice this a couple of days ago...
> 
> Alan
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the Wiki!
> 
> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the Wiki!
> 
> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________

Taco Hoekwater
Elvenkind BV




___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-01-03 11:03 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-03  1:43 ! Declared variable conflicts with previous vardef [Metapost] Fabrice Couvreur
2019-01-03  3:22 ` Henri Menke
2019-01-03  6:11   ` Alan Braslau
2019-01-03 10:31     ` Fabrice Couvreur
2019-01-03 11:03       ` Taco Hoekwater

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).