Home liberachat/#haskell: Logs Calendar

Logs on 2022-08-29 (liberachat/#haskell)

00:01:00 geekosaur joins (~geekosaur@xmonad/geekosaur)
00:05:10 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
00:11:11 × bontaq` quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 260 seconds)
00:11:59 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
00:12:41 nate4 joins (~nate@98.45.169.16)
00:15:55 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
00:16:39 Polo joins (~Gambino@user/polo)
00:20:26 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
00:27:48 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.6)
00:28:24 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
00:32:18 × Polo quits (~Gambino@user/polo) (Ping timeout: 240 seconds)
00:33:56 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
00:35:09 × lottaquestions_ quits (~nick@2607:fa49:503e:7100:8f8a:99be:1f79:fe99) (Remote host closed the connection)
00:36:02 nilradical joins (~nilradica@user/naso)
00:44:28 mvk joins (~mvk@2607:fea8:5ce3:8500::a1ec)
00:45:44 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
00:46:13 Furor is now known as Colere
00:46:32 matthewmosior joins (~matthewmo@173.170.253.91)
00:47:52 × Colere quits (~colere@about/linux/staff/sauvin) (Remote host closed the connection)
00:47:52 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 244 seconds)
00:49:23 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
00:50:31 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
00:50:34 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
00:55:06 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
00:58:55 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 252 seconds)
00:58:57 zxx7529 joins (~Thunderbi@user/zxx7529)
01:02:48 × nilradical quits (~nilradica@user/naso) (Remote host closed the connection)
01:03:37 nilradical joins (~nilradica@user/naso)
01:06:15 × beteigeuze quits (~Thunderbi@bl11-28-222.dsl.telepac.pt) (Ping timeout: 252 seconds)
01:07:57 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
01:08:20 bilegeek_ joins (~bilegeek@105.sub-174-209-45.myvzw.com)
01:10:37 × bilegeek quits (~bilegeek@2600:1008:b044:1225:6505:fd25:5d3:3087) (Ping timeout: 244 seconds)
01:10:43 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:26 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
01:13:15 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
01:16:51 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:17:35 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
01:22:05 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 255 seconds)
01:23:58 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds)
01:25:17 <segfaultfizzbuzz> are exceptions a design decision in haskell or are they "intrinsic to CPUs" or "intrinsic to real CPUs" or some similiar thing?
01:25:49 × xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 268 seconds)
01:25:58 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Quit: segfaultfizzbuzz)
01:26:12 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
01:30:33 <geekosaur> design decision
01:31:03 <geekosaur> I still wish they'd used something more like Either for synchronous exceptions
01:31:30 <segfaultfizzbuzz> and am i neurotic for thinking Left and Right is also a design error?
01:33:30 <geekosaur> Either itself has no preferences, so there's no good naming convention for it. there are alternatives such as ExceptT which are "right-biased"
01:34:20 <geekosaur> (granting that ExceptT is still Either underneath, but this is mostly hidden)
01:35:11 mikoto-chan joins (~mikoto-ch@164.5.249.78)
01:35:12 <geekosaur> go try and work out sensible naming for a type which supports two possible alternative values but doesn't prefer one over the other
01:36:31 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
01:36:38 matthewmosior joins (~matthewmo@173.170.253.91)
01:38:11 <geekosaur> you're reduced to Left/Right (Either), This/That (These), etc.
01:41:27 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
01:42:01 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
01:42:55 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
01:45:07 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
01:46:09 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
01:47:06 matthewmosior joins (~matthewmo@173.170.253.91)
01:47:30 frost joins (~frost@user/frost)
01:49:17 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
01:51:06 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
01:51:25 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
01:53:43 matthewmosior joins (~matthewmo@173.170.253.91)
01:53:51 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
01:54:10 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
01:54:49 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
01:58:08 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
01:59:06 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
02:01:30 matthewmosior joins (~matthewmo@173.170.253.91)
02:02:58 × lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
02:03:42 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
02:06:30 <Axman6> segfaultfizzbuzz: what should they be called instead?
02:07:43 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:08:25 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
02:09:29 Colere joins (~colere@about/linux/staff/sauvin)
02:11:21 × td_ quits (~td@94.134.91.78) (Ping timeout: 260 seconds)
02:13:08 td_ joins (~td@94.134.91.130)
02:17:01 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
02:18:26 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
02:19:09 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
02:19:47 nate4 joins (~nate@98.45.169.16)
02:20:51 lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
02:22:56 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
02:23:37 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
02:25:36 <monochrom> data Hand a b = Sinister a | Dexter b >:)
02:26:33 kimjetwav joins (~user@2607:fea8:235e:b600:2558:8d7b:38b4:84a)
02:26:51 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
02:28:51 notzmv joins (~zmv@user/notzmv)
02:29:26 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
02:30:16 × slaydr quits (~slaydr@173.239.197.75) (Remote host closed the connection)
02:30:34 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
02:36:22 × frost quits (~frost@user/frost) (Quit: Client closed)
02:38:13 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
02:39:12 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds)
02:43:12 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
02:43:33 × kimjetwav quits (~user@2607:fea8:235e:b600:2558:8d7b:38b4:84a) (Remote host closed the connection)
02:43:51 kimjetwav joins (~user@2607:fea8:235e:b600:bb37:18ea:2f8c:d5ac)
02:44:11 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
02:46:36 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
02:48:25 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
02:50:07 notzmv joins (~zmv@user/notzmv)
02:52:54 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
02:57:16 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:57:16 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:57:16 finn_elija is now known as FinnElija
03:00:50 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 268 seconds)
03:01:32 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
03:02:07 stiell joins (~stiell@gateway/tor-sasl/stiell)
03:02:25 <qrpnxz> (Up | Down) (Yin | Yang) (Democrat | Republican)
03:02:44 <qrpnxz> (Mom | Dad)
03:02:51 × shapr quits (~user@76.73.156.98) (Ping timeout: 252 seconds)
03:02:58 <qrpnxz> Salt | Pepper
03:03:23 <qrpnxz> so many choices
03:03:27 <qrpnxz> I like Left and Right
03:04:02 noteness joins (~noteness@user/noteness)
03:04:36 <qrpnxz> But just because a type is iso to (,) or Either doesn't mean we should be using those. Rust has a Result with Err and Ok, there's absolutely zero ambiguouity there about what means what
03:04:56 <qrpnxz> *ambiguity
03:04:58 <Clinton[m]> When using GHC, if I've got `-Werror` on the command line, how do I add just one warning to the end of the command line that doesn't get converted to an error? (I still want all previously defined warnings to be errors)
03:06:06 <qrpnxz> "To reverse -Werror and stop treating any warnings as errors use -Wwarn, or use -Wwarn=<wflag> to stop treating specific warnings as errors."
03:06:11 <qrpnxz> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html
03:06:13 <qrpnxz> Clinton[m]:
03:09:31 <qrpnxz> My number one feature request for GHC at the moment is to be able to define local data types. Types are so important, in haskell arguably more so, and i can't just create them whenever. Imagine every function had to be top-level. BAD
03:09:50 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:14:04 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
03:17:03 instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net)
03:20:42 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
03:21:21 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
03:22:04 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
03:25:23 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
03:25:29 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
03:26:28 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
03:28:21 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:29:53 <jackdk> the right-bias of Either is forced by an interaction with the kind system. If you swapped the type variables around, the functor/applicative/monad instances would operate on the error and behave more like catchError
03:29:59 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
03:32:26 × sympt quits (~sympt@user/sympt) (Ping timeout: 260 seconds)
03:35:49 jakalx joins (~jakalx@base.jakalx.net)
03:37:41 × instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
03:40:41 <monochrom> qrpnxz: I like Salt | Pepper. BTW why is it not Pepper | Salt? >:) Also Coffee | Tea
03:41:25 <dsal> monochrom: I agree that Coffee < Tea
03:41:26 <qrpnxz> that's one of the top 10 questions science can't answer, unfortunately
03:47:55 × kimjetwav quits (~user@2607:fea8:235e:b600:bb37:18ea:2f8c:d5ac) (Read error: Connection reset by peer)
03:48:15 kimjetwav joins (~user@2607:fea8:235e:b600:bb37:18ea:2f8c:d5ac)
03:48:25 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
03:57:29 kenran joins (~kenran@200116b82b0e3000ec071ac97606b242.dip.versatel-1u1.de)
03:58:12 × kenran quits (~kenran@200116b82b0e3000ec071ac97606b242.dip.versatel-1u1.de) (Client Quit)
03:59:57 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
04:01:08 jmdaemon joins (~jmdaemon@user/jmdaemon)
04:02:28 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Remote host closed the connection)
04:04:18 × ddellacosta quits (~ddellacos@143.244.47.77) (Ping timeout: 268 seconds)
04:08:57 × nilradical quits (~nilradica@user/naso) ()
04:10:17 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
04:10:44 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
04:12:11 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (*.net *.split)
04:12:11 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (*.net *.split)
04:12:11 × stiell quits (~stiell@gateway/tor-sasl/stiell) (*.net *.split)
04:12:11 × chexum quits (~quassel@gateway/tor-sasl/chexum) (*.net *.split)
04:12:11 × azimut quits (~azimut@gateway/tor-sasl/azimut) (*.net *.split)
04:12:11 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (*.net *.split)
04:12:11 × califax quits (~califax@user/califx) (*.net *.split)
04:12:11 × jpds quits (~jpds@gateway/tor-sasl/jpds) (*.net *.split)
04:12:11 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (*.net *.split)
04:13:51 jpds joins (~jpds@gateway/tor-sasl/jpds)
04:13:59 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
04:14:31 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
04:14:42 stiell joins (~stiell@gateway/tor-sasl/stiell)
04:14:54 ChaiTRex joins (~ChaiTRex@user/chaitrex)
04:15:04 azimut joins (~azimut@gateway/tor-sasl/azimut)
04:15:15 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
04:15:27 califax joins (~califax@user/califx)
04:16:27 jmdaemon joins (~jmdaemon@user/jmdaemon)
04:16:33 × ystael quits (~ystael@user/ystael) (Ping timeout: 252 seconds)
04:16:36 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 268 seconds)
04:16:47 chexum joins (~quassel@gateway/tor-sasl/chexum)
04:17:58 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
04:18:12 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
04:18:19 king_gs joins (~Thunderbi@2806:103e:29:da7a:1f74:531c:dec2:7aec)
04:21:26 takuan joins (~takuan@178-116-218-225.access.telenet.be)
04:27:02 nate4 joins (~nate@98.45.169.16)
04:27:51 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
04:30:07 mbuf joins (~Shakthi@122.165.55.71)
04:31:51 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
04:32:01 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
04:33:39 azimut joins (~azimut@gateway/tor-sasl/azimut)
04:36:36 × zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection)
04:36:49 zxx7529 joins (~Thunderbi@user/zxx7529)
04:46:08 × hays quits (~rootveget@fsf/member/hays) (Remote host closed the connection)
04:47:38 matthewmosior joins (~matthewmo@173.170.253.91)
04:48:11 × kimjetwav quits (~user@2607:fea8:235e:b600:bb37:18ea:2f8c:d5ac) (Ping timeout: 255 seconds)
04:48:54 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
04:49:08 hays joins (rootvegeta@fsf/member/hays)
04:51:44 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
04:53:00 titibandit joins (~titibandi@xdsl-87-78-66-58.nc.de)
04:54:06 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
04:54:15 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
05:05:43 matthewmosior joins (~matthewmo@173.170.253.91)
05:06:35 × mmarusea1ph2 quits (~mihai@198.199.98.239) (Quit: So long and thanks for all the lambdas)
05:06:51 mmaruseacph2 joins (~mihai@198.199.98.239)
05:07:33 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
05:08:14 × king_gs quits (~Thunderbi@2806:103e:29:da7a:1f74:531c:dec2:7aec) (Remote host closed the connection)
05:08:32 king_gs joins (~Thunderbi@2806:103e:29:da7a:1f74:531c:dec2:7aec)
05:11:43 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 258 seconds)
05:12:52 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 258 seconds)
05:13:59 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
05:14:01 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 258 seconds)
05:14:24 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 258 seconds)
05:15:07 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
05:15:37 chexum joins (~quassel@gateway/tor-sasl/chexum)
05:16:42 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
05:18:18 × Guest4172 quits (~chenqisu1@183.217.200.212) (Ping timeout: 268 seconds)
05:31:21 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
05:35:25 zeenk joins (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
05:40:46 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
05:42:21 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 252 seconds)
05:49:47 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
05:53:00 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
05:57:01 × zxx7529 quits (~Thunderbi@user/zxx7529) (Ping timeout: 252 seconds)
06:06:08 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
06:08:55 michalz joins (~michalz@185.246.204.93)
06:10:05 nilradical joins (~nilradica@user/naso)
06:14:30 <tdammers> . o O ( True|False|FileNotFound )
06:16:09 <tdammers> and, yeah, Either's right-biasedness is due to the fact that the type variable for the Right constructor's argument comes last
06:16:53 × king_gs quits (~Thunderbi@2806:103e:29:da7a:1f74:531c:dec2:7aec) (Ping timeout: 268 seconds)
06:28:23 paolino joins (~paolo@5.157.115.53)
06:28:27 king_gs joins (~Thunderbi@187.201.216.244)
06:30:28 zxx7529 joins (~Thunderbi@user/zxx7529)
06:32:34 <sm> 🐱 | 🐶
06:32:37 × bilegeek_ quits (~bilegeek@105.sub-174-209-45.myvzw.com) (Quit: Leaving)
06:33:51 × dcoutts_ quits (~duncan@host86-151-9-109.range86-151.btcentralplus.com) (Ping timeout: 260 seconds)
06:35:22 coot joins (~coot@213.134.176.158)
06:37:31 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
06:39:06 × jargon quits (~jargon@184.101.185.66) (Remote host closed the connection)
06:39:38 alternateved joins (~user@staticline-31-183-146-203.toya.net.pl)
06:39:49 × paolino quits (~paolo@5.157.115.53) (Quit: Leaving)
06:40:11 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:43:38 ccapndave joins (~ccapndave@xcpe-194-230-18-108.cgn.res.adslplus.ch)
06:44:32 × ccapndave quits (~ccapndave@xcpe-194-230-18-108.cgn.res.adslplus.ch) (Client Quit)
06:46:46 raym joins (~raym@user/raym)
06:47:43 nate4 joins (~nate@98.45.169.16)
06:48:20 × raym_ quits (~raym@user/raym) (Ping timeout: 268 seconds)
06:51:25 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
06:51:37 × titibandit quits (~titibandi@xdsl-87-78-66-58.nc.de) (Remote host closed the connection)
06:52:31 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
06:53:34 lortabac joins (~lortabac@2a01:e0a:541:b8f0:e726:4d7c:52f8:911e)
06:55:05 × nilradical quits (~nilradica@user/naso) (Remote host closed the connection)
06:55:16 jargon joins (~jargon@184.101.185.66)
06:55:51 nilradical joins (~nilradica@user/naso)
06:56:59 × nilradical quits (~nilradica@user/naso) (Remote host closed the connection)
06:58:11 nilradical joins (~nilradica@user/naso)
06:58:28 chele joins (~chele@user/chele)
07:00:26 Pickchea joins (~private@user/pickchea)
07:03:01 × nilradical quits (~nilradica@user/naso) (Ping timeout: 252 seconds)
07:08:51 × kadobanana quits (~mud@user/kadoban) (Ping timeout: 260 seconds)
07:12:23 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
07:13:54 kadobanana joins (~mud@user/kadoban)
07:16:40 king_gs1 joins (~Thunderbi@2806:103e:29:da7a:1f74:531c:dec2:7aec)
07:17:01 × king_gs quits (~Thunderbi@187.201.216.244) (Read error: Connection reset by peer)
07:17:01 king_gs1 is now known as king_gs
07:17:45 ccapndave joins (~ccapndave@xcpe-194-230-18-108.cgn.res.adslplus.ch)
07:22:36 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
07:25:57 yvan-sraka joins (~yvan-srak@2a02:2788:224:71c:a4a5:6c05:6213:1707)
07:26:14 × ccapndave quits (~ccapndave@xcpe-194-230-18-108.cgn.res.adslplus.ch) (Quit: Textual IRC Client: www.textualapp.com)
07:32:51 PiDelport joins (uid25146@id-25146.lymington.irccloud.com)
07:33:10 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 258 seconds)
07:33:54 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
07:33:54 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
07:34:04 <Clinton[m]> Lens/template Haskell question. Given:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/89ebd76a2c8003dea899a8a236ccaae0f00419fa)
07:38:13 × yvan-sraka quits (~yvan-srak@2a02:2788:224:71c:a4a5:6c05:6213:1707) (Remote host closed the connection)
07:38:32 yvan-sraka joins (~yvan-srak@2a02:2788:224:71c:53e3:703a:d1b3:d4c8)
07:42:19 ccntrq joins (~Thunderbi@172.209.94.92.rev.sfr.net)
07:43:37 <jackdk> Clinton[m]: Either: 1. turn on `-XConstraintKinds`, and `type AsC a = (AsA a, AsB a)`; or 2. `class (AsA a, AsB a) => AsC a; instance (AsA a, AsB a) => AsC a`. I think the first one has type inference issues sometimes but I forget the details
07:44:16 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in)
07:48:02 × yvan-sraka quits (~yvan-srak@2a02:2788:224:71c:53e3:703a:d1b3:d4c8) (Remote host closed the connection)
07:48:14 kuribas joins (~user@ptr-17d51epjyeoyuptwhep.18120a2.ip6.access.telenet.be)
07:48:20 yvan-sraka joins (~yvan-srak@2a02:2788:224:71c:dd72:669f:e21b:366)
07:49:13 jmdaemon joins (~jmdaemon@user/jmdaemon)
07:52:55 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Client Quit)
07:55:12 jmdaemon joins (~jmdaemon@user/jmdaemon)
07:56:17 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
07:57:27 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
07:57:38 <Axman6> Clinton[m]: or do you mean that you want to make C an instance of AsA and AsB?
07:58:14 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:58:32 × yvan-sraka quits (~yvan-srak@2a02:2788:224:71c:dd72:669f:e21b:366) (Remote host closed the connection)
07:58:51 yvan-sraka joins (~yvan-srak@2a02:2788:224:71c:5fb1:bb64:a2bf:5534)
08:07:35 × jargon quits (~jargon@184.101.185.66) (Remote host closed the connection)
08:10:36 × yvan-sraka quits (~yvan-srak@2a02:2788:224:71c:5fb1:bb64:a2bf:5534) (Remote host closed the connection)
08:10:54 yvan-sraka joins (~yvan-srak@2a02:2788:224:71c:9fa:958a:9fe4:dc8e)
08:15:38 __monty__ joins (~toonn@user/toonn)
08:16:54 × king_gs quits (~Thunderbi@2806:103e:29:da7a:1f74:531c:dec2:7aec) (Quit: king_gs)
08:19:28 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
08:20:01 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
08:25:10 × coot quits (~coot@213.134.176.158) (Quit: coot)
08:27:21 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
08:27:58 Guest|65 joins (~Guest|65@178.173.97.240)
08:29:17 × Guest|65 quits (~Guest|65@178.173.97.240) (Client Quit)
08:29:48 zaquest joins (~notzaques@5.130.79.72)
08:29:58 × yvan-sraka quits (~yvan-srak@2a02:2788:224:71c:9fa:958a:9fe4:dc8e) (Remote host closed the connection)
08:30:17 yvan-sraka joins (~yvan-srak@2a02:2788:224:71c:9fa:958a:9fe4:dc8e)
08:30:53 benin0 joins (~benin@183.82.205.66)
08:33:13 matthewmosior joins (~matthewmo@173.170.253.91)
08:40:56 × yvan-sraka quits (~yvan-srak@2a02:2788:224:71c:9fa:958a:9fe4:dc8e) (Remote host closed the connection)
08:41:14 yvan-sraka joins (~yvan-srak@2a02:2788:224:71c:d850:9e35:a08d:9c6a)
08:47:32 frost joins (~frost@user/frost)
08:49:09 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
08:49:56 dcoutts joins (~duncan@host86-175-248-103.range86-175.btcentralplus.com)
08:51:09 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in)
08:51:11 × talismanick quits (~talismani@c-67-174-251-163.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
08:55:10 wonko joins (~wjc@2a0e:1c80:2::130)
08:56:12 coot joins (~coot@213.134.176.158)
08:57:08 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
08:58:19 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
08:58:47 azimut joins (~azimut@gateway/tor-sasl/azimut)
08:59:39 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
09:05:16 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
09:09:42 luffy joins (~chenqisu1@183.217.200.212)
09:11:46 × coot quits (~coot@213.134.176.158) (Remote host closed the connection)
09:12:10 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
09:12:27 × yvan-sraka quits (~yvan-srak@2a02:2788:224:71c:d850:9e35:a08d:9c6a) (Remote host closed the connection)
09:12:46 yvan-sraka joins (~yvan-srak@2a02:2788:224:71c:4f47:fa29:b160:ee6d)
09:21:17 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
09:24:21 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
09:25:56 <kuribas> People claim no downtime with haskell, but do they never have database connection issues, network problems, slow queries, etc... ?
09:27:32 <lortabac> I guess it means no downtime due to application bugs
09:28:23 nilradical joins (~nilradica@user/naso)
09:28:48 <lortabac> also, you can have "degraded modes" for your application, where it still runs but it lacks some features if some external components are down
09:29:40 <kuribas> Even with a fancy typed SQL library, you cannot garantee the queries will be performant.
09:30:06 × yvan-sraka quits (~yvan-srak@2a02:2788:224:71c:4f47:fa29:b160:ee6d) (Ping timeout: 252 seconds)
09:30:34 <kuribas> I had a "hand-optimized" query that took like 2 minutes to execute. So I refactored it into three separate dumb queries, and it only took 2 second now :)
09:30:58 <sm> I don't think anybody claims "no downtime"
09:31:35 acidjnk joins (~acidjnk@p200300d6e7137a4628adea4619d717ec.dip0.t-ipconnect.de)
09:32:22 <Hecate> even the Erlang folks only claim a certain number of nines in terms of uptime
09:32:49 <kuribas> https://www.reddit.com/r/haskell/comments/wzi4sv/comment/im32sbe/?utm_source=share&utm_medium=ios_app&utm_name=iossmf&context=3
09:33:00 <kuribas> "They are so good, that we never have production outages! We never have any problems, because they are such good programmers."
09:33:31 <sm> I'm happy for that person. They have had good luck so far :)
09:34:06 <merijn> pfft
09:34:13 <merijn> maybe they just have terrible monitoring :p
09:34:17 <Hecate> > now debugging arcane Polysemy messages for hours while getting very little actual work done
09:34:19 <lambdabot> error:
09:34:19 <lambdabot> • Variable not in scope:
09:34:19 <lambdabot> now
09:34:25 <Hecate> hahahahaha
09:34:25 <Hecate> wew
09:34:44 <Hecate> Polysemy might not have been the wise choice here
09:35:17 <sm> observability/debuggability is an underappreciated feature..
09:35:29 <merijn> Hot take: none of those fancy effects libraries are the right choice, unless you have fetish for jerking yourself off to type errors :D
09:36:03 <dminuoso> Hecate: Wisom for the future. If it mentions "simple", "free(r)", or "low-boilerplate" in its description, it's likely anything but.
09:36:34 <Hecate> shit, let me see if I did that mistake in my own libraries
09:37:07 <Hecate> okay great :D
09:37:25 <Hecate> merijn: you're absolutely right, this is why I use the no-nonsense alternatives
09:37:31 <Hecate> like Effectful™©®
09:37:44 <dminuoso> Though for what its worth, I think polysemy did one thing right: GHC plugin to help with diagnotics rather than bolting tyfams and magical type classes to sneak error messages in via type inference.
09:37:53 <Hecate> sm: I cry every night thinking of what I lost when I switched from Erlang to Haskell
09:37:54 <dminuoso> Wish more libraries would do this.
09:38:33 <Hecate> dminuoso: it's just sad that without the GHC plugin the performance are so degraded
09:38:38 <merijn> Hecate: So let'
09:38:42 <maerwald[m]> dminuoso: check the effects stuff in cardano plutus. It took me a whole day to dig through the effects boilerplate to find the actual code that actually does something useful
09:38:46 <merijn> So let's build those things for Haskell! ;)
09:39:05 <merijn> I really kinda wanna overhaul the threading stuff in Haskell to suck less
09:40:14 <Hecate> merijn: Here is your starting point: https://gitlab.haskell.org/ghc/ghc/-/issues/21578
09:40:38 <merijn> Hecate: Naah, there's a more crucial one before that one even makes sense to think about
09:40:39 <maerwald[m]> Effect layer over effect layer over effect reinterpreter, deferring to three layers of indirection
09:40:48 <merijn> Need to sort the damn signal handling in GHC
09:41:44 <merijn> Hecate: also, realistically most of my work on this is "thinking about the design in the shower, until I find a job that pays me to fuck around with GHC at least part of my time" :p
09:41:47 <maerwald[m]> merijn: yet you have been silent on https://github.com/haskell/unix/issues/196
09:43:16 <Hecate> merijn: personally I found it easier to get a full-time job and then ask your manager to give you your friday (or friday afternoon) for GHC development
09:43:26 <merijn> maerwald[m]: Almost as if my job doesn't pay me to write Haskell :)
09:46:06 <merijn> I'd like to improve the situation wrt unix. But I don't actually care enough to spend my free time on doing so
09:48:08 <maerwald[m]> merijn: don't succumb to capitalism
09:48:36 <merijn> I'm not succumbing to capitalism, I'm succumbing to the opposite of capitalist exploitation :p
09:48:57 <dminuoso> To be fair, compensation for work is not necessarily capitalism.
09:49:03 <merijn> Because "ensuring forked processes don't randomly corrupt important business processes" sounds very much like the kinda shit some big company cares more about than me
09:49:19 <merijn> So some big company can bloody well pay for it if they want it :p
09:49:46 <merijn> Because it sounds to boring and unfun to do in my spare time when I could be doing stuff that's, you know, fun :p
09:54:01 toeffel joins (~toeffel@user/toeffel)
10:02:11 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
10:02:41 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
10:03:17 eikke joins (~NicolasT@user/NicolasT)
10:04:11 × nilradical quits (~nilradica@user/naso) (Remote host closed the connection)
10:04:31 × zxx7529 quits (~Thunderbi@user/zxx7529) (Ping timeout: 252 seconds)
10:04:58 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 258 seconds)
10:04:58 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
10:04:59 nilradical joins (~nilradica@user/naso)
10:06:11 chexum joins (~quassel@gateway/tor-sasl/chexum)
10:06:23 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
10:07:09 ChaiTRex joins (~ChaiTRex@user/chaitrex)
10:08:43 CiaoSen joins (~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
10:09:41 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
10:09:56 × nilradical quits (~nilradica@user/naso) (Ping timeout: 255 seconds)
10:11:07 × luffy quits (~chenqisu1@183.217.200.212) (Ping timeout: 252 seconds)
10:11:13 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds)
10:11:49 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
10:13:27 mikoto-chan joins (~mikoto-ch@164.5.249.78)
10:15:08 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
10:15:41 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
10:16:21 cheater joins (~Username@user/cheater)
10:16:44 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
10:22:09 luffy joins (~chenqisu1@183.217.201.192)
10:32:52 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
10:34:35 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 252 seconds)
10:37:44 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
10:38:38 beteigeuze joins (~Thunderbi@bl11-28-222.dsl.telepac.pt)
10:38:59 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
10:39:15 cheater joins (~Username@user/cheater)
10:39:39 × beteigeuze quits (~Thunderbi@bl11-28-222.dsl.telepac.pt) (Client Quit)
10:42:11 × CiaoSen quits (~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
10:43:02 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
10:46:30 <kuribas> merijn: no fancy type system => so "Env -> IO a" then?
10:47:35 zxx7529 joins (~Thunderbi@user/zxx7529)
10:49:15 nate4 joins (~nate@98.45.169.16)
10:50:07 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
10:50:59 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
10:51:25 jakalx joins (~jakalx@base.jakalx.net)
10:51:27 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
10:51:48 cheater joins (~Username@user/cheater)
10:54:01 × kilolympus quits (~kilolympu@90.203.82.22) (Ping timeout: 260 seconds)
10:54:21 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
10:56:28 Putonlalla joins (~Putonlall@it-cyan.it.jyu.fi)
10:56:28 × vglfr quits (~vglfr@145.224.94.75) (Read error: Connection reset by peer)
10:56:38 vglfr joins (~vglfr@145.224.94.75)
10:56:58 <maerwald[m]> merijn: no they don't
10:58:35 <maerwald[m]> They will employ a team of people cleaning up the mess those processes leave behind
11:03:07 mikoto-chan joins (~mikoto-ch@164.5.249.78)
11:05:06 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in)
11:05:34 azimut joins (~azimut@gateway/tor-sasl/azimut)
11:06:26 nilradical joins (~nilradica@user/naso)
11:07:21 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
11:10:07 × raym quits (~raym@user/raym) (Quit: kernel update, rebooting...)
11:10:59 × eikke quits (~NicolasT@user/NicolasT) (Ping timeout: 248 seconds)
11:12:34 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
11:13:41 raym joins (~raym@user/raym)
11:14:42 xff0x joins (~xff0x@2405:6580:b080:900:9d05:41cc:615d:5546)
11:16:59 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
11:17:03 × nilradical quits (~nilradica@user/naso) (Remote host closed the connection)
11:18:15 nilradical joins (~nilradica@user/naso)
11:20:31 <kritzefitz> maerwald[m]: It's still their problem then. :p
11:23:20 × nilradical quits (~nilradica@user/naso) (Ping timeout: 268 seconds)
11:25:55 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
11:27:42 CiaoSen joins (~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
11:28:10 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
11:30:56 × zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection)
11:31:08 zxx7529 joins (~Thunderbi@user/zxx7529)
11:31:23 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 255 seconds)
11:34:24 nilradical joins (~nilradica@user/naso)
11:34:38 <maerwald[m]> kritzefitz: yes and merijn will still complain that no one pays him for his open source work
11:35:42 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
11:39:32 L29Ah joins (~L29Ah@wikipedia/L29Ah)
11:44:57 × xff0x quits (~xff0x@2405:6580:b080:900:9d05:41cc:615d:5546) (Ping timeout: 268 seconds)
11:45:20 xff0x joins (~xff0x@ai071162.d.east.v6connect.net)
11:47:23 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.6)
11:53:35 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
11:56:21 × raym quits (~raym@user/raym) (Ping timeout: 252 seconds)
11:58:11 raym joins (~raym@user/raym)
11:58:28 <dminuoso> kuribas: Honestly, this type of problem is somewhat omnipresent in most languages. Even popular languages like Java or Python do it this way!
11:59:54 <dminuoso> It's just that, for some ergonomic reasons, the first argument is usually denoted to the left-hand side (i.e. foo.bar(quux), rather than bar(foo, quux)), though amusingly enough in function definitions there's an abstraction leak in python.
12:00:33 <dminuoso> At any rate, ReaderT is not about being an effect system really.
12:01:15 <dminuoso> Especially because it can be both MonadIO and MonadUnliftIO, it's definitely a special case.
12:05:04 <kuribas> dminuoso: well, I think "env" is usually a global variable.
12:05:20 <kuribas> it's not really passed to the functions.
12:05:37 <dminuoso> Well, if you want a properly global variable, maintaining a global `IORef Env` is certainly possible.
12:07:17 Robert72 joins (~Robert@ext-1-122.eduroam.chalmers.se)
12:08:05 eikke joins (~NicolasT@user/NicolasT)
12:09:19 × Robert72 quits (~Robert@ext-1-122.eduroam.chalmers.se) (Client Quit)
12:10:25 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:12:16 <merijn> maerwald[m]: Technically, I do get paid for open source work, just not the work I'd like to do :p
12:12:57 <merijn> Also, technically, I don't complain about the open source work I don't get paid either, but that work is just what I feel like doing, not necessarily what *needs* doing
12:14:48 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
12:15:08 <merijn> And also also, generally more of a jokey way of clarifying I'm not gonna do it anytime soon.
12:19:05 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
12:22:32 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
12:26:47 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
12:28:05 × ccntrq quits (~Thunderbi@172.209.94.92.rev.sfr.net) (Ping timeout: 268 seconds)
12:30:17 ccntrq joins (~Thunderbi@172.209.94.92.rev.sfr.net)
12:31:39 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Read error: Connection reset by peer)
12:32:52 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
12:33:33 ystael joins (~ystael@user/ystael)
12:35:17 <kuribas> dminuoso: I certainly don't :)
12:35:31 <kuribas> dminuoso: but that's how applications in most languages are built.
12:35:59 drdo5 is now known as drdo
12:37:05 <dminuoso> kuribas: No, that's not how they are built.
12:37:12 <dminuoso> It's just what people in those languages happen to do.
12:37:29 <dminuoso> Nothing ever prevents them from fiddling an environment through, and in most serious programs you dont find global variables as much.
12:39:50 × ystael quits (~ystael@user/ystael) (Ping timeout: 268 seconds)
12:41:25 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
12:48:20 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:48:33 × ccntrq quits (~Thunderbi@172.209.94.92.rev.sfr.net) (Quit: ccntrq)
12:48:42 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
12:48:54 ccntrq joins (~Thunderbi@172.209.94.92.rev.sfr.net)
12:51:27 <maerwald[m]> merijn: i just want to shame you into writing a patch 😁
12:53:11 × luffy quits (~chenqisu1@183.217.201.192) (Ping timeout: 252 seconds)
12:55:33 <merijn> See, to feel shame I'd have to remember tasks long enough for that to kick in
12:55:57 <merijn> My attention-deficit ass will have forgotten about shit before I feel any shame :D
12:59:46 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:15:13 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
13:16:06 ystael joins (~ystael@user/ystael)
13:16:31 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
13:17:18 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
13:19:29 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
13:20:04 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:21:39 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
13:21:43 mikoto-chan joins (~mikoto-ch@164.5.249.78)
13:24:35 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) ()
13:25:02 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
13:26:40 × mima quits (mmh@gateway/vpn/airvpn/mima) (Ping timeout: 268 seconds)
13:28:54 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
13:29:40 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
13:30:47 matthewmosior joins (~matthewmo@173.170.253.91)
13:32:38 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
13:32:52 chexum joins (~quassel@gateway/tor-sasl/chexum)
13:33:00 azimut joins (~azimut@gateway/tor-sasl/azimut)
13:33:08 ChaiTRex joins (~ChaiTRex@user/chaitrex)
13:41:30 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
13:42:28 matthewmosior joins (~matthewmo@173.170.253.91)
13:43:25 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
13:47:00 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
13:48:51 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds)
13:49:29 matthewmosior joins (~matthewmo@173.170.253.91)
13:50:22 <dminuoso> maerwald[m]: you were working on a kind of monad-logger fork, right?
13:50:30 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
13:51:09 matthewmosior joins (~matthewmo@173.170.253.91)
13:54:27 × hippoid quits (~idris@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
14:01:39 motherfsck joins (~motherfsc@user/motherfsck)
14:02:43 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
14:07:09 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
14:11:45 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
14:12:04 × frost quits (~frost@user/frost) (Ping timeout: 252 seconds)
14:12:18 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:e726:4d7c:52f8:911e) (Quit: WeeChat 2.8)
14:13:14 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
14:14:11 shriekingnoise joins (~shrieking@186.137.167.202)
14:15:54 yvan-sraka joins (~yvan-srak@2a02:2788:11e4:16b:4118:3220:160b:6a4e)
14:16:26 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
14:19:38 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:20:58 × wonko quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 268 seconds)
14:24:07 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
14:25:14 hippoid joins (~idris@c-98-220-13-8.hsd1.il.comcast.net)
14:26:24 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
14:31:52 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
14:32:20 <maerwald[m]> dminuoso: that's inlined in ghcup
14:33:02 <maerwald[m]> Not really sophisticated if you require async writes to terminal and whatnot
14:33:39 mima joins (~mmh@dhcp-138-246-3-174.dynamic.eduroam.mwn.de)
14:33:56 × acidjnk quits (~acidjnk@p200300d6e7137a4628adea4619d717ec.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
14:35:08 <maerwald[m]> https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/lib/GHCup/Prelude/Logger/Internal.hs
14:35:51 <maerwald[m]> The label optics are here https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/lib/GHCup/Types/Optics.hs
14:36:16 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
14:39:44 × yvan-sraka quits (~yvan-srak@2a02:2788:11e4:16b:4118:3220:160b:6a4e) (Remote host closed the connection)
14:40:03 yvan-sraka joins (~yvan-srak@2a02:2788:11e4:16b:49a6:cc29:c028:f4b9)
14:43:04 <nilradical> anyone have problems with parse error on certain field names with RecordDotSyntax
14:44:09 <nilradical> e.g. i have a field called `family` and if i do `x.family` i get parse error... renaming the field to `famil` and no error with `x.famil`
14:44:45 <nilradical> i've had the same error with other field names before but forgot what they were
14:45:02 <geekosaur> family is a keyword, I think ("type family")
14:47:07 <geekosaur> hm, although I can use it in a let
14:48:35 <nilradical> yeah if it was a keyword why can i even define it as a field
14:50:47 nate4 joins (~nate@98.45.169.16)
14:51:42 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:54:13 × yvan-sraka quits (~yvan-srak@2a02:2788:11e4:16b:49a6:cc29:c028:f4b9) (Remote host closed the connection)
14:55:31 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds)
14:57:51 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
14:58:40 cheater joins (~Username@user/cheater)
14:58:40 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
14:59:30 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
14:59:53 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:02:26 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
15:04:15 gentauro joins (~gentauro@user/gentauro)
15:06:03 yvan-sraka joins (~yvan-srak@2a02:2788:11e4:16b:19b9:c902:b61c:ca7e)
15:07:13 × yvan-sraka quits (~yvan-srak@2a02:2788:11e4:16b:19b9:c902:b61c:ca7e) (Remote host closed the connection)
15:07:32 yvan-sraka joins (~yvan-srak@2a02:2788:11e4:16b:6d7e:2100:38ba:17a9)
15:11:48 ec joins (~ec@gateway/tor-sasl/ec)
15:12:46 × eikke quits (~NicolasT@user/NicolasT) (Ping timeout: 244 seconds)
15:13:03 × yvan-sraka quits (~yvan-srak@2a02:2788:11e4:16b:6d7e:2100:38ba:17a9) (Remote host closed the connection)
15:13:22 yvan-sraka joins (~yvan-srak@2a02:2788:11e4:16b:1ee1:e1d4:c138:83fa)
15:14:15 × alternateved quits (~user@staticline-31-183-146-203.toya.net.pl) (Remote host closed the connection)
15:14:19 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:14:35 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
15:19:52 matthewmosior joins (~matthewmo@173.170.253.91)
15:20:07 × yvan-sraka quits (~yvan-srak@2a02:2788:11e4:16b:1ee1:e1d4:c138:83fa) (Remote host closed the connection)
15:20:25 yvan-sraka joins (~yvan-srak@2a02:2788:11e4:16b:6564:71dd:7699:5e45)
15:21:50 bontaq` joins (~user@ool-45779fe5.dyn.optonline.net)
15:22:12 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:23:15 titibandit joins (~titibandi@xdsl-87-78-66-58.nc.de)
15:23:58 Tuplanolla joins (~Tuplanoll@91-159-69-12.elisa-laajakaista.fi)
15:24:30 username9431 joins (~Thunderbi@2a00:23c5:4202:9c01:4d47:1a1f:d871:dac1)
15:26:55 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
15:27:36 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
15:27:40 × yvan-sraka quits (~yvan-srak@2a02:2788:11e4:16b:6564:71dd:7699:5e45) (Remote host closed the connection)
15:27:58 yvan-sraka joins (~yvan-srak@2a02:2788:11e4:16b:3f54:566d:bfd8:5bfb)
15:32:51 × CiaoSen quits (~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
15:33:20 sagax joins (~sagax_nb@user/sagax)
15:36:35 <qrpnxz> maybe because it's only a keyword in an extension
15:37:47 Everything joins (~Everythin@37.115.210.35)
15:39:02 × titibandit quits (~titibandi@xdsl-87-78-66-58.nc.de) (Remote host closed the connection)
15:40:00 <geekosaur> but then RecordDotSyntax shouldn't care either unless the extension is on?
15:40:04 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
15:40:36 titibandit joins (~titibandi@xdsl-87-78-66-58.nc.de)
15:42:52 <nilradical> i'm also using GHC2021
15:43:17 × yvan-sraka quits (~yvan-srak@2a02:2788:11e4:16b:3f54:566d:bfd8:5bfb) (Remote host closed the connection)
15:43:20 <nilradical> and OverloadedStrings, OverloadedRecordDot. that's it
15:43:35 yvan-sraka joins (~yvan-srak@2a02:2788:11e4:16b:687d:cd13:9a74:1853)
15:44:26 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
15:45:05 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:45:55 × yvan-sraka quits (~yvan-srak@2a02:2788:11e4:16b:687d:cd13:9a74:1853) (Remote host closed the connection)
15:48:31 matthewmosior joins (~matthewmo@173.170.253.91)
15:49:12 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 258 seconds)
15:50:10 shapr joins (~user@2601:7c0:c383:70:8f2e:ebd3:e94d:76ae)
15:50:45 × ccntrq quits (~Thunderbi@172.209.94.92.rev.sfr.net) (Remote host closed the connection)
15:51:03 stiell joins (~stiell@gateway/tor-sasl/stiell)
15:54:54 × zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection)
15:55:09 zxx7529 joins (~Thunderbi@user/zxx7529)
15:57:37 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
15:58:46 MoC joins (~moc@user/moc)
16:01:18 zebrag joins (~chris@user/zebrag)
16:09:01 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
16:10:08 kilolympus joins (~kilolympu@90.203.82.22)
16:10:44 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
16:10:50 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:11:43 acidjnk joins (~acidjnk@p54ad5adb.dip0.t-ipconnect.de)
16:12:11 × mvk quits (~mvk@2607:fea8:5ce3:8500::a1ec) (Ping timeout: 244 seconds)
16:13:17 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
16:13:51 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
16:13:51 × chronon quits (~chronon@user/chronon) (Quit: leaving)
16:14:16 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
16:16:29 jakalx parts (~jakalx@base.jakalx.net) ()
16:18:15 <qrpnxz> TIL STRef is laziness killer: https://stackoverflow.com/questions/24072934/haskell-how-lazy-is-the-lazy-control-monad-st-lazy-monad
16:18:16 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:19:19 × raym quits (~raym@user/raym) (Remote host closed the connection)
16:22:17 jakalx joins (~jakalx@base.jakalx.net)
16:23:33 chronon joins (~chronon@user/chronon)
16:24:48 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
16:25:28 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:26:26 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
16:26:40 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
16:27:12 matthewmosior joins (~matthewmo@173.170.253.91)
16:27:57 × nilradical quits (~nilradica@user/naso) ()
16:32:34 <qrpnxz> array has this same problem, btw. I don't know how you might fix it. Perhaps with unsafeInterleave
16:33:11 × chronon quits (~chronon@user/chronon) (Quit: leaving)
16:33:57 × Kaiepi quits (~Kaiepi@142.68.249.28) (Remote host closed the connection)
16:34:21 <c_wraith> yeah, Lazy ST is a weird thing that you shouldn't depend on
16:34:22 Kaiepi joins (~Kaiepi@142.68.249.28)
16:34:45 <c_wraith> unsafeInterleaveST is much more predictable
16:35:32 raym joins (~raym@user/raym)
16:35:42 <c_wraith> (just don't introduce evaluation-order dependencies that break purity.
16:35:45 <c_wraith> )
16:36:22 chronon joins (~chronon@user/chronon)
16:40:31 <qrpnxz> unsafeInterleaveST is pretty hella unsafe though
16:42:03 <qrpnxz> it seems that STRef should be lazy in that case actually. The read doesn't happen until the value of the read is required according to the documentation of strictToLazy, but i guess it can't know that it doesn't depend on that `forever` bit so it has to force that too.
16:43:09 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:43:53 <qrpnxz> i guess the jarring thing is that the forever is a step before the newRef
16:44:57 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
16:46:44 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
16:49:45 <int-e> Lazy ST still sequentializes all the ST actions.
16:50:59 <int-e> So everything that `forever` /might/ do must happen before subsequent ST actions. There's no magic inside >> or >>= to know that there aren't any ST actions happening at all in this case.
16:51:43 nate4 joins (~nate@98.45.169.16)
16:53:06 <int-e> > fix (id $) 42 -- it's a bit like this; you might argue that no matter how often you apply `id`, the value will be 42, but the reality of lazy evaluation is that this reasoning doesn't give you a non-bottom result
16:53:08 <lambdabot> *Exception: <<loop>>
16:53:32 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:54:03 <qrpnxz> yeah was thinking the same. The lazy runtime is not looking at what ST statement you are running, just "need this state token".
16:54:06 <int-e> TBH I'm not quite sure why ST.Lazy exists.
16:54:44 <int-e> Right, at the level of state tokens you have a data dependency and that's threaded through all the actions inside of `forever`, even when that happens lazily.
16:54:53 <qrpnxz> ST.Lazy is pretty neat. I needed ST to be lazy rather recently. I'm gonna try to use it for that, and if it doesn't work then maybe it's useless, but i do have a usecase
16:56:10 <int-e> Oh, ST.Lazy enables mfix. So that's somewhat useful, as long as you're aware that whatever you feed back cannot depend on ST actions.
16:56:17 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
16:56:58 matthewmosior joins (~matthewmo@173.170.253.91)
16:57:07 <dolio> Strict ST is also MonadFix.
16:57:09 <qrpnxz> ST.Strict also a MonadFix, so I would think that's also usable? Though lazy would probably allow more uses
16:57:22 <int-e> unsafeInterleaveST gives you laziness for ST actions but makes it easy to break purity.
16:57:30 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
16:57:36 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
16:57:37 matthewmosior joins (~matthewmo@173.170.253.91)
16:59:01 × matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection)
16:59:56 matthewmosior joins (~matthewmo@173.170.253.91)
17:00:08 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
17:00:16 <int-e> dolio: Hmm, good point.
17:01:39 chexum joins (~quassel@gateway/tor-sasl/chexum)
17:03:10 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:03:23 beteigeuze joins (~Thunderbi@bl11-28-222.dsl.telepac.pt)
17:04:22 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
17:04:54 × foul_owl quits (~kerry@23.82.194.108) (Ping timeout: 244 seconds)
17:05:24 <int-e> So the main thing that lazy ST enables is returning an infinitely result incrementally? Say, `do r <- strictToLazyST (newSTRef 0); sequence (repeat (strictToLazyST $ do v <- readSTRef r; writeSTRef r (v+1); pure v))`
17:06:01 <int-e> I guess that has some uses.
17:06:02 × beteigeuze quits (~Thunderbi@bl11-28-222.dsl.telepac.pt) (Client Quit)
17:06:18 beteigeuze joins (~Thunderbi@bl11-28-222.dsl.telepac.pt)
17:06:18 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
17:08:02 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
17:11:12 × beteigeuze quits (~Thunderbi@bl11-28-222.dsl.telepac.pt) (Quit: beteigeuze)
17:11:27 beteigeuze joins (~Thunderbi@bl11-28-222.dsl.telepac.pt)
17:14:11 razetime joins (~quassel@117.193.4.12)
17:17:12 alphabeta joins (~kilolympu@90.203.82.22)
17:18:32 × beteigeuze quits (~Thunderbi@bl11-28-222.dsl.telepac.pt) (Ping timeout: 268 seconds)
17:18:50 × mbuf quits (~Shakthi@122.165.55.71) (Quit: Leaving)
17:18:59 × kilolympus quits (~kilolympu@90.203.82.22) (Ping timeout: 248 seconds)
17:20:06 × razetime quits (~quassel@117.193.4.12) (Remote host closed the connection)
17:20:16 foul_owl joins (~kerry@23.82.194.108)
17:20:31 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:20:37 slack1256 joins (~slack1256@191.126.227.217)
17:23:37 rockymarine joins (~rocky@user/rockymarine)
17:24:08 matthewmosior joins (~matthewmo@173.170.253.91)
17:24:44 × toeffel quits (~toeffel@user/toeffel) (Ping timeout: 268 seconds)
17:28:41 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
17:29:39 <slack1256> What do you use for `sort`ing a Data.Vector? There is no default function on that module.
17:31:01 <int-e> look on hackage? my first hit is https://hackage.haskell.org/package/vector-algorithms which as *way* too many choices
17:31:40 jmdaemon joins (~jmdaemon@user/jmdaemon)
17:32:15 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
17:35:20 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:35:50 gmg joins (~user@user/gehmehgeh)
17:36:05 <qrpnxz> okay yes ST.Lazy is awesome. I can use lazy ST state to produce an infinite stream without a problem. If i use strict ST it has to run infinite actions on the runST
17:36:11 <qrpnxz> so very useful indeed!
17:39:22 Midjak joins (~Midjak@82.66.147.146)
17:41:10 mc47 joins (~mc47@xmonad/TheMC47)
17:41:22 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:42:17 <carbolymer> hi, how's `Show` instance implemented for sum types e.g. `data Foo = Foo | Bar` ? I'm not seeing any generics there https://hackage.haskell.org/package/base-4.17.0.0/docs/src/GHC.Show.html#Show
17:42:42 <geekosaur> it's built into the compiler
17:43:19 <geekosaur> the rules are described in the Report. you'd have to ask in #ghc for how ghc actually implements them, but it doesn't use Generics
17:43:40 jakalx joins (~jakalx@base.jakalx.net)
17:43:46 <carbolymer> oh nice and not nice at the same time
17:43:47 <carbolymer> thanks
17:44:49 <geekosaur> -ddump-deriv will show the code ghc generates for derived instances including Show
17:45:09 noisyboy joins (~soumen@58.182.45.203)
17:47:46 econo joins (uid147250@user/econo)
17:49:19 <slack1256> int-e: Oh, it is a separate package. Gotcha
17:51:03 × noisyboy quits (~soumen@58.182.45.203) (Remote host closed the connection)
17:51:52 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 258 seconds)
17:52:01 chexum joins (~quassel@gateway/tor-sasl/chexum)
17:52:16 wonko_ joins (~wjc@2a0e:1c80:2::130)
17:52:23 × vglfr quits (~vglfr@145.224.94.75) (Ping timeout: 252 seconds)
17:53:23 vglfr joins (~vglfr@145.224.94.75)
17:53:29 soumen joins (~soumen@58.182.45.203)
17:53:54 toeffel joins (~toeffel@user/toeffel)
17:54:23 <codedmart> I am trying to compile hls 1.7.0.0 with ghcup `ghcup compile hls --version 1.7.0.0 --ghc 9.2.4` and seeing this error `ghcup: cabal: executeFile: does not exist (No such file or directory)`
17:55:18 × benin0 quits (~benin@183.82.205.66) (Quit: The Lounge - https://thelounge.chat)
17:56:46 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
17:57:08 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:57:23 × alphabeta quits (~kilolympu@90.203.82.22) (Ping timeout: 268 seconds)
17:57:48 matthewmosior joins (~matthewmo@173.170.253.91)
17:58:39 × username9431 quits (~Thunderbi@2a00:23c5:4202:9c01:4d47:1a1f:d871:dac1) (Ping timeout: 268 seconds)
17:59:16 × toeffel quits (~toeffel@user/toeffel) (Ping timeout: 268 seconds)
18:00:12 kilolympus joins (~kilolympu@90.203.82.22)
18:00:23 <int-e> codedmart: I'd guess that `ghcup install cabal` fixes that.
18:00:45 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
18:01:26 gmg joins (~user@user/gehmehgeh)
18:02:37 × even4void[m] quits (~even4void@2001:470:69fc:105::2:4b9c) (Quit: Reconnecting)
18:02:56 even4void[m] joins (~even4void@2001:470:69fc:105::2:4b9c)
18:02:58 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
18:03:33 <codedmart> int-e Nope already tried that
18:07:24 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
18:08:03 <geekosaur> I just tried it here and it got past that (but immediately failed complaining about missing dependencies)
18:08:54 × titibandit quits (~titibandi@xdsl-87-78-66-58.nc.de) (Quit: Leaving.)
18:09:29 rockymarine joins (~rocky@user/rockymarine)
18:10:11 ofl^ joins (~ofl@c-73-237-184-20.hsd1.ga.comcast.net)
18:10:17 toeffel joins (~toeffel@user/toeffel)
18:10:39 × zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection)
18:13:16 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
18:13:49 hippoid parts (~idris@c-98-220-13-8.hsd1.il.comcast.net) (WeeChat 3.5)
18:15:10 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
18:15:18 × toeffel quits (~toeffel@user/toeffel) (Ping timeout: 268 seconds)
18:16:01 <qrpnxz> int-e: did you see my message above? I can confirm ST.Lazy useful :)
18:16:11 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
18:19:06 <monochrom> I think your example is equivalent to enabling mfix. :)
18:19:35 <monochrom> But yeah I've done that with both ST.Lazy and State.Lazy.
18:20:13 <monochrom> We love head recursion, don't we? Down with tail-call optimization! In Haskell we have head-call optimization!
18:20:29 <monochrom> I should say that next time someone asks about TCO.
18:20:33 <qrpnxz> 😄
18:20:36 <int-e> qrpnxz: if you scroll up another half hour you'll see why I didn't reply
18:20:57 × slack1256 quits (~slack1256@191.126.227.217) (Read error: Connection reset by peer)
18:21:44 <qrpnxz> yeah, but i felt like that example was too contrived to be a good proof of usefulness. Still, that definitely showcases the power
18:22:17 slack1256 joins (~slack1256@186.11.99.53)
18:22:19 <qrpnxz> on the other hand, i didn't post any code, so my message doesn't seem to express a use much different from your example lol
18:22:35 <qrpnxz> in my test i did i'm using vectors and doing some windowing
18:22:38 <int-e> the example was for illustration, something that fits into an IRC message
18:22:45 <monochrom> I haven't completely understood the semantics of ST.Lazy. For now I approximate it by: if you read any STRef, then it forces almost everything. But it's an approximation, I think I even saw a marginal counterexample.
18:23:02 coot joins (~coot@213.134.176.158)
18:23:20 <int-e> monochrom: If you use the result of readSTRef that will force all ST actions that precede it.
18:23:24 <qrpnxz> well, read from STRef forces everything *up to the read*, and strict forces everything period
18:23:35 <qrpnxz> that's the diff in a nutshell
18:23:59 <int-e> operationally, that's because of the artificial data dependency conveyed by the state token
18:24:47 <monochrom> Would be nice if the data dependency is fine-grained on the actual contents of the STRef's.
18:24:50 <qrpnxz> i feel like there's room for a really clever applicative
18:24:52 <qrpnxz> here
18:25:23 <monochrom> Although, probably no one needs it badly.
18:25:31 <monochrom> Talk about low demands haha.
18:25:37 × vglfr quits (~vglfr@145.224.94.75) (Read error: Connection reset by peer)
18:25:47 vglfr joins (~vglfr@145.224.94.75)
18:25:50 <int-e> the finely grained version of this is lazy evaluation, which restricts you to at most one write per "STRef". ;)
18:26:18 <int-e> (I'm sure this is wrong when you look closely enough.)
18:27:07 <monochrom> No worries, that's how I explain Haskell and Java's final vars too!
18:27:16 × mima quits (~mmh@dhcp-138-246-3-174.dynamic.eduroam.mwn.de) (Ping timeout: 260 seconds)
18:28:10 <int-e> Yeah, I once learned the hard way that Java's final vars cannot form cycles...
18:29:46 <int-e> (The write-once references model of lazy evaluation is missing thunks.)
18:30:34 <monochrom> Ah. I just mean I explain immutability that way.
18:31:38 <int-e> (Instead, Java lets you read uninitialized final variables druing initialization. It's quite a surprise if you mistake "final" for "constant". As I did.)
18:32:54 matthewmosior joins (~matthewmo@173.170.253.91)
18:33:24 <int-e> (it's not insane; "uninitialized" gives you a default value like null or 0 depending on the type)
18:36:01 <monochrom> Yeah, that.
18:36:32 <monochrom> Alternatively it's as insane as date-default? >:)
18:37:22 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
18:37:30 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
18:38:04 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
18:41:36 mvk joins (~mvk@2607:fea8:5ce3:8500::a1ec)
18:47:35 lortabac joins (~lortabac@88.125.6.227)
18:47:40 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
18:49:35 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
19:00:31 × wonko_ quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 260 seconds)
19:05:17 matthewmosior joins (~matthewmo@173.170.253.91)
19:06:27 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
19:06:59 stiell joins (~stiell@gateway/tor-sasl/stiell)
19:07:05 jakalx parts (~jakalx@base.jakalx.net) ()
19:07:17 jakalx joins (~jakalx@base.jakalx.net)
19:14:38 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
19:16:07 vektor joins (~vektor@IP-212232083002.dynamic.medianet-world.de)
19:17:25 madjestic joins (~madjestic@88-159-247-120.fixed.kpn.net)
19:21:18 <vektor> For anyone familiar with Functorio ( https://bartoszmilewski.com/2021/02/16/functorio/ ) - how would I express a furnace?
19:22:48 <Rembane> Coal -> IronOre -> IronPlate -- something like that?
19:22:56 <vektor> Or to clarify: How do I encode, within haskell's type system, a function f :: a -> b that converts from a to b, when I have a known set of mappings from a to b? Can I bake those into the type system somehow, that one type a (say, iron ore) always gets converted to a specific other type b (say iron plate)?
19:22:57 × raym quits (~raym@user/raym) (Ping timeout: 252 seconds)
19:23:25 <vektor> Rembane: generically, over all ores is what I'm looking for.
19:23:42 <vektor> How do I tell the type system that iron ore maps to iron plate and copper ore maps to copper plate?
19:23:53 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
19:24:23 <vektor> (Or, and that's a conjecture I'm entirely willing to accept, am I straying out of the domain of FP, because I'm moving away from generic functions and towards generic data and I actually need OOP? :'(
19:25:17 causal joins (~user@50.35.83.177)
19:25:46 <[exa]> vektor: something like `Metal a => Ore a -> Plate a` ?
19:26:07 <[exa]> plusminus some energy source ofc, I'm not good at factoryio
19:26:26 <vektor> I don't care about the energy source at all here, that's fine.
19:26:28 <Rembane> vektor: Maybe some funcdeps could help you out, or something like that
19:29:37 ph88 joins (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de)
19:29:44 <vektor> The Metal a is not really what I'm looking for, as it requires me to keep track of ores and plates. (I'm also not sure I even *want* to distinctly separate things into ores and plates, what I'm interested in is more about the conversion function in the clarification above and making it work)
19:30:12 <vektor> Maybe something like convert :: (Convertible a b) => a -> b
19:30:28 <vektor> Can I write that? Or will the compiler yell at me?
19:30:55 <vektor> Plop down a bunch of instances (iron, copper, ...), done?
19:31:01 <[exa]> well you can, but the conversions tend to become more ambiguous than people would like
19:31:10 <qrpnxz> some like Convertible has been done in some libs, i was writing my own the other day then i thought it was a total waste of time and instead of asking for an `a` and `a -> b`, i should just accept a `b`
19:31:44 <vektor> Yeah, Ideally you'd have a way to enforce that there are no two instances Convertible a b and Convertible a c. That could be messy.
19:32:21 <qrpnxz> nothing wrong with having those instances
19:32:42 <[exa]> vektor: highly recommend to try to simulate the problem in prolog btw (problems are much more obvious than if hidden in a type language)
19:33:11 <qrpnxz> how does prolog help lol. And why not just LogicT
19:34:18 <[exa]> no like, this Convertible is literally the first problem thrown to prolog students (usually hidden in "has_child" or "road_from_to" or so)
19:34:48 <dminuoso> geekosaur: `family` is not a keyword, but it is an unconditionally (in the sense that its not dependent on extensions) reserved word.
19:35:27 <dminuoso> See `Note [Lexing type pseudo-keywords]`
19:35:28 <qrpnxz> ah
19:36:41 <[exa]> vektor: btw a good approach to invent types like this is to write up a list of concrete types your functions should be able to have and list of concrete types it should not have, and find the matching type(s) mechanically
19:37:12 <dminuoso> In particular, `role` or `family` are only considered special if they follow `type`.
19:37:18 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 244 seconds)
19:37:29 <dminuoso> (A top-level type, even)
19:38:26 <vektor> https://wiki.haskell.org/Functional_dependencies sounds good so far. So I could write class Convertible a b | a -> b where convert :: a -> b
19:38:29 <qrpnxz> >non-top-level type
19:38:31 <qrpnxz> huh?
19:39:21 <qrpnxz> vektor: you don't want a fun dep there. Usually you want to make many different things from an a
19:39:23 <Rembane> vektor: What about this? https://paste.tomsmeding.com/3PiryQbN
19:39:38 <vektor> Then haskell will yell at me if I have a furnace that would want to produce two different products from one input. Cool. I could even have the steel recipe (iron plate -> steel plate) in there.
19:40:19 <vektor> qrpnxz, depends. I mean, if that's the constraint that I want to express (and in the case of factorio, that *is* one of the constraints of furnaces), then I can add it.
19:40:37 <vektor> Of course, if I don't need that constraint, then I don't need the FunDep.
19:40:38 <[exa]> vektor: it won't yell
19:40:41 <qrpnxz> i wouldn't call it something as general as "Convertible", but sure
19:40:55 xsebek_ joins (xsebek@swarm.znchost.com)
19:40:55 × nerdypepper quits (~nerdypepp@user/nerdypepper) (Quit: bye)
19:41:05 <vektor> That's fair. That's a bad name.
19:41:12 <[exa]> vektor: you can perfectly have a function (more precisely a typeclass method) that produce say String->Int and String->Float etc.
19:41:42 <qrpnxz> that's what i would expect from a Convertible (more commonly From)
19:41:43 <vektor> Wait, what? I thought that's literally the only point of fun deps?
19:41:47 <qrpnxz> for this i'd call it something else
19:41:58 <vektor> Yeah, call it "furnace" instead.
19:42:14 raym joins (~raym@user/raym)
19:42:29 <qrpnxz> vektor: i believe exa is saying generally, not the version with a fun dep. With a fundep it would be only one b per a
19:43:12 <vektor> ahh ok. Yeah, for a Convertible / From typeclass, you'd have no yelling and no fundep. For the furnace, fundep and yelling if you violate the product uniqueness constraint.
19:43:15 <[exa]> vektor: ofc unless you declare your typeclass with 2 parameters and prohibit this with a fundep. :D
19:43:19 × kuribas quits (~user@ptr-17d51epjyeoyuptwhep.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
19:43:29 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
19:44:14 <vektor> (To clarify, this is, much like functorio itself, entirely an exercise in learning about type systems.)
19:44:28 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
19:44:53 <vektor> (Also a game design thought about things that bug me with giant factorio modpacks. A thought that's grown quite out of proportion. But that's beside the point.)
19:45:44 titibandit joins (~titibandi@xdsl-87-78-66-58.nc.de)
19:46:35 <vektor> Is there a generic From typeclass btw that literally every trivial conversion of types is lumped into? My google foo is failing due to the word "from" being so generic.
19:47:16 random-jellyfish joins (~random-je@user/random-jellyfish)
19:47:55 matthewmosior joins (~matthewmo@173.170.253.91)
19:48:34 <geekosaur> are you thinking of Coercible? suppose it depends on what you mean by "trivial"
19:48:38 <geekosaur> see Data.Coerce
19:49:37 × lortabac quits (~lortabac@88.125.6.227) (Quit: WeeChat 2.8)
19:50:07 nerdypepper joins (~nerdypepp@user/nerdypepper)
19:50:26 <qrpnxz> you can indeed find From in a couple libs like i mentioned. There's one bundled with an attempted new stdlib (bedrock? foundation? i forget the name). I wrote one, but never posted because i realized it's useless.
19:50:33 <vektor> That and Data.Convertible about cover the space I was expecting.
19:51:09 <xsebek_> For example https://hackage.haskell.org/package/witch-1.0.0.3/docs/Witch-From.html is one I use :)
19:51:51 <qrpnxz> "default from :: Coercible source target => source -> target" oh boy, i tried that too. Actually kind of broken.
19:52:03 × dwt_ quits (~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) (Ping timeout: 248 seconds)
19:52:26 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
19:53:31 dwt_ joins (~dwt_@c-98-198-103-176.hsd1.tx.comcast.net)
19:56:26 × ozkutuk quits (~ozkutuk@176.240.173.153) (Quit: The Lounge - https://thelounge.chat)
19:56:30 rockymarine joins (~rocky@user/rockymarine)
19:56:48 <xsebek_> whats broken about that?
19:57:27 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:57:57 <xsebek_> I only use it for couple of the defined instances so I did not run into any coerce problems
19:59:34 <xsebek_> Btw. how do I do a CURL like request in Haskell?
19:59:34 <qrpnxz> iirc, it really confuses the heck out of GHC when you actually try to use it, and cause overlapping instance problems
20:00:01 <qrpnxz> xsebek_: how about https://hackage.haskell.org/package/http-client
20:01:18 echoone joins (~echoone@188.74.37.39)
20:02:23 <echoone> Is it fair two view traverse with a monad constraint as fmap, but in the Kleisli category of the monad?
20:02:33 × ofl^ quits (~ofl@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 252 seconds)
20:02:55 ofl^ joins (~ofl@c-73-237-184-20.hsd1.ga.comcast.net)
20:03:50 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 268 seconds)
20:04:59 slac13271 joins (~slack1256@191.126.227.217)
20:05:54 matthewmosior joins (~matthewmo@173.170.253.91)
20:06:35 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
20:07:36 × slack1256 quits (~slack1256@186.11.99.53) (Ping timeout: 260 seconds)
20:09:17 rockymarine joins (~rocky@user/rockymarine)
20:10:05 justsomeguy joins (~justsomeg@user/justsomeguy)
20:10:59 <geekosaur> qrpnxz, I can well imagine that using coerce without a target type could confuse ghc if multiple possibilities exist with newtypes distinguishing them
20:11:25 wonko_ joins (~wjc@2a0e:1c80:2::130)
20:12:11 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
20:12:40 ec joins (~ec@gateway/tor-sasl/ec)
20:14:17 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
20:14:36 × ofl^ quits (~ofl@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 260 seconds)
20:15:22 <qrpnxz> echoone: i believe `join . mapM` would indeed be `=<<`
20:15:48 <qrpnxz> let me do a test
20:15:57 × vektor quits (~vektor@IP-212232083002.dynamic.medianet-world.de) (Quit: Client closed)
20:16:44 <qrpnxz> nope
20:16:47 <qrpnxz> not true for list
20:17:04 <qrpnxz> it's... something
20:17:06 <qrpnxz> lol
20:17:13 <echoone> Aww shucks.
20:17:33 <echoone> And here I thought I could get away with thinking about it in simpler terms.
20:17:39 <qrpnxz> traverse is more a data type thing, and bind is more a control type thing
20:17:57 <geekosaur> were you thinking of join . fmap?
20:17:58 <qrpnxz> consider IO is not traversable
20:18:03 <geekosaur> :t join . fmap
20:18:04 <lambdabot> error:
20:18:04 <lambdabot> • Occurs check: cannot construct the infinite type: m ~ (->) (m a)
20:18:04 <lambdabot> Expected type: (a -> a1) -> m (m a1)
20:18:06 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
20:18:13 <qrpnxz> join . fmap could indeed actually be (=<<)
20:18:22 <geekosaur> :t (join .) . fmap
20:18:24 <lambdabot> Monad m => (a1 -> m a2) -> m a1 -> m a2
20:19:02 ofl^ joins (~ofl@c-73-237-184-20.hsd1.ga.comcast.net)
20:19:42 <echoone> :t join . mapM
20:19:44 <lambdabot> Traversable t => (a -> t a -> b) -> t a -> t b
20:19:51 <qrpnxz> right we need black bird here so i really mean what geek put
20:20:31 <qrpnxz> :t (join .) . mapm
20:20:32 <lambdabot> error:
20:20:32 <lambdabot> • Variable not in scope: mapm :: a -> a1 -> m (m a2)
20:20:32 <lambdabot> • Perhaps you meant one of these:
20:20:33 <qrpnxz> :t (join .) . mapM
20:20:35 <lambdabot> (Monad m, Traversable m) => (a1 -> m a2) -> m a1 -> m a2
20:21:13 <qrpnxz> because traverse is pulling the mapped m into the outside, it's reordering the effect. Causes a different result
20:21:26 jargon joins (~jargon@184.101.185.66)
20:21:32 <echoone> Which list example did you try?
20:21:59 <qrpnxz> i just mapped [1..10] with (\x -> [x, x+1])
20:22:46 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
20:22:57 <echoone> So m is [], but what is the Traversable t you are using?
20:23:08 <qrpnxz> also []
20:23:08 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
20:23:10 <echoone> Are you using t = [] too.
20:23:11 <qrpnxz> otherwise you can't join
20:23:12 <echoone> Ah,
20:23:52 <echoone> I'm not sure why join enters the picture here.
20:24:14 renzhi joins (~xp@2607:fa49:6500:b100::c93a)
20:24:25 <qrpnxz> so to answer the original question: not really. I'd give maybe that description to (=<<) though
20:24:43 <qrpnxz> with no join you aren't doing anything that i would really describe monadic
20:24:54 <qrpnxz> it would just be an applicative that happens to be a monad mapped into a traversable
20:25:06 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
20:25:59 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
20:26:07 <echoone> Wouldn't I need to show that it does not satisfy the functor laws in the Kleisli category?
20:26:47 rockymarine joins (~rocky@user/rockymarine)
20:27:17 <qrpnxz> ya know, i think it actually might satisfy the laws, given the laws of traversable. But idk
20:28:14 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 255 seconds)
20:28:38 slack1256 joins (~slack1256@186.11.99.53)
20:29:07 × slac13271 quits (~slack1256@191.126.227.217) (Read error: Connection reset by peer)
20:29:16 <qrpnxz> where the laws would look like notBind pure = pure and notBind f <=< notBind g = notBind (f <=< g) where notBind = (join .) . mapM
20:29:46 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
20:32:21 nate4 joins (~nate@98.45.169.16)
20:33:09 <echoone> The identity/pure law is certainly satisfied.
20:33:21 <qrpnxz> i think better way to understand traversable is to implement an instance. Like for example the instance for list: traverse f [] = pure []; traverse f (x:xs) = liftA2 (:) (f x) (traverse f xs). You can see that all we do is rebuild structures inside the idiom of the applicative.
20:35:33 <echoone> I do have the understanding. It's basically like fmap, but your values are under an applicative, so in order to apply your constructors and other primitives, you have to liftA them.
20:36:02 <echoone> But the laws are difficult to remember.
20:36:22 <echoone> If it were really like fmap in an appropriate category, I could remember them easier.
20:36:56 <[Leary]> `mapM f <=< mapM g = mapM (f <=< g)` won't be satisfied unless the effects are symmetric; the transform transposes them.
20:37:09 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
20:37:26 <qrpnxz> the laws are very similar to fmap, basically just two iirc: traverse pure = pure, and Compose . fmap (traverse f) . traverse g = traverse (Compose . fmap f . g)
20:37:50 <qrpnxz> [Leary]: thanks
20:38:11 <echoone> It is kind of like fmap, but I can't for the life of me remember it (or reverse engineer it).
20:38:34 <echoone> [Leary] What does "symmetric" mean
20:38:49 <qrpnxz> i think he means the effects commute (order doesn't matter)
20:39:29 <echoone> So like do {x <- m; y <- n} = do {y <- n; x <- m} ?
20:39:45 <qrpnxz> yeah, which is true sometimes
20:39:50 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
20:39:59 <c_wraith> usually that's called a commutative monad
20:40:20 <echoone> Yes.
20:40:50 shapr` joins (~user@68.54.166.125)
20:40:51 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
20:40:55 <c_wraith> and the only really common ones I can think of are Maybe and Reader, but I'm sure there a lot more.
20:41:24 pavonia joins (~user@user/siracusa)
20:41:39 <qrpnxz> i think GenHaxl also relies on it. It's (<*>) is only `ap` if you satisfy that.
20:42:29 <echoone> I thought Haxl violated the `ap = <*>` law.
20:42:37 × kilolympus quits (~kilolympu@90.203.82.22) (Quit: See you later! :))
20:42:38 × wonko_ quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 255 seconds)
20:42:43 <c_wraith> Yeah, Haxl relies on ApplicativeDo rewriting
20:43:05 × shapr quits (~user@2601:7c0:c383:70:8f2e:ebd3:e94d:76ae) (Ping timeout: 255 seconds)
20:43:08 <qrpnxz> only if you don't have a commutative effect iirc, which your data sources should be(?)
20:43:13 <qrpnxz> i'm not a haxl expert
20:43:13 <c_wraith> Things that can be converted to Applicative functions run in parallel, otherwise they're in sequence.
20:44:03 <c_wraith> data sources can change in time, so there are interleavings with the outside world in which the difference is observable
20:44:45 <c_wraith> for haxl's use case, that's determined to not matter. But it does mean that it's a sketchy monad. :)
20:45:01 <c_wraith> (in terms of agreeing with Applicative)
20:45:35 <qrpnxz> speaking of, that's why Concurrently from Async is not a Monad, but we could have Racing or something that was a Monad and also had the Alternative instance. Just sayin'
20:46:06 <qrpnxz> also weird that it's not a MonadIO
20:46:30 <echoone> But Concurrently is IO as a monad. In fact, Concurrently is a newtype wrapper of IO to get a concurrent applicative.
20:46:49 <qrpnxz> right, so it should be MonadIO :)
20:47:28 <echoone> What would happen if we did not have the ap = <*> law?
20:47:54 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
20:47:56 <qrpnxz> `ap` is the proof that Applicative is a super class of Monad, it would be very confusing if ap didn't match <*>
20:48:39 <qrpnxz> i'd say if those don't match then it's not even a real super class
20:48:51 <echoone> OK, so what if it was not a superclass?
20:48:56 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
20:49:05 <c_wraith> lots of code would get uglier. :P
20:49:07 <qrpnxz> if it was not a superclass then sure, they don't have to match
20:49:25 <qrpnxz> but i mean, you can just have another function, or newtype wrap
20:49:30 <c_wraith> You'd end up with lots of (Applicative m, Monad m) constraints on stuff.
20:49:34 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
20:49:38 <c_wraith> I know this, because... I lived it. :P
20:49:43 × titibandit quits (~titibandi@xdsl-87-78-66-58.nc.de) (Remote host closed the connection)
20:49:47 <qrpnxz> (Applicative m, Monad m) is crazy
20:50:08 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
20:50:10 <c_wraith> before AMP, I wrote a fair bit of code where I had to decide if I wanted to use Applicative functions or have cleaner constraints
20:50:24 <echoone> c_wraith: But why? You can just wrap the Monad whose purpose is to make it an applicative
20:50:52 <qrpnxz> if they are separate you need traverse and mapM, is they are together you can just use traverse
20:51:05 <qrpnxz> i should be able to use a monad anywhere i only care about applicative
20:51:18 <qrpnxz> lot of code reuse and more general
20:51:31 <echoone> But as I said, you can use a newtype wrapper. We basically do with with Selective.
20:51:48 mima joins (mmh@gateway/vpn/airvpn/mima)
20:51:57 <dolio> Sprinkling newtypes all over your code is uglier.
20:52:04 <echoone> Too late.
20:52:17 <qrpnxz> i see what you mean, but meh, i rather newtype to choose an alternative applicative instance, than newtype every time i want to just use the normal sane likely singular applicative instance that i get form the monad
20:52:30 <qrpnxz> *from
20:53:09 <qrpnxz> there any reason the Applicative from the Monad should not be the default? It's the most sane thing.
20:53:42 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:53:46 <qrpnxz> And you don't have to hope people define an applicative that should in no universe not exist if you have a monad
20:54:10 matthewmosior joins (~matthewmo@173.170.253.91)
20:55:20 <qrpnxz> Haxl just doesn't care because they want fancy syntax, but even that's not really an excuse imo because there's an extension that let's you do a custom do notation with alternate operators now
20:55:34 <qrpnxz> *lets
20:58:17 × ph88 quits (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
20:58:32 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Quit: segfaultfizzbuzz)
20:59:09 <qrpnxz> ever tried using the ZipList Applicative? you gotta do like f <$> ZipList as <*> ZipList bs. Would you say it's in improvement or worse to have to do f <$> WrappedMonad as <*> WrappedMonad bs for the normal instance? echoone
21:00:11 × califax quits (~califax@user/califx) (Remote host closed the connection)
21:00:12 <qrpnxz> i guess what you'd end up doing is liftM2 f as bs, but then you are marrying the Monad, and you start using Monad more than you should be, when all you needed was Applicative
21:00:38 jinsun__ joins (~jinsun@user/jinsun)
21:00:38 jinsun is now known as Guest5410
21:00:38 × Guest5410 quits (~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services)))
21:00:38 jinsun__ is now known as jinsun
21:00:57 a6a45081-2b83 joins (~aditya@pal-210-106-57.itap.purdue.edu)
21:01:35 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
21:01:38 <qrpnxz> as i see it, there's no downside and good upside to Applicative superclass
21:01:38 <echoone> > i rather newtype to choose an alternative applicative instance,
21:01:39 <echoone> this seems reasonable
21:01:40 <lambdabot> <hint>:1:10: error: parse error on input ‘newtype’
21:02:01 califax joins (~califax@user/califx)
21:02:39 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
21:03:03 × euandreh quits (~euandreh@179.214.113.107) (Ping timeout: 252 seconds)
21:04:31 × mima quits (mmh@gateway/vpn/airvpn/mima) (Ping timeout: 252 seconds)
21:05:16 euandreh joins (~euandreh@179.214.113.107)
21:05:34 <echoone> In a world were Functor and Monad were closer to their real category theory definitions, there would be problems though.
21:06:23 <qrpnxz> No comment.
21:07:00 <echoone> I've tried it in Agda, it didn't work out.
21:08:33 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
21:09:12 Pickchea joins (~private@user/pickchea)
21:10:01 × ofl^ quits (~ofl@c-73-237-184-20.hsd1.ga.comcast.net) (Remote host closed the connection)
21:10:25 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:12:13 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
21:12:41 cheater joins (~Username@user/cheater)
21:13:24 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
21:14:51 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
21:16:29 chexum joins (~quassel@gateway/tor-sasl/chexum)
21:18:40 × a6a45081-2b83 quits (~aditya@pal-210-106-57.itap.purdue.edu) (Remote host closed the connection)
21:18:49 <qrpnxz> consider other class hierarchies for example. I can have all kinds of Foldable instances for types that won't match the one i get from Traversable's foldMapDefault. Does that mean then that Foldable should not be a superclass of Traversable? Hard no again imo. The Functor and fmapDefault could also behave differently if they weren't tied together.
21:23:18 <echoone> I'm not sold on that one.
21:23:31 texasmynsted joins (~texasmyns@99.96.221.112)
21:24:01 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:24:16 × zer0bitz quits (~zer0bitz@2001:2003:f748:2000:4dbc:af65:e687:45de) (Ping timeout: 244 seconds)
21:24:27 <echoone> I have a weird feeling that Foldable and Traversable or not the right abstractions.
21:24:36 <echoone> s/or/are
21:25:01 geekosaur points out that <*> and ap need to do the same thing, because of all the legacy Monad-s that backform Applicatives from return and ap
21:25:34 <Rembane> echoone: Care to elucidate?
21:26:12 <echoone> Well, Foldable doesn't really have proper laws and Traversable's laws are weird.
21:26:51 <echoone> It seems that both these classes have to do with lists, ultimately.
21:27:05 × renzhi quits (~xp@2607:fa49:6500:b100::c93a) (Ping timeout: 268 seconds)
21:29:16 matthewmosior joins (~matthewmo@173.170.253.91)
21:32:09 <Rembane> Those are very good points
21:32:11 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
21:32:23 <qrpnxz> Foldable has laws, they make sure that the different methods are are sane and things that should be equivalent are equivalent
21:32:46 <qrpnxz> in fact, what i said above applies to Functor and Monad too. liftM could differ from fmap, but again that's kind of insane
21:33:41 <geekosaur> no it can't
21:33:42 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:33:50 <qrpnxz> by law they can't, but they could
21:33:55 <qrpnxz> in reality
21:34:01 × Tuplanolla quits (~Tuplanoll@91-159-69-12.elisa-laajakaista.fi) (Quit: Leaving.)
21:34:16 <geekosaur> doesn't a given type have at most one possible Functor?
21:34:26 eikke joins (~NicolasT@user/NicolasT)
21:34:40 merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
21:34:43 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
21:34:54 <texasmynsted> wow, I just discovered Haxl. It looks super interesting. (Looks like it has been around 7 years or so)
21:35:51 <echoone> If Foldable had pure, we could make it into a wannabe Free monoid type class.
21:36:11 <qrpnxz> geekosaur: actually, you might be right. Because Functor can change types, there might only be one way to do it.
21:36:46 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.5)
21:38:07 <qrpnxz> SO says so: https://stackoverflow.com/questions/19774904/are-functor-instances-unique
21:38:36 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:39:02 <qrpnxz> echoone: what is weird about traversable's laws?
21:39:22 <texasmynsted> I also did not know about the ApplicativeDo language extension.
21:39:26 <qrpnxz> should not traversing twice be the same as traversing once and doing two things?
21:39:50 <qrpnxz> if that were not so, that's a quite different abstraction
21:39:54 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
21:41:17 <echoone> I'm used to structure-preserving laws. But for Traversable, there is no mention about what structure is being preserved.
21:41:18 <qrpnxz> the traversable laws have other nice consequences. For example, the number elements cannot change by doing a traversal.
21:41:22 <qrpnxz> behaves as you'd expect
21:42:40 <qrpnxz> you should check these papers out if you havent: https://hackage.haskell.org/package/base-4.17.0.0/docs/Data-Traversable.html#g:21
21:42:45 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
21:42:51 <qrpnxz> echoone:
21:42:59 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds)
21:43:56 <echoone> "the number elements cannot change by doing a traversal" <-- but here you are thinking of Traverable's as containers. This is OK to start with (in fact containers are the largest class of Traversables that we know of), but there may be more Traversable stuff out there and nobody really knows what structure these Traversable functors are the
21:43:57 <echoone> morphisms of.
21:44:25 nate4 joins (~nate@98.45.169.16)
21:44:28 <echoone> "you should check these papers out if you havent" <-- Yes, I have read them all already.
21:46:10 <qrpnxz> if you could give a concrete example maybe that might help
21:48:10 <echoone> A concrete example of structure-preserving laws?
21:48:10 <qrpnxz> i wouldn't say that's an example of a traversable as a container, but simply as a traversable/iterator. A traversable has a numbers of targets, 0 or more. namely what you pass to `a -> f b`. I don't need to invoke "container" to talk about that.
21:49:10 <qrpnxz> i can have a traversable that doesn't "contain" anything but merely is a generator of `a`s, and then i get another generator of `a`s
21:49:32 <qrpnxz> like `IO a` is a generator of `a` and doesn't contain an `a`
21:49:33 <echoone> But you don't see that from the laws.
21:49:41 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
21:52:54 <qrpnxz> i don't know how to respond to that. Do you wish the docs for Data.Traversable mentoned more consequences of the two basic laws?
21:53:36 <echoone> I want a structure, e.g. a category or something that Traversable functors preserve.
21:55:54 <qrpnxz> runIdentity . traverse (Identity . f) = fmap f. Does that not evidence the kind of structure that is being preserved? traverse pure = pure, so the structure in the applicative will be the same as the structure outside the applicative.
21:57:11 <echoone> Yes, but what is that structure. That is the real question.
21:57:16 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
21:57:41 <qrpnxz> what is the structure of any given Functor (which every Traversable is)? Depends on the Functor
21:57:48 × michalz quits (~michalz@185.246.204.93) (Remote host closed the connection)
21:58:19 <[Leary]> I suspect the answer is actually "an algebraic data type".
21:58:37 <[Leary]> I've never seen an interesting Traversable instance.
21:59:02 <qrpnxz> traversable instance just looks exactly like functor instance inside the applicative idiom
21:59:07 <qrpnxz> so yeah me neithe rlol
21:59:18 <[Leary]> It's actually less interesting.
21:59:39 <[Leary]> You can't have things like (->) r or IO. I suspect your generators wouldn't work out either.
21:59:59 <echoone> Containers/polynomial functors are the largest class of Traversables we know of, so they preserve those, but its just a subset.
22:00:37 × acidjnk quits (~acidjnk@p54ad5adb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
22:00:52 × echoone quits (~echoone@188.74.37.39) (Quit: Client closed)
22:01:10 <qrpnxz> [Leary]: well consider this https://hackage.haskell.org/package/fmlist-0.9.4/docs/Data-FMList.html
22:01:18 wonko_ joins (~wjc@2a0e:1c80:2::130)
22:01:58 × cheater quits (~Username@user/cheater) (Ping timeout: 244 seconds)
22:02:14 cheater joins (~Username@user/cheater)
22:02:23 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
22:03:24 jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
22:03:25 <qrpnxz> that's a non-typical instance
22:03:48 <qrpnxz> there's no container there. Just a function.
22:03:51 <[Leary]> Not really. Encode them by foldr or foldMap, lists are lists.
22:04:32 <[Leary]> All algebraic data types are functions in my head.
22:04:37 <qrpnxz> the function could have come from flip foldMap list, or just writ by hand
22:04:43 <monochrom> Unpopular opinion: Every representable functor is a container. >:)
22:05:29 monochrom ducks. That's half joking, half trolling, half nerd-sniping.
22:06:32 oxide joins (~lambda@user/oxide)
22:07:18 <hpc> heh, that reminds me of one time, a coworker was installing pandoc and he had never used haskell
22:07:29 <qrpnxz> i mean, there really is not much of a point in trying to draw a line between container and not-container wrt Traversable. It just is what it is. As it is, it's really useful. If you need something else, that's not Traversables problem
22:07:30 <hpc> so he saw it was installing containers and he asked me why a document converter needed docker
22:07:50 <qrpnxz> lmao
22:07:53 <monochrom> hahahha
22:08:41 × merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
22:08:48 <qrpnxz> i ask that myself every day except for flatpak
22:09:36 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
22:09:52 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:10:04 rockymarine joins (~rocky@user/rockymarine)
22:11:07 geekosaur really doesn't see what the problem is. instead of being a structure, it preserves whatever structure it is given
22:11:19 <geekosaur> surely we can generalize like that?
22:12:41 cheater joins (~Username@user/cheater)
22:13:10 <monochrom> Oh, today's smbc applies. "Why does everything have to be a noun with you?" >:)
22:13:11 <hpc> it's just nixos without any package sharing :P
22:14:23 <qrpnxz> monochrom: lol seriously. Good comic!
22:14:33 × euandreh quits (~euandreh@179.214.113.107) (Ping timeout: 252 seconds)
22:14:35 <geekosaur> everything has to be a verb with me 😈
22:14:48 <qrpnxz> verb centrism actually based
22:14:58 <monochrom> Hehe right? Consider "God, do containers exist? Are they real?"
22:15:22 <monochrom> And generalize that to all of OOP aka noun-driven programming.
22:16:20 <hpc> i am going to make an adverb-based language and call it "hemingway"
22:16:21 zero is now known as zzz
22:16:40 <monochrom> haha
22:16:40 euandreh joins (~euandreh@179.214.113.107)
22:16:50 <qrpnxz> "Does the RealWorld exist?" "idk, IO is an implicit effect for me"
22:16:56 <monochrom> You can start with STM's "atomically" :)
22:17:07 × oxide quits (~lambda@user/oxide) (Quit: oxide)
22:17:15 <monochrom> Arguably System.IO.withFile is also an adverb.
22:17:35 <hpc> fileishly
22:17:36 <monochrom> An adverb phrase, I bet.
22:18:03 <qrpnxz> sequence: bad. sequentially: 😎
22:18:10 <hpc> and of course, the website for the language will be hemingway.ly
22:18:19 <qrpnxz> lol
22:18:28 <monochrom> heh
22:19:10 <monochrom> Is adverb-based programming the same as CPS?
22:20:07 <hpc> hmm yeah, it kind of is
22:20:11 <qrpnxz> considering any effect can be reflected into ContT, makes sense
22:20:27 <hpc> the async keyword can be spelled out completelly, "asynchronously"
22:20:42 × td_ quits (~td@94.134.91.130) (Ping timeout: 268 seconds)
22:20:57 <hpc> forkIO is "simultaneously"
22:21:09 <hpc> all the good functions are adverbs
22:21:11 <qrpnxz> in async that's concurrently
22:21:13 <hpc> i think we're onto something
22:22:06 td_ joins (~td@94.134.91.224)
22:22:09 <dsal> I don't think considering `forkIO` as "simultaneous" is necessarily good. Not all schedulers will guarantee two processes get run in lockstep.
22:23:02 <monochrom> Actually correction: Is adverb-based programming the same as RAII? Because withFile certainly is, and atomically in a sense.
22:23:37 <dsal> adverbs compose with a verb into a statement
22:23:47 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 268 seconds)
22:23:49 <qrpnxz> idk what RAII would have to do with adverbs. Certainly withFile and RAII are somewhat related in that both acquire resources but that's it
22:24:04 <hpc> i can't think of how async acquires a resource
22:24:13 <dsal> async acquires a thread
22:24:14 <qrpnxz> async acquires a thread
22:24:15 <hpc> unless you count the promise
22:24:17 <qrpnxz> lol
22:24:21 <geekosaur> it acquires a thread of control
22:24:26 <monochrom> Oh you're misled by the poor name RAII. I was too.
22:24:31 <geekosaur> don't mind me being later than everyone else
22:24:55 <dsal> It's important not to expect timeliness when dealing with async.
22:25:04 <monochrom> Turns out the emphasis is on releasing the resource upon exiting the lexical scope.
22:25:15 <monochrom> So yeah, nothing to do with A, I, or I.
22:25:26 <qrpnxz> monochrom: you have that in C++ even without RAII though
22:25:48 <dolio> Oh yeah. I never really thought about it, but the name is completely wrong for what people care about.
22:26:17 <hpc> strictly speaking, openFile is RAII too, if you follow the actual meaning of the words
22:26:21 <monochrom> No, because normally "open-use-close" can skip the "close" if the "use" throws and exception. Or you have an early "return".
22:26:29 <hpc> you're acquiring the file resource, and initializing a Handle with no in between
22:26:39 × td_ quits (~td@94.134.91.224) (Ping timeout: 252 seconds)
22:27:31 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:27:35 <hpc> "bracketing" is a better word for RAII
22:27:42 <monochrom> Yeha.
22:27:49 <johnw> maybe even... scoping? :)
22:27:56 <qrpnxz> let's say resource acquisition is not initialization. Move semantics didn't go away? Seems like a totally different system. They work together, but aren't thesame.
22:28:07 <monochrom> "with scope" is an adverb phrase to me :)
22:28:22 <monochrom> or generally "<preposition> scope"
22:30:52 <qrpnxz> i suppose "RAII" as a pattern in a general sense, is indeed basically the `with` pattern. I rather they used another word to talk about in that sense. tbf i can't think of a better term. But having no term feels better than a bad one to me sometimes.
22:31:19 <monochrom> "resource release upon exit" is the correct name but I guess "RRUE" isn't a cool acronym.
22:32:44 <qrpnxz> RAIIARRIDP: Resource acquisition is initialization and resource release is destruction pattern.
22:32:48 <qrpnxz> spread the word
22:33:15 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
22:33:32 cheater joins (~Username@user/cheater)
22:33:44 <johnw> now let's debate what SFINAE should be called
22:34:22 <dolio> Not sure I even know what that one is.
22:34:31 Sgeo joins (~Sgeo@user/sgeo)
22:34:36 <johnw> (Template) Specialization Failure is Not An Error
22:34:56 <johnw> it basically is what enabled heavy duty template meta programming
22:34:57 <dolio> It's not?
22:35:14 <johnw> https://en.cppreference.com/w/cpp/language/sfinae
22:36:03 ph88 joins (~ph88@2a02:8109:9e00:71d0:347f:662b:ca0c:3408)
22:36:45 <monochrom> SFID = substitution failure increases determinism :)
22:37:04 <monochrom> "think positive!"
22:38:37 × xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 268 seconds)
22:39:47 × coot quits (~coot@213.134.176.158) (Quit: coot)
22:40:00 <monochrom> TOSIJTLMWYP = template overload resolution is just the list monad what's your problem >:)
22:40:07 <johnw> hahaha, love it
22:40:21 mikoto-chan joins (~mikoto-ch@164.5.249.78)
22:40:27 <johnw> it really rolls off the tongue
22:40:38 <dolio> This reference page doesn't seem to explain things very well.
22:41:05 × wonko_ quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 268 seconds)
22:41:07 <hpc> i am okay with c++ taking forever to compile if it rate-limits that sort of thing
22:42:30 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
22:43:20 slack4605 joins (~slack1256@191.126.227.80)
22:45:17 azimut joins (~azimut@gateway/tor-sasl/azimut)
22:45:21 × slack1256 quits (~slack1256@186.11.99.53) (Ping timeout: 252 seconds)
22:45:54 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
22:45:56 <johnw> maybe https://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error?
22:46:05 coot joins (~coot@213.134.176.158)
22:48:20 × coot quits (~coot@213.134.176.158) (Client Quit)
22:50:56 × slack4605 quits (~slack1256@191.126.227.80) (Read error: Connection reset by peer)
22:51:00 slack1256 joins (~slack1256@186.11.99.53)
22:51:10 xff0x joins (~xff0x@ai071162.d.east.v6connect.net)
22:52:09 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 268 seconds)
22:53:33 talismanick joins (~talismani@campus-017-130.ucdavis.edu)
22:53:44 mikoto-chan joins (~mikoto-ch@164.5.249.78)
22:54:36 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
22:56:21 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
22:56:43 cheater joins (~Username@user/cheater)
22:57:43 × zeenk quits (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!)
22:58:40 slac98487 joins (~slack1256@191.126.227.80)
23:02:03 × slack1256 quits (~slack1256@186.11.99.53) (Ping timeout: 268 seconds)
23:03:17 × ph88 quits (~ph88@2a02:8109:9e00:71d0:347f:662b:ca0c:3408) (Ping timeout: 268 seconds)
23:06:22 ph88 joins (~ph88@2a02:8109:9e00:71d0:347f:662b:ca0c:3408)
23:14:58 × eikke quits (~NicolasT@user/NicolasT) (Ping timeout: 268 seconds)
23:16:42 × sagax quits (~sagax_nb@user/sagax) (Quit: Konversation terminated!)
23:18:56 luffy joins (~chenqisu1@183.217.201.192)
23:26:43 × ph88 quits (~ph88@2a02:8109:9e00:71d0:347f:662b:ca0c:3408) (Ping timeout: 268 seconds)
23:28:57 ph88 joins (~ph88@2a02:8109:9e00:71d0:347f:662b:ca0c:3408)
23:30:08 × finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer)
23:30:09 × slac98487 quits (~slack1256@191.126.227.80) (Read error: Connection reset by peer)
23:30:14 beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
23:31:21 slack1256 joins (~slack1256@186.11.99.53)
23:32:53 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
23:33:22 <segfaultfizzbuzz> so i have a vague idea of what a data structure is, but is there such thing as a formalization of the concept of a data structure?
23:33:32 <segfaultfizzbuzz> like, what is the type signature of a data structure
23:34:44 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 268 seconds)
23:36:26 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:36:38 <geekosaur> that sounds like your conception may be reversed
23:36:55 <geekosaur> a data structure, to my mind, is characterized by its type signature
23:38:07 <segfaultfizzbuzz> a bad example here is we say a Tree is an example of a DataStructure and it has Insert, Delete, Search (with such-and-such performance characteristics)
23:38:49 <segfaultfizzbuzz> i could do those things just as well with a Graph or a List, etc
23:39:05 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
23:39:21 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 260 seconds)
23:39:40 <qrpnxz> perhaps you are think of an abstract data type
23:41:44 <segfaultfizzbuzz> https://en.wikipedia.org/wiki/Abstract_data_type "Each of these ADTs may be defined in many ways and variants, not necessarily equivalent. For example, an abstract stack may or may not have a count operation that tells how many items have been pushed and not yet popped."
23:41:51 <segfaultfizzbuzz> in reference to List, Set, Tree, Map, etc
23:42:10 o-90 joins (~o-90@gateway/tor-sasl/o-90)
23:44:10 <geekosaur> you may also be confusing a data type with the operations you can perform on it. the choice of data type will determine among other things the behavior and efficiency of various operations
23:44:35 <apache2> that kind of Tree or Map doesn't tell us anything about the data structure backing it
23:45:01 <geekosaur> which is why it's abstract, no?
23:45:18 <apache2> yes, the abstract part being pretty crucial
23:46:01 <segfaultfizzbuzz> if something is a Data Structure then i may make the following assumptions about it: X, Y, Z,... and optionally the following may occur: A, B, C...
23:46:50 × o-90 quits (~o-90@gateway/tor-sasl/o-90) (Ping timeout: 258 seconds)
23:49:19 <qrpnxz> wikipedia says: In computer science, a data structure is a data organization, management, and storage format that is usually chosen for efficient access to data.[1][2][3] More precisely, a data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data,[4] i.e., it is an algebraic structure about data.
23:49:22 <qrpnxz> sounds good to me
23:49:43 <apache2> segfaultfizzbuzz: yeah, those assumptions (how does this scale for memory/processing time, what are the probabilities that you get the desired answers to your queries) are usually kind of disconnected from the specific programming interface
23:50:46 <qrpnxz> it's like trying to define a chair. You are looking to closely at it I think. You just know it when you see it.
23:51:05 <geekosaur> or not closely enough, depending
23:51:07 <apache2> ie you can provide a programmer with something that looks like a "List" but is actually backed by a `set`, and they will be none the wiser until they run it and it scales differently than expected
23:51:13 <segfaultfizzbuzz> well a chair has mass, a center of gravity location,.... probably a bounding box
23:51:34 <geekosaur> you could talk about the formalization of abstract data types, or the formalization of algebraic data types
23:51:43 <geekosaur> which do you want?
23:51:45 <apache2> or a Set that is backed by a bloom filter, so the results aren't always correct, but it's pretty fast
23:51:46 <qrpnxz> okay "a chair exists" fair enough. But is that helpful? Are you enriched having said that?
23:52:17 <segfaultfizzbuzz> well it was useful here to recognize that Data Structure is indeed not a formal notion
23:52:28 <geekosaur> huh?
23:52:43 <segfaultfizzbuzz> like, a mathematical Group is a formal notion, a Data Structure is not
23:52:49 <qrpnxz> a data structure is like a list, array, a map, the pattern here is a way of storing and managing data. I can't really put it better than the wikipedia quote. That's just the idea of it
23:53:17 <geekosaur> "algebraic structure about data" sounds pretty formal to me
23:53:32 <segfaultfizzbuzz> ok then what is an algebraic structure?
23:53:35 <geekosaur> but you still haven't said whether you are talking about abstract or algebraic data types
23:53:56 <geekosaur> one that is constructed using algebraic principles. look up sum and product types, for starters
23:54:03 <segfaultfizzbuzz> yes i am familiar with those
23:54:06 <geekosaur> Haskell data types are algebraic in nature
23:54:18 <qrpnxz> i think the algebraic in that sentence is more about it has operations rather than it's made up of products and sums
23:56:35 <segfaultfizzbuzz> so i have seen magmas and semigroups and all of that
23:56:53 <qrpnxz> that's even another kind of "algebra" lol
23:56:59 <qrpnxz> what a mess
23:57:04 <segfaultfizzbuzz> is it?
23:57:10 <qrpnxz> yeah, that's abstract algebra
23:57:25 <apache2> qrpnxz: well you can use church encoding to turn them the operations into products and sums, and thne you can perform algebra on them using the resulting lambda calculus representation
23:57:28 <segfaultfizzbuzz> oh wow so they didn't mean the same thing? i was cringing to try to understand what the relationship was
23:58:43 mikoto-chan joins (~mikoto-ch@164.5.249.78)

All times are in UTC on 2022-08-29.