
unparse parval(>i,> ParInt * i num,show i>):
        unparse inum (>empty ,>i num,show i>), ->;
unparse parval(>i,> ParFlo * f, show f>): 
        unparse fnum (>empty ,>f,show f>), ->;
unparse parval(>i,> ParStr * s,show s>): 
        unparse string (>empty,>s,show s>), ->;
unparse parval(>i,> ParBool * b,show b>): 
        unparse bool (>empty, >b, show b>), ->;
unparse parval (>i,> ParErr * STRING *msg , N+msg+N+i+I>):. 


unparse val(>in app,>i,> VSym * symorig * sym,
                show sym>): 
        unparse symbol (>empty ,>sym,show sym>), ->;
unparse val(>in app,>i,> VLambda * lpar * lval,
                N+i+"(% "+show lpar+"."+show lval+N+i+") ">): 
        unparse formcon (>empty ,>lpar,show lpar>),
        unparse val (>in app,>i+I,>lval,show lval>), ->;
unparse val(>in app,>i,> VSigma * spar * sval,
                N+i+" ($ "+show spar+". {"+show sval+"}"+N+i+") ">): 
        unparse formcon (>empty,>spar,show spar>),
        unparse val (>in app,>i+S,>sval,show sval>), ->;
unparse val(>in app,>i,> "VValApply" * aval * apar,
              "\n*** Malformed application\n" + i + 
                  "(("+show aval+ ") "+ show apar+")"+N+i>): 
        unparse val (>in app,>i,>aval,show aval>),
        unparse val (>in app,>i,>apar,show apar>), ->;
unparse val(>in app,>i,> VApply * aval * apar, show val>):
        priority (>in app, >show app val, >show app par, show val>), 
        unparse val (>in app,>i,>aval, show app val>),
        unparse val (>in app,>i,>apar, show app par>), ->; 
unparse val(>in app,>i,> VWhere * wdefs * wval,show wval>):
        where (>w defs,LIST*empty>),
        unparse val (>False,>i,>wval,show wval>), ->;
unparse val(>in app,>i,> VWhere * wdefs * wval,N+i+"("+show wval+
                N+i+"Where"+show wdefs+N+i+ "EndWhere) \n"+i>): 
        unparse def list (>";",>i+S,>wdefs,show wdefs>),
        unparse val (>False,>i,>wval,show wval>), ->;
unparse val(>in app,>i,> VList * l, N+i+ "["+ N+i+I+show l + N+i+"]">): 
        where(>l,  LIST * vcomp*_>),
        where (>vcomp,VComp*_ >),
        unparse val list (>in app,>N+i+I+",",>i+I ,>l,show l>), ->;
unparse val(>in app,>i,> VList * l, N+i+ "["+ N+i+I+show l + N+i+"]">): 
        where(>l,  LIST * vwhere*_>),
        where (>vwhere,VWhere*_ >),
        unparse val list (>in app,>N+i+I+",",>i+I ,>l,show l>), ->;
unparse val(>in app,>i,> VList * l," ["+ show l + "]">): 
        unparse val list (>in app,>", ",>i+I+I ,>l,show l>), ->;
unparse val(>in app,>i,> VAppset * LIST*empty , N+i+"{ } ">): ->;
unparse val(>False,>i,> VAppset * aps, N+i+"{ "+show aps+N+i+"} ">): 
        unparse val list (>True,>",\n"+i+S,>i+S,>aps,show aps>), ->;
unparse val(>True,>i,> VAppset * aps, show aps>): 
        unparse val list (>True,>",\n"+i,>i,>aps,show aps>), ->;
unparse val(>in app,>i,> VAtom * atorig * atnm * atvpar * atcpar,
                "("+show atnm+ " "+ show atvpar+" "+ show atcpar+")">): 
        where (>atcpar,VAtom*_>), ->,
        unparse symbol (>empty,>atnm,show atnm>),
        unparse parval list (>i,>atvpar,show atvpar>),
        unparse val (>in app,>i,>atcpar,show atcpar>);
unparse val(>in app,>i,> VAtom * atorig * atnm * atvpar * atcpar,
                show atnm+" "+show atvpar+  "("+show atcpar+")">): 
        where (>atcpar,VApply*_>), ->,
        unparse symbol (>empty,>atnm,show atnm>),
        unparse parval list (>i,>atvpar,show atvpar>),
        unparse val (>in app,>i,>atcpar,show atcpar>);
unparse val(>in app,>i,> VAtom * atorig * atnm * atvpar * atcpar, show val>):
                # show atnm+" "+show atvpar+  " "+show atcpar>): 
                #"("+show atnm+ " "+ show atvpar+" "+ show atcpar+")">): 
        priority (>in app, >x+" "+y, >z, show val>), 
        unparse symbol (>empty,>atnm,x>),
        unparse parval list (>i,>atvpar,y>),
        unparse val (>in app,>i,>atcpar,z>), ->;
unparse val(>in app,>i,> VSyn * synlist,
                N+i+"* ["+show synlist+N+i+"]">): 
        unparse val list (>in app,>",",>i+I,>synlist,show synlist>), ->;
unparse val(>in app,>i,> VComp * first * rest, show first+ ": "+ show rest>): 
        where (>rest,VSymbol*_>), 
        unparse val (>in app,>i,>first,show first>),
        unparse val (>in app,>i,>rest,show rest>),->;
unparse val(>in app,>i,> VComp * first * rest, show first+ ": []">): 
        where (>rest,VList*LIST*empty>), 
        unparse val (>in app,>i,>first,show first>),->;
unparse val(>in app,>i,> VComp * first * rest, show first+N+i+" :"+show rest>): 
        unparse val  (>in app,>i,>first,show first>),
        unparse val  (>in app,>i,>rest,show rest>),  ->;
unparse val(>in app,>i,> VInd *  expr *  ind, show expr+" "+show ind>): 
        where (>expr, VSym*_>),
        unparse val  (>in app,>i,>expr,show expr>),
        unparse i num  (>i,>ind,show ind>), ->;
unparse val(>in app,>i,> VInd *  expr *  ind, "("+show expr+") "+show ind>): 
        unparse val  (>in app,>i,>expr,show expr>),
        unparse i num  (>i,>ind,show ind>), ->;
unparse val(>in app,>i,> VSlice *  expr *  ind 1* ind 2, 
                      "(" +show expr+") @ "+show ind 1 + "..."+show ind 2>): 
        unparse val  (>in app,>i,>expr,show expr>),
        unparse i num  (>i,>ind 1,show ind 1>),
        unparse i num  (>i,>ind 2,show ind 2>), ->;
unparse val (>in app,>i,> VErr * STRING *msg , N+msg+N+i+I>):  ->;
unparse val (>in app,>i,> x*msg , N+"*** "+x+" ? "+msg+N+i+I>):  ->;
unparse val (>in app,>i,> msg , N+"*** "+msg+N+i+I>):. 


priority (>False,>x,>y, "("+x + " " + y + ")">): ->;
priority (>in app,>x,>y, x + " "+ y >):.


unparse orig (>i,> TUPPLE * file * line," /* "+show file+", "+show line+" */ ">):
        unparse string (>i+I,>file,show file>),
        unparse inum (>i+I,>line,show line>).
