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.