Logs: liberachat/#haskell
| 2026-02-09 21:23:38 | <ski> | @where on-understanding |
| 2026-02-09 21:23:38 | <lambdabot> | "On Understanding Types, Data Abstraction, and Polymorphism" by Luca Cardelli,Peter Wegner in 1985-12 at <http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf> |
| 2026-02-09 21:23:41 | <ski> | @where on-understanding-revisited |
| 2026-02-09 21:23:41 | <lambdabot> | "On Understanding Data Abstraction, Revisited" by William R. Cook in 2009-10 at <http://www.cs.utexas.edu/~wcook/Drafts/2009/essay.pdf> |
| 2026-02-09 21:24:37 | <ski> | these talk, amongst other things, about subtyping, parametric polymorphism, existential quantification. and how existentials are related to closures & object-orientation, and also (in a different way) to abstract data types |
| 2026-02-09 21:24:41 | × | picnoir quits (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.8.1) |
| 2026-02-09 21:25:05 | <ski> | @where polymorphic-type-inference |
| 2026-02-09 21:25:05 | <lambdabot> | "Polymorphic Type Inference" by Michael I. Schwartzbach in 1995-03 at <https://cs.au.dk/~mis/typeinf.p(s|df)>,<http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.1493> |
| 2026-02-09 21:25:12 | <ski> | might also be helpful |
| 2026-02-09 21:26:35 | → | picnoir joins (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) |
| 2026-02-09 21:27:03 | <ski> | (oh, try <https://cs.au.dk/~amoeller/mis/typeinf.pdf> for the last one) |
| 2026-02-09 21:27:20 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-09 21:28:03 | <ski> | @where+ polymorphic-type-inference "Polymorphic Type Inference" by Michael I. Schwartzbach in 1995-03 at <https://cs.au.dk/~amoeller/mis/typeinf.p(s|df)>,<http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.1493> |
| 2026-02-09 21:28:03 | <lambdabot> | Nice! |
| 2026-02-09 21:30:56 | × | takuan_dozo quits (~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 240 seconds) |
| 2026-02-09 21:35:12 | <EvanR> | ski, "open recursion" vs general recursion? |
| 2026-02-09 21:35:36 | <c_wraith> | open recursion is a term used primarily to describe OOP's late dispatch mechanisms |
| 2026-02-09 21:35:57 | <c_wraith> | technically you can do it with recursion schemes in Haskell, but no one writes their code that way |
| 2026-02-09 21:36:55 | × | michalz quits (~michalz@185.246.207.200) (Remote host closed the connection) |
| 2026-02-09 21:38:19 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 21:39:59 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 2026-02-09 21:44:21 | <ski> | EvanR : given an object with two methods `f' and `g', where the implementation of `f' calls `g' (in the same object). now, you construct a new object from this old one, replacing the `g' implementation. "open recursion" means that `f' in this object will now call the new `g', rather than the old |
| 2026-02-09 21:45:05 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2026-02-09 21:45:30 | <ski> | or, you can express it in terms of classes (object templates. not directly related to object types), instead of creating a new object, you create a new subclass, overriding `g' with a new implementation. the old `f' in the new class should now call the new `g' |
| 2026-02-09 21:46:37 | <ski> | you need either mutation, or delaying application of `fix', to implement this |
| 2026-02-09 21:47:42 | <ski> | you could define a "class" as a function of type `O -> O' (taking `self'/`this' as input), and to instantiate a new object of this class, you call `fix' on it |
| 2026-02-09 21:56:21 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 21:58:23 | → | Alex_delenda_est joins (~al_test@85.174.182.86) |
| 2026-02-09 22:00:32 | eriedaberrie_ | is now known as eriedaberrie |
| 2026-02-09 22:01:34 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2026-02-09 22:02:31 | × | comonad quits (~comonad@p200300d02722ae00dce4ce9451b59974.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 2026-02-09 22:08:35 | → | comonad joins (~comonad@pd9e072e5.dip0.t-ipconnect.de) |
| 2026-02-09 22:12:08 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 22:16:13 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 2026-02-09 22:17:00 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-02-09 22:26:39 | × | petrichor quits (~jez@user/petrichor) (Quit: ZNC 1.10.1 - https://znc.in) |
| 2026-02-09 22:27:29 | → | petrichor joins (~jez@user/petrichor) |
| 2026-02-09 22:27:33 | → | msyds joins (~msyds@164.47.100.4) |
| 2026-02-09 22:27:54 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 22:30:31 | × | user363627 quits (~user@user/user363627) (Quit: Konversation terminated!) |
| 2026-02-09 22:30:53 | → | user363627 joins (~user@user/user363627) |
| 2026-02-09 22:32:12 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 2026-02-09 22:32:56 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2026-02-09 22:37:14 | yin | is now known as zzz |
| 2026-02-09 22:39:52 | × | msyds quits (~msyds@164.47.100.4) (Quit: Leaving) |
| 2026-02-09 22:43:42 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 22:47:25 | × | oskarw quits (~user@user/oskarw) (Ping timeout: 245 seconds) |
| 2026-02-09 22:48:25 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-09 22:49:26 | × | KindFoxo quits (~KindFoxo@user/KindoFoxo) (Remote host closed the connection) |
| 2026-02-09 22:53:39 | → | tromp joins (~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b) |
| 2026-02-09 22:59:30 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 23:04:08 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-02-09 23:08:23 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 244 seconds) |
| 2026-02-09 23:15:15 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 23:15:49 | × | user363627 quits (~user@user/user363627) (Remote host closed the connection) |
| 2026-02-09 23:20:19 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-02-09 23:23:44 | × | comonad quits (~comonad@pd9e072e5.dip0.t-ipconnect.de) (Quit: WeeChat 4.7.0-dev) |
| 2026-02-09 23:27:39 | × | tromp quits (~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2026-02-09 23:31:02 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 23:32:16 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 2026-02-09 23:36:01 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-09 23:36:59 | → | mange joins (~mange@user/mange) |
| 2026-02-09 23:47:05 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-09 23:51:36 | → | comonad joins (~comonad@p200300d02722ae00dce4ce9451b59974.dip0.t-ipconnect.de) |
| 2026-02-09 23:52:09 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2026-02-09 23:52:43 | × | Square quits (~Square4@user/square) (Ping timeout: 260 seconds) |
| 2026-02-09 23:56:44 | → | Square2 joins (~Square@user/square) |
| 2026-02-10 00:00:14 | × | sp1ff quits (~user@2601:1c2:4701:7850::1844) (Remote host closed the connection) |
| 2026-02-10 00:01:19 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 2026-02-10 00:10:19 | × | attlin quits (~user@user/attlin) (Ping timeout: 246 seconds) |
| 2026-02-10 00:18:39 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-10 00:19:13 | × | emaczen quits (~user@user/emaczen) (Ping timeout: 264 seconds) |
| 2026-02-10 00:22:51 | → | attlin joins (~user@user/attlin) |
| 2026-02-10 00:23:18 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-02-10 00:24:00 | → | ceridwen15 joins (~ceridwen1@n175-32-209-194.mas22.nsw.optusnet.com.au) |
| 2026-02-10 00:26:52 | × | Tuplanolla quits (~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) (Quit: Leaving.) |
| 2026-02-10 00:30:58 | × | attlin quits (~user@user/attlin) (Ping timeout: 246 seconds) |
| 2026-02-10 00:33:14 | × | messewix quits (~jmc@user/messewix) (Quit: Konversation terminated!) |
| 2026-02-10 00:34:26 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-10 00:37:38 | × | jonnie quits (~jonnie@user/jonnie) (Ping timeout: 265 seconds) |
| 2026-02-10 00:38:10 | → | attlin joins (~user@user/attlin) |
| 2026-02-10 00:39:31 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-02-10 00:41:08 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds) |
| 2026-02-10 00:50:29 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-10 00:55:07 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-02-10 01:06:16 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-10 01:09:01 | → | jonnie joins (~jonnie@user/jonnie) |
| 2026-02-10 01:11:27 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-02-10 01:18:28 | × | xff0x quits (~xff0x@2405:6580:b080:900:a304:44e0:ba72:c7aa) (Ping timeout: 260 seconds) |
| 2026-02-10 01:21:11 | × | w00ter quits (~w00ter@user/w00ter) (Remote host closed the connection) |
| 2026-02-10 01:21:31 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-02-10 01:22:28 | → | w00ter joins (~w00ter@user/w00ter) |
| 2026-02-10 01:23:02 | → | omidmash9 joins (~omidmash@user/omidmash) |
| 2026-02-10 01:25:28 | × | omidmash quits (~omidmash@user/omidmash) (Ping timeout: 260 seconds) |
| 2026-02-10 01:25:28 | omidmash9 | is now known as omidmash |
| 2026-02-10 01:28:23 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2026-02-10 01:34:32 | × | jreicher quits (~joelr@user/jreicher) (Ping timeout: 240 seconds) |
| 2026-02-10 01:35:37 | → | Square joins (~Square4@user/square) |
| 2026-02-10 01:38:54 | × | Square2 quits (~Square@user/square) (Ping timeout: 260 seconds) |
| 2026-02-10 01:39:34 | → | socksbuny joins (~socks@oberon.raccoon.fun) |
All times are in UTC.