[m-dev.] Contribution: Pretty Printing Library

Ralph Becket rbeck at microsoft.com
Wed Apr 12 03:00:51 AEST 2000


Okay, I've attached the latest version of pprint.m and a couple of
example files for you to have a look at.  pprint hasn't changed
much; the main thing is that I've added pprint__to_doc/[1,2]
which will convert arbitrary objects into docs for pretty printing
(the two argument version takes a `depth' parameter which specifies
how far into a structure to go before just printing `...')  example.m
shows off to_doc/[1,2] at work.  I've also added a few words of
explanation at the head of the file, although I think it'd be better
to expand the explanation of the basic doc constructors instead.

Cheers,

Ralph

--
Ralph Becket      |      MSR Cambridge      |      rbeck at microsoft.com 

> -----Original Message-----
> From: Mark Anthony BROWN [mailto:dougl at cs.mu.OZ.AU]
> Sent: 10 April 2000 08:46
> To: mercury-developers at cs.mu.OZ.AU
> Subject: Re: [m-dev.] Contribution: Pretty Printing Library
> 
> 
> Hi Ralph,
> 
> I have briefly looked over the code; it looks great!
> A pretty printer is sorely needed (by the mdb browser, atleast).
> I'll review the code in the next couple of days---this is to
> let you know that a review is on the way.
> 
> Cheers,
> Mark.
> 
> Ralph Becket writes:
> > 
> > I've knocked up a pretty printing library based on Philip Wadler's
> > paper "A Prettier Printer", which is optimal (doesn't overrun line
> > widths where possible), bounded* (the pp only needs to look ahead
> > k characters to make a formatting decision) and the composition
> > algebra is much simpler than Hughes'.  Note that Hughes' pp is
> > optimal, but not bounded.
> > 
> > This library is released under the LGPL.
> > 
> > Ralph
> > 
> > * Run-time would be too if the implementation were lazy - 
> I'm waiting 
> > for Tyson to deliver that for us :)  I haven't noticed any 
> performance
> > problems in practice...
> > 
> 
> -- 
> Mark Brown, PhD student            )O+  |  "Another of 
> Fortran's breakthroughs
> (m.brown at cs.mu.oz.au)                   |  was the GOTO 
> statement, which was...
> Dept. of Computer Science and Software  |  uniquely simple 
> and understandable"
> Engineering, University of Melbourne    |              -- IEEE, 1994
> --------------------------------------------------------------
> ------------
> mercury-developers mailing list
> Post messages to:       mercury-developers at cs.mu.oz.au
> Administrative Queries: owner-mercury-developers at cs.mu.oz.au
> Subscriptions:          mercury-developers-request at cs.mu.oz.au
> --------------------------------------------------------------
> ------------
> 


