Home liberachat/#haskell: Logs Calendar

Logs on 2024-10-25 (liberachat/#haskell)

00:02:04 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:02:45 JuanDaugherty joins (~juan@user/JuanDaugherty)
00:06:54 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
00:08:32 hgolden__ joins (~hgolden@23.162.40.28)
00:11:19 × hgolden_ quits (~hgolden@146.70.173.229) (Ping timeout: 260 seconds)
00:13:18 × SlackCoder quits (~SlackCode@64-94-63-8.ip.weststar.net.ky) (Quit: Leaving)
00:14:00 × rkazak quits (~rkazak@173.195.77.203) (Ping timeout: 252 seconds)
00:15:24 × euleritian quits (~euleritia@dynamic-176-006-128-175.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
00:15:41 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
00:17:50 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:24:43 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds)
00:26:41 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:31:57 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
00:32:56 zero is now known as yin
00:36:49 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
00:42:23 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:42:29 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
00:47:23 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
00:56:35 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
00:58:10 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:01:13 × xff0x quits (~xff0x@2405:6580:b080:900:e0cc:218e:37fe:3b0c) (Ping timeout: 245 seconds)
01:02:54 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
01:04:08 × infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 245 seconds)
01:15:54 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:20:41 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
01:24:41 infinity0 joins (~infinity0@pwned.gg)
01:28:54 × pabs3 quits (~pabs3@user/pabs3) (Ping timeout: 260 seconds)
01:31:17 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:35:11 pabs3 joins (~pabs3@user/pabs3)
01:36:29 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
01:43:44 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
01:47:07 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:51:42 × identity quits (~identity@user/ZharMeny) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.91))
01:51:49 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
01:56:31 xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
01:59:17 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 248 seconds)
02:00:49 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
02:02:51 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:07:39 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
02:09:01 weary-traveler joins (~user@user/user363627)
02:10:27 × alphazone quits (~alphazone@2.219.56.221) (Ping timeout: 246 seconds)
02:14:52 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
02:17:14 alphazone joins (~alphazone@2.219.56.221)
02:18:40 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:19:40 vanishingideal joins (~vanishing@user/vanishingideal)
02:22:25 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
02:22:54 × weary-traveler quits (~user@user/user363627) (Quit: Konversation terminated!)
02:23:43 weary-traveler joins (~user@user/user363627)
02:23:45 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
02:24:42 × vanishingideal quits (~vanishing@user/vanishingideal) (Quit: leaving)
02:25:18 paddymahoney joins (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
02:26:01 vanishingideal joins (~vanishing@user/vanishingideal)
02:27:05 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:31:46 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
02:36:46 × jcarpenter2 quits (~lol@2603:3016:1e01:b9c0:6d01:fe2b:de0:d441) (Read error: Connection reset by peer)
02:38:28 × td_ quits (~td@i5387092E.versanet.de) (Ping timeout: 252 seconds)
02:40:11 td_ joins (~td@i5387090F.versanet.de)
02:40:50 euleritian joins (~euleritia@77.22.252.56)
02:42:24 × terrorjack4 quits (~terrorjac@2a01:4f8:c17:dc9f::) (Quit: The Lounge - https://thelounge.chat)
02:43:05 emmanuelux joins (~emmanuelu@user/emmanuelux)
02:44:07 terrorjack4 joins (~terrorjac@static.48.15.202.116.clients.your-server.de)
02:44:27 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:48:59 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
02:50:27 × AkechiShiro quits (~licht@user/akechishiro) (Quit: WeeChat 4.4.2)
02:59:51 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:04:11 × haskellbridge quits (~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection)
03:04:48 haskellbridge joins (~hackager@syn-024-093-192-219.res.spectrum.com)
03:04:48 ChanServ sets mode +v haskellbridge
03:06:16 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
03:09:15 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
03:10:04 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds)
03:11:18 vanishingideal joins (~vanishing@user/vanishingideal)
03:11:20 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
03:11:35 chexum joins (~quassel@gateway/tor-sasl/chexum)
03:13:25 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
03:14:15 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
03:16:51 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:18:53 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
03:19:32 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
03:20:48 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
03:20:48 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
03:21:23 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
03:21:43 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
03:22:42 vanishingideal joins (~vanishing@user/vanishingideal)
03:23:08 hgolden joins (~hgolden@169.150.203.23)
03:24:59 × hgolden__ quits (~hgolden@23.162.40.28) (Ping timeout: 260 seconds)
03:26:09 × pabs3 quits (~pabs3@user/pabs3) (Read error: Connection reset by peer)
03:27:04 pabs3 joins (~pabs3@user/pabs3)
03:27:09 Sgeo joins (~Sgeo@user/sgeo)
03:32:38 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:37:30 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
03:39:41 × spew quits (~spew@185.153.177.94) (Quit: good night)
03:48:24 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:55:01 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
03:58:15 × mantraofpie quits (~mantraofp@user/mantraofpie) (Remote host closed the connection)
03:58:36 mantraofpie joins (~mantraofp@user/mantraofpie)
04:06:27 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:11:07 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
04:22:15 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:27:26 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
04:28:02 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:32:54 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
04:33:40 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:38:57 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
04:42:04 Wstfgl0 joins (~me-me@kc.randomserver.name)
04:42:19 zmt01 joins (~zmt00@user/zmt00)
04:42:56 × EvanR quits (~EvanR@user/evanr) (Remote host closed the connection)
04:42:57 EvanR_ joins (~EvanR@user/evanr)
04:43:33 × jackdk quits (sid373013@cssa/jackdk) (Ping timeout: 248 seconds)
04:43:33 × Techcable quits (sid534393@user/Techcable) (Ping timeout: 248 seconds)
04:43:55 × Pent quits (sid313808@id-313808.lymington.irccloud.com) (Ping timeout: 264 seconds)
04:44:13 × NiKaN quits (sid385034@id-385034.helmsley.irccloud.com) (Ping timeout: 252 seconds)
04:44:16 × Me-me quits (~me-me@user/me-me) (Read error: Connection reset by peer)
04:44:26 Wstfgl0 is now known as Me-me
04:44:26 × Fangs quits (sid141280@id-141280.hampstead.irccloud.com) (Ping timeout: 272 seconds)
04:44:27 × sa quits (sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 246 seconds)
04:44:31 × bw quits (sid2730@user/betawaffle) (Ping timeout: 264 seconds)
04:44:37 × jakesyl_____ quits (sid56879@id-56879.hampstead.irccloud.com) (Ping timeout: 248 seconds)
04:45:37 jakesyl_____ joins (sid56879@id-56879.hampstead.irccloud.com)
04:45:38 bw joins (sid2730@user/betawaffle)
04:45:40 Pent joins (sid313808@id-313808.lymington.irccloud.com)
04:45:42 × swamp_ quits (~zmt00@user/zmt00) (Ping timeout: 272 seconds)
04:45:44 sa joins (sid1055@id-1055.tinside.irccloud.com)
04:46:47 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
04:47:17 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 248 seconds)
04:47:33 Fangs joins (sid141280@id-141280.hampstead.irccloud.com)
04:47:37 jackdk joins (sid373013@cssa/jackdk)
04:47:53 Techcable joins (sid534393@user/Techcable)
04:48:05 NiKaN joins (sid385034@id-385034.helmsley.irccloud.com)
04:49:15 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:51:49 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
04:53:54 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
04:55:52 × artu quits (artu@2600:3c01::f03c:92ff:fecc:1d32) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
04:56:19 artu joins (~artu@li90-184.members.linode.com)
04:56:43 × hgolden quits (~hgolden@169.150.203.23) (Quit: Leaving)
04:56:57 hgolden joins (~hgolden@169.150.203.23)
05:02:55 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
05:03:57 euleritian joins (~euleritia@176.6.128.48)
05:05:01 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:06:31 × artu quits (~artu@li90-184.members.linode.com) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
05:08:36 artu joins (~artu@li90-184.members.linode.com)
05:10:24 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
05:12:06 michalz joins (~michalz@185.246.207.193)
05:14:32 × vanishingideal quits (~vanishing@user/vanishingideal) (Quit: Lost terminal)
05:15:54 × gorignak quits (~gorignak@user/gorignak) (Quit: quit)
05:16:12 gorignak joins (~gorignak@user/gorignak)
05:17:19 hgolden_ joins (~hgolden@146.70.172.37)
05:17:20 briandaed joins (~root@185.234.210.211.r.toneticgroup.pl)
05:18:44 × xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 255 seconds)
05:19:48 × hgolden quits (~hgolden@169.150.203.23) (Ping timeout: 246 seconds)
05:20:49 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:21:45 xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
05:25:19 × euleritian quits (~euleritia@176.6.128.48) (Ping timeout: 264 seconds)
05:25:39 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
05:26:00 euleritian joins (~euleritia@dynamic-176-006-135-172.176.6.pool.telefonica.de)
05:27:31 × euleritian quits (~euleritia@dynamic-176-006-135-172.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
05:27:48 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
05:29:02 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:30:05 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
05:38:34 Square joins (~Square@user/square)
05:38:51 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
05:39:10 euleritian joins (~euleritia@dynamic-176-006-135-172.176.6.pool.telefonica.de)
05:39:24 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
05:43:20 hgolden__ joins (~hgolden@23.162.40.110)
05:44:33 billchenchina- joins (~billchenc@103.152.35.21)
05:45:57 × hgolden_ quits (~hgolden@146.70.172.37) (Ping timeout: 248 seconds)
05:49:22 alp joins (~alp@2001:861:e3d6:8f80:34d6:624f:71bd:319b)
05:51:12 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:52:31 <cheater> int-e: ah, the Total Recall operator
05:56:38 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
06:03:47 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
06:06:59 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:08:01 Pixi` joins (~Pixi@user/pixi)
06:11:13 × Pixi quits (~Pixi@user/pixi) (Ping timeout: 245 seconds)
06:11:51 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
06:14:14 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
06:18:59 × euleritian quits (~euleritia@dynamic-176-006-135-172.176.6.pool.telefonica.de) (Ping timeout: 260 seconds)
06:20:06 euleritian joins (~euleritia@dynamic-176-002-146-178.176.2.pool.telefonica.de)
06:22:47 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:22:52 × ft quits (~ft@p4fc2a216.dip0.t-ipconnect.de) (Quit: leaving)
06:25:29 <carbolymer> lol
06:27:28 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
06:30:01 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:31:14 CiaoSen joins (~Jura@2a05:5800:470:a00:ca4b:d6ff:fec1:99da)
06:32:13 × youthlic quits (~Thunderbi@user/youthlic) (Quit: youthlic)
06:34:33 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
06:35:18 youthlic joins (~Thunderbi@user/youthlic)
06:43:44 ubert joins (~Thunderbi@77.119.173.172.wireless.dyn.drei.com)
06:46:32 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:51:44 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
06:54:33 ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207)
07:00:01 × caconym quits (~caconym@user/caconym) (Quit: bye)
07:00:40 caconym joins (~caconym@user/caconym)
07:01:20 × euleritian quits (~euleritia@dynamic-176-002-146-178.176.2.pool.telefonica.de) (Ping timeout: 255 seconds)
07:01:56 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:02:09 euleritian joins (~euleritia@176.2.1.182)
07:07:19 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds)
07:08:00 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:13:56 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
07:23:02 acidjnk_new joins (~acidjnk@p200300d6e72cfb03d1a45ef603fb56e9.dip0.t-ipconnect.de)
07:24:55 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:25:58 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
07:29:33 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
07:29:52 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
07:30:08 × billchenchina- quits (~billchenc@103.152.35.21) (Remote host closed the connection)
07:31:03 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:41:54 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
07:43:03 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
07:45:30 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
07:51:18 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:52:51 chele joins (~chele@user/chele)
07:56:01 × euleritian quits (~euleritia@176.2.1.182) (Ping timeout: 248 seconds)
07:57:14 euleritian joins (~euleritia@dynamic-176-006-139-122.176.6.pool.telefonica.de)
08:09:40 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
08:12:32 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
08:20:47 × euleritian quits (~euleritia@dynamic-176-006-139-122.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
08:21:05 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
08:32:13 takuan joins (~takuan@178-116-218-225.access.telenet.be)
08:38:31 × ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 264 seconds)
08:47:15 <tomsmeding> :t fmap fmap fmap
08:47:16 <lambdabot> (Functor f1, Functor f2) => (a -> b) -> f1 (f2 a) -> f1 (f2 b)
08:47:45 sord937 joins (~sord937@gateway/tor-sasl/sord937)
08:49:54 × son0p quits (~ff@190.69.120.100) (Ping timeout: 252 seconds)
08:51:49 emmanuelux joins (~emmanuelu@user/emmanuelux)
08:59:33 CrunchyFlakes joins (~CrunchyFl@31.19.233.78)
09:24:30 ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207)
09:25:45 × hexagoxel quits (~hexagoxel@2a01:4f8:c0c:e::2) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
09:29:05 <ash3en> does ghc use happy/alex as parser and lexing mechanisms?
09:31:23 <tomsmeding> ash3en: https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Parser/Lexer.x https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Parser.y
09:32:08 <ash3en> tomsmeding: thank you for the links as well as the TH explanations I just saw
09:32:26 <tomsmeding> :)
09:32:49 JamesMowery43 joins (~JamesMowe@ip98-167-207-182.ph.ph.cox.net)
09:34:13 × JamesMowery4 quits (~JamesMowe@ip98-167-207-182.ph.ph.cox.net) (Ping timeout: 248 seconds)
09:36:32 JamesMowery4 joins (~JamesMowe@ip98-167-207-182.ph.ph.cox.net)
09:37:37 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Quit: Lost terminal)
09:38:17 × JamesMowery43 quits (~JamesMowe@ip98-167-207-182.ph.ph.cox.net) (Ping timeout: 252 seconds)
09:38:47 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
09:40:31 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Client Quit)
09:41:59 lxsameer joins (~lxsameer@Serene/lxsameer)
09:44:49 × Square quits (~Square@user/square) (Ping timeout: 248 seconds)
09:47:12 × xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 246 seconds)
09:48:31 × ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 265 seconds)
09:53:16 mari-estel joins (~mari-este@user/mari-estel)
09:54:31 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
09:55:04 alp_ joins (~alp@2001:861:e3d6:8f80:3768:4546:4853:a163)
09:56:45 × alp_ quits (~alp@2001:861:e3d6:8f80:3768:4546:4853:a163) (Remote host closed the connection)
09:57:02 alp_ joins (~alp@2001:861:e3d6:8f80:3d9:9a29:a310:5aa4)
09:57:56 × alp quits (~alp@2001:861:e3d6:8f80:34d6:624f:71bd:319b) (Ping timeout: 272 seconds)
09:59:45 × driib318 quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
10:00:22 driib318 joins (~driib@vmi931078.contaboserver.net)
10:05:40 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
10:06:16 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
10:11:19 hgolden_ joins (~hgolden@169.150.203.10)
10:14:04 × hgolden__ quits (~hgolden@23.162.40.110) (Ping timeout: 260 seconds)
10:15:32 vanishingideal joins (~vanishing@user/vanishingideal)
10:20:22 ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207)
10:28:48 × ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 244 seconds)
10:31:33 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
10:33:57 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
10:40:03 Smiles joins (uid551636@id-551636.lymington.irccloud.com)
10:40:33 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
10:41:21 euleritian joins (~euleritia@dynamic-176-006-139-122.176.6.pool.telefonica.de)
10:46:12 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
10:49:32 alexherbo2 joins (~alexherbo@2a02-8440-3204-088a-fce6-8c1c-cc30-bfac.rev.sfr.net)
10:50:15 rosco joins (~rosco@60.53.7.10)
10:52:46 yin is now known as zzz
10:55:53 × euleritian quits (~euleritia@dynamic-176-006-139-122.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
10:56:16 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
10:59:52 son0p joins (~ff@190.69.120.100)
11:03:26 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 265 seconds)
11:03:58 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
11:12:07 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
11:18:22 ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207)
11:33:15 × ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 246 seconds)
11:55:26 wootehfoot joins (~wootehfoo@user/wootehfoot)
11:57:20 × mari-estel quits (~mari-este@user/mari-estel) ()
12:10:08 × euphores quits (~SASL_euph@user/euphores) (Ping timeout: 265 seconds)
12:10:34 euphores joins (~SASL_euph@user/euphores)
12:13:18 × acidjnk_new quits (~acidjnk@p200300d6e72cfb03d1a45ef603fb56e9.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
12:16:07 xff0x joins (~xff0x@2405:6580:b080:900:c8b8:61af:1cb3:d380)
12:22:05 acidjnk_new joins (~acidjnk@p200300d6e72cfb03d1a45ef603fb56e9.dip0.t-ipconnect.de)
12:22:24 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:24:05 × rosco quits (~rosco@60.53.7.10) (Quit: Lost terminal)
12:26:06 euandreh joins (~Thunderbi@189.6.105.228)
12:29:54 × euandreh quits (~Thunderbi@189.6.105.228) (Remote host closed the connection)
12:30:04 __monty__ joins (~toonn@user/toonn)
12:30:26 euandreh joins (~Thunderbi@189.6.105.228)
12:52:16 sawilagar joins (~sawilagar@user/sawilagar)
12:52:22 identity joins (~identity@user/ZharMeny)
12:54:02 ft joins (~ft@p4fc2a216.dip0.t-ipconnect.de)
13:00:52 × alp_ quits (~alp@2001:861:e3d6:8f80:3d9:9a29:a310:5aa4) (Remote host closed the connection)
13:11:10 × mantraofpie quits (~mantraofp@user/mantraofpie) (Quit: ZNC 1.9.1 - https://znc.in)
13:11:33 mantraofpie joins (~mantraofp@user/mantraofpie)
13:15:06 × euandreh quits (~Thunderbi@189.6.105.228) (Ping timeout: 246 seconds)
13:16:42 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
13:17:48 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:18:59 euandreh joins (~Thunderbi@189.6.105.228)
13:20:23 × CiaoSen quits (~Jura@2a05:5800:470:a00:ca4b:d6ff:fec1:99da) (Ping timeout: 245 seconds)
13:31:30 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
13:31:39 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
13:35:40 eugenrh joins (~eugenrh@user/eugenrh)
13:35:50 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
13:36:02 euleritian joins (~euleritia@dynamic-176-006-136-012.176.6.pool.telefonica.de)
13:36:09 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:51:25 × GdeVolpiano quits (~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.4.2)
13:53:32 GdeVolpiano joins (~GdeVolpia@user/GdeVolpiano)
13:54:24 scaniatrucker joins (~user@78.56.98.5)
14:00:18 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:02:57 Sgeo joins (~Sgeo@user/sgeo)
14:04:44 ljdarj joins (~Thunderbi@user/ljdarj)
14:05:48 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 244 seconds)
14:08:29 × euandreh quits (~Thunderbi@189.6.105.228) (Quit: euandreh)
14:10:32 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:11:54 habib joins (~habib@185.195.232.250)
14:15:38 <habib> hey everyone. i'm working on porting ghc to openbsd/arm64, and i've gotten as far as building the stage 1 compiler (which was a palaver in itself), but i'm getting an error about missing libs pthread and m when trying to build the stage 2 compiler. i've tried so many combinations of various flags to pass various options using hadrian to no success; the last command i ran was as follows:
14:16:07 <habib> hadrian/build --docs=none --flavour=quickest "stage0.*.cabal.configure.opts += --configure-option=LDFLAGS= --configure-option=--target=aarch64-unknown-openbsd" "stage1.*.cabal.configure.opts += --configure-option=LDFLAGS=\"-syslibroot=$SYSROOT -L/usr/lib -L$SYSROOT/usr/lib\" --configure-option=CPPFLAGS=\"-isysroot=$SYSROOT -I/usr/include -I$SYSROOT/usr/include\" --configure-option=--extra-lib-dirs=$SYSROOT/usr/lib\" --configure-option=--extra-lib-dirs=/usr
14:16:07 <habib> /lib\" --configure-option=--extra-include-dirs=$SYSROOT/usr/include\" --configure-option=--extra-include-dirs=/usr/include\" --configure-option=--ghc-option=\"-optl -L$SYSROOT/usr/lib\" --configure-option=--ghc-option=\"-optl -L/usr/lib\" --configure-option=--ghc-option=\"-optl -lpthread\" --configure-option=--ghc-option=\"-optc -I$SYSROOT/usr/include\" --configure-option=--ghc-option=\"-optc -I/usr/include\" --configure-option=-v3" "stage1.*.ghc.c.opts
14:16:07 <habib> += -I$SYSROOT/usr/include -I/usr/include" "stage1.*.ghc.link.opts += -L$SYSROOT/usr/lib -L/usr/lib -lpthread" "stage1.*.cc.c.opts += -L$SYSROOT/usr/lib -L/usr/lib -lpthread" -VVVVVVVVVV --freeze1 stage2:exe:ghc-bin
14:17:56 <habib> i've sent an in depth message to the ports@openbsd mailing list about my progress; i've been working on this since the early hours of monday
14:18:34 weary-traveler joins (~user@user/user363627)
14:19:00 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
14:19:19 <habib> if anyone knows anything about weird interactions between openbsd, ghc, and libpthread and/or libm, i'd really appreciate your help. i couldn't find anything online even close to this situation
14:19:47 ljdarj1 joins (~Thunderbi@user/ljdarj)
14:20:00 <kqr> A persistent entity id, can that be converted to some more basic type like e.g. a bytestring? The use case is that a library needs to hold on to a reference to an entity, but it cannot itself know about the entity type.
14:20:55 <habib> again, this is for cross-compiling ghc to openbsd/arm64, and i've successfully built the stage one compiler that should output aarch64 openbsd binaries so i can use it to build the stage two compiler
14:23:32 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
14:23:33 ljdarj1 is now known as ljdarj
14:29:23 JuanDaugherty joins (~juan@user/JuanDaugherty)
14:29:23 × euleritian quits (~euleritia@dynamic-176-006-136-012.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
14:29:52 euleritian joins (~euleritia@dynamic-176-006-136-012.176.6.pool.telefonica.de)
14:37:45 EvanR_ is now known as EvanR
14:38:20 <EvanR> kqr, good question. Can it?
14:38:41 <EvanR> whether something can be converted to ByteString is a question answered by each types API
14:39:05 <EvanR> there's no universal answer in haskell
14:40:25 × vglfr quits (~vglfr@c-73-250-25-113.hsd1.md.comcast.net) (Ping timeout: 252 seconds)
14:40:33 × mceresa quits (~mceresa@user/mceresa) (Remote host closed the connection)
14:41:50 <kqr> EvanR, I was hoping there was some universal answer for Persistent Entity keys...
14:42:32 <EvanR> oh, persistent is the name of a library
14:42:36 vglfr joins (~vglfr@2607:fb91:856:ab8:ac39:6af7:e195:e6e8)
14:42:38 <EvanR> not an adjective
14:42:53 <EvanR> that answers how to find the answer
14:42:54 Smiles joins (uid551636@id-551636.lymington.irccloud.com)
14:43:29 mceresa joins (~mceresa@user/mceresa)
14:44:08 <EvanR> does this persistent entity id have a type name
14:44:38 <EvanR> the Key type associated with PersistentEntity class
14:47:51 <EvanR> kqr, it says that the `Key foo' type for each entity must be an instance of ToJSON, FromJSON, Show, and Read, so there's that
14:48:28 <EvanR> ToJSON gives you a way to convert the key to ByteString
14:49:10 <EvanR> show converts it to String
14:50:05 <habib> seems like none of my arguments to hadrian for stge
14:50:24 <habib> seems like none of my arguments to hadrian for stage two are getting passed through, unlike stage one
14:50:57 BolzmannPain2 joins (~BolzmannP@2a0a-a546-8e55-1-7325-1e9-989-bd93.ipv6dyn.netcologne.de)
14:51:13 <kqr> EvanR, Ah, thanks. I did find those instances, but I was hoping there was something else I was missing. I'll assume that if you also don't see it, then there is not. Thanks!
14:51:45 × vglfr quits (~vglfr@2607:fb91:856:ab8:ac39:6af7:e195:e6e8) (Ping timeout: 260 seconds)
14:51:55 vglfr joins (~vglfr@2607:fb90:ea15:5496:ad3:f751:9b84:2064)
14:58:18 × tabemann_ quits (~tabemann@2600:1700:7990:24e0:9b92:fe17:1b69:2f6b) (Remote host closed the connection)
14:58:37 tabemann_ joins (~tabemann@2600:1700:7990:24e0:cb63:a13b:e8da:1b84)
14:58:39 <mauke> habib: do you know about #ghc?
14:58:49 <habib> no, i didnt
14:59:05 <Leary> kqr: I'm not really sure what you're doing, but if you just want to hide the type then use an existential? E.g. `data SomeKey where Some :: PersistEntity record => Key record -> SomeKey`
14:59:11 <habib> i just opened my irc client and it has some rooms i saved, thanks for letting me know
14:59:22 <habib> i'll add that to my list
14:59:37 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:00:08 × chele quits (~chele@user/chele) (Remote host closed the connection)
15:01:18 × drdo quits (~drdo@bl9-110-63.dsl.telepac.pt) (Quit: Ping timeout (120 seconds))
15:01:40 drdo joins (~drdo@bl9-110-63.dsl.telepac.pt)
15:01:41 jespada joins (~jespada@222.203-67-87.adsl-dyn.isp.belgacom.be)
15:03:53 mari-estel joins (~mari-este@user/mari-estel)
15:06:55 × euleritian quits (~euleritia@dynamic-176-006-136-012.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
15:07:12 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:14:11 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
15:15:02 × BolzmannPain2 quits (~BolzmannP@2a0a-a546-8e55-1-7325-1e9-989-bd93.ipv6dyn.netcologne.de) (Quit: Client closed)
15:16:05 identity parts (~identity@user/ZharMeny) (ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.91))
15:18:28 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
15:23:20 × mari-estel quits (~mari-este@user/mari-estel) (Remote host closed the connection)
15:30:01 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
15:30:19 <bwe> which test framework allows for simple parametrised tests [(input, expected)]?
15:31:26 mari-estel joins (~mari-este@user/mari-estel)
15:32:39 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
15:33:17 <mauke> all of them, I hope
15:33:36 euleritian joins (~euleritia@176.7.153.100)
15:37:55 × euleritian quits (~euleritia@176.7.153.100) (Read error: Connection reset by peer)
15:38:36 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:40:17 × Katarushisu quits (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
15:41:34 Katarushisu joins (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
15:42:17 <tomsmeding> bwe: a popular option is hspec
15:42:45 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
15:42:48 <tomsmeding> there's also HUnit
15:43:31 euleritian joins (~euleritia@dynamic-176-007-153-100.176.7.pool.telefonica.de)
15:44:00 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
15:44:26 <tomsmeding> if you want to mix multiple test frameworks in one test suite (e.g. unit tests + property tests), 'tasty' is a thing that you can slot various other test frameworks into
15:44:30 <bwe> I mean which supports output that is optimised for parametrised tests? I nowhere can find such in the docs - do I overlook sth?
15:44:50 <tomsmeding> what is a "parametrised test", precisely?
15:47:54 × euleritian quits (~euleritia@dynamic-176-007-153-100.176.7.pool.telefonica.de) (Ping timeout: 252 seconds)
15:48:22 euleritian joins (~euleritia@dynamic-176-006-143-043.176.6.pool.telefonica.de)
15:50:49 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
15:51:35 <tomsmeding> bwe: (I'm asking because the haddocks for 'it' in hspec look to me like that's precisely what you want; if not, then apparently I misunderstand what you mean with "parametrised test")
15:55:20 × Katarushisu quits (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
15:55:39 Square joins (~Square@user/square)
15:55:40 Katarushisu joins (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
15:57:27 rosco joins (~rosco@60.53.7.10)
15:57:48 × habib quits (~habib@185.195.232.250) (Ping timeout: 252 seconds)
15:58:07 <c_wraith> Why do you need special cases for testing multiple inputs against expected outputs? Haskell is a programming language. Create your tests in a loop so that each pair is a separate test case.
16:01:04 × acarrico quits (~acarrico@dhcp-209-99-192-63.greenmountainaccess.net) (Killed (NickServ (GHOST command used by acarrico1)))
16:02:02 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
16:02:10 acarrico1 joins (~acarrico@dhcp-209-99-192-63.greenmountainaccess.net)
16:02:12 <lxsameer> hey folks, I'm trying to understand profunctors in the context of Hasql statements. Is it the case that I can compose some statements together to form a new statement using profunctors?
16:04:32 × mari-estel quits (~mari-este@user/mari-estel) ()
16:05:08 <EvanR> Statement paramsType resultType
16:05:40 <EvanR> as far as profunctor goes, it means you can fmap the resultTypes with normal functions, and you can "preprocess" the paramsType with normal functions
16:06:19 morb joins (~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
16:06:43 <lxsameer> EvanR: ah got it, thanks
16:06:58 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
16:07:46 × mceresa quits (~mceresa@user/mceresa) (Remote host closed the connection)
16:09:47 <EvanR> composing would be like Category or Semigroupoid
16:10:42 mceresa joins (~mceresa@user/mceresa)
16:10:48 × morb quits (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
16:11:02 <lxsameer> cheers
16:12:34 × vglfr quits (~vglfr@2607:fb90:ea15:5496:ad3:f751:9b84:2064) (Read error: Connection reset by peer)
16:14:40 morsinichi joins (~morsinich@61.4.97.157)
16:14:42 × acarrico1 quits (~acarrico@dhcp-209-99-192-63.greenmountainaccess.net) (Quit: Leaving.)
16:17:26 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
16:19:22 <morsinichi> hi, i am new to functional programming and i recently thought about whether there is general concepts about data like data traversal or data structure; i've noticed that in haskell you might define types that are non-terminating (like stream) and the traversal is bound to type's structure.
16:21:10 <bwe> tomsmeding: I mean https://docs.pytest.org/en/latest/how-to/parametrize.html
16:21:11 <EvanR> Functor and Foldable classes are so uniquely defined for data structures that they are auto derivable
16:21:49 <tomsmeding> bwe: you aren't going to be able to have decorators on functions, because haskell simply doesn't have that syntax
16:22:00 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
16:22:28 acarrico1 joins (~acarrico@dhcp-209-99-192-63.greenmountainaccess.net)
16:22:28 vglfr joins (~vglfr@c-73-250-25-113.hsd1.md.comcast.net)
16:22:45 <tomsmeding> but re input/output pairs, what about \l -> describe "function name" $ sequence [it (show input) $ f input == expec | (input, expec) <- l]
16:22:53 <bwe> tomsmeding: I don't mean the decorators :) - I mean the inputs and expected values for the test function.
16:22:58 <tomsmeding> as c_wraith said: haskell is a programming language :p
16:23:28 <tomsmeding> (using hspec here, but any unit testing framework could be adapted in this way surely)
16:24:29 acarrico1 is now known as acarrico
16:25:42 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
16:26:33 <bwe> tomsmeding: ok! and I can change the output for such a group with custom formatters (hspec): https://hspec.github.io/extending-hspec-formatter.html#a-simple-formatter
16:27:00 <bwe> (to summarise a group instead giving each member of that sequence its own line, for example)
16:27:20 <bwe> c_wraith: yeah, it's mainly about how the test suite outputs the results of parametrised tests
16:27:38 <bwe> …I know, nitty-picky
16:32:49 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
16:35:45 × jespada quits (~jespada@222.203-67-87.adsl-dyn.isp.belgacom.be) (Quit: My Mac has gone to sleep. ZZZzzz…)
16:37:09 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
16:38:59 × tomsmeding quits (~tomsmedin@2a01:4f8:c0c:5e5e::2) (Quit: ZNC 1.9.1 - https://znc.in)
16:39:34 tomsmeding joins (~tomsmedin@static.21.109.88.23.clients.your-server.de)
16:45:37 <EvanR> morsinichi, there are types where there are multiple valid Applicative instances
16:45:58 <EvanR> (though only one is allowed at a time in haskell)
16:46:55 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:50:02 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
16:51:35 <geekosaur> the more canonical example of such is `Monoid`
16:52:15 <geekosaur> because you hit it immediately with numeric types, since `(+)` and `(*)` both form valid and important monoids on them
16:53:20 × tomsmeding quits (~tomsmedin@static.21.109.88.23.clients.your-server.de) (Quit: ZNC 1.9.1 - https://znc.in)
16:53:55 tomsmeding joins (~tomsmedin@2a01:4f8:c0c:5e5e::2)
16:54:14 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
16:54:21 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
16:57:45 × yahb2 quits (~yahb2@user/tomsmeding/bot/yahb2) (Remote host closed the connection)
16:58:27 athan joins (~athan@syn-173-042-095-241.biz.spectrum.com)
16:58:40 yahb2 joins (~yahb2@user/tomsmeding/bot/yahb2)
16:58:40 ChanServ sets mode +v yahb2
16:58:44 × athan quits (~athan@syn-173-042-095-241.biz.spectrum.com) (Client Quit)
17:01:05 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:05:25 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
17:07:48 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:10:30 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
17:16:25 ChaiTRex joins (~ChaiTRex@user/chaitrex)
17:17:46 Flerix joins (Flerix@user/Flerix)
17:20:47 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
17:20:48 spew joins (~spew@155.133.15.67)
17:21:16 × rosco quits (~rosco@60.53.7.10) (Quit: Lost terminal)
17:28:20 × Flerix quits (Flerix@user/Flerix) (Quit: Leaving)
17:28:52 Flerix joins (Flerix@user/Flerix)
17:29:42 ljdarj1 joins (~Thunderbi@user/ljdarj)
17:30:50 × alexherbo2 quits (~alexherbo@2a02-8440-3204-088a-fce6-8c1c-cc30-bfac.rev.sfr.net) (Remote host closed the connection)
17:31:09 alexherbo2 joins (~alexherbo@2a02-8440-3204-088a-fce6-8c1c-cc30-bfac.rev.sfr.net)
17:31:29 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
17:31:30 ljdarj1 is now known as ljdarj
17:31:48 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
17:32:01 morj joins (~morj@2a01:e0a:e0e:5dd0:c932:38f5:27f7:ff4b)
17:41:27 × morj quits (~morj@2a01:e0a:e0e:5dd0:c932:38f5:27f7:ff4b) (Quit: Konversation terminated!)
17:41:45 × michalz quits (~michalz@185.246.207.193) (Quit: ZNC 1.9.0 - https://znc.in)
17:42:04 michalz joins (~michalz@185.246.207.203)
17:43:33 halloy7829 joins (~halloy782@2a01:e0a:e0e:5dd0:c932:38f5:27f7:ff4b)
17:44:12 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
17:48:53 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
17:59:02 Digitteknohippie joins (~user@user/digit)
17:59:10 × Digit quits (~user@user/digit) (Ping timeout: 252 seconds)
17:59:34 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
18:00:19 LukeHoersten joins (~LukeHoers@user/lukehoersten)
18:04:37 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
18:04:39 × Digitteknohippie quits (~user@user/digit) (Ping timeout: 252 seconds)
18:10:58 <lxsameer> Can't understand why ghc complains about P.UsageError not matching with (Exception e) while UsageError implements that type class https://dpaste.com/4JXBTBRMC
18:12:11 <tomsmeding> lxsameer: your function pgInit promises to its caller that the _caller_ can choose some exception type 'e', and then pgInit will produce that type
18:12:36 <tomsmeding> so the caller chooses 'e', and you give it a P.UsageError instead, so GHC complains that you're not doing what your type signature promised
18:12:52 <lxsameer> tomsmeding: ahhhhhhhhh got it
18:12:59 <lxsameer> it got it backward
18:13:35 <tomsmeding> any specific reason why you're _returning_ exceptions instead of throwing them?
18:14:02 <tomsmeding> though in general, with this pattern, I think the recommendation is to let pgInit just return a P.UsageError explicitly
18:14:06 <EvanR> async does that
18:14:07 <lxsameer> tomsmeding: the reason is I'm still confused about the correct way of exception handling in haskell
18:14:20 <EvanR> :t throwIO
18:14:21 <lambdabot> Exception e => e -> IO a
18:14:23 <tomsmeding> then the caller can still treat it as an arbitrary type that implements Exception if it so desires
18:14:36 <tomsmeding> (because it is)
18:14:45 <tomsmeding> so you're not making your interface any less flexible
18:14:53 <tomsmeding> (in a sense)
18:15:11 <lxsameer> let me show you more, give me a sec
18:15:14 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
18:15:21 <tomsmeding> because what you really intended to write here is ... -> IO (Maybe (exists e. Exception e => e)), except Haskell doesn't support existential types like that so you have to 'newtype' that
18:15:26 <tomsmeding> er, not even newtype, 'data' that
18:15:33 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
18:15:51 <tomsmeding> giving the particular instantiation of the existential is _more_ information than just returning an existential
18:16:42 <lxsameer> tomsmeding: ok it's getting more confusing. check this out: https://git.sr.ht/~lxsameer/Feynman/tree/master/item/src/Feynman/DB/Core.hs#L41
18:16:46 alp joins (~alp@2001:861:e3d6:8f80:55e8:1aad:506c:464b)
18:17:10 <lxsameer> this is the interface that I want to have so each backend can just populate that record with the common operations
18:17:12 <tomsmeding> lxsameer: that 'init' field contains an existential e
18:17:21 <tomsmeding> written using 'forall' because the syntax is confusing
18:17:50 <tomsmeding> the idea is that 'init' is polymorphic in the usual sense, so its type has a forall; but then that means that if you _use_ the field, you don't know what type 'e' was used when calling 'init', so the field behaves like an existential
18:17:53 <lxsameer> tomsmeding: I use to use SomeException like the rest, i just changed it
18:18:41 <tomsmeding> lxsameer: so you want to be able to say "DB { init = pgInit _ _, insert = _, finalize = _ }"?
18:18:43 <lxsameer> so my main question is, since UsageError is postgres related only, how can I generalize the error here?
18:18:50 <lxsameer> tomsmeding: yeah
18:18:57 <lxsameer> https://git.sr.ht/~lxsameer/Feynman/tree/master/item/src/Feynman/DB/Postgres.hs#L32
18:19:02 × alp quits (~alp@2001:861:e3d6:8f80:55e8:1aad:506c:464b) (Remote host closed the connection)
18:19:05 <tomsmeding> ah
18:19:15 <tomsmeding> ok so then your type of this 'init' field is wrong
18:19:17 <tomsmeding> it has the same problem
18:19:27 <tomsmeding> er, wait
18:20:10 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
18:20:33 <tomsmeding> % import Control.Exception
18:20:33 <yahb2> <no output>
18:20:35 <tomsmeding> % data DB = DB { init :: forall e. Exception e => IO (Maybe e) }
18:20:36 <yahb2> <no output>
18:20:37 <tomsmeding> % :t init
18:20:38 <yahb2> init :: DB -> forall e. Exception e => IO (Maybe e)
18:20:46 <tomsmeding> % :t init
18:20:46 <yahb2> init :: DB -> forall e. Exception e => IO (Maybe e)
18:20:47 <lxsameer> EvanR: that throwIO, still returns IO a, how can I tell by the type that this function may throw?
18:20:52 <tomsmeding> % :t \x -> init x
18:20:52 <yahb2> \x -> init x :: Exception e => DB -> IO (Maybe e)
18:20:54 <tomsmeding> lxsameer: you can't
18:20:59 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:21:42 <tomsmeding> what I said previously about the field type was wrong
18:21:44 <tomsmeding> lol
18:22:08 <tomsmeding> lxsameer: as you can see here, with this DB type, if you project the 'init' field from a DB value, you get back an IO (Maybe e) for an e that _you can choose_
18:22:12 <EvanR> lxsameer, there's no indication. Any IO action when executed might throw an exception
18:22:22 <EvanR> there's no "checked exceptions"
18:22:52 <tomsmeding> lxsameer: I would recommend using SomeException
18:23:11 <EvanR> actually evaluating any value may throw some exception, but not by using throwIO
18:23:20 <tomsmeding> because SomeException literally means "this is a thing that implements Exception, but I forgot what precise type it was"
18:23:27 <lxsameer> tomsmeding: ok, if I use SomeException. the I have to change the https://git.sr.ht/~lxsameer/Feynman/tree/master/item/src/Feynman/DB/Postgres.hs#L52
18:23:43 <lxsameer> tomsmeding: to whenLeft Nothing migrationResult (return . Just . toException) right?
18:23:50 <tomsmeding> % :i SomeException
18:23:50 <yahb2> type SomeException :: * ; data SomeException ; = forall e. ; (Exception e, GHC.Internal.Exception.Type.HasExceptionContext) => ; SomeException e ; -- Defined in ‘GHC.Internal.Exception...
18:24:05 <tomsmeding> % :t SomeException
18:24:05 <yahb2> SomeException ; :: (Exception e, ; GHC.Internal.Exception.Type.HasExceptionContext) => ; e -> SomeException
18:24:13 <EvanR> thanks, clear as mud lol
18:24:14 <lxsameer> EvanR: ah, so it's kinda in the IOs contract that it might throw Exception
18:24:18 <tomsmeding> lxsameer: just write `return . Just . SomeException`
18:24:26 <tomsmeding> yes
18:24:36 <tomsmeding> oh
18:24:40 <EvanR> yeah IO is prone to failing
18:24:40 <tomsmeding> yes that's called toException
18:24:53 <EvanR> non-IO is ideally not failing
18:25:00 <EvanR> but still might for weird reasons
18:25:23 <lxsameer> cool, so the first suggestion is throwIO and then the approach above, right
18:25:24 <EvanR> like they didn't put all the case analysis cases, or they did division by zero, or evaluated an infinite loop
18:25:47 <EvanR> non-IO might also use throw
18:25:49 <EvanR> :t throw
18:25:50 <lambdabot> Exception e => e -> a
18:26:07 <EvanR> awful, terrible
18:26:12 <EvanR> no good
18:26:13 <EvanR> very bad
18:26:13 <tomsmeding> lxsameer: right, throwIO is the usual way to throw exceptions in IO code; but if you want to return them for some reason, the best way would be toException (well found)
18:26:37 <tomsmeding> just be mindful that other functions that _you_ are calling might also throw IO exceptions, unbeknownst to you
18:26:39 × Flerix quits (Flerix@user/Flerix) (Quit: Leaving)
18:26:49 <tomsmeding> so even if you neatly _return_ an exception, you might still accidentally throw one
18:26:56 <tomsmeding> unless you very carefully vet what you call
18:27:08 <EvanR> functions don't throwIO, IO actions throwIO
18:27:10 tomsmeding thinks haskell should have had checked exceptions
18:27:10 <lxsameer> i see, coool. And one last question
18:27:17 <tomsmeding> EvanR: fair point
18:27:20 <tomsmeding> s/functions/IO actions/
18:27:42 × Igloo quits (~ian@81.2.99.210) (Remote host closed the connection)
18:27:55 <lxsameer> would it make sense for that DB type to have a errorHandler method as well ?
18:27:59 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
18:28:18 <lxsameer> so each backend provide a way to deal with it's specific error types?
18:28:31 <tomsmeding> who would be throwing those errors?
18:28:37 <tomsmeding> and who would be handling them
18:28:40 <EvanR> by returning IO actions in I/O code, you're kind of stepping outside a convention of..... just throwing the exception
18:28:49 <EvanR> by returning IO exception*
18:28:59 Igloo joins (~ian@81.2.99.210)
18:29:23 <EvanR> letting someone catch it if they want
18:29:30 <tomsmeding> agree
18:30:05 <mauke> using the SomeException data constructor directly is probably a mistake in general. toException is the way to go
18:30:10 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
18:30:15 × morsinichi quits (~morsinich@61.4.97.157) (Remote host closed the connection)
18:30:16 <lxsameer> tomsmeding: the backend will throw them. and in my head the backend will handle any uncaught error using a error handler and re-throw those that it doesn't know about
18:30:40 <mauke> because SomeException is also an instance of Exception, so if your e is already SomeException, you might accidentally double-wrap it
18:31:02 <tomsmeding> lxsameer: what is a "backend"? Is that one of the functions in that DB record?
18:31:14 <tomsmeding> because then, can't it "just" catch them?
18:31:22 <tomsmeding> mauke: good point!
18:31:37 <lxsameer> tomsmeding: it is any code that implement the methods of the DB type
18:32:02 <tomsmeding> lxsameer: okay; then "will handle any uncaught error using an error handler" is just something that it can do, right?
18:32:10 <tomsmeding> inside the implementation of the DB methods
18:32:14 × scaniatrucker quits (~user@78.56.98.5) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.4))
18:32:19 <tomsmeding> no need to have another field for this in the record, as far as I can see
18:32:34 <tomsmeding> Control.Exception.catch
18:32:40 <lxsameer> tomsmeding: yes
18:32:41 <tomsmeding> (read the haddocks)
18:32:51 <lxsameer> tomsmeding: cheers
18:33:06 <lxsameer> EvanR: tomsmeding mauke thanks for the help folks
18:35:35 <EvanR> where did the haskell exception system come from. Is it "original research" or based on a previous language's exception system
18:35:44 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
18:36:50 <mauke> the original one or the extensible exception hierarchy thing?
18:39:15 <briandaed> "This may be surprising, but the Haskell exception system is modeled off of Java-style Object Oriented inheritance (shocking, I know)." source: https://tech.fpcomplete.com/haskell/tutorial/exceptions/
18:41:03 <EvanR> ok, that's what I figured
18:41:14 <EvanR> the dynamically typed hierarchy
18:41:27 <EvanR> Java is the best dynamically typed language
18:41:58 mauke throws an ArrayStoreException
18:45:16 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
18:46:15 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
18:49:00 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
18:49:33 × mceresa quits (~mceresa@user/mceresa) (Ping timeout: 245 seconds)
18:50:27 <dolio> Is it actually based on that?
18:50:36 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
18:51:19 × EvanR quits (~EvanR@user/evanr) (Ping timeout: 260 seconds)
18:55:32 Digit joins (~user@user/digit)
19:00:05 × caconym quits (~caconym@user/caconym) (Quit: bye)
19:00:44 caconym joins (~caconym@user/caconym)
19:01:38 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
19:07:23 × down200 quits (~down200@shell.lug.mtu.edu) (Quit: ZNC - https://znc.in)
19:08:28 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
19:09:27 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Remote host closed the connection)
19:10:56 × alexherbo2 quits (~alexherbo@2a02-8440-3204-088a-fce6-8c1c-cc30-bfac.rev.sfr.net) (Remote host closed the connection)
19:11:04 × briandaed quits (~root@185.234.210.211.r.toneticgroup.pl) (Remote host closed the connection)
19:11:24 down200 joins (~down200@shell.lug.mtu.edu)
19:12:25 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
19:19:41 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
19:24:39 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
19:28:30 × halloy7829 quits (~halloy782@2a01:e0a:e0e:5dd0:c932:38f5:27f7:ff4b) (Remote host closed the connection)
19:31:18 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
19:34:04 supercode joins (~supercode@user/supercode)
19:34:23 <monochrom> s/Haskell/FPComplete/
19:35:06 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
19:35:26 × ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj)
19:35:46 ljdarj joins (~Thunderbi@user/ljdarj)
19:36:03 <monochrom> OK I misread.
19:37:23 <monochrom> Did Ada have the same kind of exception system that predated Java? Didn't even C++ too and predate Java?
19:38:28 <dolio> SML had exceptions in 1990.
19:38:56 <tomsmeding> technically, the quoted sentence does not state the Haskell's system is based off of Java.
19:39:30 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
19:39:41 <dolio> Yeah. I don't really understand what it is saying, though.
19:39:57 <tomsmeding> It does claim that it is based on "Object Oriented Inheritance", and is similar to what Java does
19:40:00 <monochrom> Yeah I forgot SML.
19:41:11 <tomsmeding> but that isn't really saying very much; haskell not having anything really comparable to OO inheritance, I agree with dolio that it isn't clear what the actual claim is :p
19:41:30 <tomsmeding> perhaps the use of existentials?
19:41:58 <dolio> It sounds like the kind of vague thing you'd say to explain to someone just getting started, not a precise statement about the historical origins.
19:42:15 <monochrom> I think it is referring to inheritance.
19:44:25 <dolio> What is the inheritance in the exception system, though?
19:44:51 <monochrom> "is modelled" is a historical claim. When one just means to reuse familiarity, honest wordings are "similar to", "can be thought of as".
19:44:57 halloy7829 joins (~halloy782@2a01:e0a:e0e:5dd0:c932:38f5:27f7:ff4b)
19:45:20 <monochrom> The same as having subclasses in the type class system.
19:46:02 <monochrom> err sorry no, most actual exception types don't use that.
19:46:51 <monochrom> OK tomsmeding is right, it is only SomeException being existential.
19:47:50 <tomsmeding> that at least has an OO flavour
19:50:01 <monochrom> Theoretically, what I said could happen, and IIRC someone actually did it (make some subclasses of Exception and making some instances), but it's a minority.
19:50:27 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
19:51:02 <monochrom> But if you only use existentials, then it is merely abstract type, so it is only modelled off Modula-3. >:)
19:51:40 <monochrom> even CLU >:)
19:54:53 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
19:55:08 <monochrom> You may be surprised, but Haskell polymorphism is based off of Java Generics! Source: https://www.vex.net/~trebla/humour/lmcify.html?t=Haskell+polymorphism+is+modelled+off+of+Java+Generics.
19:56:15 <tomsmeding> that javascript is more complicated than it could have been :p
19:56:30 <tomsmeding> what is the 'c', "cite"?
19:56:52 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
19:57:07 <dolio> I guess SML was actually doing exceptions in 1983. They're not quite the current state, though.
20:00:27 Enrico63 joins (~Enrico63@cmbg-18-b2-v4wan-168328-cust3951.vm17.cable.virginm.net)
20:02:19 <Enrico63> Hello... I need some help here. I've just run `cabal update`, and that broke Xmobar. When I `cabal build` xmobar, I get this error
20:02:19 <Enrico63> ```
20:02:20 <Enrico63> [39 of 46] Compiling CParser ( dist/build/CParser.hs, dist/build/CParser.o, dist/build/CParser.dyn_o )
20:02:20 <Enrico63> dist/build/CParser.hs:6474:46: error: [GHC-76037]
20:02:21 <Enrico63>     Not in scope: ‘Prelude.reverse’
20:02:21 <Enrico63>     Suggested fixes:
20:02:22 <Enrico63>       • Perhaps use one of these:
20:02:22 <Enrico63>           ‘Prelude.traverse’ (imported from Prelude),
20:02:23 <Enrico63>           ‘Prelude.even’ (imported from Prelude),
20:02:23 <Enrico63>           ‘Prelude.reads’ (imported from Prelude)
20:02:24 <Enrico63>       • Remove ‘reverse’ from the explicit hiding list in the import of
20:02:24 <Enrico63>         ‘Prelude’ (at dist/build/CParser.hs:18:1-34).
20:02:25 <Enrico63>      |
20:02:25 <Enrico63> 6474 | discard_input_until_exp i tk (Prelude.reverse catch_frames_new)
20:02:26 <Enrico63>      | ^^^^^^^^^^^^^^^
20:02:26 <Enrico63> ```
20:02:45 <Enrico63> Any suggestion as to how to go about it?
20:02:55 alp joins (~alp@2001:861:e3d6:8f80:55e8:1aad:506c:464b)
20:05:49 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:10:26 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
20:10:48 <halloy7829> Enrico63: seems they moved something from Prelude to Data.List again. If you can edit the sources, you should add `import Data.List (reverse)` to the top of the file with the problem. If you can't, you can try downgrading ghc+base
20:11:14 × Square quits (~Square@user/square) (Ping timeout: 260 seconds)
20:13:51 Flerix joins (Flerix@user/Flerix)
20:13:58 Everything joins (~Everythin@178-133-77-41.mobile.vf-ua.net)
20:14:06 Flerix parts (Flerix@user/Flerix) ()
20:15:56 <Enrico63> I just tried putting that import in all files using reverse.
20:15:56 <Enrico63> Now I get this weird errors:
20:15:57 <Enrico63> ```
20:15:57 <Enrico63> Error: cabal: Failed to build cairo-0.13.11.0 because it depends on
20:15:58 <Enrico63> cairo-0.13.11.0 which itself failed to build.
20:15:58 <Enrico63> Failed to build glib-0.13.11.0 because it depends on glib-0.13.11.0 which
20:15:59 <Enrico63> itself failed to build.
20:15:59 <Enrico63> Failed to build
20:16:00 <Enrico63> gtk2hs-buildtools-0.13.11.0-d070feafb0e7fdf0b015cb0faa83c29b1284a540e1e4870b5393427367f41843.
20:16:00 <Enrico63> Failed to build pango-0.13.11.0 because it depends on pango-0.13.11.0 which
20:16:01 <Enrico63> itself failed to build.
20:16:01 <Enrico63> Failed to build xmobar-0.49 because it depends on xmobar-0.49 which itself
20:16:02 <Enrico63> failed to build.
20:16:02 <Enrico63> Failed to build xmobar-0.49 because it depends on xmobar-0.49 which itself
20:16:03 <Enrico63> failed to build.
20:16:03 <Enrico63> ```
20:16:39 <monochrom> tomsmeding: c = confirm. "let me confirm it for you". (remember once upon a time people said "let me google it for you"? :) )
20:16:53 × euleritian quits (~euleritia@dynamic-176-006-143-043.176.6.pool.telefonica.de) (Ping timeout: 248 seconds)
20:17:04 <monochrom> (remember someone actually made a lmgify.com too? :) )
20:18:17 <tomsmeding> monochrom: yes I know about lmgtfy :p
20:18:42 ljdarj1 joins (~Thunderbi@user/ljdarj)
20:18:45 JuanDaugherty joins (~juan@user/JuanDaugherty)
20:20:37 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
20:20:37 ljdarj1 is now known as ljdarj
20:21:03 <Enrico63> halloy7829, any idea about that?
20:21:11 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:21:14 <monochrom> reverse was never moved out of Prelude. You have to write a very custom-made "import Prelude(something)" or variations to lose reverse.
20:21:19 Everything parts (~Everythin@178-133-77-41.mobile.vf-ua.net) ()
20:22:24 <tomsmeding> the error says "the eplicit hiding list in the import of `Prelude'"
20:22:57 <tomsmeding> is this a broken build of happy or something? I saw this just yesterday in a completely unrelated project but I haven't debugged it yet
20:23:13 <tomsmeding> happy generates an 'import Prelude hiding (reverse)' and then proceeds to produce 'reverse'
20:23:25 <tomsmeding> though in my case it was just 'reverse', not 'Prelude.reverse'!
20:23:41 <monochrom> The name "CParser" may imply yes :)
20:24:05 <tomsmeding> even better, dist/build/CParser.hs is the same file as I ran into
20:24:09 <tomsmeding> it's a generated file in language-c
20:25:18 <Enrico63> In the meanwhile, I did `cabal clean`, so a lot of stuff is gone... including that `dist` directory mentioned at the beginning of the error
20:25:50 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
20:25:51 <tomsmeding> it will create it again when it start building language-c
20:26:24 <Enrico63> Ok, then maybe it doesn't even get there
20:26:59 <Enrico63> Because trying `cabal build` still fails (with the "depends on itself" errors above), but the `dist` directory is not created
20:27:33 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:27:40 <tomsmeding> Enrico63: if you `cabal freeze`, can you share `cabal.project.freeze` on a pastebin? And also your GHC version?
20:27:42 <tomsmeding> @where paste
20:27:42 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
20:29:04 <Enrico63> Full output of cabal -v build: https://paste.tomsmeding.com/R0CckJMV
20:29:27 <Enrico63> cabal --version
20:29:27 <Enrico63> cabal-install version 3.10.3.0
20:29:28 <Enrico63> compiled using version 3.10.3.0 of the Cabal library
20:29:45 <Enrico63> ghc --version
20:29:46 <Enrico63> The Glorious Glasgow Haskell Compilation System, version 9.8.2
20:31:23 <Enrico63> But I have to tell you: I've never really understood the relationships between versions of GHC, version of Prelude, version of Cabal, versions shown by GHCup, each of these in a given project directory vs in my home vs who knows where. It's hard.
20:31:49 <Enrico63> So please, help me help you help me. What other info can I provide?
20:32:38 <tomsmeding> this is good already, let me see if I can reproduce it
20:34:21 <tomsmeding> yay I can reproduce it
20:34:30 <Enrico63> What?! So it's not me?
20:34:50 <tomsmeding> no something is broken
20:34:58 <Enrico63> I've not messed anything up... yet everything's broken :(
20:34:59 <tomsmeding> and it's probably language-c or c2hs
20:35:15 <tomsmeding> it's breaking my build somewhere too, but I haven't had time to investigate that yet
20:35:30 <tomsmeding> but seeing that you have it too in a completely unrelated context gave me the motivation to go and try a simple reproducer
20:35:54 <Enrico63> At least I don't build xmonad from source, otherwise I'd have to essentially turn off and wait for a fix, using i3 in the meanwhile :D
20:36:20 <tomsmeding> it's not linked to the ghc version, reproduces with 9.4 too
20:36:31 <haskellbridge> <sm> the #xmonad channel might know more
20:36:43 <tomsmeding> this is more than just xmonad
20:36:53 <tomsmeding> building gtk2hs-buildtools fails because of this
20:37:00 <Enrico63> tomsmeding I tried with GHC 9.10.1 too, and fails for the same reason
20:37:16 <tomsmeding> and it's not even gtk2hs-buildtools, the build fails in a generated file by (I think) language-c during the c2hs build
20:37:18 <Enrico63> Probably it's less informative as it's newer
20:37:23 <haskellbridge> <sm> bah, don't we test anything...
20:38:10 <tomsmeding> language-c had a release recently
20:39:27 <Enrico63> they've evacuated recently :P
20:39:34 <Enrico63> just kidding
20:40:46 × lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 272 seconds)
20:41:37 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:44:19 <tomsmeding> I think the culprit is the happy-2.1.1 release
20:44:40 <tomsmeding> release 2 days ago, has "Properly qualify all uses of Prelude functions, fixing #131" in the changelog
20:45:41 × halloy7829 quits (~halloy782@2a01:e0a:e0e:5dd0:c932:38f5:27f7:ff4b) (Ping timeout: 248 seconds)
20:48:44 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
20:49:04 <Enrico63> But was that change properly qualified?
20:49:11 <Enrico63> :D
20:49:38 <Enrico63> Anyway, what's to do now? Reporting on the github page of happy?
20:50:01 <Enrico63> And, regarding me, how do I undo what I did via `cabal update`, for now?
20:50:30 <tomsmeding> preliminary hypothesis: happy now generates code that uses 'Prelude.reverse' instead of just 'reverse', and users of happy have been writing 'import Prelude hiding (reverse)', which worked with previous happy versions but not with the latest one
20:50:51 <haskellbridge> <sm> Enrico63: add a "--constraint 'happy<2.1.1'" to your build command I think
20:50:56 <tomsmeding> undoing this is quite annoying because one would naively want to make cabal use happy < 2.1, but it's a build tool dependency so normal constraints don't aply
20:51:03 <tomsmeding> sm: doesn't work, it's a build tool dep
20:51:11 <haskellbridge> <sm> _sigh_
20:51:25 <haskellbridge> <sm> soo... use an older cabal ?
20:51:27 <tomsmeding> but yes, that's what you'd want to do
20:51:33 <tomsmeding> use an older happy is what you need to do, but how
20:52:03 <haskellbridge> <sm> install older happy in PATH, so happy --version is < 2.1.1 ?
20:52:26 <tomsmeding> won't cabal take the one from its store?
20:53:05 <tomsmeding> it does
20:53:06 <haskellbridge> <sm> for an executable.. I don't know.
20:53:16 <Enrico63> I guess that can be forced in cabal.project
20:54:05 <Enrico63> I mean, if I create a cabal.project with
20:54:06 <Enrico63> ```
20:54:06 <Enrico63> packages: . /path/to/my/local/happy/ness
20:54:07 <Enrico63> ```
20:54:07 <Enrico63> doesn't that tell cabal to prefer the local?
20:54:23 <tomsmeding> that is... something that I can try
20:54:35 <haskellbridge> <sm> I don't use xmonad but I'm sympathetic. This is the kind of constant breakage I left python for :-|
20:54:53 <tomsmeding> this has nothing to do with xmonad though :p
20:54:55 haskellbridge sm feeling disillusioned, I will take my negative vibes elsewhere :)
20:55:09 <Enrico63> haskellbridge, moving to yet another language?
20:55:19 <tomsmeding> (their nick is 'sm')
20:55:22 <haskellbridge> <sm> yes, agreed, it's just particularly troublesome for a person just trying to update their window manager config
20:55:30 <tomsmeding> Enrico63: bingo
20:55:34 <tomsmeding> `cabal get happy-2.0.2`
20:55:44 <tomsmeding> and put happy-2.0.2/ in your packages: list
20:55:54 <haskellbridge> <sm> Enrico63: ah well probably not that just yet
20:56:15 <Enrico63> tomsmeding do I need indeed a local copy?
20:56:20 <tomsmeding> I do think so
20:56:23 <Enrico63> Or does the `cabal get` step give me one?
20:56:27 <tomsmeding> it does
20:56:52 × alp quits (~alp@2001:861:e3d6:8f80:55e8:1aad:506c:464b) (Remote host closed the connection)
20:57:20 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:01:08 × michalz quits (~michalz@185.246.207.203) (Remote host closed the connection)
21:02:18 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
21:02:35 × kimiamania quits (~924ba01d@user/kimiamania) (Quit: PegeLinux)
21:02:58 kimiamania joins (~924ba01d@user/kimiamania)
21:03:00 <Enrico63> tomsmeding I suppose now I only have to wait for the fix for happy to be available, then delete the local version of it, remove that item from the list of cabal.project, and recompile, right?
21:04:01 × synchrom1 quits (~john@139.180.95.1) (Quit: WeeChat 4.0.5)
21:04:30 <Enrico63> (I'm assuming the fix works, but I'm still in the process. Apparently I have to apply this workaround to xmobar (the program), xmobar (my xmobar.hs setup repo), xnobar (a plugin I wrote, check it out :D), and who knows, maybe the config of xmonad broke!
21:05:10 <Enrico63> Ok, it worked!
21:05:22 <Enrico63> tomsmeding, please tell me that my suggestion of using cabal.project contributed 1% to your ability to find the solution, so I go to sleep with an aftertaste of accomplishment
21:05:34 <tomsmeding> Enrico63: it did
21:05:41 <Enrico63> yayyyy
21:05:48 <mauke> Enrico63++
21:05:54 <tomsmeding> and yes, the path is indeed: wait for fix, then undo these changes and build again
21:06:04 <tomsmeding> but I now believe the proper package to fix is gtk2hs-buildtools
21:06:06 <tomsmeding> not happy
21:06:54 <mauke> https://github.com/gtk2hs/gtk2hs/issues/335
21:06:55 <Enrico63> https://github.com/gtk2hs/gtk2hs/issues/335
21:06:59 <tomsmeding> lol
21:07:05 <mauke> jinx
21:07:08 <Enrico63> Wow, we are twins, mauke
21:07:17 <Enrico63> (unlucky you, ahahah)
21:07:38 <tomsmeding> yep language-c had the same issue but that's been fixed in language-c-0.9.4
21:07:47 × Enrico63 quits (~Enrico63@cmbg-18-b2-v4wan-168328-cust3951.vm17.cable.virginm.net) (Quit: Client closed)
21:07:49 <tomsmeding> with this commit https://github.com/visq/language-c/commit/32763a1a57e427eb3ab51689e8818db333753301
21:09:18 Enrico63 joins (~Enrico63@cmbg-18-b2-v4wan-168328-cust3951.vm17.cable.virginm.net)
21:09:57 <Enrico63> tomsmeding, but given you say that the problem is not happy but gtk..., does that mean that I could have `cabal get`ed and added to cabal.project that instead?
21:10:20 <tomsmeding> Enrico63: gtk2hs is not compatible with happy-2.1 but does not constrain happy on <2.1
21:10:31 <tomsmeding> so this can be worked around either by downgrading happy or by fixing gtk2hs
21:12:12 <Enrico63> I see :)
21:12:40 <monochrom> Wouldn't it be sufficient to just manually perform a `cabal install --constraint='happy < 2.1' happy` as a preparation step?
21:12:43 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:12:51 <Enrico63> Thank you very much tomsmeding and mauke
21:13:09 <Enrico63> And everybody who participated, really
21:13:12 <tomsmeding> monochrom: no, cabal takes happy from its store, not from $PATH
21:13:18 <Enrico63> Now I can go to bed :)
21:13:22 <tomsmeding> that was already suggested by sm :)
21:13:47 <tomsmeding> Enrico63: there is a "neater" suggestion over from #hackage: add 'constraints: any.happy == 2.0.2' to cabal.project
21:13:58 <tomsmeding> that should work without the local vendored-in happy
21:14:05 <tomsmeding> the `any.` is essential
21:14:12 euleritian joins (~euleritia@176.1.224.47)
21:15:26 <Enrico63> Thanks!
21:17:03 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
21:18:43 × vglfr quits (~vglfr@c-73-250-25-113.hsd1.md.comcast.net) (Ping timeout: 245 seconds)
21:18:55 × euleritian quits (~euleritia@176.1.224.47) (Read error: Connection reset by peer)
21:19:12 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
21:19:24 vglfr joins (~vglfr@2607:fb91:876:ccd6:ac39:c391:b0e4:8435)
21:19:51 × Enrico63 quits (~Enrico63@cmbg-18-b2-v4wan-168328-cust3951.vm17.cable.virginm.net) (Quit: Client closed)
21:20:04 Everything joins (~Everythin@178-133-29-214.mobile.vf-ua.net)
21:23:33 × vglfr quits (~vglfr@2607:fb91:876:ccd6:ac39:c391:b0e4:8435) (Ping timeout: 248 seconds)
21:23:49 Zer000 joins (~02@64.137.132.10)
21:24:25 vglfr joins (~vglfr@2607:fb90:ea85:c41e:ad3:f757:9a54:48e7)
21:27:22 jcarpenter2 joins (~lol@2603:3016:1e01:b9c0:d0c3:d4d0:7258:5a99)
21:29:12 mceresa joins (~mceresa@user/mceresa)
21:30:50 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:32:26 Enrico63 joins (~Enrico63@cmbg-18-b2-v4wan-168328-cust3951.vm17.cable.virginm.net)
21:33:44 × Enrico63 quits (~Enrico63@cmbg-18-b2-v4wan-168328-cust3951.vm17.cable.virginm.net) (Client Quit)
21:35:08 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
21:44:47 <Zer000> Hey I want to catch an exception that happens when I try to select a negative index from a list (passing a negative argument to (!!)). My problem is that tryAny is not catching it and I'm guessing this is because of lazy evaluation. My code is used in an IO context but the line it crashes on is coming from a pure function. I can't use deepseq on that function because one of the results does not have an NFData instance, and I have tried to put bang patterns
21:44:47 <Zer000> everywhere and using a strict version of the map function and I still can't catch the exception!
21:46:12 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:46:18 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:46:55 <tomsmeding> Zer000: are you using Control.Exception.evaluaet?
21:46:57 <tomsmeding> *evaluate
21:47:22 <tomsmeding> it evaluates only to WHNF, but it ensures that it really does so, in the IO monad, so that any exceptions thrown in evaluation to WHNF are actually thrown there
21:48:43 <Zer000> tomsmeding, yes, I'm doing tryAny $ evaluate $ myFunc args
21:49:24 <tomsmeding> Zer000: what package does tryAny come from?
21:49:29 <Zer000> safe-exceptions
21:50:39 <tomsmeding> Zer000: the haddocks for safe-exceptions's tryAny point to its 'try', which says that it will not catch asynchronous exceptions
21:50:46 <tomsmeding> have you tried using the standard functions from Control.Exception instead?
21:51:04 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
21:51:24 <Zer000> I should try that. What's the equivalent of tryAny?
21:51:50 <tomsmeding> try @SomeException
21:55:45 <Zer000> @tomsmeding, I did try to make an example to see if tryAny and evaluate would work, and this works perfectly: https://paste.tomsmeding.com/fFfjcVrg
21:55:45 <lambdabot> Unknown command, try @list
21:55:52 <Zer000> tomsmeding, I did try to make an example to see if tryAny and evaluate would work, and this works perfectly: https://paste.tomsmeding.com/fFfjcVrg
21:56:16 Zer000 sorry I thought I didn't post my message
21:59:13 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
22:00:33 <Zer000> Yeah it still crashes instead of catching my exception. I really don't know what I'm doing when it comes to this laziness stuff but I'll try to think where there could be a thunk
22:01:31 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
22:01:34 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:04:35 <geekosaur> it's a list, there's a thunk at every index 🙂
22:04:58 × vglfr quits (~vglfr@2607:fb90:ea85:c41e:ad3:f757:9a54:48e7) (Read error: Connection reset by peer)
22:05:24 <tomsmeding> Zer000: evaluating e.g. a pair to WHNF does not evaluate the components of the pair to WHNF
22:05:36 <tomsmeding> make sure you really evaluate all you need to evaluate
22:05:41 <Zer000> So I gotta go deeper?
22:05:44 <Zer000> OK
22:05:57 <geekosaur> Control.Deepseq.rnf in extreme cases
22:06:10 <geekosaur> (that's the right module I think?)
22:06:17 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
22:06:41 <geekosaur> just make sure it doesn't have any bottoms or cycles
22:06:47 <mauke> did you look at the code?
22:06:52 <mauke> the list is [1, 2, 3]
22:07:28 <Zer000> mauke, no but that example code DOES work, my actual code does not
22:07:34 <Zer000> and the list is built using other pure functions
22:08:11 <Zer000> I only posted that snippet to say that tryAny from safe-exceptions can catch that negative index exception
22:08:15 <mauke> oh, sorry. I confused myself
22:08:33 <mauke> btw, there is displayException
22:09:25 <Zer000> how do you even use rnf geekosaur? It results in () always
22:09:29 <mauke> which is mostly unrelated, but can be used instead of show
22:09:40 <Zer000> oh cool
22:09:59 <mauke> evaluate (rnf x)
22:11:14 <monochrom> it results in exception if there is an exception.
22:11:29 <geekosaur> or ``rnf x `seq` y``
22:13:25 <mauke> > [1, 2, 3, error "an exception has occurred", 5] `seq` "all good"
22:13:26 <lambdabot> "all good"
22:13:31 <mauke> > rnf [1, 2, 3, error "an exception has occurred", 5] `seq` "all good"
22:13:32 <lambdabot> error: Variable not in scope: rnf :: [a1] -> a0
22:13:36 <mauke> :-(
22:13:45 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds)
22:13:56 <mauke> @let import Control.DeepSeq
22:13:57 <lambdabot> Defined.
22:13:59 <mauke> > rnf [1, 2, 3, error "an exception has occurred", 5] `seq` "all good"
22:14:00 <lambdabot> "*Exception: an exception has occurred
22:15:09 <Zer000> I see, so you just use it on a separate line in an IO context to see if everything is ok
22:15:24 <Zer000> thanks!
22:17:58 <geekosaur> it should work even if x and y are the same thing (in my example)
22:18:02 vglfr joins (~vglfr@c-73-250-25-113.hsd1.md.comcast.net)
22:18:15 <geekosaur> whereas ``x `seq` x`` is a non-sequitur
22:18:43 <geekosaur> ("force `x` to WHNF when `x` is forced to WHNF")
22:19:07 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:19:34 <monochrom> I'll finish when I finish. :)
22:22:10 <Zer000> I had a function that was defined in point-free-style and when I made everything there explicit (and extra bangs just in case) it seemed to work.
22:26:00 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
22:33:09 × supercode quits (~supercode@user/supercode) (Quit: Client closed)
22:34:07 pavonia joins (~user@user/siracusa)
22:35:57 × gorignak quits (~gorignak@user/gorignak) (Quit: quit)
22:37:08 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:43:40 × sawilagar quits (~sawilagar@user/sawilagar) (Remote host closed the connection)
22:44:14 sawilagar joins (~sawilagar@user/sawilagar)
22:45:14 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
22:45:42 × Ranhir quits (~Ranhir@157.97.53.139) (Read error: Connection reset by peer)
22:48:16 × Everything quits (~Everythin@178-133-29-214.mobile.vf-ua.net) (Quit: leaving)
22:48:48 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
22:55:17 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
22:55:24 × raym quits (~ray@user/raym) (Ping timeout: 246 seconds)
22:56:13 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:00:39 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
23:02:05 Ranhir joins (~Ranhir@157.97.53.139)
23:02:28 raym joins (~ray@user/raym)
23:11:35 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:18:10 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:18:17 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
23:19:15 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
23:29:37 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:30:30 Shires joins (~Shires@user/shires)
23:33:55 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
23:42:09 ljdarj1 joins (~Thunderbi@user/ljdarj)
23:42:09 × acidjnk_new quits (~acidjnk@p200300d6e72cfb03d1a45ef603fb56e9.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
23:44:59 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
23:44:59 ljdarj1 is now known as ljdarj
23:45:00 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:49:20 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
23:53:21 Shires parts (~Shires@user/shires) ()

All times are in UTC on 2024-10-25.