Home liberachat/#haskell: Logs Calendar

Logs on 2024-04-21 (liberachat/#haskell)

00:01:10 × helle quits (~helle@user/meow/Helle) (Read error: Connection reset by peer)
00:05:21 × alexherbo2 quits (~alexherbo@2a02-8440-3302-d776-5085-4da3-9df1-4a7b.rev.sfr.net) (Remote host closed the connection)
00:07:00 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
00:08:14 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
00:09:42 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds)
00:09:53 chexum joins (~quassel@gateway/tor-sasl/chexum)
00:10:10 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds)
00:10:10 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds)
00:10:53 ec joins (~ec@gateway/tor-sasl/ec)
00:11:11 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
00:11:42 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
00:11:44 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
00:13:41 × Inst quits (~Inst@user/Inst) (Remote host closed the connection)
00:17:38 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
00:21:02 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
00:23:15 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
00:29:59 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
00:30:57 Inst joins (~Inst@user/Inst)
00:35:14 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
00:36:18 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
00:36:23 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 268 seconds)
00:38:54 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
00:40:54 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
00:43:18 madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
00:49:43 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 260 seconds)
00:55:24 × titibandit quits (~titibandi@user/titibandit) (Read error: Connection reset by peer)
01:01:16 myxos joins (~myxos@65.28.251.121)
01:03:03 philopsos joins (~caecilius@user/philopsos)
01:06:44 mikoto joins (~mikoto@dzcz-fyyyyyyyyyyyyhpy-3.rev.dnainternet.fi)
01:07:57 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
01:08:33 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
01:10:01 × mikoto quits (~mikoto@dzcz-fyyyyyyyyyyyyhpy-3.rev.dnainternet.fi) (Client Quit)
01:10:14 mikoto joins (~mikoto@dzcz-fyyyyyyyyyyyyhpy-3.rev.dnainternet.fi)
01:11:48 × mikoto quits (~mikoto@dzcz-fyyyyyyyyyyyyhpy-3.rev.dnainternet.fi) (Client Quit)
01:12:50 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 252 seconds)
01:13:15 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 245 seconds)
01:13:23 bilegeek joins (~bilegeek@2600:1008:b010:6f31:97f2:4443:40ea:6a83)
01:20:17 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
01:20:55 <Inst> does readerT (>>) matter?
01:21:53 <Inst> I mean, it's essentially a coding error to use >> in (->) r or ReaderT monad, but does it matter that it's defined as f *> g = (id <$ f) <*> g?
01:23:50 <geekosaur> >> needs to exist for do notation to work
01:23:58 × harveypwca quits (~harveypwc@2601:246:d080:b40:1889:d9bf:2dd8:b288) (Quit: Leaving)
01:24:34 <c_wraith> it definitely matters for ReaderT. It indicates a problem with Reader
01:24:35 <geekosaur> (whether it should or even can do something sensible is another question)
01:24:53 <Inst> maybe I misunderstand things ?:(
01:24:58 <c_wraith> But that's mostly because >> For Identity doesn't do anything
01:25:17 <c_wraith> ReaderT just gives you the >> for the underlying type
01:25:41 <Inst> https://hackage.haskell.org/package/base-4.19.1.0/docs/src/GHC.Base.html#line-1133
01:26:03 <Inst> there is no definition for *>
01:26:25 <c_wraith> there's a default definition in Applicative
01:26:39 <Inst> which should drop it to https://hackage.haskell.org/package/base-4.19.1.0/docs/src/GHC.Base.html#%2A%3E
01:26:42 <Inst> which looks inefficient
01:29:15 <Inst> (id <$ a1) <*> a2 <===> const id . a1 <*> a2 <===> \u -> (const id . a1) u ( a2 u) <===> \u -> id (a2 u) <===> a2
01:30:57 <Inst> https://hackage.haskell.org/package/transformers-0.6.1.1/docs/src/Control.Monad.Trans.Reader.html#line-158
01:31:52 <c_wraith> I would posit that the performance of something it's an error to use doesn't matter
01:33:15 × _________ quits (~nobody@user/noodly) (Ping timeout: 245 seconds)
01:33:49 <Inst> what would the cost of _ *> g = g be in base, for function monad?
01:34:17 <Inst> I can imagine a case where you're using polymorphic monadic code, and when it instances to ReaderT identity it'd cause an issue
01:37:49 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
01:40:20 × otto_s quits (~user@p4ff27c3b.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
01:41:27 × oo_miguel quits (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 252 seconds)
01:42:14 otto_s joins (~user@p5b044e85.dip0.t-ipconnect.de)
01:42:15 <Inst> yeah, you're right, in ReaderT Identity, the identity would take over and just do const on *>
01:44:54 <Inst> Identity doesn't have *> or <* in its instance either :(
01:45:06 causal joins (~eric@50.35.88.207)
01:45:43 <Inst> https://hackage.haskell.org/package/base-4.19.1.0/docs/src/Data.Functor.Identity.html#line-122
01:46:38 ridcully_ joins (~ridcully@p508acabd.dip0.t-ipconnect.de)
01:46:47 × ridcully quits (~ridcully@p508ac8f2.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
01:58:36 P1RATEZ joins (piratez@user/p1ratez)
02:01:51 Thomas03 joins (~Thomas03@2600:1702:21b0:a500:8e3:7060:f1c5:aac9)
02:05:04 × op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection)
02:05:34 op_4 joins (~tslil@user/op-4/x-9116473)
02:14:20 × P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection)
02:37:51 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
02:39:49 × td_ quits (~td@i5387091E.versanet.de) (Ping timeout: 272 seconds)
02:40:19 × Thomas03 quits (~Thomas03@2600:1702:21b0:a500:8e3:7060:f1c5:aac9) (Quit: Client closed)
02:41:01 td_ joins (~td@i53870917.versanet.de)
02:42:40 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
02:45:28 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
02:57:33 rekahsoft joins (~rekahsoft@bras-base-orllon1103w-grc-13-184-148-6-204.dsl.bell.ca)
03:00:29 × raym quits (~ray@user/raym) (Ping timeout: 240 seconds)
03:01:39 raym joins (~ray@user/raym)
03:01:44 × causal quits (~eric@50.35.88.207) (Ping timeout: 252 seconds)
03:01:48 × Patternmaster quits (~georg@user/Patternmaster) (Ping timeout: 255 seconds)
03:02:27 Patternmaster joins (~georg@user/Patternmaster)
03:02:34 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
03:03:34 causal joins (~eric@50.35.88.207)
03:03:35 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
03:16:10 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
03:16:44 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
03:36:10 × aforemny_ quits (~aforemny@2001:9e8:6cd6:500:e763:a78e:e89e:9c7f) (Ping timeout: 245 seconds)
03:36:16 aforemny joins (~aforemny@i59F516DE.versanet.de)
03:36:57 × rekahsoft quits (~rekahsoft@bras-base-orllon1103w-grc-13-184-148-6-204.dsl.bell.ca) (Ping timeout: 252 seconds)
03:53:33 × yin quits (~yin@user/zero) (Ping timeout: 255 seconds)
03:54:44 hgolden joins (~hgolden@2603:8000:9d00:3ed1:f849:272c:fda5:33c9)
03:57:37 yin joins (~yin@user/zero)
04:08:10 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)
04:10:28 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
04:15:29 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
04:23:22 × z0e quits (~z0e@pool-173-61-230-85.cmdnnj.fios.verizon.net) (Ping timeout: 250 seconds)
04:55:59 × philopsos quits (~caecilius@user/philopsos) (Ping timeout: 272 seconds)
04:56:51 raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
05:15:12 Nick100 joins (~Nick@59.sub-174-215-117.myvzw.com)
05:15:23 peterbecich joins (~Thunderbi@47.229.123.186)
05:16:16 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
05:21:48 × target_i quits (~target_i@user/target-i/x-6023099) (Remote host closed the connection)
05:24:19 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
05:25:30 _________ joins (~nobody@user/noodly)
05:28:28 × Nick100 quits (~Nick@59.sub-174-215-117.myvzw.com) (Quit: Connection closed)
05:29:00 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds)
05:30:14 × raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds)
05:47:48 × yin quits (~yin@user/zero) (Ping timeout: 268 seconds)
05:47:51 × peterbecich quits (~Thunderbi@47.229.123.186) (Ping timeout: 255 seconds)
05:51:53 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
05:54:00 yin joins (~yin@user/zero)
05:54:13 × kimiamania quits (~76637481@user/kimiamania) (Quit: PegeLinux)
05:54:54 kimiamania joins (~76637481@user/kimiamania)
05:58:19 × madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!)
06:03:47 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
06:18:35 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:19:49 × akshar quits (~user@209.94.142.169) ()
06:24:32 × m1dnight quits (~christoph@82.146.125.185) (Quit: WeeChat 4.2.2)
06:26:05 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:28:06 m1dnight joins (~christoph@82.146.125.185)
06:34:24 jinsun joins (~jinsun@user/jinsun)
06:37:02 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
06:41:11 Piedro joins (~Piedro@85.254.74.244)
06:53:14 pyooque joins (~puke@user/puke)
06:53:14 puke is now known as Guest3535
06:53:14 × Guest3535 quits (~puke@user/puke) (Killed (copper.libera.chat (Nickname regained by services)))
06:53:14 pyooque is now known as puke
06:54:29 × puke quits (~puke@user/puke) (Max SendQ exceeded)
06:55:48 puke joins (~puke@user/puke)
07:02:36 tt12310 joins (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee)
07:06:07 × hgolden quits (~hgolden@2603:8000:9d00:3ed1:f849:272c:fda5:33c9) (Ping timeout: 268 seconds)
07:13:31 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:18:54 mima joins (~mmh@aftr-62-216-211-209.dynamic.mnet-online.de)
07:24:09 madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
07:24:42 × actioninja quits (~actioninj@user/actioninja) (Quit: see ya mane)
07:28:44 actioninja joins (~actioninj@user/actioninja)
07:35:43 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
07:35:52 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
07:38:17 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
07:39:06 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
07:43:49 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
07:44:00 euleritian joins (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de)
07:46:58 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
07:49:31 × Square quits (~Square@user/square) (Ping timeout: 272 seconds)
07:53:42 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
07:55:51 × euleritian quits (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
07:56:09 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
08:05:56 × Inst quits (~Inst@user/Inst) (Ping timeout: 268 seconds)
08:06:38 Inst joins (~Inst@user/Inst)
08:10:13 titibandit joins (~titibandi@user/titibandit)
08:11:09 × pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection)
08:11:54 pastly joins (~pastly@gateway/tor-sasl/pastly)
08:18:35 × pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection)
08:19:04 pastly joins (~pastly@gateway/tor-sasl/pastly)
08:19:18 hosklla joins (~user@user/hosklla)
08:19:35 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
08:20:57 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
08:26:01 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
08:26:10 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
08:28:46 × Piedro quits (~Piedro@85.254.74.244) (Remote host closed the connection)
08:29:08 Piedro joins (~Piedro@85.254.74.244)
08:29:33 × Piedro quits (~Piedro@85.254.74.244) (Remote host closed the connection)
08:29:54 internatetional joins (~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f)
08:29:55 Piedro joins (~Piedro@85.254.74.244)
08:34:13 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
08:42:33 qqq joins (~qqq@92.43.167.61)
08:44:18 × tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz)
08:48:46 × yin quits (~yin@user/zero) (Ping timeout: 255 seconds)
08:55:31 yin joins (~yin@user/zero)
08:55:44 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Quit: https://zer0bitz.dy.fi)
08:57:38 target_i joins (~target_i@user/target-i/x-6023099)
09:04:18 × bilegeek quits (~bilegeek@2600:1008:b010:6f31:97f2:4443:40ea:6a83) (Quit: Leaving)
09:05:23 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
09:05:49 oo_miguel joins (~Thunderbi@78-11-181-16.static.ip.netia.com.pl)
09:05:58 euleritian joins (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de)
09:16:02 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
09:18:15 × euleritian quits (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
09:18:32 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
09:21:54 × Piedro quits (~Piedro@85.254.74.244) (Remote host closed the connection)
09:33:06 JamesMowery7 joins (~JamesMowe@ip98-171-80-211.ph.ph.cox.net)
09:35:21 × JamesMowery quits (~JamesMowe@ip98-171-80-211.ph.ph.cox.net) (Ping timeout: 268 seconds)
09:35:21 JamesMowery7 is now known as JamesMowery
09:38:46 sawilagar joins (~sawilagar@user/sawilagar)
09:39:56 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:41:50 gmg joins (~user@user/gehmehgeh)
09:42:48 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:43:12 ph88 joins (~ph88@ip5b403f30.dynamic.kabel-deutschland.de)
09:44:23 <ph88> How can i use OverloadedRecordDot with qualified imports for the field accessor?
09:47:53 <tomsmeding> you write the module qualifier in very small text above the dot
09:51:26 <tomsmeding> the documentation ( https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/overloaded_record_dot.html#extension-OverloadedRecordDot ) states that the projection expressions are desugared to getField ( https://hackage.haskell.org/package/base-4.19.1.0/docs/GHC-Records.html ), which itself is just a type class and hence allows you to qualify anything, but it seems like the syntax of
09:51:28 <tomsmeding> OverloadedRecordDot does not
09:52:50 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:54:04 xdminsy joins (~xdminsy@117.147.70.233)
09:54:32 × xdminsy quits (~xdminsy@117.147.70.233) (Read error: Connection reset by peer)
09:57:28 Square joins (~Square@user/square)
09:58:25 × qqq quits (~qqq@92.43.167.61) (Read error: Connection reset by peer)
09:59:57 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
10:03:30 qqq joins (~qqq@92.43.167.61)
10:04:42 × yin quits (~yin@user/zero) (Ping timeout: 252 seconds)
10:16:43 × jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 260 seconds)
10:19:16 × CodeKiwi quits (~kiwi@2604:a880:400:d0::1ca0:e001) (Ping timeout: 260 seconds)
10:20:10 jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
10:36:06 × qqq quits (~qqq@92.43.167.61) (Ping timeout: 268 seconds)
10:37:49 qqq joins (~qqq@92.43.167.61)
10:44:33 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:44:55 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds)
10:46:46 xdminsy joins (~xdminsy@117.147.70.233)
10:47:26 Lord_of_Life_ is now known as Lord_of_Life
10:52:22 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
10:54:09 × hosklla quits (~user@user/hosklla) (Remote host closed the connection)
10:54:17 hosklla joins (~user@p200300f917158a00390765bd42a9c16b.dip0.t-ipconnect.de)
10:56:08 euleritian joins (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de)
10:58:35 × Inst quits (~Inst@user/Inst) (Ping timeout: 252 seconds)
11:01:19 rvalue- joins (~rvalue@user/rvalue)
11:01:41 × xdminsy quits (~xdminsy@117.147.70.233) (Ping timeout: 268 seconds)
11:02:03 xdminsy joins (~xdminsy@117.147.70.233)
11:02:23 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 264 seconds)
11:03:29 × mrmr1553343 quits (~mrmr@user/mrmr) (Quit: Bye, See ya later!)
11:07:05 rvalue- is now known as rvalue
11:18:24 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
11:26:57 mrmr1553343 joins (~mrmr@user/mrmr)
11:33:38 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:35:53 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
11:42:16 target_i joins (~target_i@user/target-i/x-6023099)
11:42:43 × qqq quits (~qqq@92.43.167.61) (Remote host closed the connection)
11:43:15 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
11:45:43 <ph88> hahaah "in very small text above the dot" if only if i would write out my code on paper xD
11:47:51 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 255 seconds)
11:53:13 qqq joins (~qqq@92.43.167.61)
11:58:50 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
12:04:30 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
12:05:19 ht_ joins (~Thunderbi@194.110.115.39)
12:06:10 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Ping timeout: 245 seconds)
12:06:10 ht_ is now known as _ht
12:18:36 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine)
12:19:24 ocra8 joins (ocra8@user/ocra8)
12:20:09 tomsmeding . o O ( https://en.wikipedia.org/wiki/Epigram_(programming_language) )
12:20:22 <tomsmeding> (the layout in the first code example is borked, the first line needs 5 spaces before the first '(' )
12:21:04 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
12:29:28 __monty__ joins (~toonn@user/toonn)
12:41:43 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
12:46:29 <ph88> How can i unwrap 2 monads with do-syntax? example https://bpa.st/B5ZQ
12:48:32 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 256 seconds)
12:50:34 <int-e> @unmtl ExceptT e m a
12:50:34 <lambdabot> m (Either e a)
12:51:23 <int-e> (Basically you don't, but you could use the the ExceptT monad transformer to accomplish what you probably want. And it'll be isomorphic to the m (Either a b) you already have)
12:54:43 <ph88> would be nice to just make that arrow a bit longer `<-` into `<--` for every additional unwrap add another dash :D
12:57:28 <int-e> It's not at all clear what that means in general.
12:59:31 <int-e> (Recall that do notation is syntax sugar. It's worth pondering what that hypothetical <-- arrow would desugar to, if anything.)
13:00:00 <int-e> @undo do x <- b; c x
13:00:00 <lambdabot> b >>= \ x -> c x
13:01:52 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:08:04 tok joins (~user@user/tok)
13:20:48 <haskellbridge> <i​rregularsphere> int-e: I think he meant as in more syntax sugar.
13:20:48 <haskellbridge> <i​rregularsphere> (`b :: m (n a)`) `do { xs <- b; x <-- b; return (xs, x) }` -> `b >>= \xs -> (b >>=' \x -> (return (xs, x))` with `>>='` being some other bind with the type `m (n a) -> (a -> m (n b)) -> m (n b)`
13:20:50 <haskellbridge> <i​rregularsphere> however it becomes clear that this does not work since not all monads compose together into another monad
13:20:57 <haskellbridge> <i​rregularsphere> does not work in some situations*
13:23:58 <haskellbridge> <i​rregularsphere> this can be simulated though, if `b :: Compose m n a` and `Monad (Compose m n)` then (I think) the above do notation can be simulated by this:
13:23:58 <haskellbridge> <i​rregularsphere> `do { xs <- fmap pure b; x <- b; return (xs, x) }`
13:27:39 <haskellbridge> <i​rregularsphere> i meant `do { xs <- Compose (fmap pure (getCompose b)); x <- b; return (xs, x)}`
13:27:45 <haskellbridge> <i​rregularsphere> uhh...
13:30:24 <haskellbridge> <i​rregularsphere> ph88: anyways not all two monads compose to another monad, and I suggest looking into monad transformers
13:30:28 rosco joins (rosco@gateway/vpn/airvpn/rosco)
13:30:55 <ski> idioms compose
13:31:12 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
13:31:48 <haskellbridge> <i​rregularsphere> how do I define an idiom in Haskell code :P
13:32:14 <haskellbridge> <i​rregularsphere> do I use literate Haskell for that
13:34:14 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds)
13:34:14 × rosco quits (rosco@gateway/vpn/airvpn/rosco) (Client Quit)
13:35:03 <ski> "idiom", in this context, is a synonym for "applicative functor"
13:35:28 <haskellbridge> <i​rregularsphere> ah
13:36:00 <haskellbridge> <i​rregularsphere> yeah applicative functors compose, then you can use applicative dos but it's limited
13:36:26 <ncf> you could say "idiom" is an idiom at this point
13:37:01 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
13:39:55 danza joins (~francesco@151.35.224.182)
13:44:55 × Square quits (~Square@user/square) (Ping timeout: 245 seconds)
13:45:19 <ski> "Idioms: Applicatie Programming with Effects" (functional pearl) by Conor McBride,Ross Paterson at <http://strictlypositive.org/Idiom.pdf> ; <https://mail.haskell.org/pipermail/haskell/2004-July/014315.html>,<https://wiki.haskell.org/Applicative_functor>
13:45:50 <ski> (two more versions of the paper, at <http://strictlypositive.org/>)
13:54:34 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:56:53 rosco joins (~rosco@yp-146-6.tm.net.my)
13:58:13 × danza quits (~francesco@151.35.224.182) (Ping timeout: 246 seconds)
14:01:41 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
14:03:11 noumenon joins (~noumenon@113.51-175-156.customer.lyse.net)
14:04:35 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:06:41 × xdminsy quits (~xdminsy@117.147.70.233) (Read error: Connection reset by peer)
14:09:41 × phma quits (phma@2001:5b0:211f:5788:9247:2ba3:4ac:7601) (Read error: Connection reset by peer)
14:10:38 phma joins (~phma@2001:5b0:211c:6428:fc4d:883f:37de:f618)
14:11:39 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
14:12:16 xdminsy joins (~xdminsy@117.147.70.233)
14:15:28 × son0p quits (~ff@191.104.18.195) (Quit: Leaving)
14:21:06 yin joins (~yin@user/zero)
14:24:55 × titibandit quits (~titibandi@user/titibandit) (Ping timeout: 245 seconds)
14:26:52 philopsos joins (~caecilius@user/philopsos)
14:27:55 Piedro joins (~Piedro@85.254.74.244)
14:32:06 × adanwan_ quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 260 seconds)
14:32:14 × philopsos quits (~caecilius@user/philopsos) (Ping timeout: 256 seconds)
14:33:51 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
14:34:26 ht_ joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
14:34:45 pavonia joins (~user@user/siracusa)
14:34:49 × rosco quits (~rosco@yp-146-6.tm.net.my) (Remote host closed the connection)
14:35:40 × _ht quits (~Thunderbi@194.110.115.39) (Ping timeout: 268 seconds)
14:35:40 ht_ is now known as _ht
14:38:29 rosco joins (~rosco@yp-146-6.tm.net.my)
14:41:20 r5c4571lh01987 joins (rscastilho@179.221.142.8)
14:43:29 × yin quits (~yin@user/zero) (Quit: Lost terminal)
14:45:21 son0p joins (~ff@191.104.18.195)
14:54:34 notzmv joins (~daniel@user/notzmv)
14:58:57 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:21:47 raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
15:21:53 myxokephale joins (~myxos@172.93.132.84)
15:22:28 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:23:59 × myxos quits (~myxos@65.28.251.121) (Ping timeout: 264 seconds)
15:24:04 <ph88> i​rregularsphere i imagine that would only type check for those situations that they do compose
15:24:53 <ph88> how many functional pearls are there ?
15:26:20 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
15:29:14 Ellenor is now known as MelanieMalik
15:29:24 MelanieMalik is now known as MelMalik
15:36:50 hgolden joins (~hgolden@2603:8000:9d00:3ed1:f849:272c:fda5:33c9)
15:40:40 × madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!)
15:46:18 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 260 seconds)
15:46:53 L29Ah joins (~L29Ah@wikipedia/L29Ah)
15:48:47 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
15:50:46 × pepeiborra quits (sid443799@id-443799.ilkley.irccloud.com) (Quit: Connection closed for inactivity)
15:51:42 × acertain_ quits (sid470584@id-470584.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
15:51:58 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
15:52:34 L29Ah joins (~L29Ah@wikipedia/L29Ah)
16:05:16 zer0bitz joins (~zer0bitz@user/zer0bitz)
16:06:07 <[exa]> ph88: they get published in small count with each ICFP and JFP issue so I'd say a few dozen at this point
16:06:16 <ph88> nice :>
16:11:54 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
16:14:14 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
16:20:45 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 245 seconds)
16:22:12 <monochrom> Haha it's official, Ningning Xie declares that LYAH is a great book. >:)
16:23:26 × rosco quits (~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
16:25:22 michalz joins (~michalz@185.246.207.203)
16:26:24 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds)
16:27:28 madariaga joins (~madariaga@user/madariaga)
16:31:15 × raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Quit: WeeChat 4.2.2)
16:33:19 raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
16:35:55 × driib quits (~driib@vmi931078.contaboserver.net) (Ping timeout: 268 seconds)
16:36:31 Guest13 joins (~Guest13@cpc93370-hers8-2-0-cust590.6-3.cable.virginm.net)
16:40:26 <Guest13> hi, I have a beginner question on optimising a recursive function. for context, I am trying to complete aoc2023 day 8. this is my function, which runs correctly on the smaller instances but hangs for some time on the larger graph:
16:40:26 <Guest13> recurseSol :: Graph -> Int -> [String] -> String -> Int
16:40:27 <Guest13> recurseSol graph depth state (i:is) = case end of
16:40:27 <Guest13>   True -> depth
16:40:28 <Guest13>   otherwise -> recurseSol graph (depth+1) next is
16:40:28 <Guest13>   where next = map (\node -> if (i == 'L') then fst (graph M.! node) else snd (graph M.! node)) state
16:40:29 <Guest13>         end = (==0) . length $ filter (\[_,_,c] -> c/='Z') state
16:40:29 <Guest13> at each step I check if I have reached the final states. does passing graph in at each step make this very inefficient or is it store as I do not change it? is there a way to make Haskell calculate the value of the state at each step, as it can only know it has reached the end this way. thank you for any help
16:41:23 × internatetional quits (~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f) (Quit: WeeChat 4.2.1)
16:41:28 <Guest13> also, I would appreciate if anyone can point out some obvious improvements to the code (both efficiency and how it is written)
16:43:41 <monochrom> graph is passed by pointer and not cloned, it's only O(1).
16:43:48 danza joins (~francesco@151.35.246.62)
16:45:07 <monochrom> "length xs == 0" takes time proportional to length xs and is a dumb way to say "null xs" which takes only O(1) time.
16:45:29 <Guest13> '=D
16:45:45 <ncf> this can be compressed even further using all
16:45:46 <ncf> :t all
16:45:47 <lambdabot> Foldable t => (a -> Bool) -> t a -> Bool
16:46:02 <Guest13> ahhh
16:46:32 <Guest13> idk why I did it like that I will use all
16:47:43 <ncf> IIRC this is one of the first problems that required actual thought, so a naive solution like that isn't gonna work
16:48:08 <ncf> if i still remember correctly, solving this required making assumptions about the input that weren't contained in the problem text, so... good luck
16:48:43 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Read error: Connection reset by peer)
16:49:00 <Guest13> ok back to drawing board I guess. I was gonna step through the instructions but it is taking some time
16:49:07 orenty7 joins (~orenty7@185.117.121.249)
16:49:07 <Guest13> I thought my code was problem
16:49:37 <int-e> the answer is rather big
16:49:45 <Guest13> but I need to solve it differently, maybe by figuring out like a phase difference between each ending state and then working out when they will meet
16:50:01 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
16:50:25 <int-e> ncf: I wouldn't say "required" for this particular one, but there was a huge shortcut because of special input properties.
16:50:36 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
16:51:09 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded)
16:51:10 × orenty7 quits (~orenty7@185.117.121.249) (Client Quit)
16:51:10 <ncf> right
16:52:24 wroathe joins (~wroathe@user/wroathe)
16:53:23 <c_wraith> I didn't use the shortcut, I did it the "hard" way. Which is really the same thing, except with a little more arithmetic.
16:53:55 <Guest13> I think if I used HashMap it would also be a LOT faster xd
16:54:03 <Guest13> just realised it was a treetop by default
16:54:37 <c_wraith> Guest13: that's almost completely irrelevant. I see that my solution was a 14-digit number. You're not iterating that high with any data structure.
16:55:33 <int-e> ncf: which was funny because I wrote code for part 2 on autopilot without thinking nearly as much as I should have, submitted the answer, which was correct, and then I started to think for real and asking why the fuck that worked.
16:55:50 <ncf> same
16:55:50 <Guest13> this happens anyway "*** Exception: stack overflow"
16:56:00 tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net)
16:56:35 <ski> (maybe forcing `depth' would help with that ?)
16:57:20 <int-e> it was 14 digits here too
16:57:24 <Guest13> this problem looks hard for me
16:57:47 <c_wraith> you can't brute-force it. You need to figure out how to break it down into subproblems and then combine the results from those subproblems.
16:58:17 <int-e> (and takes a fraction of a second to find)
16:58:26 <Guest13> yeah I was thinking of doing something like "how often does each ghost reach an end state"
16:58:37 <c_wraith> that's the right track.
16:58:41 <Guest13> and finding the gcd of that
16:58:54 <c_wraith> you'd want lcm, but they're nearly the same. :P
16:59:01 <Guest13> yeah that's what I mean lol
17:01:16 <Guest13> so it would be find when ghost reaches same state + same instruction
17:01:23 <Guest13> instruction number
17:03:21 <Guest13> idk this is hard but thank you for the help! I will think about the problem a bit more. I'm not sure about the input properties you mention but I think I can solve it anyway
17:03:29 × Guest13 quits (~Guest13@cpc93370-hers8-2-0-cust590.6-3.cable.virginm.net) (Quit: Client closed)
17:05:20 <ncf> so i guess the fully general problem looks like: you have a bunch of eventually periodic lists of numbers (steps until the next final state) and you want to find their smallest common cumulative sum-of-prefix
17:05:46 <ncf> with the "nice" case being when all lists are constant, in which case the answer is LCM
17:06:06 <c_wraith> the fully general version looks like "I have a bunch of cycles with various starting points, and I want to align them", which... works out to be CRT.
17:06:40 <int-e> It turns out to be NP-hard, but the actual instance isn't nasty at all.
17:06:56 <ncf> CRT isn't NP-hard, so one of you is lying
17:07:17 <int-e> it's *many* CRTs, one for each choice of final states in the loop
17:07:29 <int-e> and that number can be exponential
17:07:42 <ncf> ah i see
17:08:34 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
17:08:50 <int-e> s/loop/loops/
17:10:45 <int-e> I never figured out whether the general version of day 20 is decidable or not.
17:13:22 <ncf> lol https://github.com/ncfavier/aoc/blob/main/src/2023/Day20.hs#L51
17:13:26 <ncf> can you tell i was pissed
17:14:44 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:14:52 <ncf> ah yes that was the one you had to render as an SVG to actually understand what was going on
17:16:37 <int-e> I only looked at the fact that the final gate was a conjunction and remembered day 8 ;-)
17:17:44 <int-e> I also produced https://paste.debian.net/1314729/ but that was way later
17:21:36 × raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 260 seconds)
17:21:57 × madariaga quits (~madariaga@user/madariaga) (Quit: madariaga)
17:24:04 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
17:32:04 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 246 seconds)
17:34:01 × tabemann quits (~tabemann@2600:1700:7990:24e0:6221:c407:995f:5743) (Remote host closed the connection)
17:34:14 tabemann joins (~tabemann@2600:1700:7990:24e0:2a56:ddeb:a57a:6071)
17:35:43 × euleritian quits (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
17:36:06 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:39:43 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:40:37 titibandit joins (~titibandi@user/titibandit)
17:40:40 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
17:44:51 euleritian joins (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de)
17:52:57 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
18:03:43 raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
18:07:47 madariaga joins (~madariaga@user/madariaga)
18:09:55 × raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 245 seconds)
18:11:43 × euleritian quits (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
18:12:25 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
18:20:24 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
18:21:49 euleritian joins (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de)
18:22:10 × euleritian quits (~euleritia@dynamic-176-002-143-082.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
18:22:32 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
18:25:45 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
18:26:42 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
18:32:30 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
18:34:05 × danza quits (~francesco@151.35.246.62) (Ping timeout: 245 seconds)
18:40:37 × madariaga quits (~madariaga@user/madariaga) (Quit: madariaga)
18:41:13 Sgeo joins (~Sgeo@user/sgeo)
18:44:46 × wroathe quits (~wroathe@user/wroathe) (Quit: leaving)
18:46:13 <[exa]> hm is kansas-lava (the vhdl thingy) officially dead dead, or is there some kind of a follow-up active project or so?
18:48:22 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
18:48:44 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
18:55:57 raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
18:59:47 × dostoyevsky2 quits (~sck@user/dostoyevsky2) (Quit: leaving)
19:00:00 dostoyevsky2 joins (~sck@user/dostoyevsky2)
19:03:21 madariaga joins (~madariaga@user/madariaga)
19:17:18 califax_ joins (~califax@user/califx)
19:17:42 × califax quits (~califax@user/califx) (Ping timeout: 260 seconds)
19:18:24 califax_ is now known as califax
19:32:54 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds)
19:37:39 × phma quits (~phma@2001:5b0:211c:6428:fc4d:883f:37de:f618) (Read error: Connection reset by peer)
19:38:31 phma joins (~phma@2001:5b0:210f:be8:a757:5762:40a:c4be)
19:38:37 danza joins (~francesco@151.35.247.107)
19:45:34 × tok quits (~user@user/tok) (Remote host closed the connection)
19:47:01 × danza quits (~francesco@151.35.247.107) (Remote host closed the connection)
19:47:21 danza joins (~francesco@151.35.247.107)
19:52:25 × danza quits (~francesco@151.35.247.107) (Ping timeout: 245 seconds)
19:56:19 × hosklla quits (~user@p200300f917158a00390765bd42a9c16b.dip0.t-ipconnect.de) (Remote host closed the connection)
19:57:46 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
19:59:44 random-jellyfish joins (~developer@user/random-jellyfish)
20:03:14 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Remote host closed the connection)
20:04:18 <energizer> if there's a type class B then it's possible to make a subclass B x => C x but is it possible to do the reverse, make a superclass B x <= A x ?
20:04:48 × dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
20:05:30 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
20:06:01 <ncf> you can have a (possibly overlapping) instance A x => B x
20:06:14 <c_wraith> energizer: no. The option that plays most nicely with Haskell's type system is to provide a default implementation of A in terms of B and give people nice tools to use that implementation quickly to create an instance of A for something that is an instance of B
20:06:28 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 255 seconds)
20:07:10 <energizer> are there any languages that have this feature?
20:11:10 <c_wraith> I can't think of any. It's a relatively difficult feature to use. The potential for ambiguity in resolution seems really bad for predictable code.
20:14:05 ski . o O ( "Supertyping Suggestion for Haskell" by jmeacham at <http://repetae.net/recent/out/supertyping.html> )
20:23:21 × raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Quit: WeeChat 4.2.2)
20:23:29 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
20:24:28 × random-jellyfish quits (~developer@user/random-jellyfish) (Ping timeout: 255 seconds)
20:25:25 raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
20:31:49 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
20:33:17 DdavizinHood joins (~davizinho@30.red-80-27-28.dynamicip.rima-tde.net)
20:36:57 <monochrom> Something like that is usually under the name "mixin" in other languages.
20:37:53 random-jellyfish joins (~developer@2a02:2f04:11e:c600:ef9e:2acc:864b:e2f4)
20:37:54 × random-jellyfish quits (~developer@2a02:2f04:11e:c600:ef9e:2acc:864b:e2f4) (Changing host)
20:37:54 random-jellyfish joins (~developer@user/random-jellyfish)
20:37:59 <monochrom> But we don't have it in Haskell. It is why FAM was a change that broke backward compatibility.
20:40:05 <energizer> i dont see how mixins do that
20:40:55 <energizer> afaik mixins are just normal classes which you can add to your class while you're writing it, which is just the same as a normal class extension situation
20:42:50 <EvanR> just add two classes
20:43:07 <EvanR> is this simple addition associative and commutative
20:44:05 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
20:45:04 <energizer> that works on types i write, it doesnt work on types already written
20:49:46 × r5c4571lh01987 quits (rscastilho@179.221.142.8) (Remote host closed the connection)
20:50:48 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
20:51:31 × titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection)
20:58:15 × raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 245 seconds)
21:01:44 <juri_> wow. stan has gained a maintainer.
21:03:18 × DdavizinHood quits (~davizinho@30.red-80-27-28.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
21:04:08 <juri_> tomjaguarpaw: Thanks! :)
21:05:28 × masaeedu quits (~masaeedu@user/masaeedu) (Read error: Connection reset by peer)
21:05:55 × dyniec quits (~dyniec@dybiec.info) (Quit: WeeChat 3.8)
21:06:38 masaeedu joins (~masaeedu@user/masaeedu)
21:07:09 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 256 seconds)
21:07:27 dyniec joins (~dyniec@dybiec.info)
21:08:17 zetef joins (~quassel@5.2.182.98)
21:09:50 <c_wraith> energizer: My viewpoint is that a type should never implicitly be made an instance of a class. There should always be intent. In the end, it makes mistakes harder to make.
21:10:14 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:13:28 <energizer> c_wraith: there are two kinds of problems i can think of. one is incorrectness: i superclass a class and define some methods that depend for their correctness on some property which doesn't actually hold. this could happen in haskell because it doesnt enforce laws but a more muscular type system could solve this. the other problem is method selection ambiguity, diamond problem kinda stuff. this seems harder, i'm not sure how to make this work
21:13:28 <energizer> automatically.
21:14:01 <c_wraith> there's a third class, which is "I explicitly did not want this type to be an instance of that"
21:15:12 <energizer> why would that be?
21:15:43 <c_wraith> In general, because you are making a type for one purpose, and using it anywhere else is wrong.
21:16:50 <energizer> what is the negative actual-consequence?
21:17:02 <c_wraith> depends on the use case.
21:17:13 <c_wraith> But mostly, it's about type safety
21:17:47 <c_wraith> When you create a set of interlocking types for safety in that system, it's not ideal when someone else can *accidentally* break it.
21:17:58 <c_wraith> It's one thing if they intentionally break it
21:18:06 <c_wraith> But accidentally? That's entirely different
21:18:15 <energizer> i dont see how this can happen if the laws are enforced
21:18:34 <c_wraith> I don't see how laws are relevant.
21:19:04 <c_wraith> "I don't want this to compile" is an orthogonal statement to "this can be made to compile in a way that follows some rules"
21:19:50 <geekosaur> you should not be able to add two ages, and you can't describe that as a law, only as absence of (in Haskell) a Num instance
21:20:09 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
21:20:21 <energizer> finally, an example
21:20:56 <energizer> ok so how does adding ages accidentally happen in a world where there is superclassing
21:21:43 <c_wraith> You say "oh, all instances of Affine can be instances of Num!" and write a superclass for that, creating an instance of Num for your Age type.
21:22:05 <c_wraith> Making Age an instance of Affine makes perfect sense!
21:23:18 <energizer> "all instances of Affine can be instances of Num" is that a thing? i dont know what Num is supposed to mean tbh
21:23:28 <c_wraith> They *can* be.
21:23:41 <c_wraith> They almost universally *shouldn't* be.
21:24:27 <energizer> so you're telling me the laws of Num don't necessarily hold for Affine?
21:24:37 <c_wraith> No, I'm saying it's semantically incorrect
21:25:00 <c_wraith> You don't multiply two Times together. That's a meaningless operation.
21:25:12 <c_wraith> You don't multiply two points together. That's a meaningless operation.
21:25:32 × michalz quits (~michalz@185.246.207.203) (Quit: ZNC 1.8.2 - https://znc.in)
21:26:57 <EvanR> how would automatic Num instance for all Affine even work
21:27:00 <energizer> in haskell you can't write Affine t => Num t
21:27:12 <energizer> so i dont see what the problem is
21:27:16 <EvanR> how could you implement it
21:27:21 <energizer> exactly
21:27:23 <c_wraith> wrong question
21:27:34 <EvanR> energizer, but you were asking earlier for this feature in haskell
21:27:52 <EvanR> automatic superclassing
21:28:05 <c_wraith> The correct question is "does this example demonstrate to you why someone might desire to ensure their type is not an instance of a class?"
21:28:21 <c_wraith> Maybe it's not possible *here*
21:28:27 <c_wraith> But you will find some place where it is
21:28:34 <energizer> if A can't subclass B then B can't superclass A
21:28:54 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:29:06 <EvanR> also the sentiment behind the boston haskell video "typeclasses vs the world" might apply here
21:29:32 <EvanR> which can be used to show why typeclasses should not be thought of like OOP
21:30:14 <EvanR> because typeclass instances form an automatically coherent system
21:30:20 × Ram-Z quits (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Ping timeout: 260 seconds)
21:30:51 <EvanR> unlike multiple inheritance
21:31:55 <monochrom> Actually "class Affine t => Num t" does not cause any mentioned problem. It does not say "every Affine instance is a Num instance".
21:32:40 <c_wraith> well. It says "every type is a Num instance". So it sort of does. :P
21:33:18 <monochrom> No, I wrote "class ... Num t", not "instance ... Num t".
21:33:26 <c_wraith> oh, right
21:33:54 <EvanR> the feature would be like class Affine t <= Num t
21:33:59 <c_wraith> I mistook it for fake injecting a superclass, which is done by an instance looking like that.
21:34:57 <EvanR> given a Num instance make an Affine instance, though then the instance selection is messed up
21:36:57 dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net)
21:37:00 <c_wraith> in any case, the choice to not write an instance for a type should be something that's respected at least to the extent of requiring explicit action to add an instance to a type.
21:38:27 <tomsmeding> what would be the goal of adding a superclass to an existing class, even if it were possible?
21:38:46 <tomsmeding> ensure that you can use the methods of the new superclass for all types that are an instance of the existing class?
21:38:53 <energizer> yes
21:39:04 <tomsmeding> if that's possible, couldn't you just write those methods directly having just the existing class as context?
21:39:26 Ram-Z joins (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df)
21:39:47 <tomsmeding> i.e. if the existing is B and the new is A, then instead of `class B x <= A x where foo :: ...`, just write `foo :: B x => ...`
21:40:04 <tomsmeding> if B is enough to define foo, then, well, B is enough to define foo
21:40:15 tomsmeding is probably missing something
21:41:03 <tomsmeding> I guess that doesn't work if A also already exists and you insist that you want to use A's methods directly
21:41:30 <tomsmeding> but then you aren't declaring a class, because it already existed
21:41:55 <tomsmeding> so presumably that's not the situatino
21:42:03 × ph88 quits (~ph88@ip5b403f30.dynamic.kabel-deutschland.de) (Quit: Leaving)
21:43:34 <energizer> answering all the questions requires more mental context than i'm able to pull together at the moment
21:44:35 <tomsmeding> :)
21:45:17 <monochrom> This is why one shouldn't casually suggest a new language feature.
21:45:59 <monochrom> This is why the sentiment "I don't need to have learned PL theory to think up a language feature, even a whole language" is dumb.
21:46:38 <tomsmeding> I mean, you can
21:46:50 monochrom looks at PHP
21:47:05 <tomsmeding> You should just be ready for people criticising your choices :p
21:47:14 <tomsmeding> Not every language needs to be well-designed
21:47:32 <monochrom> Great sysadmin. But his attitude against PLT is stupid. And it shows.
21:47:32 <tomsmeding> And one can learn to design languages by making mistakes
21:48:36 <monochrom> Well that's only the difference between "learn PL theory by lazy evaluation" and "learn PL theory by eager evaluation". It is not a difference between "don't learn" and "learn".
21:49:31 <energizer> i have thought up a language feature and had a chat about it, not sure what having learned PLT has to do with this
21:50:08 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
21:50:45 paddymahoney joins (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
21:51:20 <tomsmeding> monochrom: the most relevant difference is between "learning from a book" and "learning from people in #haskell"
21:53:19 demesne joins (~demesne@50.35.88.207)
21:53:50 <cheater> is there a way to create a type such that users of my library have no way of creating a function that takes and returns that type?
21:54:00 × ocra8 quits (ocra8@user/ocra8) (Quit: WeeChat 4.2.2)
21:54:03 × Ram-Z quits (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Quit: ZNC - http://znc.in)
21:54:15 <cheater> like no way to write f :: MyType -> MyType
21:54:21 <dolio> No.
21:54:32 <dolio> Unless you don't export it or something.
21:54:57 <monochrom> You cannot stop people writing "f = id". But you can not-export the data constructors. Make your type an abstract type.
21:55:20 × paddymahoney quits (~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
21:55:45 <monochrom> Data.Ratio is an example.
21:56:17 × acidjnk quits (~acidjnk@p200300d6e714dc23587832274e83a4b7.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
21:56:24 ocra8 joins (ocra8@user/ocra8)
21:56:32 <glguy> No, it's a *module* :)
21:56:49 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
21:57:35 <cheater> right, makes sense, no id
21:57:45 <cheater> err well
21:57:47 <cheater> you know what i meant.
21:58:15 <cheater> hmm
21:58:25 <cheater> not exporting stuff makes sense. thanks.
22:01:20 bilegeek joins (~bilegeek@2600:1008:b040:d1c9:9e18:85e2:b999:af86)
22:05:49 × demesne quits (~demesne@50.35.88.207) (Remote host closed the connection)
22:06:06 demesne joins (~demesne@50.35.88.207)
22:08:35 × qqq quits (~qqq@92.43.167.61) (Remote host closed the connection)
22:09:30 × demesne quits (~demesne@50.35.88.207) (Remote host closed the connection)
22:09:46 demesne joins (~demesne@50.35.88.207)
22:10:42 × demesne quits (~demesne@50.35.88.207) (Remote host closed the connection)
22:11:06 demesne joins (~demesne@50.35.88.207)
22:15:53 × demesne quits (~demesne@50.35.88.207) (Remote host closed the connection)
22:16:10 × xdminsy quits (~xdminsy@117.147.70.233) (Ping timeout: 245 seconds)
22:20:31 demesne joins (~demesne@50.35.88.207)
22:27:10 × mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Remote host closed the connection)
22:31:32 × demesne quits (~demesne@50.35.88.207) (Remote host closed the connection)
22:31:57 demesne joins (~demesne@50.35.88.207)
22:32:25 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 245 seconds)
22:33:51 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
22:43:37 × demesne quits (~demesne@50.35.88.207) (Remote host closed the connection)
22:46:50 demesne joins (~demesne@50.35.88.207)
22:46:57 × oo_miguel quits (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 272 seconds)
22:51:29 × demesne quits (~demesne@50.35.88.207) (Remote host closed the connection)
22:51:50 demesne joins (~demesne@50.35.88.207)
22:51:50 × demesne quits (~demesne@50.35.88.207) (Remote host closed the connection)
22:52:17 demesne joins (~demesne@50.35.88.207)
22:59:08 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
22:59:32 nullobject joins (~josh@user/nullobject)
23:03:08 × zetef quits (~quassel@5.2.182.98) (Remote host closed the connection)
23:04:14 × demesne quits (~demesne@50.35.88.207) (Remote host closed the connection)
23:05:11 × causal quits (~eric@50.35.88.207) (Quit: WeeChat 4.1.1)
23:08:42 × pastly quits (~pastly@gateway/tor-sasl/pastly) (Ping timeout: 260 seconds)
23:11:11 pastly joins (~pastly@gateway/tor-sasl/pastly)
23:11:14 mhatta joins (~mhatta@www21123ui.sakura.ne.jp)
23:16:59 × phma quits (~phma@2001:5b0:210f:be8:a757:5762:40a:c4be) (Read error: Connection reset by peer)
23:17:57 phma joins (~phma@2001:5b0:210b:ce58:3fbf:e35b:d74c:35dc)
23:22:43 × picnoir quits (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Ping timeout: 256 seconds)
23:35:57 philopsos joins (~caecilius@user/philopsos)
23:38:07 raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
23:39:30 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:45:58 picnoir joins (~picnoir@about/aquilenet/vodoo/NinjaTrappeur)
23:49:18 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)

All times are in UTC on 2024-04-21.