begin 600 pprint.m
M)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"B4@<'!R:6YT
M+FT-"B4 at 4F%L<&@@0F5C:V5T(#QR8F5C:T!M:6-R;W-O9G0N8V]M/@T*)2!7
M960 at 36%R(#(R(#$W.C0T.C,R("`R,#`P#0HE('9I.B!T<STT('-W/30 at 970@
M='<],"!W;3TP#0HE#0HE(%1H:7, at 9FEL92!M87D@;VYL>2!B92!C;W!I960@
M=6YD97(@=&AE('1E<FUS(&]F('1H92!'3E4 at 3&EB<F%R>2!'96YE<F%L#0HE
M(%!U8FQI8R!,:6-E;G-E("T@<V5E('1H92!F:6QE($-/4%E)3D<N3$E"(&EN
M('1H92!-97)C=7)Y(&1I<W1R:6)U=&EO;BX-"B4-"B4-"B4 at 04)/550-"B4-
M"B4 at 5&AI<R!I<R!P<F5T='D@;75C:"!A(&1I<F5C="!T<F%N<VQI=&5R871I
M;VX@;V8 at 4&AI;&EP(%=A9&QE<B=S#0HE($AA<VME;&P@<')E='1Y('!R:6YT
M97(@9&5S8W)I8F5D(&EN(")!(%!R971T:65R(%!R:6YT97(B+"!A=F%I;&%B
M;&4-"B4 at 870@:'1T<#HO+V-M+F)E;&PM;&%B<RYC;VTO8VTO8W,O=VAO+W=A
M9&QE<B]T;W!I8W,O<F5C96YT+FAT;6P-"B4-"B4 at 5V%D;&5R)W, at 87!P<F]A
M8V@@:&%S('1H<F5E(&UA:6X at 861V86YT86=E<SH-"B4@,2X@=&AE(&QA>6]U
M="!A;&=E8G)A(&ES('-M86QL(&%N9"!Q=6ET92!I;G1U:71I=F4@*&UO<F4@
M<V\@=&AA;B!(=6=H97,G*3L-"B4@,BX@=&AE('!R971T>2!P<FEN=&5R(&ES
M(&]P=&EM86P@:6X@=&AE('-E;G-E('1H870@:70@=VEL;"!N979E<B!G96YE
M<F%T90T*)2`@("!O=71P=70@=&AA="!O=F5R+7)U;G,@=&AE('-P96-I9FEE
M9"!W:61T:"!U;FQE<W,@=&AA="!I<R!U;F%V;VED86)L93L at 86YD#0HE(#,N
M('1H92!P<F5T='D@<')I;G1E<B!I<R!B;W5N9&5D(&EN('1H870@:70@;F5V
M97(@;F5E9',@=&\@;&]O:R!M;W)E('1H86X-"B4@("`@:R!C:&%R86-T97)S
M(&%H96%D('1O(&UA:V4 at 82!F;W)M871T:6YG(&1E8VES:6]N("AA;'1H;W5G
M:"!S964@=&AE(%A86`T*)2`@("!C;VUM96YT(&)E;&]W*2X-"B4-"B4 at 22!H
M879E(&UA9&4@='=O('-M86QL(&-H86YG97,Z(')A=&AE<B!T:&%N(&AA=FEN
M9R!G<F]U<"\Q(&%S(&$@;F]N+7!R:6UI=&EV90T*)2!F=6YC=&EO;B`H9F]R
M(&%L;&]W:6YG(&QI;F4M8G)E86MS('1O(&)E(&-O;G9E<G1E9"!I;G1O('-P
M86-E<R!A="!T:&4@<')E='1Y#0HE('!R:6YT97(G<R!D:7-C<F5T:6]N*2!O
M=F5R(&1O8W,L($D@:&%V92!E>'1E;F1E9"!T:&4 at 9&]C('1Y<&4@=&\@:6YC
M;'5D92!A#0HE("='4D]54"<@8V]N<W1R=6-T;W(@86YD(&%L=&5R960 at 9FQA
M='1E;B\Q(&%N9"!B92\S(&%P<')O<')I871E;'DN("!B96-A=7-E#0HE("=5
M3DE/3B<@;VYL>2!A<FES97, at 87, at 82!C;VYS97%U96YC92!O9B!P<F]C97-S
M:6YG(&$@)T=23U50)R!I="!T=7)N<R!O=70@=&\-"B4 at 8F4@<VEM<&QE<B!T
M;R!D;R!A=V%Y('=I=&@@)U5.24].)R!A;'1O9V5T:&5R(&%N9"!C;VYV97)T
M(&-L875S97,@=&AA=`T*)2!P<F]C97-S("=53DE/3B<@=&5R;7,@=&\@<')O
M8V5S<VEN9R`G1U)/55`G<RX-"B4-"B4 at 5&AE('-E8V]N9"!C:&%N9V4@:7,@
M=&AA="!F;&%T=&5N960 at 8&QI;F4G(&)R96%K<R!B96-O;64 at 96UP='D@<W1R
M:6YG<PT*)2!R871H97(@=&AA;B!S<&%C97,N#0HE#0HE($D@:&%V92!A;'-O
M(&%D9&5D('-E=F5R86P@;V)V:6]U<R!G96YE<F%L('!U<G!O<V4 at 9F]R;6%T
M=&EN9R!F=6YC=&EO;G,N#0HE#0HE#0HE(%5304=%#0HE#0HE(%1H97)E(&%R
M92!T=V\@<W1A9V5S(&EN('!R971T>2!P<FEN=&EN9R!A;B!O8FIE8W0@;V8@
M<V]M92!T>7!E(%0Z#0HE(#$N(&-O;G9E<G0@=&AE(&]B:F5C="!T;R!A('!P
M<FEN=%]?9&]C('5S:6YG('-O;64@<W!E8VEA;&QY('=R:71T96X-"B4@("`@
M9G5N8W1I;VX[#0HE(#(N(&-A;&P@<'!R:6YT7U]W<FET92];-"PU72!O<B!P
M<')I;G1?7W1O7W-T<FEN9R\R('!A<W-I;F<@=&AE(&1I<W!L87D-"B4@("`@
M=VED=&@@86YD('1H92!D;V,N#0HE#0HE('!P<FEN="!S=7!P;&EE<R!A(&YU
M;6)E<B!O9B!P<FEM:71I=F4 at 9&]C(&-O;G-T<G5C=&]R(&9U;F-T:6]N<R!A
M;F0 at 80T*)2!S;6%L;"!N=6UB97(@;V8@=7-E9G5L+"!C;VUM;VX at 8V]M<&]U
M;F0 at 8V]N<W1R=6-T:6]N<RX@($AE<F4 at 22!J=7-T#0HE(&1E<V-R:6)E('1H
M92!P<FEM:71I=F5S. at T*)0T*)2!N:6P-"B4@("!T:&4 at 96UP='D at 9&]C=6UE
M;G0L(&-O<G)E<W!O;F1I;F<@=&\@=&AE(&YU;&P@<W1R:6YG.PT*)0T*)2!T
M97AT*'-T<FEN9RD-"B4@("!T:&4 at 9&]C=6UE;G0 at 8V]N<VES=&EN9R!O9B!A
M('-I;F=L92!S=')I;F<[#0HE#0HE('!O;'DH<W1R:6YG7U]P;VQY7W1Y<&4I
M#0HE("`@=&AE(&1O8W5M96YT(&-O;G-I<W1I;F<@;V8 at 82!S:6YG;&4@<W1R
M:6YG(&1E<FEV960 at 9G)O;2!A#0HE("`@<W1R:6YG7U]P;VQY7W1Y<&4[#0HE
M#0HE(&1O8R!@/#Y@(&1O8PT*)2`@('1H92!C;VUP;W-I=&EO;B!O9B!T=V\@
M9&]C<RP@=&AE(&9I<G-T(&9O;&QO=V5D(&)Y('1H92!S96-O;F0@=VET:"!N
M;PT*)2`@(&EN=&5R=F5N:6YG('-P86-E.PT*)0T*)2!L:6YE#0HE("`@82!N
M97<M;&EN92!W:&EC:"!M87D@*&EN(&$@9W)O=7`@8V]N=&5X="P@<V5E(&)E
M;&]W*2!B92!F;&%T=&5N960@;W5T#0HE("`@8GD@=&AE('!R971T>2!P<FEN
M=&5R(&EN=&\@86X at 96UP='D@<W1R:6YG.PT*)0T*)2!N97-T*&EN="P at 9&]C
M*0T*)2`@(&%N>2!@;&EN92<@9&]C<R!I;B!D;V,@=&AA="!A<F4@;F]T(&9L
M871T96YE9"!O=70 at 8GD@=&AE('!R971T>2!P<FEN=&5R#0HE("`@87)E(&9O
M;&QO=V5D(&)Y('1H92!G:79E;B!N=6UB97(@;V8@<W!A8V5S("AN97-T960@
M8&YE<W0G<R!A9&0@=7`I.PT*)0T*)2!G<F]U<"AD;V,I#0HE("`@86QL;W<@
M9FQA='1E;FEN9R!O9B!T:&4 at 9&]C(&%T('1H92!P<F5T='D@<')I;G1E<B=S
M(&1I<V-R971I;VXN("!!(&=R;W5P#0HE("`@9&]C(&ES(&$@9&5C:7-I;VX@
M<&]I;G0 at 9F]R('1H92!P<F5T='D@<')I;G1E<B`M(&EF(&ET(&-A;B!F;&%T
M=&5N('1H90T*)2`@(&1O8R!W:71H;W5T(&]V97)R=6YN:6YG(&ET('=I;&P@
M9&\@<V\L(&]T:&5R=VES92!N;R!F;&%T=&5N:6YG(&]C8W5R<R!A=`T*)2`@
M('1H:7,@;&5V96P@*&YO=&4@=&AA="!T:&4 at 87)G=6UE;G0 at 9&]C(&UA>2!T
M:&5N(&-O;G1A:6X@;W1H97(@9W)O=7`@9&]C<PT*)2`@(&9O<B!T:&4@<')E
M='1Y('!R:6YT97(@=&\@8V]N<VED97(I+ at T*)0T*)0T*)2!%6$%-4$Q%4PT*
M)0T*)2!"96QO=R!A<F4@<V]M92!D;V-S(&9O;&QO=V5D(&)Y('1H92!W87ES
M('1H97D@;6EG:'0 at 8F4@9&ES<&QA>65D(&)Y('1H90T*)2!P<F5T='D@<')I
M;G1E<BX-"B4-"B4@,2X@=&5X="@B2&5L;&\@(BD at 8#P^8"!L:6YE(&`\/F`@
M=&5X="@B=V]R;&0B*0T*)2`-"B4@("!(96QL;PT*)2`@('=O<FQD#0HE#0HE
M(#(N(&=R;W5P*'1E>'0H(DAE;&QO("(I(&`\/F`@;&EN92!@/#Y@('1E>'0H
M(G=O<FQD(BDI#0HE#0HE("`@2&5L;&\@=V]R;&0-"B4-"B4@("!(96QL;PT*
M)2`@('=O<FQD#0HE#0HE(#,N(&=R;W5P*'1E>'0H(DAE;&QO("(I(&`\/F`@
M;F5S="@R+"!L:6YE(&`\/F`@=&5X="@B=V]R;&0B*2DI#0HE#0HE("`@2&5L
M;&\@=V]R;&0-"B4-"B4@("!(96QL;PT*)2`@("`@=V]R;&0-"B4-"B4 at -"X@
M9W)O=7`H#0HE("`@=&5X="@B1V]O9&)Y92`B*2!@/#Y@#0HE("`@;F5S="@R
M+"!L:6YE(&`\/F`@=&5X="@B8W)U96P@(BD at 8#P^8"!L:6YE(&`\/F`@=&5X
M="@B=V]R;&0B*0T*)2`I#0HE#0HE("`@1V]O9&)Y92!C<G5E;"!W;W)L9`T*
M)0T*)2`@($=O;V1B>64-"B4@("`@(&-R=65L#0HE("`@("!W;W)L9`T*)0T*
M)2`U+B!G<F]U<"@-"B4@("!T97AT*")';V]D8GEE("(I(&`\/F`-"B4@("!N
M97-T*#(L(&QI;F4 at 8#P^8"!G<F]U<"AT97AT*")C<G5E;"`B*2!@/#Y@(&QI
M;F4 at 8#P^8"!T97AT*")W;W)L9"(I*2D-"B4@*0T*)0T*)2`@($=O;V1B>64@
M8W)U96P@=V]R;&0-"B4-"B4@("!';V]D8GEE#0HE("`@("!C<G5E;"!W;W)L
M9`T*)0T*)2`@($=O;V1B>64-"B4@("`@(&-R=65L#0HE("`@("!W;W)L9`T*
M)0T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*.BT@
M;6]D=6QE('!P<FEN="X-"@T*.BT@:6YT97)F86-E+ at T*#0HZ+2!I;7!O<G1?
M;6]D=6QE(&EN="P@<W1R:6YG+"!L:7-T+"!I;RX-"@T*("`@("4 at 0VQI96YT
M<R!M=7-T('1R86YS;&%T92!D871A('-T<G5C='5R97,@:6YT;R!D;V-S(&9O
M<@T*("`@("4@=&AE('!R971T>2!P<FEN=&5R('1O(&1I<W!L87DN#0H@("`@
M)0T*.BT@='EP92!D;V,N#0H-"CHM(&9U;F,@;FEL("`@("`@("`@("`@("`@
M("`](&1O8RX@("4 at 16UP='D at 9&]C=6UE;G0N#0HZ+2!F=6YC(&1O8R!@/#Y@
M(&1O8R`@("`@("`@/2!D;V,N("`E($-O;7!O<VET:6]N(&]F('1W;R!D;V-S
M+ at T*.BT at 9G5N8R!N97-T*&EN="P at 9&]C*2`@("`@(#T at 9&]C+B`@)2!&;VQL
M;W<@;F5W;&EN97,@:6X at 9&]C('=I=&@@:6YD96YT871I;VXN#0HZ+2!F=6YC
M('1E>'0H<W1R:6YG*2`@("`@("`@/2!D;V,N("`E($-O;G9E<G0 at 82!S=')I
M;F<@:6YT;R!A(&1O8RX-"CHM(&9U;F,@;&EN92`@("`@("`@("`@("`@("`]
M(&1O8RX@("4 at 3F5W+6QI;F4@*'5N;&5S<R!F;&%T=&5N960@;W5T*2X-"CHM
M(&9U;F,@<&]L>2AS=')I;F=?7W!O;'E?='EP92D@/2!D;V,N("4 at 0V]N=F5R
M="!A;B!;<VEF8UTH7RD@:6YT;R!A('-T<FEN9RX-"CHM(&9U;F, at 9W)O=7`H
M9&]C*2`@("`@("`@("`](&1O8RX@("4 at 06QL;W<@82!D;V-U;65N="!T;R!B
M92!F;&%T=&5N960N#0H-"B`@("`E($$@=V]R9"!O9B!E>'!L86YA=&EO;B!A
M8F]U="!G<F]U<"\Q+B`@8&=R;W5P*$1O8RDG(&=I=F5S('1H92!P<F5T='D-
M"B`@("`E('!R:6YT97(@=&AE(&]P=&EO;B!O9B!F:71T:6YG($1O8R!O;G1O
M(&]N92!L:6YE(&EF('!O<W-I8FQE(&)Y(')E;6]V:6YG#0H@("`@)2!A;&P@
M=&AE(&YE=RUL:6YE<R!A;F0@;F5S="US<&%C:6YG(&9R;VT@:70[(&EF('1H
M:7, at 9&]E<VXG="!W;W)K('1H96X-"B`@("`E('1H92!P<F5T='D@<')I;G1E
M<B!W:6QL(&IU<W0@:6YT97)P<F5T($1O8R!L:71E<F%L;'D@*&]F(&-O=7)S
M92P at 1&]C#0H@("`@)2!M87D at 8V]N=&%I;B!O=&AE<B!@9W)O=7`G960@:71E
M;7,N*0T*#0HZ+2!F=6YC(&1O8R!@/"\^8"!D;V,@("`@("`@/2!D;V,N("`E
M(%-H;W)T:&%N9"!F;W(@8&1O8R!@/#Y@(&QI;F4 at 8#P^8"!D;V,G+ at T*#0H@
M("`@)2!687)I;W5S(&)R86-K971I;F<@9G5N8W1I;VYS+ at T*("`@("4-"CHM
M(&9U;F, at 8G)A8VME=&5D*'-T<FEN9RP@<W1R:6YG+"!D;V,I("`](&1O8RX-
M"CHM(&9U;F,@<&%R96YT:&5S97,H9&]C*2`@("`@("`@("`@("`@("`](&1O
M8RX-"CHM(&9U;F, at 8G)A8VME=',H9&]C*2`@("`@("`@("`@("`@("`@("`]
M(&1O8RX-"CHM(&9U;F, at 8G)A8V5S*&1O8RD@("`@("`@("`@("`@("`@("`@
M("`](&1O8RX-"@T*("`@("4@<V5P87)A=&5D*%!0+"!397`L(%M8,2PN+BXL
M6&Y=*2`](%!0*%@Q*2!@/#Y@(%-E<"!@/#Y@("XN+B!397`@8#P^8"!04"A8
M;BD-"B`@("`E#0HZ+2!F=6YC('-E<&%R871E9"AF=6YC*%0I(#T at 9&]C+"!D
M;V,L(&QI<W0H5"DI(#T at 9&]C+ at T*#0H@("`@)2!(86YD>2!P=6YC='5A=&EO
M;B!D;V-S(&%N9"!V97)S:6]N<R!W:71H(&9O;&QO=VEN9R!L:6YE(&)R96%K
M<RX-"B`@("`E#0HZ+2!F=6YC(&-O;6UA("`@("`@("`@("`@("`@/2!D;V,N
M#0HZ+2!F=6YC('-E;6EC("`@("`@("`@("`@("`@/2!D;V,N#0HZ+2!F=6YC
M('-P86-E("`@("`@("`@("`@("`@/2!D;V,N#0HZ+2!F=6YC(&-O;6UA7W-P
M86-E("`@("`@("`@/2!D;V,N#0HZ+2!F=6YC('-E;6EC7W-P86-E("`@("`@
M("`@/2!D;V,N#0HZ+2!F=6YC(&-O;6UA7VQI;F4@("`@("`@("`@/2!D;V,N
M#0HZ+2!F=6YC('-E;6EC7VQI;F4@("`@("`@("`@/2!D;V,N#0HZ+2!F=6YC
M('-P86-E7VQI;F4@("`@("`@("`@/2!D;V,N#0HZ+2!F=6YC(&-O;6UA7W-P
M86-E7VQI;F4@("`@/2!D;V,N#0HZ+2!F=6YC('-E;6EC7W-P86-E7VQI;F4@
M("`@/2!D;V,N#0H-"B`@("`E($4N9RX at 268@;VYE('=A;G1E9"!T;R!P<F5T
M='D@<')I;G0 at 82!-97)C=7)Y(&QI<W0@=&AE;B!O;F4@;6EG:'0@=W)I=&4-
M"B`@("`E#0H@("`@)2`@(&)R86-K971S*&YE<W0H,BP@<V5P87)A=&5D*$UY
M4%`L(&-O;6UA7W-P86-E7VQI;F4L($UY3&ES="DI*0T*("`@("4-"B`@("`E
M('=H97)E(&!->5!0)R!I<R!A(&9U;F-T:6]N(&9R;VT at 37E,:7-T(&UE;6)E
M<G,@=&\@9&]C<RX-"@T*("`@("4 at 0V]N=F5R="!A<F)I=')A<GD@='EP97,@
M=&\@9&]C<RX@(%1H:7,@<F5Q=6ER97,@<W1D7W5T:6Q?7V9U;F-T;W(O,PT*
M("`@("4@=&\@=V]R:R!O;B!A;&P at 8V]M<&]N96YT<R!O9B!T:&4@;V)J96-T
M(&)E:6YG(&-O;G9E<G1E9"X@(%1H92!S96-O;F0-"B`@("`E('9E<G-I;VX@
M<&QA8V5S(&$@;6%X:6UU;2!D97!T:"!O;B!T97)M<R!W:&EC:"!A<F4@;W1H
M97)W:7-E('1R=6YC871E9`T*("`@("4@=&\@8"XN+B<N#0H@("`@)0T*("`@
M("4 at 6%A8(%1H:7,@=&AR;W=S(&%N(&5X8V5P=&EO;B!I9B!T:&4@=&5R;2!I
M;B!Q=65S=&EO;B!H87,@=7-E<BUD969I;F5D#0H@("`@)2!E<75A;&ET>2X-
M"B`@("`E#0HZ+2!F=6YC('1O7V1O8RA4*2`@("`@("`@("`@/2!D;V,N#0HZ
M+2!F=6YC('1O7V1O8RAI;G0L(%0I("`@("`@/2!D;V,N#0H-"B`@("`E($-O
M;G9E<G0 at 9&]C<R!T;R!P<F5T='D@<')I;G1E9"!S=')I;F=S+ at T*("`@("4@
M5&AE(&EN="!A<F=U;65N="!S<&5C:69I97, at 82!P86=E('=I9'1H+ at T*("`@
M("4-"CHM(&9U;F,@=&]?<W1R:6YG*&EN="P at 9&]C*2`]('-T<FEN9RX-"@T*
M("`@("4 at 5W)I=&4 at 9&]C<R!O=70@:6X@<')E='1Y('!R:6YT960 at 9F]R;6%T
M+ at T*("`@("4 at 5&AE(&EN="!A<F=U;65N="!S<&5C:69I97, at 82!P86=E('=I
M9'1H+ at T*("`@("4-"CHM('!R960@=W)I=&4H:6YT+"!D;V,L(&EO7U]S=&%T
M92P@:6]?7W-T871E*2X-"CHM(&UO9&4@=W)I=&4H:6XL(&EN+"!D:2P@=6\I
M(&ES(&1E="X-"@T*.BT@<')E9"!W<FET92AI;U]?;W5T<'5T7W-T<F5A;2P@
M:6YT+"!D;V,L(&EO7U]S=&%T92P@:6]?7W-T871E*2X-"CHM(&UO9&4@=W)I
M=&4H:6XL(&EN+"!I;BP at 9&DL('5O*2!I<R!D970N#0H-"B4 at +2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2`E#0HE("TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2T@)0T*#0HZ+2!I;7!L96UE;G1A=&EO;BX-"@T*.BT@
M:6UP;W)T7VUO9'5L92!S=&1?=71I;"P at 8F]O;"X-"@T*.BT@='EP92!D;V,-
M"B`@("`M+2T^("`@("=.24PG#0H@("`@.R`@("`@("`G4T51)RAD;V,L(&1O
M8RD-"B`@("`[("`@("`@("=.15-4)RAI;G0L(&1O8RD@("`@("`@("`@#0H@
M("`@.R`@("`@("`G5$585"<H<W1R:6YG*0T*("`@(#L@("`@("`@)TQ)3D4G
M#0H@("`@.R`@("`@("`G1U)/55`G*&1O8RDN#0H-"CHM('1Y<&4@<VEM<&QE
M7V1O8PT*("`@("TM+3X@("`@;FEL#0H@("`@.R`@("`@("!S=')I;F<@8'1E
M>'1@('-I;7!L95]D;V,-"B`@("`[("`@("`@(&EN="!@;&EN96`@<VEM<&QE
M7V1O8RX-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-
M"@T*;FEL("`@("`@("`@("`@("`@("`@("`@/2`G3DE,)RX-"E@@8#P^8"!9
M("`@("`@("`@("`@("`@(#T@)U-%42<H6"P at 62DN#0IN97-T*$DL(%@I("`@
M("`@("`@("`@("`]("=.15-4)RA)+"!8*2X-"G1E>'0H4RD@("`@("`@("`@
M("`@("`@(#T@)U1%6%0G*%,I+ at T*;&EN92`@("`@("`@("`@("`@("`@("`@
M/2`G3$E.12<N#0IG<F]U<"A8*2`@("`@("`@("`@("`@("`]("='4D]54"<H
M6"DN#0H-"G!O;'DH<RA3*2D@("`@("`@("`@("`@(#T@=&5X="AS=')I;F=?
M7V9O<FUA="@B)7,B+"!;<RA3*5TI*2X-"G!O;'DH8RA#*2D@("`@("`@("`@
M("`@(#T@=&5X="AS=')I;F=?7V9O<FUA="@B)6,B+"!;8RA#*5TI*2X-"G!O
M;'DH:2A)*2D@("`@("`@("`@("`@(#T@=&5X="AS=')I;F=?7V9O<FUA="@B
M)60B+"!;:2A)*5TI*2X-"G!O;'DH9BA&*2D@("`@("`@("`@("`@(#T@=&5X
M="AS=')I;F=?7V9O<FUA="@B)68B+"!;9BA&*5TI*2X-"@T*)2`M+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*=&]?<W1R:6YG*%<L(%@I
M(#T at 4R`Z+0T*("`@('!R971T>2AP<F5D*$@Z.FEN+"!4.CII;BP at 6T@@?"!4
M73HZ;W5T*2!I<R!D970L(%<L(%@L(%M=+"!3<RDL#0H@("`@4R`]('-T<FEN
M9U]?87!P96YD7VQI<W0H;&ES=%]?<F5V97)S92A3<RDI+ at T*#0IW<FET92A7
M+"!8*2`@("`@("`@("`@("`M+3X@<')E='1Y*&EO7U]W<FET95]S=')I;F<L
M(%<L(%@I+ at T*#0IW<FET92A3=')E86TL(%<L(%@I("`@("`M+3X@<')E='1Y
M*&EO7U]W<FET95]S=')I;F<H4W1R96%M*2P at 5RP@6"DN#0H-"B4 at +2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2`E#0H-"CHM('!R960@<')E='1Y
M*'!R960H<W1R:6YG+"!4+"!4*2P@:6YT+"!D;V,L(%0L(%0I+ at T*.BT@;6]D
M92!P<F5T='DH<')E9"AI;BP@:6XL(&]U="D@:7, at 9&5T+"!I;BP@:6XL(&EN
M+"!O=70I(&ES(&1E="X-"CHM(&UO9&4@<')E='1Y*'!R960H:6XL(&1I+"!U
M;RD@:7, at 9&5T+"!I;BP@:6XL(&1I+"!U;RD@:7, at 9&5T+ at T*#0IP<F5T='DH
M4"P at 5RP@6"D@("`@("`@("`M+3X@;&%Y;W5T*%`L(&)E<W0H5RP@,"P at 6"DI
M+ at T*#0HE("TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T@)0T*#0HZ
M+2!P<F5D(&QA>6]U="AP<F5D*'-T<FEN9RP at 5"P at 5"DL('-I;7!L95]D;V,L
M(%0L(%0I+ at T*.BT@;6]D92!L87EO=70H<')E9"AI;BP@:6XL(&]U="D@:7,@
M9&5T+"!I;BP@:6XL(&]U="D@:7, at 9&5T+ at T*.BT@;6]D92!L87EO=70H<')E
M9"AI;BP at 9&DL('5O*2!I<R!D970L(&EN+"!D:2P@=6\I(&ES(&1E="X-"@T*
M;&%Y;W5T*%\L(&YI;"D@("`@("`@("`@+2T^(%M=+ at T*;&%Y;W5T*%`L(%,@
M8'1E>'1@(%@I("`@+2T^(%`H4RDL(&QA>6]U="A0+"!8*2X-"FQA>6]U="A0
M+"!)(&!L:6YE8"!8*2`@("TM/B!0*")<;B(I+"!0*'-T<FEN9U]?9'5P;&EC
M871E7V-H87(H)R`G+"!)*2DL#0H@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@;&%Y;W5T*%`L(%@I+ at T*#0HE("TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2T@)0T*#0HZ+2!F=6YC(&)E<W0H:6YT+"!I;G0L(&1O8RD@/2!S
M:6UP;&5?9&]C+ at T*#0IB97-T*%<L($LL(%@I("`@("`@("`@("`](&)E*%<L
M($LL(%LP("T at 6%TI+ at T*#0HE("TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2T@)0T*#0H@("`@)2!86%@@5V4 at 8V]U;&0 at 9&\@=VET:"!A('-P;W0@
M;V8@;&%Z:6YE<W,@=&\@879O:60 at 97AP;VYE;G1I86P-"B`@("`E(')U;BUT
M:6UE<R!I;B!T:&4@=V]R<W0 at 8V%S92!H97)E+B`@5&AE('!R;V)L96T@:7,@
M=&AA="!F;&%T=&5N+S$-"B`@("`E(&YE960@;VYL>2!B92!E=F%L=6%T960@
M=&\@=&AE('!O:6YT('=H97)E(&ET(&-A;B!B92!D96-I9&5D#0H@("`@)2`H
M8GD at 8F5T=&5R+S0 at 86YD(&9I=',O,BD@=VAE=&AE<B!A('-T<G5C='5R92!I
M<R!G;VEN9R!T;R!F:70@;VX-"B`@("`E('1H92!R96UA:6YD97(@;V8@=&AE
M(&QI;F4@;W(@;F]T+B`@26X@<')A8W1I8V4L(&5A9V5R;F5S<R!D;V5S;B=T
M#0H@("`@)2!S965M('1O(&)E(&$@<')O8FQE;2X-"@T*.BT at 9G5N8R!B92AI
M;G0L(&EN="P@;&ES="AP86ER*&EN="P at 9&]C*2DI(#T@<VEM<&QE7V1O8RX-
M"@T*8F4H7RP at 7RP@6UTI("`@("`@("`@("`@("`@("`@("`@/2!N:6PN#0IB
M92A7+"!++"!;7R`M("=.24PG("`@("`@("!\(%I=*2`](&)E*%<L($LL(%HI
M+ at T*8F4H5RP at 2RP@6TD at +2`G4T51)RA8+"!9*2`@?"!:72D@/2!B92A7+"!+
M+"!;22`M(%@L($D at +2!9('P at 6ETI+@T*8F4H5RP at 2RP@6TD at +2`G3D535"<H
M2BP at 6"D@?"!:72D@/2!B92A7+"!++"!;*$D@*R!**2`M(%@@?"!:72DN#0IB
M92A7+"!++"!;7R`M("=415A4)RA3*2`@("!\(%I=*2`](%, at 8'1E>'1@(&)E
M*%<L("A+("L@<W1R:6YG7U]L96YG=&@H4RDI+"!:*2X-"F)E*%<L(%\L(%M)
M("T@)TQ)3D4G("`@("`@('P at 6ETI(#T at 22!@;&EN96`@8F4H5RP at 22P@6BDN
M#0IB92A7+"!++"!;22`M("='4D]54"<H6"D@("!\(%I=*2`]#0H@("`@*"!I
M9B!F:71S*%<@+2!++"!&;&%T=&5N960I('1H96X at 1FQA='1E;F5D#0H@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@(&5L<V4 at 8F4H5RP@2RP at 6TD@
M+2!8('P at 6ETI("D-"CHM#0H@("`@1FQA='1E;F5D(#T at 8F4H5RP@2RP at 6TD@
M+2!F;&%T=&5N*%@I('P at 6ETI+@T*#0HE("TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2T@)0T*#0HZ+2!F=6YC(&9L871T96XH9&]C*2`](&1O8RX-
M"@T*9FQA='1E;B at G3DE,)RD@("`@("`@("`@/2`G3DE,)RX-"F9L871T96XH
M)U-%42<H6"P at 62DI("`@(#T@)U-%42<H9FQA='1E;BA8*2P at 9FQA='1E;BA9
M*2DN#0IF;&%T=&5N*"=.15-4)RA)+"!8*2D@("`]("=.15-4)RA)+"!F;&%T
M=&5N*%@I*2X-"F9L871T96XH)U1%6%0G*%,I*2`@("`@(#T@)U1%6%0G*%,I
M+ at T*9FQA='1E;B at G3$E.12<I("`@("`@("`@/2`G3DE,)RX-"F9L871T96XH
M)T=23U50)RA8*2D@("`@(#T at 9FQA='1E;BA8*2X-"@T*)2`M+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*.BT@<')E9"!F:71S*&EN="P@
M<VEM<&QE7V1O8RDN#0HZ+2!M;V1E(&9I=',H:6XL(&EN*2!I<R!S96UI9&5T
M+ at T*#0IF:71S*%<L(%@I(#HM#0H@("`@5R`^/2`P+`T*("`@("@-"B`@("`@
M("`@6"`](&YI;`T*("`@(#L-"B`@("`@("`@6"`](%, at 8'1E>'1@(%DL(&9I
M=',H5R`M('-T<FEN9U]?;&5N9W1H*%,I+"!9*0T*("`@(#L-"B`@("`@("`@
M6"`](%\@8&QI;F5@(%\-"B`@("`I+ at T*#0HE("TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2T@)0T*#0I8(&`\+SY@(%D@("`@("`@("`@(#T at 6"!@
M/#Y@(&QI;F4 at 8#P^8"!9+ at T*#0HE("TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2T@)0T*#0IB<F%C:V5T960H3"P at 4BP@1"D@(#T@=&5X="A,*2!@
M/#Y@($0 at 8#P^8"!T97AT*%(I+ at T*<&%R96YT:&5S97,H1"D@("`@("`](&)R
M86-K971E9"@B*"(L("(I(BP at 1"DN#0IB<F%C:V5T<RA$*2`@("`@("`@(#T@
M8G)A8VME=&5D*");(BP@(ETB+"!$*2X-"F)R86-E<RA$*2`@("`@("`@("`@
M/2!B<F%C:V5T960H(GLB+"`B?2(L($0I+ at T*#0HE("TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2T@)0T*#0IS97!A<F%T960H7RP@(%\L("`@6UTI
M(#T@;FEL+ at T*#0IS97!A<F%T960H4%`L(%-E<"P at 6U@@?"!8<UTI(#T-"B`@
M("`H(&EF(%AS(#T at 6UT@=&AE;@T*("`@("`@("!04"A8*0T*("`@("`@96QS
M90T*("`@("`@("!04"A8*2!@/#Y@(%-E<"!@/#Y@('-E<&%R871E9"A04"P@
M4V5P+"!8<RD-"B`@("`I+ at T*#0HE("TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2T@)0T*#0IC;VUM82`@("`@("`@("`@("`@(#T@=&5X="@B+"(I
M+ at T*<V5M:6,@("`@("`@("`@("`@("`]('1E>'0H(CLB*2X-"G-P86-E("`@
M("`@("`@("`@("`@/2!T97AT*"(@(BDN#0IC;VUM85]S<&%C92`@("`@("`@
M(#T@=&5X="@B+"`B*2X-"G-E;6EC7W-P86-E("`@("`@("`@/2!T97AT*"([
M("(I+ at T*8V]M;6%?;&EN92`@("`@("`@("`](&-O;6UA(&`\/F`@;&EN92X-
M"G-E;6EC7VQI;F4@("`@("`@("`@/2!S96UI8R!@/#Y@(&QI;F4N#0IS<&%C
M95]L:6YE("`@("`@("`@(#T@<W!A8V4 at 8#P^8"!L:6YE+ at T*8V]M;6%?<W!A
M8V5?;&EN92`@("`]('1E>'0H(BP@(BD at 8#P^8"!L:6YE+ at T*<V5M:6-?<W!A
M8V5?;&EN92`@("`]('1E>'0H(CL@(BD at 8#P^8"!L:6YE+ at T*#0HE("TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T@)0T*#0IT;U]D;V,H6"D@/2!T
M;U]D;V,H:6YT7U]M87A?:6YT+"!8*2X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM("4-"@T*("`@("4 at 6%A8($YE960@=&\@8V%T8V@@
M97)R;W)S('1H<F]W;B!B>2!D96-O;G-T<G5C="\T(&]N('1Y<&5S('=I=&@-
M"B`@("`E('5S97(@9&5F:6YE9"!E<75A;&ET>2X-"@T*=&]?9&]C*$1E<'1H
M+"!8*2`]#0H@("`@*"!I9B!!<FET>2`](#`@=&AE;@T*("`@("`@("!T97AT
M*$YA;64I#0H@("`@("!E;'-E(&EF($1E<'1H(#T\(#`@=&AE;@T*("`@("`@
M("!T97AT*$YA;64I(&`\/F`@=&5X="@B*"XN+BDB*0T*("`@("`@96QS90T*
M("`@("`@("!T97AT*$YA;64I(&`\/F`-"B`@("`@("`@<&%R96YT:&5S97,H
M#0H@("`@("`@("`@("!G<F]U<"@-"B`@("`@("`@("`@("`@("!N97-T*#(L
M(&QI;F4 at 8#P^8"!S97!A<F%T960H:60L(&-O;6UA7W-P86-E7VQI;F4L($%R
M9W,I*2!@/#Y@#0H@("`@("`@("`@("`@("`@;&EN90T*("`@("`@("`@("`@
M*0T*("`@("`@("`I#0H@("`@*0T*.BT-"B`@("!D96-O;G-T<G5C="A8+"!.
M86UE+"!!<FET>2P at 56YI=D%R9W,I+`T*("`@($%R9W,@/2!L:7-T7U]M87`H
M#0H@("`@("`@("@@9G5N8RA5;FEV07)G*2`]('1O7V1O8RA$97!T:"`M(#$L
M('5N:79?=F%L=64H56YI=D%R9RDI("DL#0H@("`@("`@(%5N:79!<F=S#0H@
M("`@*2X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-
!"@==
`
end

begin 600 examples.m
M.BT@;6]D=6QE(&5X86UP;&5S+ at T*.BT@:6YT97)F86-E+ at T*.BT@:6UP;W)T
M7VUO9'5L92!I;RX-"@T*.BT@<')E9"!M86EN*&EO7U]S=&%T92P@:6]?7W-T
M871E*2X-"CHM(&UO9&4@;6%I;BAD:2P@=6\I(&ES(&1E="X-"@T*.BT@:6UP
M;&5M96YT871I;VXN#0H-"CHM(&EM<&]R=%]M;V1U;&4@<'!R:6YT+"!M87`L
M(&QI<W0L('-T9%]U=&EL+ at T*#0IM86EN("TM/@T*#0H@("`@>R!%>#$@/2!T
M97AT*")(96QL;R`B*2!@/#Y@(&QI;F4 at 8#P^8"!T97AT*")W;W)L9"(I('TL
M#0H@("`@:6]?7W!R:6YT*"(]/3T at 17@Q(#T]/5QN(BDL#0H@("`@<'!R:6YT
M7U]W<FET92 at Q-BP@17 at Q*2P@:6]?7VYL+"!I;U]?;FPL#0H-"B`@("!I;U]?
M<')I;G0H(CT]/2!%>#(@/3T]7&XB*2P-"B`@("![($5X,B`](&=R;W5P*'1E
M>'0H(DAE;&QO("(I(&`\/F`@;&EN92!@/#Y@('1E>'0H(G=O<FQD(BDI('TL
M#0H@("`@<'!R:6YT7U]W<FET92 at Q-BP@17 at R*2P@:6]?7VYL+"!I;U]?;FPL
M#0H@("`@<'!R:6YT7U]W<FET92@@."P at 17@R*2P@:6]?7VYL+"!I;U]?;FPL
M#0H-"B`@("!I;U]?<')I;G0H(CT]/2!%>#,@/3T]7&XB*2P-"B`@("![($5X
M,R`](&=R;W5P*'1E>'0H(DAE;&QO("(I(&`\/F`@;F5S="@R+"!L:6YE(&`\
M/F`@=&5X="@B=V]R;&0B*2DI('TL#0H@("`@<'!R:6YT7U]W<FET92 at Q-BP@
M17 at S*2P@:6]?7VYL+"!I;U]?;FPL#0H@("`@<'!R:6YT7U]W<FET92@@."P@
M17 at S*2P@:6]?7VYL+"!I;U]?;FPL#0H-"B`@("!I;U]?<')I;G0H(CT]/2!%
M>#0@/3T]7&XB*2P-"B`@("![($5X-"`](&=R;W5P*'1E>'0H(D=O;V1B>64@
M(BD at 8#P^8`T*("`@("`@("`@("`@("`@(&YE<W0H,BP@;&EN92!@/#Y@('1E
M>'0H(F-R=65L("(I(&`\/F`@;&EN92!@/#Y@('1E>'0H(G=O<FQD(BDI*0T*
M("`@('TL#0H@("`@<'!R:6YT7U]W<FET92 at R-"P at 17@T*2P@:6]?7VYL+"!I
M;U]?;FPL#0H@("`@<'!R:6YT7U]W<FET92 at Q-BP@17 at T*2P@:6]?7VYL+"!I
M;U]?;FPL#0H-"B`@("!I;U]?<')I;G0H(CT]/2!%>#4@/3T]7&XB*2P-"B`@
M("![($5X-2`](&=R;W5P*'1E>'0H(D=O;V1B>64@(BD at 8#P^8`T*("`@("`@
M("`@("`@("`@(&YE<W0H,BP@;&EN92!@/#Y@#0H@("`@("`@("`@("`@("`@
M("`@(&=R;W5P*'1E>'0H(F-R=65L("(I(&`\/F`@;&EN92!@/#Y@('1E>'0H
M(G=O<FQD(BDI*2D-"B`@("!]+`T*("`@('!P<FEN=%]?=W)I=&4H,C0L($5X
M-2DL(&EO7U]N;"P@:6]?7VYL+`T*("`@('!P<FEN=%]?=W)I=&4H,38L($5X
M-2DL(&EO7U]N;"P@:6]?7VYL+`T*("`@('!P<FEN=%]?=W)I=&4H(#@L($5X
M-2DL(&EO7U]N;"P@:6]?7VYL+`T*#0H@("`@>R!M87!?7V9R;VU?87-S;V-?
M;&ES="A;(G1W;R(M,BP@(F]N92(M,2P@(G1H<F5E(BTS+"`B9F]U<B(M-%TL
M($TI('TL#0H@("`@:6]?7W!R:6YT*"(]/3T at 07)B:71R87)Y($]B:F5C=',@
M/3T]7&XB*2P-"B`@("!P<')I;G1?7W=R:71E*#$R."P@<'!R:6YT7U]T;U]D
M;V,H32DI+"!I;U]?;FPL(&EO7U]N;"P-"B`@("!P<')I;G1?7W=R:71E*#8T
M+"!P<')I;G1?7W1O7V1O8RA-*2DL(&EO7U]N;"P@:6]?7VYL+`T*("`@('!P
M<FEN=%]?=W)I=&4H,S(L('!P<FEN=%]?=&]?9&]C*$TI*2P@:6]?7VYL+"!I
M;U]?;FPL#0H-"B`@("!I;U]?<')I;G0H(CT]/2!!<F)I=')A<GD at 3V)J96-T
M<R!W:71H($1E<'1H($QI;6ET:6YG(#T]/5QN(BDL#0H@("`@<'!R:6YT7U]W
M<FET92 at Q,C at L('!P<FEN=%]?=&]?9&]C*#$L($TI*2P@:6]?7VYL+"!I;U]?
M;FPL#0H@("`@<'!R:6YT7U]W<FET92 at V-"P@<'!R:6YT7U]T;U]D;V,H,2P@
M32DI+"!I;U]?;FPL(&EO7U]N;"P-"B`@("!P<')I;G1?7W=R:71E*#,R+"!P
I<')I;G1?7W1O7V1O8R at Q+"!-*2DL(&EO7U]N;"P@:6]?7VYL+ at T*#0H=
`
end

begin 600 test_pprint.m
M.BT@;6]D=6QE('1E<W1?<'!R:6YT+ at T*#0HZ+2!I;G1E<F9A8V4N#0H-"CHM
M(&EM<&]R=%]M;V1U;&4@:6\N#0H-"@T*.BT@<')E9"!M86EN*&EO7U]S=&%T
M92P@:6]?7W-T871E*2X-"CHM(&UO9&4@;6%I;BAD:2P@=6\I(&ES(&1E="X-
M"@T*#0HZ+2!I;7!L96UE;G1A=&EO;BX-"@T*.BT@:6UP;W)T7VUO9'5L92!P
M<')I;G0L('-T<FEN9RP@:6YT+"!L:7-T+"!C:&%R+ at T*#0H-"CHM('1Y<&4@
M=')E92`M+2T^('-T<FEN9R`M(&QI<W0H=')E92DN#0H-"@T*;6%I;B`M+3X-
M"B`@("!I;U]?8V]M;6%N9%]L:6YE7V%R9W5M96YT<RA!<F=V*2P-"B`@("!R
M=6Y?=&5S=',H07)G=BDN#0H-"@T*.BT@<')E9"!R=6Y?=&5S=',H;&ES="AS
M=')I;F<I+"!I;U]?<W1A=&4L(&EO7U]S=&%T92DN#0HZ+2!M;V1E(')U;E]T
M97-T<RAI;BP at 9&DL('5O*2!I<R!D970N#0H-"G)U;E]T97-T<RA;72D at +2T^
M(%M=+ at T*#0IR=6Y?=&5S=',H6T$@?"!!<UTI("TM/@T*("`@('L at 5"`]#0H@
M("`@("`@(")A86$B+5L-"B`@("`@("`@("`@(")B8F)B8B(M6R)C8V,B+5M=
M+"`B9&0B+5M=72P-"B`@("`@("`@("`@(")E964B+5M=+`T*("`@("`@("`@
M("`@(F9F9F8B+5LB9V<B+5M=+"`B:&AH(BU;72P@(FEI(BU;75U=+`T*("`@
M("`@4%`Q(#T@<'!?=')E93$H5"DL#0H@("`@("!04#(@/2!P<%]T<F5E,BA4
M*0T*("`@('TL#0H@("`@*"!I9B![('-T<FEN9U]?=&]?:6YT*$$L(%<I('T@
M=&AE;@T*("`@("`@("!I;U]?9F]R;6%T*"(M+2TM+2!W:71H('=I9'1H("5D
M("TM+2TM7&Y<;B(L(%MI*%<I72DL#0H@("`@("`@('!P<FEN=%]?=W)I=&4H
M5RP at 4%`Q*2P@:6]?7VYL+"!I;U]?;FPL#0H@("`@("`@('!P<FEN=%]?=W)I
M=&4H5RP at 4%`R*2P@:6]?7VYL+"!I;U]?;FP-"B`@("`@(&5L<V4-"B`@("`@
M("`@:6]?7V9O<FUA="@B*B!@)7,G(&ES(&YO="!A;B!I;G1<;EQN(BP at 6W,H
M02E=*0T*("`@("DL#0H@("`@<G5N7W1E<W1S*$%S*2X-"@T*)2`M+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*.BT at 9G5N8R!P<%]T<F5E
M,2AT<F5E*2`]('!P<FEN=%]?9&]C+ at T*#0IP<%]T<F5E,2A3("T at 0W,I(#T@
M#0H@("`@9W)O=7`H#0H@("`@("!I9B!#<R`](%M=('1H96X-"B`@("`@("`@
M=&5X="A3*0T*("`@("`@96QS90T*("`@("`@("!T97AT*%,I(&`\/F`@;F5S
M="AS=')I;F=?7VQE;F=T:"A3*2P@<'!?8VAI;&1R96XQ*$-S*2D-"B`@("`I
M+ at T*#0H-"CHM(&9U;F,@<'!?8VAI;&1R96XQ*&QI<W0H=')E92DI(#T@<'!R
M:6YT7U]D;V,N#0H-"G!P7V-H:6QD<F5N,2A#<RD@/0T*("`@(&)R86-K971S
M*&YE<W0H,2P@<V5P87)A=&5D*'!P7W1R964Q+"!C;VUM85]S<&%C95]L:6YE
M+"!#<RDI*2X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M("4-"@T*.BT at 9G5N8R!P<%]T<F5E,BAT<F5E*2`]('!P<FEN=%]?9&]C+ at T*
M#0IP<%]T<F5E,BA3("T at 0W,I(#T-"B`@("!G<F]U<"@-"B`@("`@(&EF($-S
M(#T at 6UT@=&AE;@T*("`@("`@("!T97AT*%,I#0H@("`@("!E;'-E#0H@("`@
M("`@('1E>'0H4RD at 8#P^8"!P<%]C:&EL9')E;C(H0W,I#0H@("`@*2X-"@T*
M.BT at 9G5N8R!P<%]C:&EL9')E;C(H;&ES="AT<F5E*2D@/2!P<')I;G1?7V1O
M8RX-"@T*<'!?8VAI;&1R96XR*$-S*2`]#0H@("`@8G)A8VME=',H;F5S="@R
M+"!L:6YE(&`\/F`@<V5P87)A=&5D*'!P7W1R964R+"!C;VUM85]S<&%C95]L
M:6YE+"!#<RDI(&`\/F`@;&EN92DN#0H-"B4 at +2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
1+2TM+2TM+2TM+2TM+2`E#0H=
`
end
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------



More information about the developers mailing list