Re: functional IO in a SHA1 implementation
Henry Cejtin <[email protected]> Wed, 6 Feb 2019 21:45:19 -0600
| Newsgroups | gmane.comp.lang.ml.mlton.user |
|---|---|
| Message-ID | <CAPKXxCpaZDrqzN+JNgNdfnFfa9jvGw1iRqU5RXLee_2Tf8R3UQ@mail.gmail.com> |
SXQgaXMgZGVmaW5pdGVseSBhbm5veWluZyBmb3IgdGhlIHVuZGVybHlpbmcgeHh4SU8uaW5zdHJl YW0gdG8gaG9sZCBvbgp0byBzdHVmZiB3aGVuIHlvdSBhcmUgdXNpbmcgdGhlIHh4eElPLlN0cmVh bUlPLmluc3RyZWFtIGZvciBhIHdoaWxlLgpPbmUgdGhpbmcgdGhhdCBJIG9mdGVuIGRvIGlzIHRv IGNyZWF0ZSBhbiBlbXB0eSAoL2Rldi9udWxsLWxpa2UpCnh4eElPLlN0cmVhbUlPLmluc3RyZWFt LCBhbmQgd2hlbiBJIGdldCBpdAoodmlhIHh4eElPLmdldEluc3RyZWFtKSwgaW1tZWRpYXRlbHkg YWZ0ZXJ3b3JkcyB1c2UgeHh4SU8uc2V0SW5zdHJlYW0KdG8gdGhlIGVtcHR5IG9uZS4KVGhlbiwg d2hlbiBJIGFtIGZpbmlzaGVkIHVzaW5nIHRoZSBmdW5jdGlvbmFsIHN0cmVhbSwgSSB1c2UKeHh4 SU8uc2V0SW5zdHJlYW0gdG8gc3Rhc2ggaXQgYmFjayBpbiB0aGUgaW1wZXJhdGl2ZSBzdHJlYW0u CgpUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGluIHZlcnNpb25zIG9mIE1MIHRoYXQgaGF2 ZSBhbiBpbnRlcmFjdGl2ZQp0b3AtbGV2ZWwsIG9yIHdoaWNoIGFyZSBub3Qgc2FmZS1mb3Itc3Bh Y2UuCkZvciB0aGVtLCBldmVuIGlmIHlvdSBuZXZlciByZWZlciB0byB0aGUgaW1wZXJhdGl2ZSBz dHJlYW0gYWdhaW4sCml0IHdpbGwgcHJvYmFibHkga2VlcCBpdCBhbGl2ZSBzaW5jZSBpdCBpcyBi b3VuZCBhdCB0aGUgdG9wLWxldmVsLgoKT24gV2VkLCBGZWIgNiwgMjAxOSBhdCA0OjA2IFBNIDxN aWNoYWVsLk5vcnJpc2hAZGF0YTYxLmNzaXJvLmF1PiB3cm90ZToKPgo+IEkgYW0gdXNpbmcgaW5w dXROLCBhbmQgdGhlIHNwZWVkIGlzIG5vdCBzbyBiYWQsIGJ1dCB0aGUgZXhjZXNzaXZlIG1lbW9y eSB1c2FnZSBtdXN0IGp1c3QgYmUgYmVjYXVzZSB0aGUgZHJpdmVyIGlzIGluZGVlZCBob2xkaW5n IG9udG8gdGhhdCBvbGQgdmFsdWUgb2YgdGhlIGlucHV0IHN0cmVhbSwgYXMgTWF0dGhldyBkaWFn bm9zZWQuCj4KPiBJIHdpbGwgaW5kZWVkIGp1c3Qgc2hlbGwgb3V0IHRvIHNoYXN1bSBhcyBteSBk ZWZhdWx0IGltcGxlbWVudGF0aW9uLgo+Cj4gTWljaGFlbAo+Cj4g77u/T24gNy8yLzE5LCAwMTo0 NCwgIkpvaG4gUmVwcHkiIDxqaHJAY3MudWNoaWNhZ28uZWR1PiB3cm90ZToKPgo+ICAgICA+IERh dGU6IFdlZCwgNiBGZWIgMjAxOSAwMDozOTowOSArMDAwMAo+ICAgICA+IEZyb206IDxNaWNoYWVs Lk5vcnJpc2hAZGF0YTYxLmNzaXJvLmF1Pgo+ICAgICA+IFRvOiA8bWx0b24tdXNlckBtbHRvbi5v cmc+Cj4gICAgID4gU3ViamVjdDogW01MdG9uLXVzZXJdIGZ1bmN0aW9uYWwgSU8gaW4gYSBTSEEx IGltcGxlbWVudGF0aW9uCj4gICAgID4gTWVzc2FnZS1JRDogPDg0MjU2NjcyLTJCNTQtNDY3RS04 ODFFLTk4ODgzMEE1MUI0QUBkYXRhNjEuY3Npcm8uYXU+Cj4gICAgID4gQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PSJVVEYtOCIKPiAgICAgPgo+ICAgICA+IFRoZXJlIG1heSBiZSBi ZXR0ZXIgaW1wbGVtZW50YXRpb25zIG91dCB0aGVyZSwgYnV0IGxvb2tpbmcgZm9yIGEgU0hBMSBp biBTTUwsIEkgZm91bmQKPiAgICAgPgo+ICAgICA+ICBnaXRAZ2l0aHViLmNvbTpzcmRxdHkvc21s LXNoYTEuZ2l0Pwo+ICAgICA+Cj4gICAgID4gSXQgY29tcGlsZXMgYW5kIHJ1bnMgYW5kIGdpdmVz IGNvcnJlY3QgYW5zd2VycyBvbiBhdCBsZWFzdCB0d28gaW5wdXRzICgKPiAgICAgPiBJdCBhbHNv IGhhcyBhIG5pY2UgZ2VuZXJpYyBpbnRlcmZhY2UgdGhhdCBhbGxvd3MgZm9yIHJlYWRpbmcgY2h1 bmtzIG9mIGZpbGVzIGF0IGEgdGltZSwgZXRjLgo+ICAgICA+Cj4gICAgID4gSG93ZXZlciwgdGhl IGludGVyZmFjZSBpcwo+ICAgICA+Cj4gICAgID4gICAgdHlwZSAnYSBieXRlX3JlYWRlciA9ICdh ICogaW50IC0+IFdvcmQ4VmVjdG9yLnZlY3RvciAqICdhCj4gICAgID4gICAgdmFsIHNoYTEgOiAn YSBieXRlX3JlYWRlciAtPiAnYSAtPiBXb3JkOFZlY3Rvci52ZWN0b3IKPiAgICAgPgo+ICAgICA+ IGFuZCB0aGUgcmVhbGlzYXRpb24gb2YgdGhpcyBieXRlX3JlYWRlciBpbiB0aGUgc3VwcGxpZWQg c2hhMS1maWxlIGV4YW1wbGUgaXMgQmluSU8uU3RyZWFtSU8uaW5wdXROLgo+ICAgICA+Cj4gICAg ID4gSXQgZG9lc24ndCBsb29rIGFzIGlmIHRoZSBzb3VyY2VzIGFyZSBob2xkaW5nIG9udG8gb2xk IHN0YXRlcywgYnV0LCB1bmZvcnR1bmF0ZWx5LCB3aGVuIEkgcnVuIHNoYTEtZmlsZSBvbiBhIDEu MkdCIGZpbGUsIHRoZSBydW5uaW5nIHByb2Nlc3MgdGFrZXMgbXVjaCBsb25nZXIgdGhhbiB0aGUg YnVpbHQtaW4gc2hhc3VtIGFuZCBpdCBldmVudHVhbGx5IGNvbWVzIHRvIGNvbnN1bWUgYWJvdXQg Mi41R0Igb2YgbWVtb3J5IChhcyBleWViYWxsZWQgaW4gT1NYJ3MgcHJvY2VzcyBtb25pdG9yIGFw cCkuCj4gICAgID4KPiAgICAgPiBJcyB0aGlzIGluZXZpdGFibGU/ICBTaG91bGQgSSByZXdyaXRl IHRvIG1ha2UgdGhlIGludGVyZmFjZSBpbXBsaWNpdGx5IHN0YXRlZnVsIGJ5IGp1c3QgaGF2aW5n IHRoZSBieXRlX3JlYWRlciB0eXBlIGJlCj4gICAgID4KPiAgICAgPiAgIGludCAtPiBXb3JkOFZl Y3Rvci52ZWN0b3IKPiAgICAgPgo+ICAgICA+ID8KPiAgICAgPgo+ICAgICA+IE1pY2hhZWwKPgo+ ICAgICBUaGUgaW1wZXJhdGl2ZSBJL08gKGkuZS4sIFRleHRJTyAmIEJpbklPKSBvcGVyYXRpb25z IGFyZSBqdXN0IGxheWVyZWQgb24gdG9wIG9mIHRoZQo+ICAgICBmdW5jdGlvbmFsIHN0cmVhbSBv cGVyYXRpb25zLCBzbyB0aGUgZnVuY3Rpb25hbCBsYXllciBzaG91bGQgYmUgc2xpZ2h0bHkgZmFz dGVyLgo+ICAgICBNb3JlIHNpZ25pZmljYW50IGlzIHRoZSBncmFudWxhcml0eSBvZiBJL08gb3Bl cmF0aW9ucy4gIFRoZSBiZXN0IEkvTyBwZXJmb3JtYW5jZQo+ICAgICB3aWxsIGNvbWUgZnJvbSBk b2luZyBJL08gaW4gY2h1bmtzIChlLmcuLCB1c2luZyB0aGUgaW5wdXQvaW5wdXROL2lucHV0QWxs IGZ1bmN0aW9ucykuCj4gICAgIElmIHRoZSBieXRlX3JlYWRlciB0eXBlIGlzIGRvaW5nIGlucHV0 IGEgYnl0ZSBhdCBhIHRpbWUgKHVzaW5nIGlucHV0MSksIHRoZXJlIHdpbGwKPiAgICAgYmUgYSBs b3QgbW9yZSBvdmVyaGVhZC4KPgo+ICAgICAgICAgLSBKb2huCj4KPgo+Cj4gICAgIF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gICAgIE1MdG9uLXVzZXIg bWFpbGluZyBsaXN0Cj4gICAgIE1MdG9uLXVzZXJAbGlzdHMuc291cmNlZm9yZ2UubmV0OyBtbHRv bi11c2VyQG1sdG9uLm9yZwo+ICAgICBodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0 cy9saXN0aW5mby9tbHRvbi11c2VyCj4KPgo+IC0tCj4gWW91IHJlY2VpdmVkIHRoaXMgbWVzc2Fn ZSBiZWNhdXNlIHlvdSBhcmUgc3Vic2NyaWJlZCB0byB0aGUgR29vZ2xlIEdyb3VwcyAiTUx0b24t dXNlciIgZ3JvdXAuCj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGdyb3VwIGFuZCBzdG9wIHJl Y2VpdmluZyBlbWFpbHMgZnJvbSBpdCwgc2VuZCBhbiBlbWFpbCB0byBtbHRvbi11c2VyK3Vuc3Vi c2NyaWJlQG1sdG9uLm9yZy4KPgo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IE1MdG9uLXVzZXIgbWFpbGluZyBsaXN0Cj4gTUx0b24tdXNlckBs aXN0cy5zb3VyY2Vmb3JnZS5uZXQ7IG1sdG9uLXVzZXJAbWx0b24ub3JnCj4gaHR0cHM6Ly9saXN0 cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbWx0b24tdXNlcgoKLS0gCllvdSByZWNl aXZlZCB0aGlzIG1lc3NhZ2UgYmVjYXVzZSB5b3UgYXJlIHN1YnNjcmliZWQgdG8gdGhlIEdvb2ds ZSBHcm91cHMgIk1MdG9uLXVzZXIiIGdyb3VwLgpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgZ3Jv dXAgYW5kIHN0b3AgcmVjZWl2aW5nIGVtYWlscyBmcm9tIGl0LCBzZW5kIGFuIGVtYWlsIHRvIG1s dG9uLXVzZXIrdW5zdWJzY3JpYmVAbWx0b24ub3JnLgoKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpNTHRvbi11c2VyIG1haWxpbmcgbGlzdApNTHRvbi11 c2VyQGxpc3RzLnNvdXJjZWZvcmdlLm5ldDsgbWx0b24tdXNlckBtbHRvbi5vcmcKaHR0cHM6Ly9s aXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbWx0b24tdXNlcgo=