Re: how to invoke SML/NJ's built-in pretty printer from a program?

Joe Wells <jbw-bi+AKbBUZKY6gyzm1THtWSyW561oxTkF6wyTxE2+DAIVLKEgiBLH4zVnNp+97C/[email protected]> Sat, 21 Mar 2009 20:26:46 +0000
Newsgroups gmane.comp.lang.sml.smlnj
Message-ID <[email protected]>
Sm9obiBSZXBweSA8amhyQGNzLnVjaGljYWdvLmVkdT4gd3JpdGVzOgoKPiBJIGRvbid0IHRoaW5r
IHRoYXQgd2hhdCB5b3Ugd2FudCBpcyBwb3NzaWJsZSBpbiBTTUwvTkosIHNpbmNlIGl0Cj4gcmVx
dWlyZXMgcnVudGltZSB0eXBlIGluZm9ybWF0aW9uLiAgSW4gdGhlIFJFUEwsIHdlIGFyZSBhYmxl
IHRvCj4gcHJldHR5LXByaW50IHJlc3VsdHMgYmVjYXVzZSB3ZSBrbm93IHRoZWlyIHR5cGUsIGJ1
dCB0aGF0IGlzIG5vdAo+IHRydWUgaW4gZ2VuZXJhbC4gIFNvcnJ5LgoKSGksIEpvaG4sCgpBcHBl
bmRlZCBiZWxvdyBpcyBvbmUgd2F5IHRvIGRvIGl0LiAgU2FkbHksIGl0J3Mgbm90IGVsZWdhbnQu
CgpIZXJlIGFyZSBzb21lIHRob3VnaHRzIHRoYXQgb2NjdXIgdG8gbWUgYmFzZWQgb24gd2hhdCBJ
IG5lZWRlZCB0byBkby4KCjEuIEl0IHdvdWxkIGJlIGhlbHBmdWwgaWYgdGhlcmUgd2FzIHNvbWUg
ZWFzeSB3YXkgdG8gZm9yY2UgdGhlCiAgIGRlY2xhcmF0aW9ucyBhbHJlYWR5IHByb2Nlc3NlZCBp
biBhIGZpbGUgdG8gYmUgY29udHJpYnV0ZWQgdG8gdGhlCiAgIGdsb2JhbCBlbnZpcm9ubWVudCBz
byB0aGF0IOKAnHVzZeKAnSBjYW4gdXNlIHRoZW0uICBSaWdodCBub3cgSSBoYXZlIHRvCiAgIHNw
bGl0IG15IFNNTCBpbnRvIHR3byBmaWxlcyBib3RoIHByb2Nlc3NlZCB3aXRoIHVzZUZpbGUgKGJ5
IHRoZQogICBjb21tYW5kLWxpbmUgcHJvY2Vzc2luZykuICBOb3Qgb25seSBpcyB0aGlzIGF3a3dh
cmQsIGJ1dCBpdAogICBpbnRlcmZlcmVzIHdpdGggbW9kdWxhcml0eSBiZWNhdXNlIGFueSBwb3J0
aW9uIG9mIGEgbGFyZ2UgcHJvZ3JhbQogICB0aGF0IHdhbnRzIHRvIHVzZSBwcmV0dHkgcHJpbnRp
bmcgd2lsbCBoYXZlIHRvIGNvbnRyaWJ1dGUgc29tZXRoaW5nCiAgIHRvIHRoZSBmaXJzdCBmaWxl
IHRoYXQgZ2V0cyBsb2FkZWQuCgoyLiBJdCBpcyBhd2t3YXJkIHRvIGhhdmUgdG8gZGVwZW5kIG9u
IHRoZSBzaWRlIGVmZmVjdCBvZiBkZWNsYXJhdGlvbnMKICAgYmVpbmcgcHJpbnRlZCBieSB1c2VG
aWxlLiAgQW1vbmcgb3RoZXIgcHJvYmxlbXMgd2l0aCB0aGlzLCBJIGhhdmUKICAgdG8gc3RyaXAg
b2ZmIHRoZSDigJx2YWwgeCA94oCdIHByZWZpeCBhbmQgdGhlIHR5cGUgc3VmZml4IHRvIGdldCB0
aGUKICAgZGVzaXJlZCBwcmV0dHktcHJpbnRlZCByZXN1bHQuICBJdCB3b3VsZCBiZSByZWFsbHkg
bmljZSBpZiB0aGUKICAgcHJldHR5IHByaW50ZXIgd2VyZSBleHBvcnRlZC4gIEF0IHRoZSB2ZXJ5
IGxlYXN0LCBpdCBzZWVtcyBsaWtlIGl0CiAgIHNob3VsZCBub3QgYmUgdG8gaGFyZCB0byBhbGxv
dyBkaXJlY3RseSByZXF1ZXN0aW5nIHRoZSBwcmV0dHkKICAgcHJpbnRpbmcgb2YgdGhlIHZhbHVl
IGJvdW5kIHRvIGFuIGlkZW50aWZpZXIgaW4gdGhlIGdsb2JhbAogICBlbnZpcm9ubWVudCAod2hv
c2UgdHlwZSB3aWxsIHRoZXJlZm9yZSBhbHJlYWR5IGJlIGtub3duKS4KCjMuIEl0IHdvdWxkIGJl
IG5pY2UgaWYgdGhlcmUgd2FzIHNvbWUgd2F5IHRvIHRlbGwgdGhlIHByZXR0eSBwcmludGVyCiAg
IHRvIHBsYWNlIG5vIGxpbWl0cyBvbiBuZXN0aW5nLiAgUmlnaHQgbm93LCBvbmUgbXVzdCBzcGVj
aWZ5IGxhcmdlCiAgIHBvc2l0aXZlIGxpbWl0cyBhbmQgaG9wZSB0aGV5IGFyZSBiaWcgZW5vdWdo
LiAgKEkgc3VwcG9zZSBvbmUgY291bGQKICAgYXZvaWQgdXNpbmcgYSBiYWQgcmVzdWx0IGJ5IHRl
c3RpbmcgdG8gc2VlIGlmIHRoZSBwcmV0dHkgcHJpbnRlZAogICByZXN1bHQgZ2V0cyBwYXJzZWQg
YXMgdGhlIHNhbWUgdmFsdWUsIGJ1dCBvbmUgc2hvdWxkIG5vdCBuZWVkIHRvIGRvCiAgIHRoYXQu
KQoKSSBob3BlIHRoaXMgbWVzc2FnZSBpcyBzb21laG93IGludGVyZXN0aW5nIGFuZCB1c2VmdWwu
CgotLSAKSm9lCgo+IAktIEpvaG4KPgo+IE9uIEZlYiAyNiwgMjAwOSwgYXQgNzoxMCBBTSwgSm9l
IFdlbGxzIHdyb3RlOgo+Cj4+IFNNTC9OSiBoYXMgYSBidWlsdC1pbiBwcmV0dHkgcHJpbnRlciBm
b3IgcHJpbnRpbmcgdmFsdWVzIG9mIHZhcmlvdXMKPj4gdHlwZXMgdXNlZCBieSB0aGUgdG9wLWxl
dmVsIFJFUEwuCj4+IAo+PiBIb3cgZG8gSSBpbnZva2UgaXQgZnJvbSBhIHByb2dyYW0/Cj4+IAo+
PiBUaGVyZSBpcyBhIGZ1bmN0aW9uIFByZXR0eVByaW50LnBwX3RvX3N0cmluZyBvZiB0eXBlIGlu
dCAtPiAoc3RyZWFtIC0+Cj4+ICdhIC0+IHVuaXQpIC0+ICdhIC0+IHN0cmluZywgYnV0IHRvIHVz
ZSBpdCBJIHdvdWxkIGhhdmUgdG8gZ2l2ZSBpdCBhCj4+IHZhbHVlIG9mIHR5cGUgKHN0cmVhbSAt
PiAnYSAtPiB1bml0KS4gIEhvdyBkbyBJIGNvbnN0cnVjdCB0aGlzCj4+IGFyZ3VtZW50Pwo+PiAK
Pj4gVG8gbWFrZSBteSBxdWVzdGlvbiBjb25jcmV0ZSwgaW4gdGhlIGZvbGxvd2luZyBTTUwgcHJv
Z3JhbSwgYnkgd2hhdCBkbwo+PiBJIHJlcGxhY2Ug4oCcbWFnaWNfcHJldHR5X3ByaW50ZXLigJ0g
dG8gbWFrZSB0aGUgcHJvZ3JhbSBwcmludCDigJxIYXBweSwKPj4gaGFwcHksIGpveSwgam95IeKA
nT8KPj4gCj4+ICBkYXRhdHlwZSBYeXp6eSA9IEMgb2YgWHl6enkgKiBYeXp6eSB8IEQgb2Ygc3Ry
aW5nCj4+IAo+PiAgdmFsIHBsdWdoID0gQyAoRCAiaGVsbG8iLEQgInNhaWxvciIpCj4+ICB2YWwg
cGx1Z2hfc3RyaW5nID0gIkMgKEQgXCJoZWxsb1wiLEQgXCJzYWlsb3JcIikiCj4+IAo+PiAgaWYg
KChtYWdpY19wcmV0dHlfcHJpbnRlciBwbHVnaCkgPSBwbHVnaF9zdHJpbmcpCj4+ICAgICB0aGVu
IChwcmludCAiSGFwcHksIGhhcHB5LCBqb3ksIGpveSFcbiIpCj4+ICAgICBlbHNlIChyYWlzZSAo
RmFpbCAibWFnaWMgcHJldHR5IHByaW50ZXIgZ2F2ZSB3cm9uZyByZXN1bHQiKSkKPj4gCj4+IEkn
dmUgYnJvd3NlZCBhcm91bmQgdGhlIHNvdXJjZSBmb3IgYSB3aGlsZSBhbmQgZmFpbGVkIHRvIGZp
bmQgd2hhdCBJCj4+IG5lZWQuICBBbnkgaGludHMgd291bGQgYmUgaGVscGZ1bC4KPj4gCj4+IEkn
ZCByYXRoZXIgbm90IHVzZSBCYWNrZW5kLkludGVyYWN0LmV2YWxTdHJlYW0gYW5kIGNhcHR1cmUg
dGhlIG91dHB1dAo+PiBzb21laG93LCBidXQgaWYgdGhhdCBpcyBteSBvbmx5IG9wdGlvbiBJIHdv
dWxkIGJlIGdyYXRlZnVsIGZvciBhbgo+PiBleGFtcGxlIG9mIGhvdyB0byBkbyBpdC4KCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KIyEvYmluL2Jhc2gKIyAtKi1TTUwtKi0KIygqClRtcERpcj0iYG1rdGVtcCAtZCAt
dCBzbWxuai1zY3JpcHQuWFhYWFhYYCIKQ2xlYW5VcCAoKSB7IHJtIC1yICIkVG1wRGlyIjsgfQp0
cmFwICdDbGVhblVwOyBleGl0IDEnIElOVCBURVJNIEhVUAp0cmFwIENsZWFuVXAgRVhJVApsbiAt
cyAvZGV2L2ZkLzQgIiRUbXBEaXIvYS5zbWwiCmxuIC1zIC9kZXYvZmQvNSAiJFRtcERpci9iLnNt
bCIKIyopCnNtbCAtQ2NtLnZlcmJvc2U9ZmFsc2UgIiRUbXBEaXIvYS5zbWwiICIkVG1wRGlyL2Iu
c21sIiBYeXp6eVBsdWdoICIkMCIgIiRAIiAzPCYwIDw8J0FBQUEnIDQ8JjAtIDw8J0JCQkInIDU8
JjAtIDA8JjMtCgooKiBDb250cm9sLlByaW50Lm91dCA6PSB7IGZsdXNoID0gZm4gKCkgPT4gKCks
IHNheSA9IGZuIF8gPT4gKCkgfTsgKikKCmRhdGF0eXBlIFh5enp5ID0gQyBvZiBYeXp6eSAqIFh5
enp5IHwgRCBvZiBzdHJpbmcKdmFsIHh5enp5X3RtcCA6IFh5enp5IG9wdGlvbiByZWYgPSByZWYg
Tk9ORTsKCkFBQUEKCmZ1biBldmFsU3RyaW5nIHMgPQogIEJhY2tlbmQuSW50ZXJhY3QuZXZhbFN0
cmVhbSAoVGV4dElPLm9wZW5TdHJpbmcgcywgRW52UmVmLmNvbWJpbmVkICgpKTsKCmZ1biB1bndp
bmRfcHJvdGVjdCBib2R5IHVud2luZF9mbiA9CiAgICAoICAoYm9keSAoKSkKICAgICBiZWZvcmUK
ICAgICAgICgqIEVFRUshICBJZiB0aGlzIHVzZSBvZiB1bndpbmRfZm4gcmFpc2VzIGFuIGV4Y2Vw
dGlvbiwgdGhlbiB1bndpbmRfZm4gd2lsbCBiZSBydW4gYWdhaW4gZnJvbSB0aGUgZXhjZXB0aW9u
IGhhbmRsZXIuICopCiAgICAgICAodW53aW5kX2ZuICgpKSkKICBoYW5kbGUKICAgIGUgPT4gKHVu
d2luZF9mbiAoKTsgcmFpc2UgZSk7CgpmdW4gY2FwdHVyZVByaW50aW5nIGYgPQogIGxldAogICAg
dmFsIG9sZF9vdXQgPSAhIENvbnRyb2wuUHJpbnQub3V0CiAgICB2YWwgZGF0YSA9IHJlZiAiIgog
IGluCiAgICBDb250cm9sLlByaW50Lm91dCA6PQogICAgICB7IGZsdXNoID0gKGZuICgpID0+ICgp
KSwKICAgICAgICBzYXkgPSAoZm4gcyA9PiBkYXRhIDo9ICFkYXRhIF4gcykgfTsKICAgIHVud2lu
ZF9wcm90ZWN0CiAgICAgIChmbiAoKSA9PiAoZiAoKTsgIWRhdGEpKQogICAgICAoZm4gKCkgPT4g
KENvbnRyb2wuUHJpbnQub3V0IDo9IG9sZF9vdXQpKQogIGVuZDsKCmZ1biBmb3JtYXRfeHl6enkg
eHl6ID0KICAoeHl6enlfdG1wIDo9IFNPTUUgeHl6OwogICAoKiAqKiogVE9ETzogbXVzdCBlbnN1
cmUgcHJpbnRpbmcgaXMgbm90IHRydW5jYXRlZCBkdWUgdG8gZGVwdGgvbGVuZ3RoL2V0Yy4gbGlt
aXRzICopCiAgIGxldCB2YWwgZSA9ICJ2YWwgeCA9IHZhbE9mICghIHh5enp5X3RtcCk7IgogICAg
ICAgKCogdmFsIF8gPSBwcmludCAoZV4iXG4iKSAqKQogICAgICAgdmFsIHMgPSBjYXB0dXJlUHJp
bnRpbmcgKGZuICgpID0+IGV2YWxTdHJpbmcgZSkKICAgaW4gKCogdGhlIGxlbmd0aCBvZiAidmFs
IHggPSAiIGlzIDgsIHRoZSBsZW5ndGggb2YgIiA6IFh5enp5XG4iIGlzIDkgKikKICAgICAgU3Ry
aW5nLnN1YnN0cmluZyAocywgOCwgKFN0cmluZy5zaXplIHMpIC0gOSAtIDgpCiAgIGVuZCkKCnZh
bCBwbHVnaCA9IEMgKEQgImhlbGxvIixEICJzYWlsb3IiKQp2YWwgcGx1Z2hfc3RyaW5nID0gIkMg
KEQgXCJoZWxsb1wiLEQgXCJzYWlsb3JcIikiCnZhbCB6ID0gZm9ybWF0X3h5enp5IHBsdWdoOwpp
ZiAoeiA9IHBsdWdoX3N0cmluZykKICAgdGhlbiAocHJpbnQgIkhhcHB5LCBoYXBweSwgam95LCBq
b3khXG4iKQogICBlbHNlIChyYWlzZSAoRmFpbCAibWFnaWMgcHJldHR5IHByaW50ZXIgZ2F2ZSB3
cm9uZyByZXN1bHQiKSk7CgppZ25vcmUgKE9TLlByb2Nlc3MuZXhpdCBPUy5Qcm9jZXNzLnN1Y2Nl
c3MpOwoKQkJCQgoKCi0tIApIZXJpb3QtV2F0dCBVbml2ZXJzaXR5IGlzIGEgU2NvdHRpc2ggY2hh
cml0eQpyZWdpc3RlcmVkIHVuZGVyIGNoYXJpdHkgbnVtYmVyIFNDMDAwMjc4LgoKCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpBcHBzIGJ1aWx0IHdpdGggdGhlIEFkb2JlKFIpIEZsZXgoUikgZnJhbWV3
b3JrIGFuZCBGbGV4IEJ1aWxkZXIoVE0pIGFyZQpwb3dlcmluZyBXZWIgMi4wIHdpdGggZW5nYWdp
bmcsIGNyb3NzLXBsYXRmb3JtIGNhcGFiaWxpdGllcy4gUXVpY2tseSBhbmQKZWFzaWx5IGJ1aWxk
IHlvdXIgUklBcyB3aXRoIEZsZXggQnVpbGRlciwgdGhlIEVjbGlwc2UoVE0pYmFzZWQgZGV2ZWxv
cG1lbnQKc29mdHdhcmUgdGhhdCBlbmFibGVzIGludGVsbGlnZW50IGNvZGluZyBhbmQgc3RlcC10
aHJvdWdoIGRlYnVnZ2luZy4KRG93bmxvYWQgdGhlIGZyZWUgNjAgZGF5IHRyaWFsLiBodHRwOi8v
cC5zZi5uZXQvc2Z1L3d3dy1hZG9iZS1jb20KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KU21sbmotbGlzdCBtYWlsaW5nIGxpc3QKU21sbmotbGlzdEBsaXN0
cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlz
dGluZm8vc21sbmotbGlzdAo=