Re: how to invoke SML/NJ's built-in pretty printer from a program?
Joe Wells <[email protected]> Sun, 22 Mar 2009 11:54:33 +0000
| Newsgroups | gmane.comp.lang.sml.smlnj |
|---|---|
| Message-ID | <[email protected]> |
Sm9lIFdlbGxzIDxqYndAbWFjcy5ody5hYy51az4gd3JpdGVzOgoKPiBIZXJlIGFyZSBzb21lIHRo b3VnaHRzIHRoYXQgb2NjdXIgdG8gbWUgYmFzZWQgb24gd2hhdCBJIG5lZWRlZCB0bwo+IGRvLgo+ Cj4gMS4gSXQgd291bGQgYmUgaGVscGZ1bCBpZiB0aGVyZSB3YXMgc29tZSBlYXN5IHdheSB0byBm b3JjZSB0aGUKPiAgICBkZWNsYXJhdGlvbnMgYWxyZWFkeSBwcm9jZXNzZWQgaW4gYSBmaWxlIHRv IGJlIGNvbnRyaWJ1dGVkIHRvIHRoZQo+ICAgIGdsb2JhbCBlbnZpcm9ubWVudCBzbyB0aGF0IOKA nHVzZeKAnSBjYW4gdXNlIHRoZW0uICBSaWdodCBub3cgSSBoYXZlCj4gICAgdG8gc3BsaXQgbXkg U01MIGludG8gdHdvIGZpbGVzIGJvdGggcHJvY2Vzc2VkIHdpdGggdXNlRmlsZSAoYnkKPiAgICB0 aGUgY29tbWFuZC1saW5lIHByb2Nlc3NpbmcpLiAgTm90IG9ubHkgaXMgdGhpcyBhd2t3YXJkLCBi dXQgaXQKPiAgICBpbnRlcmZlcmVzIHdpdGggbW9kdWxhcml0eSBiZWNhdXNlIGFueSBwb3J0aW9u IG9mIGEgbGFyZ2UgcHJvZ3JhbQo+ICAgIHRoYXQgd2FudHMgdG8gdXNlIHByZXR0eSBwcmludGlu ZyB3aWxsIGhhdmUgdG8gY29udHJpYnV0ZQo+ICAgIHNvbWV0aGluZyB0byB0aGUgZmlyc3QgZmls ZSB0aGF0IGdldHMgbG9hZGVkLgoKT2theSwgSSBub3cgaGF2ZSBhIGJldHRlciB1bmRlcnN0YW5k aW5nIG9mIHRoaXMgaXNzdWUuCgpXaGF0IEkgd2FzIGRvaW5nIGluIG15IHByZXZpb3VzIG1lc3Nh Z2UgaW52b2x2ZWQgdGhpcyBhcnJhbmdlbWVudCBvZgpuZXN0ZWQgZnVuY3Rpb24gY2FsbHM6Cgog IHByb2NDbWRMaW5lIChDTSdzIGZ1bmN0aW9uIHRvIGhhbmRsZSBjb21tYW5kLWxpbmUgYXJndW1l bnRzKQogICB8CiAgICstdXNlRmlsZQogICB8CiAgICstdXNlRmlsZQogICAgICB8CiAgICAgICst ZXZhbFN0cmVhbSAodGhlIG9uZSBmcm9tIEludGVyYWN0LCBub3QgdGhlIG9uZSBmcm9tIEV2YWxM b29wKQoKQmVjYXVzZSBvZiBzb21lIGZhaWx1cmVzIEkgZW5jb3VudGVyZWQsIEkgaGFkIGdhaW5l ZCB0aGUgd3JvbmcKdW5kZXJzdGFuZGluZyB0aGF0IGRlY2xhcmF0aW9ucyBwcm9jZXNzZWQgYnkg YW4gaW52b2NhdGlvbiBvZiB1c2VGaWxlCndvdWxkIG5vdCBiZSBhdmFpbGFibGUgdG8gYSBuZXN0 ZWQgdXNlRmlsZS4gIFRoYXQgaXMsIGdpdmVuIGEgc3RhY2sgb2YKZnVuY3Rpb24gY2FsbHMgbGlr ZQoKICB1c2VGaWxlICJhLnNtbCIKICAgfAogICArLXVzZUZpbGUgImIuc21sIgoKSSBoYWQgcmVh Y2hlZCB0aGUgd3JvbmcgdW5kZXJzdGFuZGluZyB0aGF0IHRoZSBkZWNsYXJhdGlvbnMgaW4gYi5z bWwKd291bGQgbm90IGJlIGFibGUgdG8gdXNlIGRhdGF0eXBlcyBvciB2YWx1ZSBpZGVudGlmaWVy cyBkZWNsYXJlZCBpbgphLnNtbCBwcmlvciB0byB0aGUgaW52b2NhdGlvbiBvZiB1c2VGaWxlLgoK SSBrbm93IHRoYXQgdGhpcyBwcm9ibGVtIHJlYWxseSBkb2VzIGhhcHBlbiB3aGVuIHRoZSAodXNl RmlsZSAiYi5zbWwiKQppbnZvY2F0aW9uIGlzIGluc2lkZSB0aGUgc2FtZSB0b3AtbGV2ZWwgZm9y bSBhcyB0aGUgZGVjbGFyYXRpb25zIHRoYXQKYi5zbWwgd2FudHMgdG8gdXNlLCBidXQgSSdtIHBy ZXR0eSBzdXJlIEkgd2FzIG5vdCBkb2luZyB0aGlzLCBzbyBJIGFtCmNvbmZ1c2VkIGFzIHRvIGhv dyBJIGdvdCBjb25mdXNlZC4KClNvIGFueXdheSBJIG5vdyB1bmRlcnN0YW5kIHRoYXQgdGhpcyB3 b3JrcyBmaW5lLgoKVGhlIG90aGVyIGlzc3VlcyBJIHJhaXNlZCBhcmUgc3RpbGwgYSBjb25jZXJu LiAgSXMgdGhlcmUgYW55dGhpbmcgdGhhdApjYW4gYmUgZG9uZSBhYm91dCB0aGVtPwoKPiAyLiBJ dCBpcyBhd2t3YXJkIHRvIGhhdmUgdG8gZGVwZW5kIG9uIHRoZSBzaWRlIGVmZmVjdCBvZgo+ICAg IGRlY2xhcmF0aW9ucyBiZWluZyBwcmludGVkIGJ5IHVzZUZpbGUuICBBbW9uZyBvdGhlciBwcm9i bGVtcyB3aXRoCj4gICAgdGhpcywgSSBoYXZlIHRvIHN0cmlwIG9mZiB0aGUg4oCcdmFsIHggPeKA nSBwcmVmaXggYW5kIHRoZSB0eXBlCj4gICAgc3VmZml4IHRvIGdldCB0aGUgZGVzaXJlZCBwcmV0 dHktcHJpbnRlZCByZXN1bHQuICBJdCB3b3VsZCBiZQo+ICAgIHJlYWxseSBuaWNlIGlmIHRoZSBw cmV0dHkgcHJpbnRlciB3ZXJlIGV4cG9ydGVkLiAgQXQgdGhlIHZlcnkKPiAgICBsZWFzdCwgaXQg c2VlbXMgbGlrZSBpdCBzaG91bGQgbm90IGJlIHRvIGhhcmQgdG8gYWxsb3cgZGlyZWN0bHkKPiAg ICByZXF1ZXN0aW5nIHRoZSBwcmV0dHkgcHJpbnRpbmcgb2YgdGhlIHZhbHVlIGJvdW5kIHRvIGFu Cj4gICAgaWRlbnRpZmllciBpbiB0aGUgZ2xvYmFsIGVudmlyb25tZW50ICh3aG9zZSB0eXBlIHdp bGwgdGhlcmVmb3JlCj4gICAgYWxyZWFkeSBiZSBrbm93bikuCj4KPiAzLiBJdCB3b3VsZCBiZSBu aWNlIGlmIHRoZXJlIHdhcyBzb21lIHdheSB0byB0ZWxsIHRoZSBwcmV0dHkgcHJpbnRlcgo+ICAg IHRvIHBsYWNlIG5vIGxpbWl0cyBvbiBuZXN0aW5nLiAgUmlnaHQgbm93LCBvbmUgbXVzdCBzcGVj aWZ5IGxhcmdlCj4gICAgcG9zaXRpdmUgbGltaXRzIGFuZCBob3BlIHRoZXkgYXJlIGJpZyBlbm91 Z2guICAoSSBzdXBwb3NlIG9uZQo+ICAgIGNvdWxkIGF2b2lkIHVzaW5nIGEgYmFkIHJlc3VsdCBi eSB0ZXN0aW5nIHRvIHNlZSBpZiB0aGUgcHJldHR5Cj4gICAgcHJpbnRlZCByZXN1bHQgZ2V0cyBw YXJzZWQgYXMgdGhlIHNhbWUgdmFsdWUsIGJ1dCBvbmUgc2hvdWxkIG5vdAo+ICAgIG5lZWQgdG8g ZG8gdGhhdC4pCgpUaGFua3MgZm9yIHlvdXIgdGltZSBpbiBhbnkgcmVzcG9uc2VzIHlvdSBtYWtl IHRvIG15IG1lc3NhZ2UuCgotLSAKSm9lCgo+PiBPbiBGZWIgMjYsIDIwMDksIGF0IDc6MTAgQU0s IEpvZSBXZWxscyB3cm90ZToKPj4KPj4+IFNNTC9OSiBoYXMgYSBidWlsdC1pbiBwcmV0dHkgcHJp bnRlciBmb3IgcHJpbnRpbmcgdmFsdWVzIG9mIHZhcmlvdXMKPj4+IHR5cGVzIHVzZWQgYnkgdGhl IHRvcC1sZXZlbCBSRVBMLgo+Pj4gCj4+PiBIb3cgZG8gSSBpbnZva2UgaXQgZnJvbSBhIHByb2dy YW0/Cj4+PiAKPj4+IFRoZXJlIGlzIGEgZnVuY3Rpb24gUHJldHR5UHJpbnQucHBfdG9fc3RyaW5n IG9mIHR5cGUgaW50IC0+IChzdHJlYW0gLT4KPj4+ICdhIC0+IHVuaXQpIC0+ICdhIC0+IHN0cmlu ZywgYnV0IHRvIHVzZSBpdCBJIHdvdWxkIGhhdmUgdG8gZ2l2ZSBpdCBhCj4+PiB2YWx1ZSBvZiB0 eXBlIChzdHJlYW0gLT4gJ2EgLT4gdW5pdCkuICBIb3cgZG8gSSBjb25zdHJ1Y3QgdGhpcwo+Pj4g YXJndW1lbnQ/Cj4+PiAKPj4+IFRvIG1ha2UgbXkgcXVlc3Rpb24gY29uY3JldGUsIGluIHRoZSBm b2xsb3dpbmcgU01MIHByb2dyYW0sIGJ5IHdoYXQgZG8KPj4+IEkgcmVwbGFjZSDigJxtYWdpY19w cmV0dHlfcHJpbnRlcuKAnSB0byBtYWtlIHRoZSBwcm9ncmFtIHByaW50IOKAnEhhcHB5LAo+Pj4g aGFwcHksIGpveSwgam95IeKAnT8KPj4+IAo+Pj4gIGRhdGF0eXBlIFh5enp5ID0gQyBvZiBYeXp6 eSAqIFh5enp5IHwgRCBvZiBzdHJpbmcKPj4+IAo+Pj4gIHZhbCBwbHVnaCA9IEMgKEQgImhlbGxv IixEICJzYWlsb3IiKQo+Pj4gIHZhbCBwbHVnaF9zdHJpbmcgPSAiQyAoRCBcImhlbGxvXCIsRCBc InNhaWxvclwiKSIKPj4+IAo+Pj4gIGlmICgobWFnaWNfcHJldHR5X3ByaW50ZXIgcGx1Z2gpID0g cGx1Z2hfc3RyaW5nKQo+Pj4gICAgIHRoZW4gKHByaW50ICJIYXBweSwgaGFwcHksIGpveSwgam95 IVxuIikKPj4+ICAgICBlbHNlIChyYWlzZSAoRmFpbCAibWFnaWMgcHJldHR5IHByaW50ZXIgZ2F2 ZSB3cm9uZyByZXN1bHQiKSkKPj4+IAo+Pj4gSSd2ZSBicm93c2VkIGFyb3VuZCB0aGUgc291cmNl IGZvciBhIHdoaWxlIGFuZCBmYWlsZWQgdG8gZmluZCB3aGF0IEkKPj4+IG5lZWQuICBBbnkgaGlu dHMgd291bGQgYmUgaGVscGZ1bC4KPj4+IAo+Pj4gSSdkIHJhdGhlciBub3QgdXNlIEJhY2tlbmQu SW50ZXJhY3QuZXZhbFN0cmVhbSBhbmQgY2FwdHVyZSB0aGUgb3V0cHV0Cj4+PiBzb21laG93LCBi dXQgaWYgdGhhdCBpcyBteSBvbmx5IG9wdGlvbiBJIHdvdWxkIGJlIGdyYXRlZnVsIGZvciBhbgo+ Pj4gZXhhbXBsZSBvZiBob3cgdG8gZG8gaXQuCj4KPiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gIyEvYmluL2Jh c2gKPiAjIC0qLVNNTC0qLQo+ICMoKgo+IFRtcERpcj0iYG1rdGVtcCAtZCAtdCBzbWxuai1zY3Jp cHQuWFhYWFhYYCIKPiBDbGVhblVwICgpIHsgcm0gLXIgIiRUbXBEaXIiOyB9Cj4gdHJhcCAnQ2xl YW5VcDsgZXhpdCAxJyBJTlQgVEVSTSBIVVAKPiB0cmFwIENsZWFuVXAgRVhJVAo+IGxuIC1zIC9k ZXYvZmQvNCAiJFRtcERpci9hLnNtbCIKPiBsbiAtcyAvZGV2L2ZkLzUgIiRUbXBEaXIvYi5zbWwi Cj4gIyopCj4gc21sIC1DY20udmVyYm9zZT1mYWxzZSAiJFRtcERpci9hLnNtbCIgIiRUbXBEaXIv Yi5zbWwiIFh5enp5UGx1Z2ggIiQwIiAiJEAiIDM8JjAgPDwnQUFBQScgNDwmMC0gPDwnQkJCQicg NTwmMC0gMDwmMy0KPgo+ICgqIENvbnRyb2wuUHJpbnQub3V0IDo9IHsgZmx1c2ggPSBmbiAoKSA9 PiAoKSwgc2F5ID0gZm4gXyA9PiAoKSB9OyAqKQo+Cj4gZGF0YXR5cGUgWHl6enkgPSBDIG9mIFh5 enp5ICogWHl6enkgfCBEIG9mIHN0cmluZwo+IHZhbCB4eXp6eV90bXAgOiBYeXp6eSBvcHRpb24g cmVmID0gcmVmIE5PTkU7Cj4KPiBBQUFBCj4KPiBmdW4gZXZhbFN0cmluZyBzID0KPiAgIEJhY2tl bmQuSW50ZXJhY3QuZXZhbFN0cmVhbSAoVGV4dElPLm9wZW5TdHJpbmcgcywgRW52UmVmLmNvbWJp bmVkICgpKTsKPgo+IGZ1biB1bndpbmRfcHJvdGVjdCBib2R5IHVud2luZF9mbiA9Cj4gICAgICgg IChib2R5ICgpKQo+ICAgICAgYmVmb3JlCj4gICAgICAgICgqIEVFRUshICBJZiB0aGlzIHVzZSBv ZiB1bndpbmRfZm4gcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlbiB1bndpbmRfZm4gd2lsbCBiZSBy dW4gYWdhaW4gZnJvbSB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuICopCj4gICAgICAgICh1bndpbmRf Zm4gKCkpKQo+ICAgaGFuZGxlCj4gICAgIGUgPT4gKHVud2luZF9mbiAoKTsgcmFpc2UgZSk7Cj4K PiBmdW4gY2FwdHVyZVByaW50aW5nIGYgPQo+ICAgbGV0Cj4gICAgIHZhbCBvbGRfb3V0ID0gISBD b250cm9sLlByaW50Lm91dAo+ICAgICB2YWwgZGF0YSA9IHJlZiAiIgo+ICAgaW4KPiAgICAgQ29u dHJvbC5QcmludC5vdXQgOj0KPiAgICAgICB7IGZsdXNoID0gKGZuICgpID0+ICgpKSwKPiAgICAg ICAgIHNheSA9IChmbiBzID0+IGRhdGEgOj0gIWRhdGEgXiBzKSB9Owo+ICAgICB1bndpbmRfcHJv dGVjdAo+ICAgICAgIChmbiAoKSA9PiAoZiAoKTsgIWRhdGEpKQo+ICAgICAgIChmbiAoKSA9PiAo Q29udHJvbC5QcmludC5vdXQgOj0gb2xkX291dCkpCj4gICBlbmQ7Cj4KPiBmdW4gZm9ybWF0X3h5 enp5IHh5eiA9Cj4gICAoeHl6enlfdG1wIDo9IFNPTUUgeHl6Owo+ICAgICgqICoqKiBUT0RPOiBt dXN0IGVuc3VyZSBwcmludGluZyBpcyBub3QgdHJ1bmNhdGVkIGR1ZSB0byBkZXB0aC9sZW5ndGgv ZXRjLiBsaW1pdHMgKikKPiAgICBsZXQgdmFsIGUgPSAidmFsIHggPSB2YWxPZiAoISB4eXp6eV90 bXApOyIKPiAgICAgICAgKCogdmFsIF8gPSBwcmludCAoZV4iXG4iKSAqKQo+ICAgICAgICB2YWwg cyA9IGNhcHR1cmVQcmludGluZyAoZm4gKCkgPT4gZXZhbFN0cmluZyBlKQo+ICAgIGluICgqIHRo ZSBsZW5ndGggb2YgInZhbCB4ID0gIiBpcyA4LCB0aGUgbGVuZ3RoIG9mICIgOiBYeXp6eVxuIiBp cyA5ICopCj4gICAgICAgU3RyaW5nLnN1YnN0cmluZyAocywgOCwgKFN0cmluZy5zaXplIHMpIC0g OSAtIDgpCj4gICAgZW5kKQo+Cj4gdmFsIHBsdWdoID0gQyAoRCAiaGVsbG8iLEQgInNhaWxvciIp Cj4gdmFsIHBsdWdoX3N0cmluZyA9ICJDIChEIFwiaGVsbG9cIixEIFwic2FpbG9yXCIpIgo+IHZh bCB6ID0gZm9ybWF0X3h5enp5IHBsdWdoOwo+IGlmICh6ID0gcGx1Z2hfc3RyaW5nKQo+ICAgIHRo ZW4gKHByaW50ICJIYXBweSwgaGFwcHksIGpveSwgam95IVxuIikKPiAgICBlbHNlIChyYWlzZSAo RmFpbCAibWFnaWMgcHJldHR5IHByaW50ZXIgZ2F2ZSB3cm9uZyByZXN1bHQiKSk7Cj4KPiBpZ25v cmUgKE9TLlByb2Nlc3MuZXhpdCBPUy5Qcm9jZXNzLnN1Y2Nlc3MpOwo+Cj4gQkJCQgo+Cj4KPiAt LSAKPiBIZXJpb3QtV2F0dCBVbml2ZXJzaXR5IGlzIGEgU2NvdHRpc2ggY2hhcml0eQo+IHJlZ2lz dGVyZWQgdW5kZXIgY2hhcml0eSBudW1iZXIgU0MwMDAyNzguCj4KPgo+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+IEFwcHMgYnVpbHQgd2l0aCB0aGUgQWRvYmUoUikgRmxleChSKSBmcmFtZXdvcmsg YW5kIEZsZXggQnVpbGRlcihUTSkgYXJlCj4gcG93ZXJpbmcgV2ViIDIuMCB3aXRoIGVuZ2FnaW5n LCBjcm9zcy1wbGF0Zm9ybSBjYXBhYmlsaXRpZXMuIFF1aWNrbHkgYW5kCj4gZWFzaWx5IGJ1aWxk IHlvdXIgUklBcyB3aXRoIEZsZXggQnVpbGRlciwgdGhlIEVjbGlwc2UoVE0pYmFzZWQgZGV2ZWxv cG1lbnQKPiBzb2Z0d2FyZSB0aGF0IGVuYWJsZXMgaW50ZWxsaWdlbnQgY29kaW5nIGFuZCBzdGVw LXRocm91Z2ggZGVidWdnaW5nLgo+IERvd25sb2FkIHRoZSBmcmVlIDYwIGRheSB0cmlhbC4gaHR0 cDovL3Auc2YubmV0L3NmdS93d3ctYWRvYmUtY29tCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBTbWxuai1saXN0IG1haWxpbmcgbGlzdAo+IFNtbG5q LWxpc3RAbGlzdHMuc291cmNlZm9yZ2UubmV0Cj4gaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5u ZXQvbGlzdHMvbGlzdGluZm8vc21sbmotbGlzdAoKCi0tIApIZXJpb3QtV2F0dCBVbml2ZXJzaXR5 IGlzIGEgU2NvdHRpc2ggY2hhcml0eQpyZWdpc3RlcmVkIHVuZGVyIGNoYXJpdHkgbnVtYmVyIFND MDAwMjc4LgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBcHBzIGJ1aWx0IHdpdGggdGhlIEFkb2Jl KFIpIEZsZXgoUikgZnJhbWV3b3JrIGFuZCBGbGV4IEJ1aWxkZXIoVE0pIGFyZQpwb3dlcmluZyBX ZWIgMi4wIHdpdGggZW5nYWdpbmcsIGNyb3NzLXBsYXRmb3JtIGNhcGFiaWxpdGllcy4gUXVpY2ts eSBhbmQKZWFzaWx5IGJ1aWxkIHlvdXIgUklBcyB3aXRoIEZsZXggQnVpbGRlciwgdGhlIEVjbGlw c2UoVE0pYmFzZWQgZGV2ZWxvcG1lbnQKc29mdHdhcmUgdGhhdCBlbmFibGVzIGludGVsbGlnZW50 IGNvZGluZyBhbmQgc3RlcC10aHJvdWdoIGRlYnVnZ2luZy4KRG93bmxvYWQgdGhlIGZyZWUgNjAg ZGF5IHRyaWFsLiBodHRwOi8vcC5zZi5uZXQvc2Z1L3d3dy1hZG9iZS1jb20KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KU21sbmotbGlzdCBtYWlsaW5nIGxp c3QKU21sbmotbGlzdEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vm b3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vc21sbmotbGlzdAo=