Re: functional IO in a SHA1 implementation

<[email protected]> Wed, 6 Feb 2019 22:04:43 +0000
Newsgroups gmane.comp.lang.ml.mlton.user
Message-ID <[email protected]>
SSBhbSB1c2luZyBpbnB1dE4sIGFuZCB0aGUgc3BlZWQgaXMgbm90IHNvIGJhZCwgYnV0IHRoZSBl
eGNlc3NpdmUgbWVtb3J5IHVzYWdlIG11c3QganVzdCBiZSBiZWNhdXNlIHRoZSBkcml2ZXIgaXMg
aW5kZWVkIGhvbGRpbmcgb250byB0aGF0IG9sZCB2YWx1ZSBvZiB0aGUgaW5wdXQgc3RyZWFtLCBh
cyBNYXR0aGV3IGRpYWdub3NlZC4KCkkgd2lsbCBpbmRlZWQganVzdCBzaGVsbCBvdXQgdG8gc2hh
c3VtIGFzIG15IGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCgpNaWNoYWVsCgrvu79PbiA3LzIvMTks
IDAxOjQ0LCAiSm9obiBSZXBweSIgPGpockBjcy51Y2hpY2Fnby5lZHU+IHdyb3RlOgoKICAgID4g
RGF0ZTogV2VkLCA2IEZlYiAyMDE5IDAwOjM5OjA5ICswMDAwCiAgICA+IEZyb206IDxNaWNoYWVs
Lk5vcnJpc2hAZGF0YTYxLmNzaXJvLmF1PgogICAgPiBUbzogPG1sdG9uLXVzZXJAbWx0b24ub3Jn
PgogICAgPiBTdWJqZWN0OiBbTUx0b24tdXNlcl0gZnVuY3Rpb25hbCBJTyBpbiBhIFNIQTEgaW1w
bGVtZW50YXRpb24KICAgID4gTWVzc2FnZS1JRDogPDg0MjU2NjcyLTJCNTQtNDY3RS04ODFFLTk4
ODgzMEE1MUI0QUBkYXRhNjEuY3Npcm8uYXU+CiAgICA+IENvbnRlbnQtVHlwZTogdGV4dC9wbGFp
bjsgY2hhcnNldD0iVVRGLTgiCiAgICA+IAogICAgPiBUaGVyZSBtYXkgYmUgYmV0dGVyIGltcGxl
bWVudGF0aW9ucyBvdXQgdGhlcmUsIGJ1dCBsb29raW5nIGZvciBhIFNIQTEgaW4gU01MLCBJIGZv
dW5kCiAgICA+IAogICAgPiAgZ2l0QGdpdGh1Yi5jb206c3JkcXR5L3NtbC1zaGExLmdpdD8KICAg
ID4gCiAgICA+IEl0IGNvbXBpbGVzIGFuZCBydW5zIGFuZCBnaXZlcyBjb3JyZWN0IGFuc3dlcnMg
b24gYXQgbGVhc3QgdHdvIGlucHV0cyAoCiAgICA+IEl0IGFsc28gaGFzIGEgbmljZSBnZW5lcmlj
IGludGVyZmFjZSB0aGF0IGFsbG93cyBmb3IgcmVhZGluZyBjaHVua3Mgb2YgZmlsZXMgYXQgYSB0
aW1lLCBldGMuIAogICAgPiAKICAgID4gSG93ZXZlciwgdGhlIGludGVyZmFjZSBpcyAKICAgID4g
CiAgICA+ICAgIHR5cGUgJ2EgYnl0ZV9yZWFkZXIgPSAnYSAqIGludCAtPiBXb3JkOFZlY3Rvci52
ZWN0b3IgKiAnYQogICAgPiAgICB2YWwgc2hhMSA6ICdhIGJ5dGVfcmVhZGVyIC0+ICdhIC0+IFdv
cmQ4VmVjdG9yLnZlY3RvcgogICAgPiAKICAgID4gYW5kIHRoZSByZWFsaXNhdGlvbiBvZiB0aGlz
IGJ5dGVfcmVhZGVyIGluIHRoZSBzdXBwbGllZCBzaGExLWZpbGUgZXhhbXBsZSBpcyBCaW5JTy5T
dHJlYW1JTy5pbnB1dE4uIAogICAgPiAKICAgID4gSXQgZG9lc24ndCBsb29rIGFzIGlmIHRoZSBz
b3VyY2VzIGFyZSBob2xkaW5nIG9udG8gb2xkIHN0YXRlcywgYnV0LCB1bmZvcnR1bmF0ZWx5LCB3
aGVuIEkgcnVuIHNoYTEtZmlsZSBvbiBhIDEuMkdCIGZpbGUsIHRoZSBydW5uaW5nIHByb2Nlc3Mg
dGFrZXMgbXVjaCBsb25nZXIgdGhhbiB0aGUgYnVpbHQtaW4gc2hhc3VtIGFuZCBpdCBldmVudHVh
bGx5IGNvbWVzIHRvIGNvbnN1bWUgYWJvdXQgMi41R0Igb2YgbWVtb3J5IChhcyBleWViYWxsZWQg
aW4gT1NYJ3MgcHJvY2VzcyBtb25pdG9yIGFwcCkuIAogICAgPiAKICAgID4gSXMgdGhpcyBpbmV2
aXRhYmxlPyAgU2hvdWxkIEkgcmV3cml0ZSB0byBtYWtlIHRoZSBpbnRlcmZhY2UgaW1wbGljaXRs
eSBzdGF0ZWZ1bCBieSBqdXN0IGhhdmluZyB0aGUgYnl0ZV9yZWFkZXIgdHlwZSBiZSAKICAgID4g
CiAgICA+ICAgaW50IC0+IFdvcmQ4VmVjdG9yLnZlY3RvcgogICAgPiAKICAgID4gPwogICAgPiAK
ICAgID4gTWljaGFlbCAKICAgIAogICAgVGhlIGltcGVyYXRpdmUgSS9PIChpLmUuLCBUZXh0SU8g
JiBCaW5JTykgb3BlcmF0aW9ucyBhcmUganVzdCBsYXllcmVkIG9uIHRvcCBvZiB0aGUKICAgIGZ1
bmN0aW9uYWwgc3RyZWFtIG9wZXJhdGlvbnMsIHNvIHRoZSBmdW5jdGlvbmFsIGxheWVyIHNob3Vs
ZCBiZSBzbGlnaHRseSBmYXN0ZXIuCiAgICBNb3JlIHNpZ25pZmljYW50IGlzIHRoZSBncmFudWxh
cml0eSBvZiBJL08gb3BlcmF0aW9ucy4gIFRoZSBiZXN0IEkvTyBwZXJmb3JtYW5jZQogICAgd2ls
bCBjb21lIGZyb20gZG9pbmcgSS9PIGluIGNodW5rcyAoZS5nLiwgdXNpbmcgdGhlIGlucHV0L2lu
cHV0Ti9pbnB1dEFsbCBmdW5jdGlvbnMpLgogICAgSWYgdGhlIGJ5dGVfcmVhZGVyIHR5cGUgaXMg
ZG9pbmcgaW5wdXQgYSBieXRlIGF0IGEgdGltZSAodXNpbmcgaW5wdXQxKSwgdGhlcmUgd2lsbAog
ICAgYmUgYSBsb3QgbW9yZSBvdmVyaGVhZC4KICAgIAogICAgCS0gSm9obgogICAgCiAgICAKICAg
IAogICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICAg
IE1MdG9uLXVzZXIgbWFpbGluZyBsaXN0CiAgICBNTHRvbi11c2VyQGxpc3RzLnNvdXJjZWZvcmdl
Lm5ldDsgbWx0b24tdXNlckBtbHRvbi5vcmcKICAgIGh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2Uu
bmV0L2xpc3RzL2xpc3RpbmZvL21sdG9uLXVzZXIKICAgIAoKLS0gCllvdSByZWNlaXZlZCB0aGlz
IG1lc3NhZ2UgYmVjYXVzZSB5b3UgYXJlIHN1YnNjcmliZWQgdG8gdGhlIEdvb2dsZSBHcm91cHMg
Ik1MdG9uLXVzZXIiIGdyb3VwLgpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgZ3JvdXAgYW5kIHN0
b3AgcmVjZWl2aW5nIGVtYWlscyBmcm9tIGl0LCBzZW5kIGFuIGVtYWlsIHRvIG1sdG9uLXVzZXIr
dW5zdWJzY3JpYmVAbWx0b24ub3JnLgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNTHRvbi11c2VyIG1haWxpbmcgbGlzdApNTHRvbi11c2VyQGxpc3Rz
LnNvdXJjZWZvcmdlLm5ldDsgbWx0b24tdXNlckBtbHRvbi5vcmcKaHR0cHM6Ly9saXN0cy5zb3Vy
Y2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbWx0b24tdXNlcgo=