Re: Functional design question

[email protected] Mon, 23 Mar 2026 02:15:11 +0100
Newsgroups gmane.comp.lang.haskell.cafe
Message-ID <[email protected]>
QW0gMjMuMDMuMjYgdW0gMDE6MDcgc2NocmllYiBBa2hyYSBHYW5ub246DQo+IGhvbmVzdGx5LCB0
aGUgd2F5IHlvdSd2ZSBsYWlkIGl0IG91dCBsb29rcyBwZXJmZWN0bHkgcmVhc29uYWJsZSB0byBt
ZSEgDQo+IGl0IGdlbmVyYWxseSBmb2xsb3dzIHRoZSBwcmluY2lwbGUgb3QgInBhcnNlLCBkb24n
dCB2YWxpZGF0ZSIgbGFpZCBvdXQgDQo+IGhlcmU6IGh0dHBzOi8vbGV4aS1sYW1iZGEuZ2l0aHVi
LmlvL2Jsb2cvMjAxOS8xMS8wNS9wYXJzZS1kb24tdC0gDQo+IHZhbGlkYXRlLyA8aHR0cHM6Ly9s
ZXhpLWxhbWJkYS5naXRodWIuaW8vYmxvZy8yMDE5LzExLzA1L3BhcnNlLWRvbi10LSANCj4gdmFs
aWRhdGUvPg0KDQpIZWguIFRvb2sgbWUgbG9uZyBlbm91Z2ggdG8gYXJyaXZlIGF0IHRoZSBzYW1l
IGNvbmNsdXNpb25zLCB0aG91Z2ggaXQgDQp3YXMgbW9yZSBhbiBpbnR1aXRpdmUgcHJvY2VzcyB0
aGFuIHRoZSBjbGVhcihpc2gpIGV4cGxhbmF0aW9ucyB0aGVyZS4NCg0KPiB0aGUgb25seSBjb3Jl
IGNoYW5nZSBJIG1pZ2h0IG1ha2UgaXMgdG8gcmVtb3ZlIHRoZSBwYXlsb2FkIGZyb20gDQo+IENv
bmZpZ0RhdGEgYW5kIHVzZSBhIHR1cGxlIG9mIChTb3VyY2VJbmRleCwgYSkgaW5zdGVhZCwgc28g
eW91IGNhbiANCj4gb3BlcmF0ZSBvbiBvbmUgd2l0aG91dCBleGFtaW5pbmcgdGhlIG90aGVyLiB0
aGlzIGxldHMgeW91IGRvIGFsbCB0aGUgDQo+IHNvdXJjZS1yZWxhdGVkIGFuYWx5c2lzIHdpdGgg
bW9ub21vcnBoaWMgY29kZTsgYW5kIGluIGNhc2VzIHdoZXJlIHRoZSANCj4gZmluYWwgcGF5bG9h
ZCB0eXBlIGlzIHVuY2hhbmdlZCwgeW91IGNhbiBqdXN0IGRpc2NhcmQgdGhlIHR1cGxlIHdyYXBw
ZXIgDQo+IHRvIGZpbmFsaXplLg0KPiANCj4gYXQgdGhlIHRvcCBsZXZlbCwgZm9yIGVhY2ggZmlu
YWwtY29uZmlnIGl0ZW0gSSdkIGltYWdpbmUgdGhlIHByb2Nlc3MgDQo+IHdvdWxkIChpbiBIYXNr
ZWxsKSBsb29rIHNvbWV0aGluZyBsaWtlOg0KPiANCj4gZmluYWxpemVDb25maWdWYWx1ZQ0KPiAg
wqAgOjogKGEgLT4gTWF5YmUgYikNCj4gIMKgIC0+IFsoU291cmNlSW5kZXgsIGEpXQ0KPiAgwqAg
LT4gTWF5YmUgYg0KPiBmaW5hbGl6ZUNvbmZpZ1ZhbHVlIHZhbHVlUGFyc2VyDQo+ICDCoCA9IGxp
c3RUb01heWJlDQo+ICDCoCAuIG1hcE1heWJlICh2YWx1ZVBhcnNlciAuIHNuZCkNCj4gIMKgIC4g
c29ydE9uIGZzdA0KPiANCj4gd2l0aCBhbiBPcmQgaW5zdGFuY2Ugb24gU291cmNlSW5kZXgsIGFu
ZCB0aGUgTWF5YmUgb3V0cHV0IHJlcHJlc2VudGluZyANCj4gZmFpbHVyZSBvZiBhbGwgY2FuZGlk
YXRlcyB0byBwYXJzZSAoeW91IGNvdWxkIGFsc28gdXNlIGRlZmF1bHRpbmcgYW5kL29yIA0KPiBl
eGNlcHRpb25zKQ0KT2theS4uLiBJIGhhdmUgdG8gcmVhZCB0aGlzIGNhcmVmdWxseS4NCg0KSnVz
dCB0byB2ZXJpZnkgSSB1bmRlcnN0b29kIGl0IGNvcnJlY3RseToNCg0KSXQncyBkZWNsYXJpbmcg
ZnVuY3Rpb24gZmluYWxpemVDb25maWdWYWx1ZSwNCndpdGggdHdvIHBhcmFtZXRlcnMgKGRpc3Jl
Z2FyZGluZyBjdXJyeWluZyksDQpvbmUgaXMgYSBmdW5jdGlvbiBhIC0+IE1heWJlIGIsDQpzZWNv
bmQgaXMgYSBsaXN0IG9mIFNvdXJjZUluZGV4L2EgdHVwbGVzOw0KcmVzdWx0IGlzIGEgTWF5YmUg
Qi4NCg0KV2hhdCBraW5kIG9mIHR5cGUgaXMgYT8gQSByYXcgcGFyc2UgdHJlZSBhcyBkZWxpdmVy
ZWQgZnJvbSB0aGUgeWFtbCANCnBhcnNlciwgaS5lLiBhIGhpZXJhcmNoaWNhbCBibG9iIG9mIE1h
cHMsIExpc3RzLCBhbmQgU3RyaW5ncyBmb3IgDQp0ZXJtaW5hbHM/IChJIGRlY2lkZWQgdG8gY29u
ZmlndXJlIHRoZSBwYXJzZXIgZm9yICJldmVyeXRoaW5nIGlzIGEgDQpzdHJpbmciIGJlY2F1c2Ug
KGEpIG5vIHJlYWwgbmVlZCBmb3IgbnVtYmVycyBpbiBteSB1c2UgY2FzZSBhbmQgKGIpIA0KcG9z
c2libHkgWUFNTCBoYXMgc29tZSB3ZWlyZCBkZWZpbml0aW9uIG9mIHdoYXQncyBudW1iZXIgYW5k
IHdoYXQncyBhIA0Kc3RyaW5nLikNCg0KV2hhdCBkb2VzIGxpc3RUb01heWJlIGRvPw0KSG0uIFdo
aWNoIHBhcmFtZXRlciBkb2VzIGl0IHBpY2sgdXAsIHRoZSBmaXJzdCBvciB0aGUgc2Vjb25kPyBJ
J20gbm90IA0Kc3VyZSBob3cgZG90IG5vdGF0aW9uIGFuZCBjdXJyeWluZyBpbnRlcmFjdC4NCg0K
dmFsdWVQYXJzZXIgc2VlbXMgY29tcG9zZWQgd2l0aCBzbmQgKCJzZWNvbmQiKSAtIGFoIG9rLCB0
aGlzIGlzIA0KZXNzZW50aWFsbHkgcHJvY2Vzc2luZyBhbiBldmVudCBsaXN0L3N0cmVhbSAoInN0
cmVhbSIgd291bGQgYmUgYSBsaXN0IA0KdGhhdCBoYXBwZW5zIHRvIGJlIGxhenkgaW4gSGFza2Vs
bCBsYW5kKS4NCg0KTm90IHN1cmUgd2hhdCB0aGUgbWFwTWF5YmUgc2VydmVzLiBJIGd1ZXNzIGl0
J3MgZGVhbGluZyB3aXRoIGVycm9yIGNhc2VzIA0Kb3Igc29tZSBzdWNoLCBidXQgSSBjYW4ndCBp
bmZlciB3aGF0IGtpbmQgb2YgY2FzZXMgdGhhdCB3b3VsZCBiZSBhbmQgDQp3aGF0IHRoZSBpbnRl
bmRlZCBlZmZlY3QgaXQgKG15IGxhY2sgb2YgSGFza2VsbCBrbm93bGVkZ2Ugc2hvd3MgYWdhaW4p
Lg0KDQpBaCByaWdodC4gVGhlIChzb3J0T24gZnN0KSBzb21laG93IGdldHMgcm91dGVkIHRvIHRo
ZSBldmVudCBzdHJlYW0uDQpOb3Qgc3VyZSB3aHkgdGhhdCdzIG5lZWRlZCwgYXMgdGhlIGlucHV0
cyBzaG91bGQgYWxyZWFkeSBiZSBzb3J0ZWQgYnkgDQpzb3VyY2UgcG9zaXRpb24sIGJ1dCBtYXli
ZSB5b3UncmUgdGhpbmtpbmcgYWJvdXQgc2l0dWF0aW9ucyB3aGVyZSB0aGluZ3MgDQphcmUgcHJv
Y2Vzc2VkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcmUgcmVhZCAtIGRvZXNuJ3Qg
aGFwcGVuIA0KaW4gbXkgdXNlIGNhc2UsIHNvIG1heWJlIHRoYXQncyB3aHkgSSdtIGd1ZXNzaW5n
IGluc3RlYWQgb2YgDQp1bmRlcnN0YW5kaW5nLCBJJ20gYmxvY2tlZCBieSBkaWZmZXJlbmNlcyBp
biBpbXBsaWNpdCBhc3N1bXB0aW9ucy4NCkkgZ3Vlc3MuDQoNCkkgYmVsaWV2ZSB0aGUgbWFpbiBi
bG9jayB0byBtZSB1bmRlcnN0YW5kaW5nIHN1Y2ggY29kZSBpcyB0aGF0IEkgZG9uJ3QgDQprbm93
IGhvdyBtYW55IHBhcmFtZXRlcnMgYSBmdW5jdGlvbiBoYXMgLSBvciwgaW4gdGhlIGN1cnJ5aW5n
IA0KcGVyc3BlY3RpdmUsIHdoYXQgb3JkZXIgYSBmdW5jdGlvbiBpcy4NCkl0J3MgYSBncmVhdCB3
YXkgdG8gd3JpdGUgYW5kIHJlYXNvbiBhYm91dCBoaWdoZXItbGV2ZWwgY29kZSwgYnV0IGZvciAN
Cm5vb2JzIGxpa2UgbWUgaXQncyBtYWtpbmcgaXQgcmVhbGx5IGhhcmQgdG8gdW5kZXJzdGFuZCB3
aGF0J3MgZ29pbmcgb24gLSANCkkgc3VzcGVjdCBpdCdzIGJlY2F1c2UgSSBkb24ndCBrbm93IHdo
YXQgb3JkZXIgdGhlIGZ1bmN0aW9ucyBpbnNpZGUgdGhlIA0KZnVuY3Rpb24ncyBib2R5IGFyZSAo
cmVzcC4gaG93IG1hbnkgcGFyYW1ldGVycyB0aGV5IHRha2UpLiBJIGFsc28gDQpzdXNwZWN0IGl0
J3MgcmVhbGx5IGFuIGlzc3VlIHdpdGggZG90LW5vdGF0aW9uIHBpcGVsaW5lcyBsaWtlIGFib3Zl
OiBJZiANCnlvdSBkb24ndCBrbm93IHRoZSBvcmRlciBhbmQgcmV0dXJuIHR5cGVzIG9mIHRoZSBm
dW5jdGlvbnMgYmVpbmcgDQpjb21wb3NlZCwgeW91IGhhdmUgbm8gY2x1ZSBhYm91dCB3aGF0IGZ1
bmN0aW9uIGlzIHdvcmtpbmcgb24gaG93IG1hbnkgDQpwYXJhbWV0ZXJzIC0gbWlnaHQgYmUgdHdv
LCBvciBtaWdodCBiZSBqdXN0IG9uZSBhbmQgdGhlIGV4dHJhIHBhcmFtZXRlciANCmlzIGFjY2Vw
dGVkIGxhdGVyIGluIHRoZSBxdWV1ZSAobWF5YmU/IEkgYW0gc29vbyB1bnN1cmUgaGVyZS4uLikN
Cg0KT2ggbXkuDQpJIGd1ZXNzIEknbSBnb2luZyB0byBsZWFybiBhIHdob2xlIGxvdCBoZXJlLg0K
V2hpY2ggaXMgZXhhY3RseSB0aGUgcG9pbnQsIGFjdHVhbGx5IDotKQ0KDQpSZWdhcmRzLA0KSm8N
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkhhc2tlbGwt
Q2FmZSBtYWlsaW5nIGxpc3QgLS0gaGFza2VsbC1jYWZlQGhhc2tlbGwub3JnClRvICh1bilzdWJz
Y3JpYmUsIG1vZGlmeSBvcHRpb25zIG9yIHZpZXcgYXJjaGl2ZXMgZ28gdG86Ck9ubHkgbWVtYmVy
cyBzdWJzY3JpYmVkIHZpYSB0aGUgbWFpbG1hbiBsaXN0IGFyZSBhbGxvd2VkIHRvIHBvc3Qu