2023/05/14

2023-05-14 00:01:45 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 256 seconds)
2023-05-14 00:05:08 +0200 <probie> fr33domlover: does that work with explicit forall turned on? Or is it just inserting one for you?
2023-05-14 00:06:44 +0200michalz(~michalz@185.246.207.203) (Remote host closed the connection)
2023-05-14 00:10:20 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-05-14 00:10:35 +0200michalz(~michalz@185.246.207.218)
2023-05-14 00:12:18 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2023-05-14 00:12:38 +0200 <fr33domlover> probie: Still doesn't work, complains about type var not in scope
2023-05-14 00:13:27 +0200michalz(~michalz@185.246.207.218) (Remote host closed the connection)
2023-05-14 00:17:00 +0200biberu(~biberu@user/biberu)
2023-05-14 00:17:33 +0200evincar(~evincar@user/evincar)
2023-05-14 00:19:32 +0200dolio(~dolio@130.44.134.54) (Read error: Connection reset by peer)
2023-05-14 00:20:11 +0200dolio(~dolio@130.44.134.54)
2023-05-14 00:21:43 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2023-05-14 00:28:59 +0200acidjnk(~acidjnk@p200300d6e7072f93e84ab52c2319c69d.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-05-14 00:44:47 +0200gurkenglas(~user@dynamic-046-114-181-006.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
2023-05-14 00:56:29 +0200lottaquestions(~nick@2607:fa49:503f:6d00:85d7:7b31:e103:e2d3) (Remote host closed the connection)
2023-05-14 00:56:55 +0200lottaquestions(~nick@2607:fa49:503f:6d00:a90f:1597:2753:5a45)
2023-05-14 00:57:04 +0200caryhartline(~caryhartl@2600:1700:2d0:8d30:cdc9:2ab9:5c13:cc7e) (Quit: caryhartline)
2023-05-14 01:04:47 +0200bontaq(~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 240 seconds)
2023-05-14 01:05:30 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 268 seconds)
2023-05-14 01:07:06 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-05-14 01:07:43 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-05-14 01:08:04 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-05-14 01:14:59 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
2023-05-14 01:15:17 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-05-14 01:22:20 +0200mauke_(~mauke@user/mauke)
2023-05-14 01:23:55 +0200mauke(~mauke@user/mauke) (Ping timeout: 256 seconds)
2023-05-14 01:23:55 +0200mauke_mauke
2023-05-14 01:27:25 +0200 <ski> fr33domlover : i think for `class', it requires all type variables be parameters of the type class
2023-05-14 01:28:27 +0200 <ski> in your case, `[]' is injective, so `b' could actually be determined from `a'
2023-05-14 01:28:53 +0200 <dmj`> Is it possible (using cabal.config or stack.yaml) to add a dependency to all dependencies ? This is possible with nix by overloading mkDerviation and using addBuildDepend. I know w/ stack you can use $everything, to specify ghc-options, but I was wondering if it was possible to add new deps as well to every dep. in the chain using those tools
2023-05-14 01:29:03 +0200 <ski> (i'm assuming you're talking about something like `class (b ~ Char, a ~ [b]) => Foo a')
2023-05-14 01:29:11 +0200vandita(~vandit@89-186-118-242.pool.digikabel.hu) (Ping timeout: 246 seconds)
2023-05-14 01:29:43 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 01:31:11 +0200vandita(~vandit@79-120-162-186.pool.digikabel.hu)
2023-05-14 01:32:47 +0200oo_miguel(~Thunderbi@77.252.47.78) (Ping timeout: 240 seconds)
2023-05-14 01:35:25 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 01:56:46 +0200pharonix71(~pharonix7@user/pharonix71) (Remote host closed the connection)
2023-05-14 01:57:13 +0200pharonix71(~pharonix7@user/pharonix71)
2023-05-14 01:59:01 +0200dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 240 seconds)
2023-05-14 02:01:31 +0200vorpuni(~pvorp@2a01:e0a:1cd:ea70:afe3:506e:aa0:19a1) (Ping timeout: 240 seconds)
2023-05-14 02:05:09 +0200nate2(~nate@98.45.169.16)
2023-05-14 02:09:48 +0200nate2(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2023-05-14 02:15:14 +0200 <sm> [dmj](https://matrix.to/#/@dmj:libera.chat): what does that mean
2023-05-14 02:15:56 +0200 <sm> configure dependencies that are added by default in each new project ?
2023-05-14 02:20:30 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-14 02:20:30 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-14 02:20:30 +0200wroathe(~wroathe@user/wroathe)
2023-05-14 02:22:45 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-05-14 02:40:16 +0200mud(~mud@user/kadoban) (Remote host closed the connection)
2023-05-14 02:47:02 +0200nate2(~nate@98.45.169.16)
2023-05-14 02:48:29 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-05-14 02:59:52 +0200 <sclv> hackage down rof redeploy
2023-05-14 02:59:57 +0200 <sclv> er hackage down for redeploy
2023-05-14 03:01:00 +0200 <statusbot> Status Bot enabled for #haskell
2023-05-14 03:09:14 +0200 <statusbot> Maintenance update: Server upgrade complete. Hackage back operational. -- http://status.haskell.org/pages/maintenance/537c07b0cf1fad5830000093/6460267b5c22c605300a008e
2023-05-14 03:09:27 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2023-05-14 03:10:46 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-05-14 03:12:40 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 03:16:54 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-05-14 03:17:15 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 256 seconds)
2023-05-14 03:29:45 +0200rekahsoft(~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca)
2023-05-14 03:30:29 +0200rekahsoft(~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Remote host closed the connection)
2023-05-14 03:30:46 +0200remexre(~remexre@user/remexre)
2023-05-14 03:31:04 +0200rekahsoft(~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca)
2023-05-14 03:35:07 +0200puke(~puke@user/puke) (Quit: puke)
2023-05-14 03:36:35 +0200evincar(~evincar@user/evincar) (Ping timeout: 268 seconds)
2023-05-14 03:38:01 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-05-14 03:38:02 +0200cheater_(~Username@user/cheater)
2023-05-14 03:38:02 +0200cheater_cheater
2023-05-14 03:44:05 +0200vandita(~vandit@79-120-162-186.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-14 03:45:55 +0200vandita(~vandit@91-83-3-39.pool.digikabel.hu)
2023-05-14 03:46:34 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 265 seconds)
2023-05-14 03:47:11 +0200puke(~puke@user/puke)
2023-05-14 03:48:45 +0200nate2(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2023-05-14 03:56:32 +0200evincar(~evincar@user/evincar)
2023-05-14 03:57:37 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-05-14 03:59:39 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 03:59:50 +0200 <dmj`> sm: Basically if I want to add a plugin to my current package, and all packages that my current package depends on, they would all get the plugin in their build-depends and would therefore need to be recompiled.
2023-05-14 04:02:08 +0200 <dmj`> sm: mkDerivation = args: super.mkDerivation (args // { buildInputs = args.buildInputs ++ [ myPlugin ]}); is what I want to do
2023-05-14 04:03:59 +0200evincar(~evincar@user/evincar) (Ping timeout: 240 seconds)
2023-05-14 04:10:01 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 04:12:51 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 04:16:45 +0200td_(~td@i53870905.versanet.de) (Ping timeout: 256 seconds)
2023-05-14 04:16:54 +0200evincar(~evincar@user/evincar)
2023-05-14 04:17:01 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 04:18:21 +0200td_(~td@i53870921.versanet.de)
2023-05-14 04:21:28 +0200evincar(~evincar@user/evincar) (Ping timeout: 240 seconds)
2023-05-14 04:23:46 +0200evincar(~evincar@user/evincar)
2023-05-14 04:30:36 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-05-14 04:46:53 +0200evincar(~evincar@user/evincar) (Ping timeout: 268 seconds)
2023-05-14 04:56:15 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 04:56:45 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-05-14 04:56:45 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-05-14 04:56:45 +0200finn_elijaFinnElija
2023-05-14 05:00:47 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 264 seconds)
2023-05-14 05:00:49 +0200evincar(~evincar@user/evincar)
2023-05-14 05:02:26 +0200russruss(~russruss@my.russellmcc.com)
2023-05-14 05:13:21 +0200ub(~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de)
2023-05-14 05:14:35 +0200ubert(~Thunderbi@p548c8bbe.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2023-05-14 05:14:35 +0200ububert
2023-05-14 05:22:01 +0200phma(phma@2001:5b0:210d:9dd8:7e87:f62f:6b71:75cd) (Read error: Connection reset by peer)
2023-05-14 05:22:28 +0200phma(phma@2001:5b0:210d:9dd8:9595:9262:e864:847)
2023-05-14 05:25:26 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 05:26:57 +0200dsanchez(~dsanchez@189.162.135.18)
2023-05-14 05:27:31 +0200ubert(~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de) (Remote host closed the connection)
2023-05-14 05:27:50 +0200ubert(~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de)
2023-05-14 05:29:51 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 256 seconds)
2023-05-14 05:30:06 +0200 <dsanchez> Naruto Uzumaki sodomizes Samuel Garcia Sepulveda, Governor of Nuevo Leon in Mexico, with a special sexual jutsu. Naruto gets to open a chain of 20 ramen restaurants in Monterrey in exchange for donating his semen to Samuel to ensure his wife Mariana gave birth to blue eyed babies! Read about it here! https://justpaste.it/Naruto_Makes_Love_Samuel_Garcia
2023-05-14 05:36:59 +0200 <monochrom> /opme
2023-05-14 05:37:08 +0200ChanServ+o monochrom
2023-05-14 05:37:15 +0200monochrom+b *!*@189.162.135.18
2023-05-14 05:37:15 +0200dsanchezmonochrom (dsanchez)
2023-05-14 05:37:45 +0200rekahsoft(~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Remote host closed the connection)
2023-05-14 05:37:59 +0200troydm(~troydm@user/troydm) (Ping timeout: 240 seconds)
2023-05-14 05:38:11 +0200monochrom-o monochrom
2023-05-14 05:38:30 +0200rekahsoft(~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca)
2023-05-14 05:39:24 +0200jero98772(~jero98772@2800:484:1d84:9000::3) (Remote host closed the connection)
2023-05-14 05:40:32 +0200Benzi-Junior(~BenziJuni@dsl-149-64-86.hive.is) (Quit: ZNC 1.8.2 - https://znc.in)
2023-05-14 05:41:32 +0200vandita(~vandit@91-83-3-39.pool.digikabel.hu) (Ping timeout: 246 seconds)
2023-05-14 05:41:45 +0200ubert(~Thunderbi@p200300ecdf18b67bd2f2cbf65c2c6dd6.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2023-05-14 05:42:01 +0200ubert(~Thunderbi@p548c8bbe.dip0.t-ipconnect.de)
2023-05-14 05:43:20 +0200vandita(~vandit@85-238-93-13.pool.digikabel.hu)
2023-05-14 05:46:33 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 05:54:47 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 05:58:25 +0200pointlessslippe1(~pointless@212.82.82.3) (Ping timeout: 268 seconds)
2023-05-14 06:02:28 +0200pointlessslippe1(~pointless@212.82.82.3)
2023-05-14 06:18:11 +0200rekahsoft(~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Ping timeout: 264 seconds)
2023-05-14 06:35:36 +0200califax(~califax@user/califx) (Remote host closed the connection)
2023-05-14 06:35:49 +0200califax_(~califax@user/califx)
2023-05-14 06:37:06 +0200califax_califax
2023-05-14 06:37:57 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2023-05-14 06:39:18 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-05-14 06:41:59 +0200evincar(~evincar@user/evincar) (Ping timeout: 240 seconds)
2023-05-14 06:44:31 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 06:49:51 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2023-05-14 06:50:01 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 06:52:06 +0200cheater(~Username@user/cheater)
2023-05-14 06:53:25 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-14 06:56:07 +0200coot_(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-14 06:56:22 +0200evincar(~evincar@user/evincar)
2023-05-14 06:58:14 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Ping timeout: 268 seconds)
2023-05-14 06:58:14 +0200coot_coot
2023-05-14 07:04:27 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2023-05-14 07:05:22 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-05-14 07:15:46 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 07:15:51 +0200stallmanator(~stallmana@user/stallmanator) (Quit: Leaving...)
2023-05-14 07:19:59 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 07:24:22 +0200stallmanator(~stallmana@user/stallmanator)
2023-05-14 07:24:50 +0200cheater_(~Username@user/cheater)
2023-05-14 07:26:45 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-05-14 07:26:55 +0200cheater_cheater
2023-05-14 07:32:34 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 07:37:18 +0200trev(~trev@user/trev)
2023-05-14 07:37:21 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 256 seconds)
2023-05-14 07:37:39 +0200gentauro(~gentauro@user/gentauro) (Quit: leaving)
2023-05-14 07:37:41 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 07:42:27 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 256 seconds)
2023-05-14 07:46:10 +0200nate2(~nate@98.45.169.16)
2023-05-14 07:46:24 +0200gentauro(~gentauro@user/gentauro)
2023-05-14 07:50:41 +0200nate2(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2023-05-14 07:54:05 +0200vandita(~vandit@85-238-93-13.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-14 07:56:01 +0200vandita(~vandit@84-236-122-3.pool.digikabel.hu)
2023-05-14 07:58:52 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 08:15:29 +0200lottaquestions_(~nick@2607:fa49:503f:6d00:e12c:3339:1e68:4fd9)
2023-05-14 08:17:08 +0200lottaquestions(~nick@2607:fa49:503f:6d00:a90f:1597:2753:5a45) (Ping timeout: 240 seconds)
2023-05-14 08:33:07 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 08:33:20 +0200acidjnk(~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de)
2023-05-14 08:37:25 +0200evincar(~evincar@user/evincar) (Ping timeout: 240 seconds)
2023-05-14 08:37:35 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 08:44:08 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-05-14 08:50:05 +0200falafel(~falafel@2603-8000-d700-115c-216b-37a8-40bc-a416.res6.spectrum.com)
2023-05-14 08:51:23 +0200evincar(~evincar@user/evincar)
2023-05-14 08:53:10 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-05-14 09:09:47 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-05-14 09:10:42 +0200falafel(~falafel@2603-8000-d700-115c-216b-37a8-40bc-a416.res6.spectrum.com) (Remote host closed the connection)
2023-05-14 09:12:19 +0200gmg(~user@user/gehmehgeh)
2023-05-14 09:15:53 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-05-14 09:17:53 +0200czy(~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
2023-05-14 09:20:20 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 09:23:48 +0200 <jade[m]> hm, I wonder about the type hierarchy for monads. We need to 'prove' that a type is an applicative functor first, but isn't that able to be derived from the `bind` together with `pure`?... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/29d42836f5aebd1ff59d2fb722f1dbac302c…>)
2023-05-14 09:26:39 +0200 <mauke> technically "beforehand" is not required
2023-05-14 09:26:41 +0200 <[Leary]> jade[m]: We have the Functor, Applicative, Monad hierarchy precisely because Applicative follows from Monad and Functor from Applicative.
2023-05-14 09:27:28 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 268 seconds)
2023-05-14 09:27:28 +0200 <jade[m]> mhm I understand, but wouldn't it be nicer to be able to write _just_ `pure` and `>>=` and the rest is derived?
2023-05-14 09:27:31 +0200 <mauke> you can declare the Monad instance first and then just say: instance Functor T where { fmap = liftM }; instance Applicative T where { (<*>) = ap }
2023-05-14 09:27:52 +0200 <jade[m]> ok yeah that makes sense
2023-05-14 09:27:54 +0200 <jade[m]> thank you
2023-05-14 09:28:13 +0200 <[Leary]> You can probably also do with with something like `deriving via WrappedMonad ...`.
2023-05-14 09:30:11 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2023-05-14 09:35:44 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-05-14 09:39:59 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 09:44:08 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-05-14 09:50:29 +0200tubogram447(~tubogram@user/tubogram) (Quit: Ping timeout (120 seconds))
2023-05-14 09:50:46 +0200tubogram447(~tubogram@user/tubogram)
2023-05-14 09:52:01 +0200evincar(~evincar@user/evincar) (Ping timeout: 240 seconds)
2023-05-14 09:58:41 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 09:59:18 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2023-05-14 10:00:01 +0200gmg(~user@user/gehmehgeh)
2023-05-14 10:07:01 +0200vandita(~vandit@84-236-122-3.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-14 10:08:43 +0200vandita(~vandit@178-164-188-13.pool.digikabel.hu)
2023-05-14 10:08:48 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Ping timeout: 250 seconds)
2023-05-14 10:08:48 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2023-05-14 10:11:18 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
2023-05-14 10:23:42 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 10:31:19 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2023-05-14 10:33:15 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-05-14 10:40:21 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2023-05-14 10:40:28 +0200 <Inst> what's the tradeoff between monomer and gi-gtk-declarative?
2023-05-14 10:40:41 +0200 <Inst> i'm assuming monomer lets you directly message sdl, so i guess it comes down to sdl vs gtk?
2023-05-14 10:43:40 +0200bontaq(~user@ool-45779b84.dyn.optonline.net)
2023-05-14 10:43:52 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2023-05-14 10:44:43 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 10:44:45 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2023-05-14 10:44:59 +0200 <Rembane> Inst: Before you choose one of them, check if they compile at all. I've heard rumours that gi-gtk-declarative has bitrotted quite badly.
2023-05-14 10:45:12 +0200Lord_of_Life_Lord_of_Life
2023-05-14 10:45:30 +0200 <Inst> I'm already using monomer, but acquaintances prefer gi-gtk-declarative
2023-05-14 10:45:46 +0200 <Inst> monomer doesn't compile on 9.6.1 due to issues with nanovg
2023-05-14 10:48:47 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-05-14 10:49:35 +0200mc47(~mc47@xmonad/TheMC47)
2023-05-14 10:50:29 +0200caryhartline(~caryhartl@2600:1700:2d0:8d30:21dd:2a88:7fc5:2c9a)
2023-05-14 11:01:00 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 11:05:55 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-05-14 11:05:55 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
2023-05-14 11:12:06 +0200gurkenglas(~user@dynamic-046-114-176-178.46.114.pool.telefonica.de)
2023-05-14 11:14:20 +0200titibandit(~titibandi@user/titibandit)
2023-05-14 11:16:00 +0200hugo-(znc@verdigris.lysator.liu.se) (Ping timeout: 268 seconds)
2023-05-14 11:20:41 +0200acidjnk(~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-05-14 11:21:00 +0200caryhartline(~caryhartl@2600:1700:2d0:8d30:21dd:2a88:7fc5:2c9a) (Quit: caryhartline)
2023-05-14 11:25:48 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 11:27:35 +0200hugo(znc@verdigris.lysator.liu.se)
2023-05-14 11:31:28 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 11:33:35 +0200xff0x(~xff0x@2405:6580:b080:900:7a1d:99dd:4861:77d8) (Quit: xff0x)
2023-05-14 11:36:34 +0200xff0x(~xff0x@2405:6580:b080:900:aeac:e4ca:6855:10e2)
2023-05-14 11:47:40 +0200nate2(~nate@98.45.169.16)
2023-05-14 11:48:46 +0200pyook(~puke@user/puke) (Remote host closed the connection)
2023-05-14 11:49:11 +0200pyook(~puke@user/puke)
2023-05-14 11:52:32 +0200nate2(~nate@98.45.169.16) (Ping timeout: 248 seconds)
2023-05-14 11:55:36 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 11:56:22 +0200acidjnk(~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de)
2023-05-14 11:56:44 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 11:57:30 +0200 <fr33domlover> What are the pros/cons of a class like `class Set (s :: Type -> Type) where` versus `class Set s where type Elem s` ?
2023-05-14 11:58:22 +0200 <fr33domlover> (Advantage of the latter? Allows to define instance with a constraint on `Elem s`? While in the former, instance have to work for any element type?)
2023-05-14 11:59:48 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-05-14 12:01:08 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 12:05:35 +0200oo_miguel(~Thunderbi@77.252.47.78)
2023-05-14 12:06:10 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721)
2023-05-14 12:10:29 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) (Ping timeout: 256 seconds)
2023-05-14 12:14:09 +0200 <jackdk> fr33domlover: I think you have rediscovered class MonoFunctor from package mono-traversable. But these days I use lenses instead
2023-05-14 12:18:24 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-05-14 12:18:33 +0200 <fr33domlover> jackdk: I'm aware of that package :) Asking in general though, when writing a typeclass in a library, how do I choose between monomorphic and polymorphic? The latter is the common default (Functor, Monad, etc.) but is the former widely acceptable too?
2023-05-14 12:19:19 +0200 <jackdk> I would probably exploit parametricity unless I had a good reason not to. Makes it harder to write the wrong code.
2023-05-14 12:20:35 +0200 <fr33domlover> I'm trying to do a little trick that seems to be impossible without dependent types, and switching to monomorphic would solve the problem for me
2023-05-14 12:21:51 +0200 <fr33domlover> But it's also because I'm trying to avoid using a type like aeson's Value or persistent's PersistValue and instead have each type be separate
2023-05-14 12:22:05 +0200 <fr33domlover> (Is this a waste of time? :P)
2023-05-14 12:23:47 +0200 <fr33domlover> Which is what makes my code need a typeclass to abstact over those types (they're in a closed type family, but there's no way to pick a parser/reader function for a type without a typeclass because no dependent types)
2023-05-14 12:27:28 +0200 <jackdk> I am struggling to visualise your design. Do you have a snippet that you can pastebin?
2023-05-14 12:34:57 +0200 <fr33domlover> jackdk: https://bin.nixnet.services/?86c84aa151f20723#56DGrCyKoT8u6jLx3oxDj9VNDYrTAkqnWfJWzapyWhfn
2023-05-14 12:35:18 +0200Vajb(~Vajb@2001:999:705:9eb4:3be1:37ee:6d1b:ae10) (Ping timeout: 265 seconds)
2023-05-14 12:36:08 +0200 <fr33domlover> I'm probably going to get rid of this "Face" type thing because Idk how to implement a Slab instance like this
2023-05-14 12:36:11 +0200Vajb(~Vajb@2001:999:489:9fc7:2a48:2fed:ac18:a255)
2023-05-14 12:36:19 +0200 <fr33domlover> But if anyone knows a way, I'd love to know ^_^
2023-05-14 12:36:56 +0200 <jackdk> Is the set of types you need to abstract over finite? You could shove them into the indices of a GADT if so?
2023-05-14 12:39:25 +0200 <jackdk> The other tack you could consider is to use Typeable somehow
2023-05-14 12:39:43 +0200 <fr33domlover> jackdk: I'm new to this so can't tell intuitively what a GADT would give me versus just using `data Face = FaceText Text | FaceByteString ByteString` (but I'll try and see)
2023-05-14 12:41:10 +0200 <jackdk> fr33domlover: given `data Face a where { FaceText :: Text -> Face Text; FaceByteString :: ByteString -> Face ByteString }`, pattern-matching on a constructor of `Face a` would bring a constraint into scope telling you which constructor it was.
2023-05-14 12:41:36 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
2023-05-14 12:41:42 +0200 <jackdk> Er. bring a constraint like `a ~ Text` into scope telling you which type you had. Maybe useful?
2023-05-14 12:42:05 +0200 <jackdk> I don't know what the words "slab" and "engrave" mean, so I am still not understanding the problem you seek to solve
2023-05-14 12:43:09 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2023-05-14 12:45:29 +0200 <fr33domlover> jackdk: 'retrieve' would read a file and use 'see' to parse it into some type 'a'. Trouble is, a 'retrieve' implementation needs to choose whether to parse a Text or a ByteString out of the file, based on `type EngraveFace a`
2023-05-14 12:49:18 +0200 <jackdk> if you use a fundep instead of an associated type, or if you put an injectivity annotation on the associated type, you could reason back through it maybe?
2023-05-14 12:50:11 +0200 <fr33domlover> I can't find a way to do that because it needs to pick a file reader function (e.g. readFile or BS.readFile) based on the specific Face type, and the only way to pick a value based on a type seems to be a typeclass (I'd love to pattern-match on the Face type but Idk how)
2023-05-14 12:51:09 +0200 <fr33domlover> jackdk: Reasoning back is fine, what I can't do it pick the file reader function (a value) based on the reasoned type
2023-05-14 12:51:55 +0200 <fr33domlover> I'm guessing it's impossible without a typeclass, I just want someone more knowledgeable to confirm that :P
2023-05-14 12:53:06 +0200 <jackdk> https://github.com/brendanhay/amazonka/blob/3e66cc1b07f2818d0b4fc346310ecdb1c3c27599/lib/amazonka/… this sort of thing? if the types are the same, then pattern-matching `Refl` brings into scope a constraint saying so
2023-05-14 12:53:55 +0200melonai(~mel@rnrd.eu) (Ping timeout: 260 seconds)
2023-05-14 12:54:01 +0200vandita(~vandit@178-164-188-13.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-14 12:55:57 +0200vandita(~vandit@fibhost-66-106-67.fibernet.hu)
2023-05-14 13:01:20 +0200 <fr33domlover> jackdk: thanks, I didn't know this is possible! It does mean I need to handle the Nothing case by throwing an error at runtime, but it might work, I'll try ^_^
2023-05-14 13:03:47 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-05-14 13:09:54 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-05-14 13:41:57 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 13:42:07 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 13:44:16 +0200 <ski> "the only way to pick a value based on a type seems to be a typeclass" -- one could also e.g. pass a record (which is how type class constraints tend to be implemented, in general)
2023-05-14 13:44:27 +0200 <ski> fr33domlover ^
2023-05-14 13:46:28 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 13:46:28 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-05-14 13:49:46 +0200 <ski> (btw, to perhaps make it clearer. one could with GADTs do `data FaceType :: Face -> Type where { FaceTypeText :: Text -> FaceType FaceText; FaceTypeByteString :: ByteString -> FaceType FaceByteString }'. so matching on a value of type `FaceType a' against one of the patterns `FaceTypeText t' or `FaceTypeByteString b', would bring `a ~ FaceText' (and `t :: Text') alternatively `a ~ FaceByteString' (and `b ::
2023-05-14 13:49:52 +0200 <ski> ByteString') into scope)
2023-05-14 13:50:49 +0200 <ski> .. i'm not sure what `s' in `Slab s' would be, in instance of `Slab'
2023-05-14 13:57:15 +0200 <fr33domlover> ski: How do I produce the GADT value though? So that I can match on its constructors (other than using `eqT`)
2023-05-14 13:57:15 +0200 <fr33domlover> the `s` in `Slab` can be something like `Int` or `data Person = Person String Int` etc. etc.
2023-05-14 13:58:08 +0200 <fr33domlover> Ah oops ignore the last message
2023-05-14 13:58:16 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2023-05-14 13:58:56 +0200 <fr33domlover> `s` would be something like `data File = File FilePath` that implements `retrieve` by reading from that file
2023-05-14 13:59:32 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2023-05-14 14:03:17 +0200Lycurgus(~juan@user/Lycurgus)
2023-05-14 14:09:45 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
2023-05-14 14:11:11 +0200titibandit(~titibandi@user/titibandit) (Ping timeout: 256 seconds)
2023-05-14 14:21:48 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-05-14 14:27:55 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-05-14 14:33:17 +0200acidjnk(~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2023-05-14 14:34:45 +0200 <ski> fr33domlover : "How do I produce the GADT value though?" -- i don't know, since i don't understand the situation you're trying to model
2023-05-14 14:35:29 +0200 <ski> fr33domlover : "`s` would be something like `data File = File FilePath`" -- that makes no sense, because `File :: Type', but `s :: Type -> Type', in `Slab s'
2023-05-14 14:36:09 +0200 <ski> perhaps you intended for `File' to be parameterized over the type of value stored at that `FilePath'
2023-05-14 14:36:21 +0200 <ski> ("phantom types", possibly)
2023-05-14 14:41:59 +0200bontaq(~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 240 seconds)
2023-05-14 14:43:11 +0200 <dminuoso> jade[m]: Note, part of the reason this cant be done automatically is because there are types that are just Applicative but not Monad, otherwise we could have an `instance {-# OVERLAPPING #-} Applicative f => Monad f`. And in fact its because those types exist why we have Applicative in the first place.
2023-05-14 14:43:52 +0200 <dminuoso> In some way the superclass relationship is somewhat awkward, due to the presumed coherence condition (where you assume some sort of extensional equivalence between ap and (<*>), as well as pure and return)
2023-05-14 14:45:47 +0200 <jade[m]> yeah that makes sense
2023-05-14 14:46:21 +0200 <dminuoso> On the other hand, perhaps its a bad idea. Maybe we would have been better off with ap and return instead.
2023-05-14 14:46:48 +0200 <dminuoso> Such that Applicative is the typeclass of things that can sort of "run concurrently", and Monad is the typeclass of things that can sort of "run sequentially"
2023-05-14 14:47:09 +0200 <dminuoso> Right now that's kind of screwed up, because as soon as you have a Monad instance, its Applicative instance has the same "sequential effect" baked in too
2023-05-14 14:47:43 +0200 <jade[m]> yeah I know that, I was just wondering whether we could infer some things "from above" rather than having to show it "from below"
2023-05-14 14:48:08 +0200 <jade[m]> <mauke> "you can declare the Monad..." <- essentially this
2023-05-14 14:48:29 +0200 <dminuoso> It would be nice if would you could express a typeclass instance, whose selection is dependent on whether or not another instance exists.
2023-05-14 14:48:31 +0200 <dminuoso> But you cant
2023-05-14 14:48:46 +0200 <jade[m]> mhm
2023-05-14 14:49:59 +0200 <dminuoso> Say we assumed some `instance {-# OVERLAPPING #-} Monad f => Applicative f where (<*>) = ap; pure = return`
2023-05-14 14:50:16 +0200 <dminuoso> You could write this, and in most places this would work just fine.
2023-05-14 14:51:09 +0200 <dminuoso> However, because the constraint `Monad f` is not considered for the purpose of *selecting* an instance candidate, this will not play nice with errors
2023-05-14 14:51:26 +0200jscript(~jscript@cpe-172-193-181-254.qld.foxtel.net.au)
2023-05-14 14:51:29 +0200 <dminuoso> (Because you can think of it as an instance for *all* types f, irrespective of whether we have Monad)
2023-05-14 14:51:46 +0200 <dminuoso> Even something like `data T a = T (a -> a)`
2023-05-14 14:51:49 +0200 <jscript> why do i get this? http://0x0.st/HNeb.txt
2023-05-14 14:52:05 +0200 <jscript> for cabal install haskell-language-server
2023-05-14 14:52:08 +0200 <dminuoso> jscript: mismatching ghc version
2023-05-14 14:52:28 +0200 <jscript> how do i install one for 8.4.4
2023-05-14 14:52:53 +0200 <dminuoso> jscript: Not possible
2023-05-14 14:53:16 +0200 <dminuoso> HLS since published on hackage always demanded base >= 4.12 (which corresponds to GHC 8.6.1)
2023-05-14 14:53:36 +0200 <jscript> how do i obtain that version
2023-05-14 14:53:46 +0200 <dminuoso> Upgrade your GHC installation.
2023-05-14 14:57:18 +0200 <jade[m]> hm, can you partially apply a type parameter if it's not the first parameter? We can express `r ->` as `(-> r)`, but is there a way to express `r ->` without a newtype
2023-05-14 14:57:21 +0200ski. o O ( "Supertyping Suggestion for Haskell" by John Meacham in 2004 at <http://repetae.net/recent/out/supertyping.html> )
2023-05-14 14:57:24 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 14:57:27 +0200 <ski> jade[m] : no
2023-05-14 14:58:28 +0200 <ski> (and you mean `(->) r' (aka `(r ->)'), not `(-> r)'. the other one would be `(-> r)' (`Flip (->) r', basically))
2023-05-14 14:59:05 +0200 <jade[m]> yes, typo
2023-05-14 14:59:17 +0200 <jade[m]> and yes again, is there a Flip type like that?
2023-05-14 14:59:29 +0200 <jade[m]> Or do I need to define it myself? - I suppose it would be trivial
2023-05-14 14:59:56 +0200 <jscript> hmm WARNING: You don't have a mk/build.mk file.
2023-05-14 15:00:06 +0200 <ski> @hoogle Flip
2023-05-14 15:00:07 +0200 <lambdabot> module Data.Bifunctor.Flip
2023-05-14 15:00:07 +0200 <lambdabot> Data.Bifunctor.Flip newtype Flip p a b
2023-05-14 15:00:07 +0200 <lambdabot> Data.Bifunctor.Flip Flip :: p b a -> Flip p a b
2023-05-14 15:00:31 +0200 <jade[m]> thank you very much
2023-05-14 15:01:53 +0200 <ski> @hackage bifunctors
2023-05-14 15:01:53 +0200 <lambdabot> https://hackage.haskell.org/package/bifunctors
2023-05-14 15:03:51 +0200 <jade[m]> <ski> ". o O ( "Supertyping Suggestion..." <- interesting
2023-05-14 15:09:11 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 264 seconds)
2023-05-14 15:15:53 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-05-14 15:16:08 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-14 15:17:31 +0200jscript(~jscript@cpe-172-193-181-254.qld.foxtel.net.au) (Ping timeout: 240 seconds)
2023-05-14 15:20:29 +0200nate2(~nate@98.45.169.16)
2023-05-14 15:24:09 +0200jero98772(~jero98772@2800:484:1d84:9000::2)
2023-05-14 15:25:37 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2023-05-14 15:25:45 +0200nate2(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2023-05-14 15:30:05 +0200vandita(~vandit@fibhost-66-106-67.fibernet.hu) (Ping timeout: 240 seconds)
2023-05-14 15:32:04 +0200vandita(~vandit@94-21-55-115.pool.digikabel.hu)
2023-05-14 15:41:43 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 15:45:59 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-05-14 16:08:17 +0200phma(phma@2001:5b0:210d:9dd8:9595:9262:e864:847) (Read error: Connection reset by peer)
2023-05-14 16:08:45 +0200phma(~phma@host-67-44-208-102.hnremote.net)
2023-05-14 16:08:56 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 16:09:46 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721)
2023-05-14 16:12:45 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-05-14 16:13:19 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 265 seconds)
2023-05-14 16:13:48 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) (Ping timeout: 240 seconds)
2023-05-14 16:35:58 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 16:40:47 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-05-14 16:45:01 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 16:51:41 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2023-05-14 17:00:59 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-14 17:00:59 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-14 17:00:59 +0200wroathe(~wroathe@user/wroathe)
2023-05-14 17:03:21 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 17:03:43 +0200Pickchea(~private@user/pickchea)
2023-05-14 17:07:56 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 265 seconds)
2023-05-14 17:13:05 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2023-05-14 17:30:42 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-05-14 17:33:21 +0200titibandit(~titibandi@user/titibandit)
2023-05-14 17:40:45 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-14 17:40:45 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-14 17:40:45 +0200wroathe(~wroathe@user/wroathe)
2023-05-14 17:43:14 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 17:52:46 +0200evincar(~evincar@user/evincar)
2023-05-14 17:53:25 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-05-14 18:01:31 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 18:05:48 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 18:09:07 +0200fsestini(~fsestini@5.151.90.160)
2023-05-14 18:17:28 +0200rf(~rf@2605:59c8:179c:f610:cee0:ff93:627a:5295) (Ping timeout: 240 seconds)
2023-05-14 18:24:32 +0200 <fsestini> Hi. I'm trying to write a client in servant to query an existing API. One of the endpoints returns a response in variable content type, so i tried to model this with a Get [T1, T2,...] T, where T1, T2, etc. are all the MIME types I need to support. I was hoping that things would "just work" and servant would decode the response into my result type
2023-05-14 18:24:32 +0200 <fsestini> T according to the content type listed in the response header, selecting the appropriate MimeUnrender instance. Alas it doesn't seem to be the case. What actually happens is that servant will try to decode the response according to the first content type T1, and fail if unsuccessful, disregarding the other types T2, etc. In fact servant won't even
2023-05-14 18:24:33 +0200 <fsestini> care if I don't have an instance of MimeUnrender for anything but T1. Am I missing something here? How can I get servant to actually support multiple response types?
2023-05-14 18:27:49 +0200mixfix41(~sdeny9ee@user/mixfix41)
2023-05-14 18:31:27 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-05-14 18:32:05 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-05-14 18:33:26 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 18:35:35 +0200vandita(~vandit@94-21-55-115.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-14 18:37:38 +0200vandita(~vandit@178-164-206-39.pool.digikabel.hu)
2023-05-14 18:38:09 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 268 seconds)
2023-05-14 18:53:31 +0200titibandit(~titibandi@user/titibandit) (Ping timeout: 240 seconds)
2023-05-14 18:54:51 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 18:59:35 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 264 seconds)
2023-05-14 19:00:24 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 19:01:12 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-05-14 19:03:25 +0200 <fsestini> uhm, I think this partially answers my question https://github.com/haskell-servant/servant/pull/552
2023-05-14 19:04:12 +0200wroathe(~wroathe@c-24-118-213-219.hsd1.mn.comcast.net)
2023-05-14 19:04:12 +0200wroathe(~wroathe@c-24-118-213-219.hsd1.mn.comcast.net) (Changing host)
2023-05-14 19:04:12 +0200wroathe(~wroathe@user/wroathe)
2023-05-14 19:04:46 +0200Guest20(~Guest29@94.29.126.170)
2023-05-14 19:04:47 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 19:04:58 +0200Guest20(~Guest29@94.29.126.170) (Client Quit)
2023-05-14 19:05:31 +0200Lycurgus(~juan@user/Lycurgus)
2023-05-14 19:06:47 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
2023-05-14 19:06:59 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 256 seconds)
2023-05-14 19:11:30 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-05-14 19:12:36 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721)
2023-05-14 19:16:58 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721) (Ping timeout: 250 seconds)
2023-05-14 19:20:03 +0200caryhartline(~caryhartl@2600:1700:2d0:8d30:41ce:1f50:8fd7:71a6)
2023-05-14 19:21:08 +0200caryhartline(~caryhartl@2600:1700:2d0:8d30:41ce:1f50:8fd7:71a6) (Client Quit)
2023-05-14 19:21:59 +0200nate2(~nate@98.45.169.16)
2023-05-14 19:25:35 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 19:26:49 +0200nate2(~nate@98.45.169.16) (Ping timeout: 256 seconds)
2023-05-14 19:26:55 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-05-14 19:27:55 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-05-14 19:30:13 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 256 seconds)
2023-05-14 19:31:33 +0200caryhartline(~caryhartl@2600:1700:2d0:8d30:10f5:39f4:9f0d:b8a0)
2023-05-14 19:31:43 +0200tessier(~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Remote host closed the connection)
2023-05-14 19:31:48 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-05-14 19:37:18 +0200cheater(~Username@user/cheater)
2023-05-14 19:37:39 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
2023-05-14 19:40:35 +0200phma(~phma@host-67-44-208-102.hnremote.net) (Read error: Connection reset by peer)
2023-05-14 19:43:16 +0200acidjnk(~acidjnk@p200300d6e7072f04289ebaf0057e3058.dip0.t-ipconnect.de)
2023-05-14 19:50:10 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 19:50:49 +0200 <fr33domlover> Thanks ski! I wrote a version with a regular ADT, will try to switch to a GADT to see its contribution
2023-05-14 19:54:41 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
2023-05-14 19:55:11 +0200strugglingCrab(~strugglin@2a02:a03f:acfa:b800:4a86:4c47:2eb6:459c)
2023-05-14 19:55:32 +0200 <strugglingCrab> not sure what im missing but why does this function produce an infinite list
2023-05-14 19:55:37 +0200 <strugglingCrab> chunks :: Int -> [a] -> [[a]]
2023-05-14 19:55:38 +0200 <strugglingCrab> chunks _ [] = []
2023-05-14 19:55:38 +0200 <strugglingCrab> chunks n xs = let (x, xs') = splitAt n xs in x : chunks n xs'
2023-05-14 19:57:29 +0200 <ncf> which call produces an infinite list?
2023-05-14 19:57:46 +0200 <strugglingCrab> chunks 3 [1..9]
2023-05-14 19:58:00 +0200 <ncf> i get [[1,2,3],[4,5,6],[7,8,9]]
2023-05-14 19:58:06 +0200 <strugglingCrab> hmm
2023-05-14 19:58:15 +0200 <ncf> using splitAt from base
2023-05-14 19:58:20 +0200 <jade[m]> do you call it with an infinite list?
2023-05-14 19:58:21 +0200 <strugglingCrab> yea
2023-05-14 19:58:24 +0200 <strugglingCrab> no
2023-05-14 19:58:53 +0200 <ncf> how are you concluding that it produces an infinite list?
2023-05-14 19:59:08 +0200 <probie> strugglingCrab: what do you get if you call `take 10 $ chunks 3 [1..10]`?
2023-05-14 19:59:36 +0200 <strugglingCrab> calling it in ghci doesn't terminate, just prints a list consisting of the sublists you would expect followed by a non ending amount of empty lists
2023-05-14 19:59:49 +0200 <ncf> do :i splitAt
2023-05-14 19:59:59 +0200 <ncf> oh, i see what's wrong
2023-05-14 20:00:11 +0200 <ncf> you need to either put both cases on the same line with a semicolon or use :{ :}
2023-05-14 20:00:28 +0200 <strugglingCrab> probie [[1,2,3],[4,5,6],[7,8,9],[10],[],[],[],[],[],[]]
2023-05-14 20:01:06 +0200 <ncf> otherwise each line redefines the function
2023-05-14 20:01:13 +0200 <ncf> so you don't have a case for []
2023-05-14 20:01:18 +0200 <strugglingCrab> ahhh
2023-05-14 20:02:13 +0200 <jade[m]> yeah that's a quirk of ghci
2023-05-14 20:02:26 +0200 <jade[m]> but it makes sense why it does that
2023-05-14 20:02:26 +0200 <strugglingCrab> i see, i got it to work now, thanks :]
2023-05-14 20:05:35 +0200 <monochrom> This is why coding up a whole project at the REPL doesn't scale. Use a file.
2023-05-14 20:06:18 +0200u0_a202(~u0_a202@47.60.32.137)
2023-05-14 20:06:25 +0200u0_a202dom0
2023-05-14 20:06:58 +0200 <strugglingCrab> monochrom i am using a file but i wanted to try this single function at the repl to see if i implemented it correctly
2023-05-14 20:09:55 +0200phma(~phma@host-67-44-208-35.hnremote.net)
2023-05-14 20:10:19 +0200 <fr33domlover> I often use `:load xyz.hs` and then `:edit` to change my code and instantly get a REPL to play with it
2023-05-14 20:10:32 +0200 <fr33domlover> So, it's both a file and a repl :P
2023-05-14 20:10:49 +0200titibandit(~titibandi@user/titibandit)
2023-05-14 20:10:52 +0200 <jade[m]> the repl loads the file
2023-05-14 20:11:00 +0200 <monochrom> :!ed xyz.hs so the editor looks like a REPL too!
2023-05-14 20:11:06 +0200 <jade[m]> you shouldn't write the function in the repl, just test it
2023-05-14 20:11:44 +0200ski's set that to use `emacsclient -nw'
2023-05-14 20:12:16 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 20:12:22 +0200 <strugglingCrab> i normally just test but i had other type errors in the file that i didnt want to fix for the time being
2023-05-14 20:12:47 +0200 <monochrom> Ah, tell ghci to --fdefer-type-errors
2023-05-14 20:12:59 +0200 <monochrom> err, just one dash, -fdefer-type-errors
2023-05-14 20:13:19 +0200 <strugglingCrab> ah, wasn't aware about this that seems handy
2023-05-14 20:13:29 +0200 <monochrom> It is actually what I tell me ghci, especially when in emacs haskell mode
2023-05-14 20:13:30 +0200dom0(~u0_a202@47.60.32.137) (Quit: WeeChat 3.8)
2023-05-14 20:14:15 +0200 <monochrom> Also, use "undefined" for stubs/TODOs generously.
2023-05-14 20:16:05 +0200 <strugglingCrab> what is the haskell/cabal equivalent of cargo check
2023-05-14 20:16:19 +0200bontaq(~user@ool-45779b84.dyn.optonline.net)
2023-05-14 20:16:23 +0200 <strugglingCrab> ie just outputting warnings without building
2023-05-14 20:16:31 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-05-14 20:16:38 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-14 20:16:41 +0200 <monochrom> We don't have that.
2023-05-14 20:16:49 +0200 <strugglingCrab> because hlint doesn't lint for some things for which i thought it would (unused imports for example)
2023-05-14 20:16:54 +0200 <strugglingCrab> ah okey
2023-05-14 20:17:25 +0200 <geekosaur> ghc -Wall -fno-code
2023-05-14 20:17:28 +0200 <monochrom> Or maybe we do, ghc -fno-code, cabal build --ghc-option=-fno-code or something
2023-05-14 20:18:22 +0200 <monochrom> But REPL's :load is almost as fast as -fno-code already
2023-05-14 20:18:43 +0200geekosaurmentions ghcid
2023-05-14 20:19:42 +0200 <strugglingCrab> thanks, will use -fno-code then
2023-05-14 20:20:13 +0200 <strugglingCrab> another question but the context is a bit long so i put it in a pastebin (https://pastebin.com/uCLh4nn9)
2023-05-14 20:20:45 +0200 <strugglingCrab> i just dont get how this error message makes sense, becaues the code is in a module from which the constructor of Board is not even visible
2023-05-14 20:21:10 +0200 <strugglingCrab> so i couldn't even pattern match on it if i wanted to from how i understand it
2023-05-14 20:21:45 +0200 <strugglingCrab> also, shouldn't this pattern catch all of those mentioned patterns anyways
2023-05-14 20:22:54 +0200 <geekosaur> ghc can't understand the intent of your code to know those are complete
2023-05-14 20:23:01 +0200 <monochrom> The compiler uses a dumb and conservative algorithm for this. It has false alarms, yes.
2023-05-14 20:23:24 +0200 <geekosaur> s/understand/know/
2023-05-14 20:23:31 +0200 <monochrom> But if your last guard says "otherwise = 1" the algorithm is happy.
2023-05-14 20:24:01 +0200 <monochrom> Although, if it's tic-tac-toe, what if the board is not full and no one has won yet?
2023-05-14 20:24:18 +0200themc47(~mc47@xmonad/TheMC47)
2023-05-14 20:24:50 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 268 seconds)
2023-05-14 20:25:20 +0200 <strugglingCrab> oh, i thought that was a "solved" problem, i remember a talk by that simon haskell guy (sorry, forgot his full name) about developing a dsl for exhaustive pattern analysis in lazy languages or something
2023-05-14 20:26:13 +0200 <strugglingCrab> also, evalBoard is part of a minimax implementation so it will (assuming i dont make mistakes) only be called on leaves of the gametree
2023-05-14 20:26:38 +0200 <monochrom> To be sure, I haven't followed that development, so I don't know how good it is today.
2023-05-14 20:27:07 +0200 <monochrom> Right, so if you do have a precondition, the compiler doesn't know.
2023-05-14 20:27:23 +0200 <strugglingCrab> yes, but i dont see how that relates to the error that is displayed
2023-05-14 20:27:36 +0200 <monochrom> Or rather, refuses to know. GHC is still not a whole-program-analysis compiler.
2023-05-14 20:27:39 +0200 <strugglingCrab> the pattern im matching on is just "board"
2023-05-14 20:27:49 +0200 <geekosaur> the pattern includes guards
2023-05-14 20:27:57 +0200 <monochrom> Ah it just reuses the wording "pattern" for guards.
2023-05-14 20:28:14 +0200 <geekosaur> ghc will try to analyze your guards as part of it but isn't very good at it
2023-05-14 20:29:57 +0200 <strugglingCrab> also, is there a way to suppress cabal telling me the details of the order my program is compiled in
2023-05-14 20:30:40 +0200 <monochrom> Some of that comes from GHC itself, too.
2023-05-14 20:30:49 +0200 <monochrom> I don't know either of them.
2023-05-14 20:31:19 +0200 <monochrom> or rather, how to suppress either
2023-05-14 20:31:50 +0200 <geekosaur> -v0 ?
2023-05-14 20:32:13 +0200 <strugglingCrab> ah yes that works, thanks
2023-05-14 20:33:15 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:200b:a013:81d0:d721)
2023-05-14 20:34:57 +0200fsestini(~fsestini@5.151.90.160) (Quit: Client closed)
2023-05-14 20:36:12 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 20:37:59 +0200evincar(~evincar@user/evincar) (Ping timeout: 240 seconds)
2023-05-14 20:39:49 +0200michalz(~michalz@185.246.207.200)
2023-05-14 20:41:25 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 20:45:40 +0200mncheck(~mncheck@193.224.205.254)
2023-05-14 20:53:24 +0200strugglingCrab(~strugglin@2a02:a03f:acfa:b800:4a86:4c47:2eb6:459c) (Quit: Client closed)
2023-05-14 20:57:35 +0200vandita(~vandit@178-164-206-39.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-14 20:59:28 +0200vandita(~vandit@91-83-11-250.pool.digikabel.hu)
2023-05-14 21:06:40 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-05-14 21:14:16 +0200Sgeo(~Sgeo@user/sgeo)
2023-05-14 21:16:31 +0200titibandit(~titibandi@user/titibandit) (Ping timeout: 240 seconds)
2023-05-14 21:16:40 +0200nattiestnate(~nate@202.138.250.9)
2023-05-14 21:17:38 +0200nattiestnate(~nate@202.138.250.9) (Client Quit)
2023-05-14 21:17:53 +0200nattiestnate(~nate@202.138.250.9)
2023-05-14 21:19:11 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-05-14 21:26:55 +0200caryhartline(~caryhartl@2600:1700:2d0:8d30:10f5:39f4:9f0d:b8a0) (Quit: caryhartline)
2023-05-14 21:35:35 +0200ddellacosta(~ddellacos@146.70.165.10) (Ping timeout: 240 seconds)
2023-05-14 21:37:39 +0200ddellacosta(~ddellacos@143.244.47.71)
2023-05-14 21:40:04 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 21:42:16 +0200caryhartline(~caryhartl@107.140.218.181)
2023-05-14 21:45:37 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
2023-05-14 21:45:39 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-14 21:45:39 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-14 21:45:39 +0200wroathe(~wroathe@user/wroathe)
2023-05-14 21:48:44 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 21:49:09 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-05-14 21:53:11 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 21:56:50 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2023-05-14 21:57:10 +0200cheater(~Username@user/cheater)
2023-05-14 21:58:04 +0200titibandit(~titibandi@user/titibandit)
2023-05-14 22:02:00 +0200caryhartline(~caryhartl@107.140.218.181) (Quit: caryhartline)
2023-05-14 22:03:47 +0200nek0(~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat)
2023-05-14 22:05:08 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 22:08:26 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2023-05-14 22:09:23 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-05-14 22:12:23 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-05-14 22:16:45 +0200nek0(~nek0@2a01:4f8:222:2b41::12)
2023-05-14 22:17:21 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-14 22:17:21 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-14 22:17:21 +0200wroathe(~wroathe@user/wroathe)
2023-05-14 22:18:18 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 22:18:48 +0200evincar(~evincar@user/evincar)
2023-05-14 22:20:46 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
2023-05-14 22:23:03 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 256 seconds)
2023-05-14 22:23:41 +0200Pickchea(~private@user/pickchea)
2023-05-14 22:24:18 +0200caryhartline(~caryhartl@107.140.218.181)
2023-05-14 22:26:29 +0200urdh(~urdh@user/urdh) (Quit: Boom!)
2023-05-14 22:29:49 +0200urdh(~urdh@83-233-165-22.cust.bredband2.com)
2023-05-14 22:29:49 +0200urdh(~urdh@83-233-165-22.cust.bredband2.com) (Changing host)
2023-05-14 22:29:49 +0200urdh(~urdh@user/urdh)
2023-05-14 22:30:45 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 240 seconds)
2023-05-14 22:31:17 +0200mixfix41(~sdeny9ee@user/mixfix41) (Ping timeout: 265 seconds)
2023-05-14 22:31:42 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-05-14 22:31:50 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 22:32:45 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-14 22:32:46 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-05-14 22:32:48 +0200urdh(~urdh@user/urdh) (Client Quit)
2023-05-14 22:34:01 +0200janus(janus@anubis.0x90.dk) ()
2023-05-14 22:34:11 +0200urdh(~urdh@user/urdh)
2023-05-14 22:34:55 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-05-14 22:36:47 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-05-14 22:38:47 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 240 seconds)
2023-05-14 22:41:52 +0200zeenk(~zeenk@2a02:2f04:a105:f00::7fe)
2023-05-14 22:42:35 +0200 <sclv> iirc there's a more potentially complete algorithm but its to expensive, so ghc uses something a bit less complete, but which won't blow up compile times and memory
2023-05-14 22:42:47 +0200leat(~leat@46.70.67.13)
2023-05-14 22:43:49 +0200Gremlin8483(~Gremlin84@73.243.250.212) (Ping timeout: 265 seconds)
2023-05-14 22:46:51 +0200 <hellwolf[m]> without using template haskell, how can I achieve something like `foo = return __FUNCTION__NAME__ <> "is my name"` ?
2023-05-14 22:47:10 +0200 <geekosaur> without using TH, you can't
2023-05-14 22:47:36 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 22:47:57 +0200 <jade[m]> why do you want to do that
2023-05-14 22:48:21 +0200 <geekosaur> debugging, presumably
2023-05-14 22:48:30 +0200 <jade[m]> ah
2023-05-14 22:48:30 +0200 <monochrom> Probably because there are hundreds of functions needing that. Which in turn probably because "better error messages". :)
2023-05-14 22:48:56 +0200 <geekosaur> `HasCallStack` might be of some interest, but it's somewhat magical and can require you to retrofit that constraint everywhere
2023-05-14 22:49:05 +0200 <monochrom> Ironically if you just use error, you need to nothing and you even get line numbers!
2023-05-14 22:49:42 +0200caryhartline(~caryhartl@107.140.218.181) (Quit: caryhartline)
2023-05-14 22:50:30 +0200 <monochrom> Hrm TH is a interesting thought. I have test cases that use, say, the == relation and I want the failure message to also say "fails the == relation"...
2023-05-14 22:50:55 +0200 <monochrom> or perhaps s/failure message/name of test case/
2023-05-14 22:51:56 +0200 <monochrom> But I'm too lazy. It's rabbit holes all the way down...
2023-05-14 22:52:28 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-05-14 22:52:44 +0200 <monochrom> You don't need HasCallStack until you want to see a more complete call chain.
2023-05-14 22:53:41 +0200 <geekosaur> not entirely true, as even without the call chain you get the magic behavior that gives you access to the function's name and location (which is how `error` gets it)
2023-05-14 22:54:43 +0200 <monochrom> OK yeah error has HasCallStack. I mean you don't need to add your own additional "HasCallStack=>"s
2023-05-14 22:55:23 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 264 seconds)
2023-05-14 22:57:06 +0200 <mauke> > getCallStack callStack
2023-05-14 22:57:08 +0200 <lambdabot> error:
2023-05-14 22:57:08 +0200 <lambdabot> Variable not in scope: getCallStack :: t0 -> terror: Variable not in sco...
2023-05-14 22:57:23 +0200 <mauke> t0 -> terror, indeed
2023-05-14 22:57:32 +0200 <monochrom> haha
2023-05-14 23:00:56 +0200 <sm> call stacks in haskell.. so confusing!
2023-05-14 23:02:30 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-05-14 23:05:09 +0200freeside_(~mengwong@103.252.202.151)
2023-05-14 23:06:45 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
2023-05-14 23:08:15 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 268 seconds)
2023-05-14 23:08:35 +0200leat(~leat@46.70.67.13) (Quit: WeeChat 3.8)
2023-05-14 23:09:53 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-05-14 23:09:57 +0200freeside_(~mengwong@103.252.202.151) (Ping timeout: 265 seconds)
2023-05-14 23:10:24 +0200Gremlin8483(~Gremlin84@c-73-243-250-212.hsd1.co.comcast.net)
2023-05-14 23:10:56 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer)
2023-05-14 23:11:41 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-05-14 23:19:20 +0200 <probie> `foo :: HasCallStack => String; foo = (fst $ head $ getCallStack callStack) <> " is my name"`
2023-05-14 23:19:59 +0200 <geekosaur> with the appropriate import
2023-05-14 23:21:23 +0200 <geekosaur> https://downloads.haskell.org/ghc/9.2.5/docs/html/libraries/base-4.16.4.0/GHC-Stack.html
2023-05-14 23:23:29 +0200nate2(~nate@98.45.169.16)
2023-05-14 23:27:07 +0200zmt00(~zmt00@user/zmt00) (Quit: Leaving)
2023-05-14 23:28:36 +0200nate2(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2023-05-14 23:29:21 +0200zmt00(~zmt00@user/zmt00)
2023-05-14 23:33:46 +0200 <hololeap> I'm caching a data structure and a timestamp using the binary package and I have a question about laziness
2023-05-14 23:33:55 +0200trev(~trev@user/trev) (Quit: trev)
2023-05-14 23:34:22 +0200 <hololeap> I first want to check the timestamp to see if the cache is invalid, before even bothering to read the datastructure
2023-05-14 23:34:37 +0200 <hololeap> currently I have them in separate files
2023-05-14 23:35:18 +0200 <hololeap> but could this be achived with one file which contains (Timestamp, Datastructure)?
2023-05-14 23:37:01 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-05-14 23:38:11 +0200 <geekosaur> at the price of possibly leaking file descriptors / Handles, which aren't necessarily in great supply
2023-05-14 23:39:23 +0200 <geekosaur> unless you're doing this in one step (that is, you read the timestamp and immediately check it to see if you need to read the rest), this may not be a good idea
2023-05-14 23:39:59 +0200 <geekosaur> and even if you are doing that, you may want to check the buffer size (not only of the Handle but also of the filesystem) since you may already have read the whole thing anyway
2023-05-14 23:40:59 +0200 <hololeap> geekosaur: well, here's the actual code as I have it currently
2023-05-14 23:41:00 +0200 <hololeap> https://github.com/hololeap/hackport/commit/685adc420d8a116c8c87d2a50c6c46f3c82cfc48#diff-04adf15b…
2023-05-14 23:41:36 +0200 <hololeap> so right now it's reading the timestamp file, checking to see if it's valid, and _then_ proceeding to read the other cache file
2023-05-14 23:41:44 +0200themc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-05-14 23:41:46 +0200 <hololeap> I would just prefer if I could do this with one file
2023-05-14 23:42:21 +0200 <geekosaur> there should be no reason you can't technically, but again this isn't so much a laziness question as a resources question
2023-05-14 23:42:47 +0200 <geekosaur> 5000 Handles open simultaneously may not be a great idea
2023-05-14 23:43:14 +0200 <hololeap> I'm confused why one file would require more handles
2023-05-14 23:43:48 +0200 <geekosaur> I'm not sure you gain much if you're not doing this with more than one file
2023-05-14 23:44:18 +0200 <geekosaur> moreover I don't see how it's a laziness question in that case
2023-05-14 23:45:05 +0200 <geekosaur> if you're making the decision right then, there's no difference between strict and lazy
2023-05-14 23:45:27 +0200 <geekosaur> if you're reading the timestamp now and using it and the associated trie later, then you have a laziness question
2023-05-14 23:45:47 +0200 <hololeap> right, which is what I'm doing :)
2023-05-14 23:46:15 +0200 <geekosaur> you're still potentially leaking a Handle in that case
2023-05-14 23:46:29 +0200 <hololeap> ok, I think I see what you're saying
2023-05-14 23:46:49 +0200 <geekosaur> also I don't think that's necessarily a laziness question, just that it might be one
2023-05-14 23:47:06 +0200 <geekosaur> you will have read the start of the trie but that's a filesystem thing, not a Haskell thing
2023-05-14 23:47:31 +0200 <hololeap> ok, separate files it is, then :)
2023-05-14 23:47:32 +0200 <geekosaur> whether you parse it immediately or not is up to your code
2023-05-14 23:48:14 +0200 <geekosaur> if you parse immediately you probably lose laziness. if you don't, you hold a Handle open until you need it and you need to remember to clean it up at some point
2023-05-14 23:48:58 +0200 <hololeap> right, and that's a lot of mental overhead to avoid having two files
2023-05-14 23:49:06 +0200vandita(~vandit@91-83-11-250.pool.digikabel.hu) (Ping timeout: 265 seconds)
2023-05-14 23:49:37 +0200zeenk(~zeenk@2a02:2f04:a105:f00::7fe) (Quit: Konversation terminated!)
2023-05-14 23:50:16 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Read error: Connection reset by peer)
2023-05-14 23:50:45 +0200vandita(~vandit@87-97-13-47.pool.digikabel.hu)
2023-05-14 23:51:37 +0200 <hololeap> thanks for the advice, geekosaur
2023-05-14 23:55:35 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)