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=