


walk partyp (>i,> PTInt, " (PTInt)">): ->;
walk partyp (>i,> PTFlo, " (PTFlo)">): ->;
walk partyp (>i,> PTStr, " (PTStr)">): ->;
walk partyp (>i,> PTBool, " (PTBool)">): ->;
walk partyp(>i,> PTErr * errmsg, i+"(PTErr"+show errmsg+")">): 
        set exit code,
	walk string (>i+I,>errmsg,show errmsg>), ->;
walk partyp (>i, >err, 
            i+"(PTErr \"*** Malformed parameter type  "+trace err+"\")\n">):
        set exit code,
       trace meta ds (>err, trace err>).


walk typ(>i,> TypBase * basenm, i+"(TypBase"+show basenm+")">):
	walk symbol (>i+I,>basenm,show basenm>), ->;
walk typ(>i,> TypIn * ityp, i+"(TypIn"+show ityp+")">):
	walk typ (>i+I,>ityp,show ityp>), ->;
walk typ(>i,> TypOut * otyp,
		i+"(TypOut"+show otyp+")">):
	walk typ (>i+I,>otyp,show otyp>), ->;
walk typ(>i,> TypUni * uityp * uotyp,
		i+"(TypUni"+show uityp+show uotyp+")">):
	walk typ (>i+I,>uityp,show uityp>),
	walk typ (>i+I,>uotyp,show uotyp>), ->;
walk typ(>i,> TypNon * nontyp,
		i+"(TypNon"+show nontyp+")">):
	walk typ (>i+I,>nontyp,show nontyp>), ->;
walk typ(>i,> TypProd * ptypes,
		i+"(TypProd"+show ptypes+")">):
	walk typ list (>i+I,>ptypes,show ptypes>), ->;
walk typ(>i,> TypSym * sym,
		i+"(TypSym"+show sym+")">): 
	walk symbol (>i+I,>sym,show sym>), ->;
walk typ(>i,> TypErr * errmsg,
		i+"(TypErr"+show errmsg+")">): 
        set exit code,
	walk string (>i+I,>errmsg,show errmsg>), ->;
walk typ (>i, >err, i+"(TypErr \"*** Malformed type "+ trace err+"\")\n">):
        set exit code,
       trace meta ds (>err, trace err>).



walk formcon(>i,> FCList * fclist,
		i+"(FCList"+show fclist+")">):
	walk formcon list (>i+I,>fclist,show fclist>), ->;
walk formcon(>i,> FCSym * fcsym,
		i+"(FCSym"+show fcsym+")">):
	walk symbol (>i+I,>fcsym,show fcsym>), ->;
walk formcon(>i,> FCComp * l*r, "(FCComp "+show l+N+i+show r+")">): ->,
	walk formcon  (>i,>l,show l>),
	walk formcon  (>i,>r,show r>);
walk formcon(>i,> FCErr * errmsg,
		i+"(FCErr"+show errmsg+")">):
        set exit code,
	walk string (>i+I,>errmsg,show errmsg>), ->;
walk formcon (>i, >err, 
         i+"(FCErr \"*** Malformed formal connection "+ trace err+ "\")\n">):
        set exit code,
       trace meta ds (>err, trace err>).



walk parval(>i,> ParInt * int,
		i+"(ParInt "+show int+")">):
	walk inum (>i+I,>int,show int>), ->;
walk parval(>i,> ParFlo * float,
		i+"(ParFlo "+show float+")">):
	walk fnum (>i+I,>float,show float>), ->;
walk parval(>i,> ParStr * string,
		i+"(ParStr"+show string+")">):
	walk string (>i+I,>string,show string>), ->;
walk parval(>i,> ParBool * bool,
		i+"(ParBool "+show bool+")">):
	walk bool (>i+I,>bool,show bool>), ->;
walk parval(>i,> ParErr * errmsg,
		i+"(ParErr "+show errmsg+")">):
        set exit code,
	walk string (>i+I,>errmsg,show errmsg>), ->;
walk parval (>i, >err, 
               i+"(ParErr \"*** Malformed parameter "+trace err+"\")\n">):
        set exit code,
       trace meta ds (>err, trace err>).



walk val(>i,> VSym * symorig * sym,
		i+"(VSym"+show symorig+show sym+")">):
	walk orig (>i+I,>symorig,show symorig>),
	walk symbol (>i+I,>sym,show sym>), ->;
walk val(>i,> VValApply * avval * avpar,
		i+"(VValApply"+show avval+show avpar+")">):
	walk val (>i+I,>avval,show avval>),
	walk val (>i+I,>avpar,show avpar>), ->;
walk val(>i,> VApply * avval * avpar,
		i+"(VApply"+show avval+show avpar+")">):
	walk val (>i+I,>avval,show avval>),
	walk val (>i+I,>avpar,show avpar>), ->;
walk val(>i,> VLambda * slpar * slval,
		i+"(VLambda"+show slpar+show slval+")">):
	walk formcon (>i+I,>slpar,show slpar>),
	walk val (>i+I,>slval,show slval>), ->;
walk val(>i,> VSigma * sspar * ssval, i+"(VSigma"+show sspar+show ssval+")">):
	walk formcon (>i+I,>sspar,show sspar>),
	walk val (>i+I,>ssval,show ssval>), ->;
walk val(>i,> VWhere * wdefs * wval, i+"(VWhere"+show wdefs+show wval+")">):
	walk def list (>i+I,>wdefs,show wdefs>),
	walk val (>i+I,>wval,show wval>), ->;
walk val(>i,> VList * l, i+"(VList"+show l+")">):
	walk val list (>i+I,>l,show l>), ->;
walk val(>i,> VAppset * aps, i+"(VAppset"+show aps+")">):
	walk val list (>i+I,>aps,show aps>), ->;
walk val(>i,> VAtom * atorig * atomnm * atvpar * actpar,#
		i+"(VAtom"+show atorig+show atomnm+show atvpar+show actpar+")">):
	walk orig (>i+I,>atorig,show atorig>),
	walk symbol (>i+I,>atomnm,show atomnm>),
	walk parval list (>i+I,>atvpar,show atvpar>),
	walk val (>i+I,>actpar,show actpar>), ->;
walk val(>i,> VSyn * synlist, i+"(VSyn"+show synlist+")">):
	walk val list (>i+I,>synlist,show synlist>), ->;
walk val(>i,> VComp *first*rest,"(VComp "+show first+N+i+show rest+")">): ->,
	walk val  (>i,>first,show first>),
	walk val  (>i,>rest,show rest>);
walk val(>i,> VInd *  expr *  ind,"(VInd "+show expr+" "+show ind+")">): ->,
	walk val  (>i,>expr,show expr>),
	walk i num  (>i,>ind,show ind>);
walk val(>i,> VSlice *  expr *  ind 1* ind 2, 
              "(VSlice " +show expr+" "+show ind 1 + " "+show ind 2+")">): ->,
	walk val  (>i,>expr,show expr>),
	walk i num  (>i,>ind 1,show ind 1>),
	walk i num  (>i,>ind 2,show ind 2>);
walk val(>i,> VErr * errmsg, i+"(VErr"+show errmsg+")">):
        set exit code,
	walk string (>i+I,>errmsg,show errmsg>), ->;
walk val (>i, >err, i+"(VErr \"*** Malformed value "+trace err+"\")\n">):
        set exit code,
       trace meta ds (>err, trace err>).
