2025-10-20 00:02:25 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 00:10:30 +0200 | jreicher | (~user@user/jreicher) (Read error: Connection reset by peer) |
2025-10-20 00:11:08 +0200 | bggd | (~bgg@2a01:e0a:819:1510:3eb5:dbc5:9370:da5d) |
2025-10-20 00:11:56 +0200 | inline | (~inline@2a02:8071:57a1:1260:5a1:e9a9:aa3a:fee6) Inline |
2025-10-20 00:12:49 +0200 | peterbecich | (~Thunderbi@172.222.148.214) (Quit: peterbecich) |
2025-10-20 00:13:17 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 00:13:22 +0200 | peterbecich | (~Thunderbi@172.222.148.214) peterbecich |
2025-10-20 00:18:07 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
2025-10-20 00:18:37 +0200 | karenw | (~karenw@user/karenw) (Ping timeout: 264 seconds) |
2025-10-20 00:19:32 +0200 | Guest57 | (~Guest57@95.214.217.193) |
2025-10-20 00:22:52 +0200 | Guest57 | (~Guest57@95.214.217.193) (Quit: Client closed) |
2025-10-20 00:23:25 +0200 | kk-strat | (~halloy995@ip72-208-127-103.ph.ph.cox.net) (Quit: kk-strat) |
2025-10-20 00:23:29 +0200 | inline_ | (~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline |
2025-10-20 00:26:23 +0200 | inline__ | (~inline@2a02:8071:57a1:1260:1ce3:efcb:ed4f:9e96) Inline |
2025-10-20 00:26:24 +0200 | inline | (~inline@2a02:8071:57a1:1260:5a1:e9a9:aa3a:fee6) (Ping timeout: 244 seconds) |
2025-10-20 00:26:35 +0200 | inline__ | Inline |
2025-10-20 00:27:15 +0200 | inline__ | (~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline |
2025-10-20 00:29:02 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 00:29:43 +0200 | inline_ | (~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
2025-10-20 00:30:42 +0200 | inline_ | (~inline@2a02:8071:57a1:1260:7925:4f19:c6de:9865) Inline |
2025-10-20 00:31:03 +0200 | Inline | (~inline@2a02:8071:57a1:1260:1ce3:efcb:ed4f:9e96) (Ping timeout: 244 seconds) |
2025-10-20 00:32:25 +0200 | inline__ | (~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
2025-10-20 00:33:30 +0200 | inline__ | (~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline |
2025-10-20 00:34:02 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-10-20 00:35:39 +0200 | tromp | (~textual@2001:1c00:3487:1b00:5da6:eb72:7bdc:37c8) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-10-20 00:37:19 +0200 | inline_ | (~inline@2a02:8071:57a1:1260:7925:4f19:c6de:9865) (Ping timeout: 246 seconds) |
2025-10-20 00:41:36 +0200 | dolio | (~dolio@130.44.140.168) (Quit: ZNC 1.9.1 - https://znc.in) |
2025-10-20 00:43:28 +0200 | dolio | (~dolio@130.44.140.168) dolio |
2025-10-20 00:44:50 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 00:45:20 +0200 | inline__ | inline |
2025-10-20 00:47:46 +0200 | dolio | (~dolio@130.44.140.168) (Client Quit) |
2025-10-20 00:48:24 +0200 | jmcantrell | (~weechat@user/jmcantrell) jmcantrell |
2025-10-20 00:49:01 +0200 | dolio | (~dolio@130.44.140.168) dolio |
2025-10-20 00:49:49 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 00:55:24 +0200 | hololeap | (~quassel@user/hololeap) (Quit: Bye) |
2025-10-20 00:56:07 +0200 | hololeap | (~quassel@user/hololeap) hololeap |
2025-10-20 01:00:13 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 01:02:23 +0200 | Ram-Z | (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) Ram-Z |
2025-10-20 01:04:58 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
2025-10-20 01:05:14 +0200 | Ram-Z_ | (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 260 seconds) |
2025-10-20 01:07:38 +0200 | mreh | (~matthew@host86-146-25-125.range86-146.btcentralplus.com) (Ping timeout: 248 seconds) |
2025-10-20 01:08:59 +0200 | qqe | (~qqq@185.54.23.200) (Quit: Lost terminal) |
2025-10-20 01:15:59 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 01:16:23 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) (Remote host closed the connection) |
2025-10-20 01:16:39 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
2025-10-20 01:21:01 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 01:24:36 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
2025-10-20 01:31:48 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 01:33:37 +0200 | peterbecich | (~Thunderbi@172.222.148.214) (Ping timeout: 264 seconds) |
2025-10-20 01:38:43 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-10-20 01:49:50 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 01:54:45 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-10-20 02:03:54 +0200 | craunts795335385 | (~craunts@136.158.7.194) (Read error: Connection reset by peer) |
2025-10-20 02:04:10 +0200 | craunts795335385 | (~craunts@136.158.7.194) |
2025-10-20 02:05:36 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 02:10:47 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-10-20 02:13:51 +0200 | machinedgod | (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 256 seconds) |
2025-10-20 02:21:24 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 02:24:05 +0200 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
2025-10-20 02:26:02 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-10-20 02:29:53 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
2025-10-20 02:32:09 +0200 | weary-traveler | (~user@user/user363627) user363627 |
2025-10-20 02:37:11 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 02:41:55 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
2025-10-20 02:42:17 +0200 | otto_s | (~user@p4ff274f9.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2025-10-20 02:44:18 +0200 | otto_s | (~user@p5b044609.dip0.t-ipconnect.de) |
2025-10-20 02:48:30 +0200 | werneta | (~werneta@71.83.160.242) werneta |
2025-10-20 02:50:28 +0200 | qqe | (~qqq@185.54.23.200) |
2025-10-20 02:50:56 +0200 | trickard | (~trickard@cpe-57-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-10-20 02:51:08 +0200 | trickard_ | (~trickard@cpe-57-98-47-163.wireline.com.au) |
2025-10-20 02:51:22 +0200 | simplystuart | (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Ping timeout: 246 seconds) |
2025-10-20 02:52:57 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 02:53:50 +0200 | gustrb | (~gustrb@191.243.134.87) |
2025-10-20 02:55:15 +0200 | flipflops | (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 252 seconds) |
2025-10-20 02:56:24 +0200 | flipflops | (~cmo@2604:3d09:207f:8000::d1dc) |
2025-10-20 02:56:25 +0200 | trickard_ | (~trickard@cpe-57-98-47-163.wireline.com.au) (Ping timeout: 264 seconds) |
2025-10-20 02:59:06 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-10-20 03:01:23 +0200 | trickard_ | (~trickard@cpe-57-98-47-163.wireline.com.au) |
2025-10-20 03:03:52 +0200 | flipflops | (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 260 seconds) |
2025-10-20 03:09:59 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 03:10:50 +0200 | xff0x | (~xff0x@2405:6580:b080:900:d8fa:98a4:1ba0:2054) (Ping timeout: 248 seconds) |
2025-10-20 03:15:31 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
2025-10-20 03:23:25 +0200 | inline | (~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
2025-10-20 03:27:22 +0200 | acidjnk | (~acidjnk@p200300d6e71719659d28c4899d9c5d95.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2025-10-20 03:27:32 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 03:32:25 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 03:41:54 +0200 | trickard_ | trickard |
2025-10-20 03:43:19 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 03:48:37 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 03:49:58 +0200 | ttybitnik | (~ttybitnik@user/wolper) (Quit: Fading out...) |
2025-10-20 03:56:45 +0200 | weary-traveler | (~user@user/user363627) (Quit: Konversation terminated!) |
2025-10-20 03:57:01 +0200 | weary-traveler | (~user@user/user363627) user363627 |
2025-10-20 03:59:07 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 04:03:57 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-10-20 04:04:48 +0200 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2025-10-20 04:08:09 +0200 | werneta | (~werneta@71.83.160.242) (Quit: Lost terminal) |
2025-10-20 04:10:32 +0200 | ephilalethes | (~noumenon@113.51-175-156.customer.lyse.net) noumenon |
2025-10-20 04:14:54 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 04:18:38 +0200 | jxv | (~simulacru@2600:1700:5040:a200:846b:56ef:4da8:a13) |
2025-10-20 04:21:40 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
2025-10-20 04:23:05 +0200 | trickard | (~trickard@cpe-57-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-10-20 04:23:18 +0200 | trickard_ | (~trickard@cpe-57-98-47-163.wireline.com.au) |
2025-10-20 04:26:37 +0200 | jxv | (~simulacru@2600:1700:5040:a200:846b:56ef:4da8:a13) (Quit: Textual IRC Client: www.textualapp.com) |
2025-10-20 04:29:40 +0200 | peterbecich | (~Thunderbi@172.222.148.214) peterbecich |
2025-10-20 04:31:22 +0200 | td_ | (~td@i5387091E.versanet.de) (Ping timeout: 248 seconds) |
2025-10-20 04:33:00 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 04:33:23 +0200 | td_ | (~td@i53870936.versanet.de) td_ |
2025-10-20 04:33:35 +0200 | trickard_ | trickard |
2025-10-20 04:36:01 +0200 | anpad | (~pandeyan@user/anpad) (Ping timeout: 264 seconds) |
2025-10-20 04:36:37 +0200 | peterbecich | (~Thunderbi@172.222.148.214) (Ping timeout: 264 seconds) |
2025-10-20 04:38:25 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 04:48:47 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 04:51:41 +0200 | khumba | (~khumba@user/khumba) khumba |
2025-10-20 04:53:31 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-10-20 04:54:47 +0200 | annamalai | (~annamalai@157.49.239.48) (Ping timeout: 256 seconds) |
2025-10-20 05:04:37 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 05:07:54 +0200 | anpad | (~pandeyan@user/anpad) anpad |
2025-10-20 05:09:08 +0200 | khumba | (~khumba@user/khumba) () |
2025-10-20 05:09:14 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-10-20 05:10:59 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 05:15:38 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-10-20 05:16:13 +0200 | anpad | (~pandeyan@user/anpad) (Ping timeout: 264 seconds) |
2025-10-20 05:17:33 +0200 | qqe | (~qqq@185.54.23.200) (Quit: Lost terminal) |
2025-10-20 05:24:34 +0200 | khumba | (~khumba@user/khumba) khumba |
2025-10-20 05:25:43 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2025-10-20 05:26:12 +0200 | poscat0x04 | (~poscat@user/poscat) poscat |
2025-10-20 05:26:47 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 05:27:00 +0200 | img | (~img@user/img) img |
2025-10-20 05:27:09 +0200 | werneta | (~werneta@71.83.160.242) werneta |
2025-10-20 05:27:54 +0200 | poscat | (~poscat@user/poscat) (Ping timeout: 248 seconds) |
2025-10-20 05:31:19 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
2025-10-20 05:40:05 +0200 | peterbecich | (~Thunderbi@172.222.148.214) peterbecich |
2025-10-20 05:42:35 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 05:47:24 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-10-20 05:48:50 +0200 | anpad | (~pandeyan@user/anpad) anpad |
2025-10-20 05:52:20 +0200 | aforemny | (~aforemny@2001:9e8:6cc7:6800:bfb8:1818:7f09:9156) aforemny |
2025-10-20 05:52:40 +0200 | aforemny_ | (~aforemny@2001:9e8:6cea:8700:cf12:fc7b:8ca1:78b9) (Ping timeout: 246 seconds) |
2025-10-20 05:58:20 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 05:59:13 +0200 | tomboy64 | (~tomboy64@user/tomboy64) (Read error: Connection reset by peer) |
2025-10-20 05:59:28 +0200 | tomboy64 | (~tomboy64@user/tomboy64) tomboy64 |
2025-10-20 06:05:14 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-10-20 06:06:56 +0200 | werneta | (~werneta@71.83.160.242) (Quit: Lost terminal) |
2025-10-20 06:09:43 +0200 | wickedjargon | (~user@120.29.79.98) wickedjargon |
2025-10-20 06:12:00 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 06:16:57 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-10-20 06:22:35 +0200 | synchromesh | (~john@2406:5a00:2412:2c00:3da8:1103:8261:15b5) (Read error: Connection reset by peer) |
2025-10-20 06:23:20 +0200 | synchromesh | (~john@2406:5a00:2412:2c00:75ff:6dec:5332:48f7) synchromesh |
2025-10-20 06:27:48 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 06:28:53 +0200 | annamalai | (~annamalai@2409:4072:601a:bdd2::2602:e0ac) annamalai |
2025-10-20 06:32:42 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-10-20 06:43:14 +0200 | michalz | (~michalz@185.246.207.221) |
2025-10-20 06:43:35 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 06:48:26 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-10-20 06:59:23 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 07:01:05 +0200 | rvalue- | (~rvalue@about/hackers/rvalue) rvalue |
2025-10-20 07:01:07 +0200 | jreicher | (~user@user/jreicher) jreicher |
2025-10-20 07:01:39 +0200 | rvalue | (~rvalue@about/hackers/rvalue) (Ping timeout: 244 seconds) |
2025-10-20 07:04:33 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-10-20 07:05:21 +0200 | halloy9957 | (~halloy995@ip72-208-127-103.ph.ph.cox.net) |
2025-10-20 07:10:56 +0200 | rvalue | (~rvalue@about/hackers/rvalue) rvalue |
2025-10-20 07:11:55 +0200 | rvalue- | (~rvalue@about/hackers/rvalue) (Ping timeout: 256 seconds) |
2025-10-20 07:13:01 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 07:13:52 +0200 | infinity0 | (~infinity0@pwned.gg) (Ping timeout: 246 seconds) |
2025-10-20 07:14:01 +0200 | Googulator | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 07:14:17 +0200 | Googulator | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 07:15:51 +0200 | Googulator31 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 07:15:55 +0200 | Googulator | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Client Quit) |
2025-10-20 07:15:58 +0200 | takuan | (~takuan@d8D86B9E9.access.telenet.be) |
2025-10-20 07:17:46 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-10-20 07:19:48 +0200 | EvanR | (~EvanR@user/evanr) (Ping timeout: 252 seconds) |
2025-10-20 07:21:04 +0200 | khumba | (~khumba@user/khumba) () |
2025-10-20 07:27:22 +0200 | gustrb | (~gustrb@191.243.134.87) (Ping timeout: 248 seconds) |
2025-10-20 07:28:05 +0200 | notzmv | (~umar@user/notzmv) notzmv |
2025-10-20 07:28:48 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 07:34:36 +0200 | infinity0 | (~infinity0@pwned.gg) infinity0 |
2025-10-20 07:36:01 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 07:42:24 +0200 | jreicher | (~user@user/jreicher) (Read error: Connection reset by peer) |
2025-10-20 07:45:25 +0200 | jreicher | (~user@user/jreicher) jreicher |
2025-10-20 07:45:43 +0200 | Googulator31 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 07:45:49 +0200 | Googulator22 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 07:46:18 +0200 | ephilalethes | (~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving) |
2025-10-20 07:46:50 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 07:52:13 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 08:02:02 +0200 | Square | (~Square4@user/square) Square |
2025-10-20 08:02:38 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 08:05:27 +0200 | Square2 | (~Square@user/square) (Ping timeout: 260 seconds) |
2025-10-20 08:05:37 +0200 | Googulator96 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 08:05:40 +0200 | Googulator22 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 08:07:49 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 08:14:02 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 08:18:55 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
2025-10-20 08:22:16 +0200 | craunts795335385 | (~craunts@136.158.7.194) (Quit: The Lounge - https://thelounge.chat) |
2025-10-20 08:29:50 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 08:31:36 +0200 | halloy9957 | (~halloy995@ip72-208-127-103.ph.ph.cox.net) (Quit: halloy9957) |
2025-10-20 08:35:12 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-10-20 08:42:24 +0200 | Googulator96 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 08:42:42 +0200 | Googulator96 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 08:44:13 +0200 | JimL | (~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2025-10-20 08:45:37 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 08:47:21 +0200 | JimL | (~quassel@89.162.16.26) JimL |
2025-10-20 08:48:37 +0200 | jmcantrell | (~weechat@user/jmcantrell) (Ping timeout: 264 seconds) |
2025-10-20 08:51:01 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 08:53:00 +0200 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
2025-10-20 08:56:29 +0200 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2025-10-20 09:00:03 +0200 | caconym7478798 | (~caconym@user/caconym) (Quit: bye) |
2025-10-20 09:00:47 +0200 | caconym7478798 | (~caconym@user/caconym) caconym |
2025-10-20 09:01:24 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 09:06:37 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 09:13:50 +0200 | Guest57 | (~Guest57@95.214.217.190) |
2025-10-20 09:13:52 +0200 | gustrb | (~gustrb@191.243.134.87) |
2025-10-20 09:14:45 +0200 | peterbecich | (~Thunderbi@172.222.148.214) (Ping timeout: 252 seconds) |
2025-10-20 09:15:03 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 09:15:13 +0200 | tromp | (~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5) |
2025-10-20 09:18:59 +0200 | kukimik | (~kukimik@nat1.mga.com.pl) |
2025-10-20 09:20:24 +0200 | kukimik | (~kukimik@nat1.mga.com.pl) (Remote host closed the connection) |
2025-10-20 09:21:37 +0200 | chele | (~chele@user/chele) chele |
2025-10-20 09:21:46 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-10-20 09:28:53 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2025-10-20 09:33:08 +0200 | EvanR | (~EvanR@user/evanr) EvanR |
2025-10-20 09:34:46 +0200 | <dminuoso> | Are liftXXX primitives perhaps misnamed? It just occured to me that `liftIO :: IO a -> SomeT IO a` doesnt really pull anything out, it rather stuffs something in! |
2025-10-20 09:34:49 +0200 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
2025-10-20 09:34:53 +0200 | <dminuoso> | stuffIO seems more appropriate. |
2025-10-20 09:38:40 +0200 | <davean> | It lifts an IO |
2025-10-20 09:38:45 +0200 | <davean> | Its what it lifts |
2025-10-20 09:39:37 +0200 | <dminuoso> | To me lifting suggests rather pulling something out. |
2025-10-20 09:41:42 +0200 | <davean> | SomeT is build on IO, and it is a higher universe of semantics |
2025-10-20 09:41:52 +0200 | <davean> | You are lifting it into the greater semantic world |
2025-10-20 09:42:14 +0200 | <davean> | SomeT contains IO. |
2025-10-20 09:42:43 +0200 | tabemann | (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection) |
2025-10-20 09:42:47 +0200 | <dminuoso> | Well you're embedding a plain IO action into something richer, you're stuffing it into a richer description of a computation. |
2025-10-20 09:43:08 +0200 | <davean> | No you aren't embedding it, it is *already embeded* SomeT has all of IO |
2025-10-20 09:43:12 +0200 | tabemann | (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
2025-10-20 09:43:22 +0200 | <davean> | IO is a subsection of SomeT IO |
2025-10-20 09:43:33 +0200 | <davean> | It specificly isn't embedding |
2025-10-20 09:44:05 +0200 | emmanuelux | (~emmanuelu@user/emmanuelux) (Remote host closed the connection) |
2025-10-20 09:44:37 +0200 | <davean> | you can lower SomeT IO into just IO |
2025-10-20 09:46:07 +0200 | srazkvt | (~sarah@user/srazkvt) srazkvt |
2025-10-20 09:46:14 +0200 | <davean> | IO is the foundation of SomeT |
2025-10-20 09:46:23 +0200 | <davean> | SomeT is what is built on top |
2025-10-20 09:49:13 +0200 | Guest31 | (~Guest57@95.214.217.190) |
2025-10-20 09:49:36 +0200 | Guest57 | (~Guest57@95.214.217.190) (Quit: Client closed) |
2025-10-20 09:49:44 +0200 | Guest31 | (~Guest57@95.214.217.190) (Client Quit) |
2025-10-20 09:50:34 +0200 | <dminuoso> | davean: But at the same time, when we talk about transformers, we say we layer monads *ontop* of a base. In `SomeT IO` you generally call IO a base monad. |
2025-10-20 09:51:05 +0200 | <davean> | Yes, exactly, hence lifting |
2025-10-20 09:52:49 +0200 | trickard | (~trickard@cpe-57-98-47-163.wireline.com.au) (Ping timeout: 264 seconds) |
2025-10-20 09:53:08 +0200 | trickard_ | (~trickard@cpe-53-98-47-163.wireline.com.au) |
2025-10-20 09:55:05 +0200 | <davean> | IO is the base, SomeT is on top, thus we *lift IO into SomeT* |
2025-10-20 09:55:21 +0200 | <davean> | Because it is semanticly beneith SomeT IO |
2025-10-20 09:59:22 +0200 | acidjnk | (~acidjnk@p200300d6e7171945c42b348415052731.dip0.t-ipconnect.de) acidjnk |
2025-10-20 10:05:00 +0200 | merijn | (~merijn@77.242.116.146) merijn |
2025-10-20 10:05:53 +0200 | jreicher | (~user@user/jreicher) (Ping timeout: 256 seconds) |
2025-10-20 10:06:12 +0200 | gustrb | (~gustrb@191.243.134.87) (Ping timeout: 244 seconds) |
2025-10-20 10:07:18 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2025-10-20 10:08:25 +0200 | <monochrom> | The best thing about meaningful names is that there are so many meanings to choose from! |
2025-10-20 10:08:35 +0200 | img | (~img@user/img) img |
2025-10-20 10:10:37 +0200 | Googulator64 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 10:10:38 +0200 | Googulator96 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 10:17:46 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) |
2025-10-20 10:18:43 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) (Client Quit) |
2025-10-20 10:19:49 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) |
2025-10-20 10:19:53 +0200 | fp | (~Thunderbi@2001:708:20:1406::10c5) fp |
2025-10-20 10:20:41 +0200 | gustrb | (~gustrb@191.243.134.87) |
2025-10-20 10:22:19 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 256 seconds) |
2025-10-20 10:29:26 +0200 | kubrat | (~kubrat@149.62.205.212) kubrat |
2025-10-20 10:30:16 +0200 | mzg_ | (mzg@abusers.hu) (Remote host closed the connection) |
2025-10-20 10:30:40 +0200 | synchromesh | (~john@2406:5a00:2412:2c00:75ff:6dec:5332:48f7) (Read error: Connection reset by peer) |
2025-10-20 10:31:59 +0200 | synchromesh | (~john@2406:5a00:2412:2c00:75ff:6dec:5332:48f7) synchromesh |
2025-10-20 10:32:26 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 248 seconds) |
2025-10-20 10:34:08 +0200 | merijn | (~merijn@77.242.116.146) merijn |
2025-10-20 10:34:55 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) (Quit: Client closed) |
2025-10-20 10:37:37 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 265 seconds) |
2025-10-20 10:39:09 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 10:39:44 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 240 seconds) |
2025-10-20 10:40:58 +0200 | <dminuoso> | davean: I guess if we just think of monad transformers or just constructions that eventually embed as some kinds of pyramid, it seems rather arbitrary whether we imagine the pyramid to have its tip pointed downwards or upwards. |
2025-10-20 10:43:05 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) |
2025-10-20 10:45:37 +0200 | merijn | (~merijn@77.242.116.146) merijn |
2025-10-20 10:45:38 +0200 | Googulator64 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 10:45:49 +0200 | Googulator64 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 10:46:56 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 240 seconds) |
2025-10-20 10:47:07 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 10:48:20 +0200 | <davean> | dminuoso: don't think of it as a peramid, think of its a sphere with subspheres nested inside it |
2025-10-20 10:48:27 +0200 | <davean> | expanding out from zero |
2025-10-20 10:48:46 +0200 | <dminuoso> | davean: Sure, and in that model wouldnt we think of IO as the inner core? |
2025-10-20 10:49:07 +0200 | <davean> | It *is* the inner core, its not that we choose to think about it, it is litterly enclosed by |
2025-10-20 10:49:18 +0200 | <dminuoso> | If we take a given IO action, say `putStrLn "Hello world"`, then its the action of putting that core inside layers and layers until we have a matching sphere. |
2025-10-20 10:49:26 +0200 | <dminuoso> | Rather than pulling it out. |
2025-10-20 10:50:05 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 256 seconds) |
2025-10-20 10:51:23 +0200 | <dminuoso> | This may just be the difference between operational and semantic thinking. |
2025-10-20 10:51:41 +0200 | <davean> | No, putStrLn is already an object in IO, it has no other existance |
2025-10-20 10:52:01 +0200 | <dminuoso> | Well I meant `liftIO (putStrLn "foo")` of course. |
2025-10-20 10:52:48 +0200 | <davean> | Write, that projects from the IO space to the IO subspace of SomeT IO |
2025-10-20 10:52:51 +0200 | <tomsmeding> | dminuoso: I think of liftIO as lifting "into SomeT", not "out of IO" |
2025-10-20 10:53:00 +0200 | <davean> | Yah, it NEVER LEAVES IO |
2025-10-20 10:53:04 +0200 | <davean> | It can't leave IO |
2025-10-20 10:53:07 +0200 | <tomsmeding> | the sky above is larger than you, so lifting moves it into the larger thing |
2025-10-20 10:53:44 +0200 | <davean> | it maps the IO subspace into the SomeT space, and specicily the IO subspace of said |
2025-10-20 10:54:04 +0200 | <tomsmeding> | indeed, SomeT IO may well have more logic than IO itself, so also in that sense, it's "lifting" into a more exalted space of SomeT IO computations |
2025-10-20 10:54:17 +0200 | <tomsmeding> | it's exactly what monochrom said |
2025-10-20 10:55:22 +0200 | <davean> | what did monochrom say? |
2025-10-20 10:55:33 +0200 | <tomsmeding> | 47 minutes ago |
2025-10-20 10:55:40 +0200 | <dminuoso> | Dont all monad transformers put the base monad on the outside, in the sense that if we have some tranformer stack over IO, ultimately we have something like `IO ((M1 :.: M2 :.: ...) a)` (and possibly a lambda outside for Reader)? |
2025-10-20 10:55:43 +0200 | <tomsmeding> | <monochrom> The best thing about meaningful names is that there are so many meanings to choose from! |
2025-10-20 10:56:16 +0200 | <davean> | dminuoso: no, no, that is very much NOT what they do |
2025-10-20 10:56:23 +0200 | <tomsmeding> | https://hackage.haskell.org/package/transformers-0.6.1.0/docs/Control-Monad-Trans-State-Strict.htm… |
2025-10-20 10:56:33 +0200 | <tomsmeding> | StateT s m a ~= s -> m (a, s) |
2025-10-20 10:56:34 +0200 | <dminuoso> | Ah I guess not. |
2025-10-20 10:56:46 +0200 | <davean> | dminuoso: which I think is where your confusion is |
2025-10-20 10:56:47 +0200 | <tomsmeding> | when you run them, you get a computation inside m, yes |
2025-10-20 10:56:59 +0200 | <dminuoso> | davean: No, this is actually just a tangent I was starting to explore. |
2025-10-20 10:57:19 +0200 | <tomsmeding> | and contrary to what davean is saying, I do not think your perspective is wrong, it's just a perspective that mismatches with what I think is the intended intuition behind "lift" |
2025-10-20 10:57:26 +0200 | <dminuoso> | davean: Until now I was just focused more on thinking of transformers as a syntactical construct where IO resided in since thats how I think of how the effects compose. |
2025-10-20 10:58:11 +0200 | <davean> | It isn't how the effects compose though, which gets really improtant with state and such |
2025-10-20 10:58:19 +0200 | <dminuoso> | tomsmeding: Perhaps. liftIO is just one of the few things that never really clicked on the naming to me. |
2025-10-20 10:58:58 +0200 | <dminuoso> | davean: Apart from ReaderT, I've never really used transformers much for a bunch of reasons. |
2025-10-20 10:59:21 +0200 | <dminuoso> | Except for some local computation tricks. |
2025-10-20 10:59:44 +0200 | <dminuoso> | Say something like runMaybeT $ do ... |
2025-10-20 11:00:11 +0200 | __monty__ | (~toonn@user/toonn) toonn |
2025-10-20 11:00:54 +0200 | <dminuoso> | Despite transformers being labeled with terms like "composition of effects", they are the antithesis of compositionality of library code. |
2025-10-20 11:02:19 +0200 | <davean> | How so? |
2025-10-20 11:04:01 +0200 | <srazkvt> | ig because instead of being able to call both functions for the wrapped monad, you need to lift the computations ? |
2025-10-20 11:04:26 +0200 | <dminuoso> | If you use hard-wired transformers its really hard to compose different transformer code together. If you use mtl code you lack effect order specification. As a result you have a large variety of effect libraries that try to address these issues. |
2025-10-20 11:04:47 +0200 | <dminuoso> | As a consequence hackage now is filled with code that ends up using any combination. |
2025-10-20 11:05:37 +0200 | <dminuoso> | The only effect that is universally compatible with most libraries is pure IO. |
2025-10-20 11:06:56 +0200 | <davean> | mtl you have a specific monad and then properties about it that you can use |
2025-10-20 11:07:13 +0200 | merijn | (~merijn@77.242.116.146) merijn |
2025-10-20 11:08:30 +0200 | fp | (~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 256 seconds) |
2025-10-20 11:12:26 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 248 seconds) |
2025-10-20 11:21:26 +0200 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
2025-10-20 11:23:16 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) (Quit: Client closed) |
2025-10-20 11:23:35 +0200 | <endokqr> | I am profiling (+RTS -p) a Haskell program that runs for quite some time and I am interested in data from the full run. Unfortunately, this makes the time huge! I thought I'd be able to adjust the resolution of the time profile with -i and/or -V, but this seems to have no effect. What am I misunderstanding? |
2025-10-20 11:23:40 +0200 | merijn | (~merijn@77.242.116.146) merijn |
2025-10-20 11:24:43 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) |
2025-10-20 11:32:27 +0200 | fp | (~Thunderbi@130.233.70.140) fp |
2025-10-20 11:33:01 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
2025-10-20 11:40:15 +0200 | merijn | (~merijn@77.242.116.146) merijn |
2025-10-20 11:43:39 +0200 | trickard_ | (~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-10-20 11:43:52 +0200 | trickard_ | (~trickard@cpe-53-98-47-163.wireline.com.au) |
2025-10-20 11:47:59 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) (Quit: Client closed) |
2025-10-20 11:50:27 +0200 | <dminuoso> | endokqr: -i is just the sampling rate, think of it how accurate/finely grained the data is. |
2025-10-20 11:50:45 +0200 | <dminuoso> | In practice this controls the data size of the profiling data |
2025-10-20 11:51:02 +0200 | <endokqr> | dminuoso, Yeah, and I would imagine by setting -i to e.g. "10 Hz" would give me fewer stack frames in the time profile. But whatever number I pass there I get the same 9.1 GB .prof file. |
2025-10-20 11:51:35 +0200 | <dminuoso> | endokqr: No, the cost centers are collected regardless. The interval is just how often the RTS stops and writes a record. |
2025-10-20 11:51:47 +0200 | mreh | (~matthew@host86-146-25-125.range86-146.btcentralplus.com) |
2025-10-20 11:52:21 +0200 | <dminuoso> | The "stack frames" what you describe is just the cost centers. |
2025-10-20 11:52:31 +0200 | <endokqr> | Ooooh, okay. So the only solution for me is to either post-process the .prof file and try to recognise "unimportant" branches of the tree and prune them, or go in and try to assign cost centres more intelligently? |
2025-10-20 11:52:38 +0200 | <dminuoso> | Yes. |
2025-10-20 11:53:10 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) |
2025-10-20 11:53:34 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) (Write error: Connection reset by peer) |
2025-10-20 11:53:46 +0200 | <dminuoso> | endokqr: You might find https://github.com/fpco/ghc-prof-flamegraph of interest (haven't used it in a few years, but I think it should still work fine) |
2025-10-20 11:54:34 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) |
2025-10-20 11:54:49 +0200 | <endokqr> | That's what I'm aiming for, but on the full 9.1 GB file it eats all my 48 GB of RAM and then my system starts thrashing. |
2025-10-20 11:55:22 +0200 | <endokqr> | But I could steal code from it to flatten the .prof file and then sample from it – that way I'm likely to get a subset of more interesting cost centres without difficult heuristics. |
2025-10-20 11:55:43 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) (Write error: Broken pipe) |
2025-10-20 11:56:32 +0200 | <dminuoso> | endokqr: Btw, it coulkd be sufficient to explicitly declare cost centers on branches you *dont* want to profile, as -fprof-auto (which I presume you are using) does not poke deeper if you attached a cost center. |
2025-10-20 11:56:52 +0200 | <dminuoso> | In the profiling data it would just collapse it into a single cost center. |
2025-10-20 11:57:16 +0200 | srazkvt | (~sarah@user/srazkvt) (Quit: Konversation terminated!) |
2025-10-20 11:58:57 +0200 | <dminuoso> | Or you control it per-module with {-# OPTIONS_GHC -fno-prof-auto #-} |
2025-10-20 11:59:26 +0200 | <dminuoso> | This might give you enough routes to explore |
2025-10-20 11:59:43 +0200 | <endokqr> | That would be a rather useful trick. I'm not yet entirely sure where I'd put those annotations because I don't know where the interesting stuff and where it's not, but maybe I could figure that out either by first downsampling or spending a few minutes to think about it. |
2025-10-20 12:02:28 +0200 | SlackCoder | (~SlackCode@208.26.91.234) (Remote host closed the connection) |
2025-10-20 12:04:25 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
2025-10-20 12:05:06 +0200 | jreicher | (~user@user/jreicher) jreicher |
2025-10-20 12:05:30 +0200 | merijn | (~merijn@77.242.116.146) merijn |
2025-10-20 12:08:05 +0200 | mzg | (mzg@abusers.hu) |
2025-10-20 12:10:02 +0200 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 248 seconds) |
2025-10-20 12:11:04 +0200 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen |
2025-10-20 12:15:52 +0200 | trickard_ | trickard |
2025-10-20 12:22:18 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
2025-10-20 12:32:22 +0200 | Googulator64 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 12:32:37 +0200 | Googulator64 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 12:34:40 +0200 | merijn | (~merijn@77.242.116.146) merijn |
2025-10-20 12:35:38 +0200 | trickard | (~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-10-20 12:35:52 +0200 | trickard_ | (~trickard@cpe-53-98-47-163.wireline.com.au) |
2025-10-20 12:56:06 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out) |
2025-10-20 12:56:31 +0200 | Googulator64 | Googulator |
2025-10-20 13:00:17 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
2025-10-20 13:05:57 +0200 | qqe | (~qqq@185.54.23.200) |
2025-10-20 13:09:17 +0200 | weary-traveler | (~user@user/user363627) user363627 |
2025-10-20 13:13:18 +0200 | xff0x | (~xff0x@2405:6580:b080:900:6316:ba02:9166:40eb) |
2025-10-20 13:13:58 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) |
2025-10-20 13:15:43 +0200 | Googulator87 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 13:15:43 +0200 | Googulator | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 13:21:54 +0200 | tromp | (~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-10-20 13:22:00 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 245 seconds) |
2025-10-20 13:22:19 +0200 | inline | (~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) Inline |
2025-10-20 13:22:38 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
2025-10-20 13:24:55 +0200 | Googulator87 | Googulator |
2025-10-20 13:25:59 +0200 | Googulator7 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 13:26:12 +0200 | Googulator | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 13:26:14 +0200 | Googulator7 | Googulator |
2025-10-20 13:27:21 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) (Quit: Client closed) |
2025-10-20 13:30:44 +0200 | Lycurgus | (~juan@user/Lycurgus) Lycurgus |
2025-10-20 13:36:54 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds) |
2025-10-20 13:37:06 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
2025-10-20 13:37:31 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
2025-10-20 13:37:53 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
2025-10-20 13:37:59 +0200 | kubrat | (~kubrat@149.62.205.212) (Ping timeout: 250 seconds) |
2025-10-20 13:38:25 +0200 | Lord_of_Life_ | Lord_of_Life |
2025-10-20 13:41:08 +0200 | srazkvt | (~sarah@user/srazkvt) srazkvt |
2025-10-20 13:52:55 +0200 | inline_ | (~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) Inline |
2025-10-20 13:54:10 +0200 | inline__ | (~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) Inline |
2025-10-20 13:55:19 +0200 | trickard_ | trickard |
2025-10-20 13:56:01 +0200 | inline | (~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) (Ping timeout: 244 seconds) |
2025-10-20 13:56:20 +0200 | Lycurgus | (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
2025-10-20 13:57:56 +0200 | inline_ | (~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) (Ping timeout: 256 seconds) |
2025-10-20 14:00:55 +0200 | kubrat | (~kubrat@149.62.205.137) |
2025-10-20 14:15:34 +0200 | Googulator | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 14:15:37 +0200 | Googulator54 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 14:15:40 +0200 | SlackCoder | (~SlackCode@208.26.91.234) SlackCoder |
2025-10-20 14:17:02 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2025-10-20 14:20:45 +0200 | Googulator74 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 14:21:01 +0200 | Googulator54 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 14:30:13 +0200 | Natch | (~natch@c-92-34-15-120.bbcust.telenor.se) (Ping timeout: 244 seconds) |
2025-10-20 14:35:42 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) |
2025-10-20 14:37:38 +0200 | tromp | (~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5) |
2025-10-20 14:40:10 +0200 | synchromesh | (~john@2406:5a00:2412:2c00:75ff:6dec:5332:48f7) (Read error: Connection reset by peer) |
2025-10-20 14:41:40 +0200 | synchromesh | (~john@2406:5a00:2412:2c00:75ff:6dec:5332:48f7) synchromesh |
2025-10-20 14:48:52 +0200 | <endokqr> | Appears non-trivial to post-process the profile data so I'm going to go with reducing the number of cost centres for now. Realised many of them are in third-party packages, which is useful information, but if it's preventing me from looking at the profile at all in a sensible way it's gonna have to go. Rebuilding dependencies without cost centres. (This also prevents the clever explicit cost |
2025-10-20 14:48:55 +0200 | <endokqr> | centre hack from being very helpful!) |
2025-10-20 14:51:40 +0200 | trickard | (~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-10-20 14:51:54 +0200 | trickard_ | (~trickard@cpe-53-98-47-163.wireline.com.au) |
2025-10-20 14:55:28 +0200 | hsw_ | (~hsw@112-104-9-97.adsl.dynamic.seed.net.tw) (Remote host closed the connection) |
2025-10-20 14:55:52 +0200 | hsw_ | (~hsw@112-104-9-97.adsl.dynamic.seed.net.tw) hsw |
2025-10-20 14:56:42 +0200 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 260 seconds) |
2025-10-20 14:56:57 +0200 | simplystuart | (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) |
2025-10-20 14:57:43 +0200 | divlamir | (~divlamir@user/divlamir) (Read error: Connection reset by peer) |
2025-10-20 14:58:04 +0200 | divlamir | (~divlamir@user/divlamir) divlamir |
2025-10-20 15:01:36 +0200 | ttybitnik | (~ttybitnik@user/wolper) ttybitnik |
2025-10-20 15:12:40 +0200 | chexum_ | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2025-10-20 15:12:58 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) chexum |
2025-10-20 15:16:22 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 272 seconds) |
2025-10-20 15:16:28 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2025-10-20 15:16:49 +0200 | Square | (~Square4@user/square) (Ping timeout: 264 seconds) |
2025-10-20 15:20:38 +0200 | Googulator50 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 15:20:42 +0200 | Googulator74 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 15:21:17 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
2025-10-20 15:23:34 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) (Quit: Client closed) |
2025-10-20 15:24:20 +0200 | FirefoxDeHuk59 | (~FirefoxDe@109.108.69.106) |
2025-10-20 15:24:37 +0200 | FirefoxDeHuk59 | (~FirefoxDe@109.108.69.106) (Client Quit) |
2025-10-20 15:25:58 +0200 | FirefoxDeHuk5 | (~FirefoxDe@109.108.69.106) |
2025-10-20 15:26:15 +0200 | FirefoxDeHuk5 | (~FirefoxDe@109.108.69.106) (Client Quit) |
2025-10-20 15:27:37 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 260 seconds) |
2025-10-20 15:28:34 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) |
2025-10-20 15:28:52 +0200 | FirefoxDeHuk | (~FirefoxDe@109.108.69.106) (Write error: Broken pipe) |
2025-10-20 15:28:54 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 15:31:04 +0200 | FirefoxDeHuk65 | (~FirefoxDe@109.108.69.106) |
2025-10-20 15:31:34 +0200 | Zemy | (~Zemy@2600:100c:b0a4:2b52:2c62:6eff:fe24:bb14) |
2025-10-20 15:31:34 +0200 | Zemy_ | (~Zemy@72.178.108.235) (Read error: Connection reset by peer) |
2025-10-20 15:32:05 +0200 | Zemy_ | (~Zemy@72.178.108.235) |
2025-10-20 15:36:22 +0200 | Zemy | (~Zemy@2600:100c:b0a4:2b52:2c62:6eff:fe24:bb14) (Ping timeout: 260 seconds) |
2025-10-20 15:37:32 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 260 seconds) |
2025-10-20 15:37:36 +0200 | humasect | (~humasect@dyn-192-249-132-90.nexicom.net) humasect |
2025-10-20 15:39:57 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 15:40:33 +0200 | Pozyomka | (~pyon@user/pyon) (Ping timeout: 250 seconds) |
2025-10-20 15:42:38 +0200 | Pozyomka | (~pyon@user/pyon) pyon |
2025-10-20 15:43:54 +0200 | tt12310978324354 | (~tt1231@2603:6010:8700:4a81:a4f6:acff:fe95:3803) (Ping timeout: 248 seconds) |
2025-10-20 15:44:25 +0200 | Zemy | (~Zemy@2600:100c:b0a4:2b52:30cd:7ff:fe22:3d41) |
2025-10-20 15:44:26 +0200 | Zemy_ | (~Zemy@72.178.108.235) (Read error: Connection reset by peer) |
2025-10-20 15:44:49 +0200 | Zemy_ | (~Zemy@72.178.108.235) |
2025-10-20 15:48:43 +0200 | Zemy | (~Zemy@2600:100c:b0a4:2b52:30cd:7ff:fe22:3d41) (Ping timeout: 246 seconds) |
2025-10-20 15:52:16 +0200 | SlackCoder | (~SlackCode@208.26.91.234) (Ping timeout: 244 seconds) |
2025-10-20 15:52:52 +0200 | myxos | (~myxos@65.25.110.175) myxokephale |
2025-10-20 16:02:34 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2025-10-20 16:04:36 +0200 | srazkvt | (~sarah@user/srazkvt) (Quit: Konversation terminated!) |
2025-10-20 16:07:31 +0200 | FirefoxDeHuk65 | (~FirefoxDe@109.108.69.106) (Quit: Client closed) |
2025-10-20 16:22:09 +0200 | fp | (~Thunderbi@130.233.70.140) (Ping timeout: 256 seconds) |
2025-10-20 16:26:13 +0200 | fp | (~Thunderbi@130.233.55.40) fp |
2025-10-20 16:27:32 +0200 | fp | (~Thunderbi@130.233.55.40) (Remote host closed the connection) |
2025-10-20 16:28:32 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
2025-10-20 16:30:47 +0200 | fp | (~Thunderbi@wireless-86-50-140-208.open.aalto.fi) fp |
2025-10-20 16:31:41 +0200 | inline__ | Inline |
2025-10-20 16:33:10 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 246 seconds) |
2025-10-20 16:35:02 +0200 | tromp | (~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-10-20 16:35:47 +0200 | Googulator52 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 16:35:48 +0200 | Googulator50 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 16:35:53 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 16:37:49 +0200 | fp | (~Thunderbi@wireless-86-50-140-208.open.aalto.fi) (Ping timeout: 264 seconds) |
2025-10-20 16:40:35 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2025-10-20 16:45:37 +0200 | trickard_ | trickard |
2025-10-20 17:00:37 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 264 seconds) |
2025-10-20 17:01:40 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 17:07:00 +0200 | tromp | (~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5) |
2025-10-20 17:09:24 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 252 seconds) |
2025-10-20 17:10:17 +0200 | wickedjargon | (~user@120.29.79.98) (Ping timeout: 260 seconds) |
2025-10-20 17:13:01 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 17:16:03 +0200 | ttybitnik | (~ttybitnik@user/wolper) (Quit: Fading out...) |
2025-10-20 17:19:43 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 240 seconds) |
2025-10-20 17:22:02 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 17:25:42 +0200 | qqe | (~qqq@185.54.23.200) (Quit: Lost terminal) |
2025-10-20 17:28:40 +0200 | machinedgod | (~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod |
2025-10-20 17:28:59 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 244 seconds) |
2025-10-20 17:29:18 +0200 | flipflops | (~cmo@2604:3d09:207f:8000::d1dc) |
2025-10-20 17:30:09 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 17:31:19 +0200 | trickard | (~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-10-20 17:31:33 +0200 | trickard_ | (~trickard@cpe-53-98-47-163.wireline.com.au) |
2025-10-20 17:33:10 +0200 | Googulator52 | Googulator |
2025-10-20 17:33:39 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 250 seconds) |
2025-10-20 17:34:03 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
2025-10-20 17:34:44 +0200 | humasect | (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
2025-10-20 17:37:48 +0200 | inline_ | (~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) Inline |
2025-10-20 17:37:56 +0200 | kuribas | (~user@2a02-1810-2825-6000-f3eb-4fa2-cbb5-436b.ip6.access.telenet.be) kuribas |
2025-10-20 17:41:12 +0200 | Inline | (~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) (Ping timeout: 256 seconds) |
2025-10-20 17:47:35 +0200 | ladyfriday | mrmonday |
2025-10-20 17:55:44 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2025-10-20 18:01:26 +0200 | inline_ | (~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) (Ping timeout: 244 seconds) |
2025-10-20 18:05:34 +0200 | flipflops | (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 246 seconds) |
2025-10-20 18:07:16 +0200 | AeIo | (~AeIo@109.108.69.106) |
2025-10-20 18:08:04 +0200 | AeIo | (~AeIo@109.108.69.106) (Write error: Broken pipe) |
2025-10-20 18:13:11 +0200 | <EvanR> | geekosaur, I heard matrix had an outage recently. Maybe the bridge hasn't been properly restored |
2025-10-20 18:13:18 +0200 | <EvanR> | haven't seen anyone talk through it in a while |
2025-10-20 18:13:41 +0200 | <geekosaur> | sm did yesterday |
2025-10-20 18:13:49 +0200 | <EvanR> | oh |
2025-10-20 18:14:24 +0200 | <geekosaur> | and there've been several conversations the past few days involving multiple Matrix users in #xmonad and #ghc |
2025-10-20 18:15:46 +0200 | <geekosaur> | and I've seen a few more in other bridged channels I'm not normally in (e.g. #haskell-wasm); Matrix-side they're in my "low priority" list which I scan at least once a day to make sure things are okay |
2025-10-20 18:20:43 +0200 | Googulator33 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 18:20:45 +0200 | Googulator | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 18:21:37 +0200 | td_ | (~td@i53870936.versanet.de) (Ping timeout: 264 seconds) |
2025-10-20 18:21:48 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
2025-10-20 18:22:17 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 256 seconds) |
2025-10-20 18:23:41 +0200 | <haskellbridge> | <sm> I haven't noticed an outage EvanR |
2025-10-20 18:24:14 +0200 | <EvanR> | it was sep 2 |
2025-10-20 18:24:40 +0200 | <geekosaur> | yeh, I figured you meant that one |
2025-10-20 18:25:05 +0200 | kuribas | (~user@2a02-1810-2825-6000-f3eb-4fa2-cbb5-436b.ip6.access.telenet.be) (Remote host closed the connection) |
2025-10-20 18:25:08 +0200 | <haskellbridge> | <sm> I have noticed chats seem quieter of late |
2025-10-20 18:25:13 +0200 | <geekosaur> | same |
2025-10-20 18:25:26 +0200 | <geekosaur> | and not only haskell chats |
2025-10-20 18:26:52 +0200 | <geekosaur> | FP Discord also has seemed a bit quieter than usual of late, and not only about Haskell (there was a lot of OCaml and Racket chat that went away) |
2025-10-20 18:27:25 +0200 | <haskellbridge> | <sm> maybe libera has some stats |
2025-10-20 18:28:03 +0200 | td_ | (~td@2001:9e8:19d3:4b00:581b:6633:814:8863) |
2025-10-20 18:28:55 +0200 | <EvanR> | as the universe expands anyone separated by enough space recedes into the distance and decrease in frequency |
2025-10-20 18:30:21 +0200 | <geekosaur> | dunno if libera does, but tomsmeding's log bot does |
2025-10-20 18:30:50 +0200 | jmcantrell | (~weechat@user/jmcantrell) jmcantrell |
2025-10-20 18:32:32 +0200 | <geekosaur> | hm, maybe it doesn't any more |
2025-10-20 18:32:41 +0200 | <geekosaur> | used to have a stats page for each channel |
2025-10-20 18:33:24 +0200 | <geekosaur> | including things like a nick word cloud by message frequency. I guess he pruned it |
2025-10-20 18:40:14 +0200 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
2025-10-20 18:43:10 +0200 | <haskellbridge> | <Morj> You won't believe how quiet erlang chats are |
2025-10-20 18:43:27 +0200 | <EvanR> | it's all about elixir discord |
2025-10-20 18:43:32 +0200 | <haskellbridge> | <Morj> Very sad, I had to ask an llm to give me advice |
2025-10-20 18:43:59 +0200 | <haskellbridge> | <Morj> Yea and an llm would also give elixir answers instead of erlang |
2025-10-20 18:44:05 +0200 | <EvanR> | lol |
2025-10-20 18:44:29 +0200 | <EvanR> | sounds like a blind spot |
2025-10-20 18:45:16 +0200 | turlando | (~turlando@user/turlando) turlando |
2025-10-20 18:45:26 +0200 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
2025-10-20 18:45:33 +0200 | <haskellbridge> | <Morj> «too far off the data distribution» is what they say |
2025-10-20 18:45:45 +0200 | Googulator30 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 18:45:45 +0200 | Googulator33 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 18:47:45 +0200 | <haskellbridge> | <Morj> Actually I have no idea how far off the data distribution is haskell, because most questions I have are not even answered by humans |
2025-10-20 18:48:34 +0200 | <EvanR> | they're answered by the type signature? xD |
2025-10-20 18:48:52 +0200 | <haskellbridge> | <Morj> :D |
2025-10-20 18:49:08 +0200 | <haskellbridge> | <Morj> No yeah but hoogle is so great. I miss it every day I write in rust |
2025-10-20 18:49:30 +0200 | kimiamania99 | (~92460e22@user/kimiamania) (Quit: PegeLinux) |
2025-10-20 18:50:41 +0200 | flipflops | (~cmo@2604:3d09:207f:8000::d1dc) |
2025-10-20 18:59:11 +0200 | tromp | (~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-10-20 19:04:41 +0200 | <haskellbridge> | <doc> is there a way to auto derive instances like Num a => Num (Foo a) where { (+) = liftA2 (+); (-) = liftA2 (-); (_) = liftA2 (_); abs = fmap abs; fromInteger = pure . fromInteger; etc etc} where Foo is an applicative and all the methods just plumb fmap/liftA, liftA2, and pure… I read a thread on r/haskell abt this and it was recommended to write this out for each type you need this for, which is perfectly fine, but am curious if there's any... |
2025-10-20 19:04:47 +0200 | <haskellbridge> | ... deriving magic that can do this |
2025-10-20 19:06:04 +0200 | kubrat | (~kubrat@149.62.205.137) (Quit: Client closed) |
2025-10-20 19:07:06 +0200 | flipflops | (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 252 seconds) |
2025-10-20 19:08:31 +0200 | <geekosaur> | no auto derive, but you can in fact write an instance that works for any Applicative |
2025-10-20 19:09:16 +0200 | <geekosaur> | the main argument against is that it leads to unexpected behavior, mostly due to ((->) e) being Applicative |
2025-10-20 19:10:37 +0200 | Googulator30 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 19:10:42 +0200 | Googulator67 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 19:13:03 +0200 | <geekosaur> | instance (Applicative f, Num a) => Num (f a) where (+) = liftA2 (+); (-) = liftA2 (-); (*) = liftA2 (*); negate = fmap negate; abs = fmap abs; signum = fmap signum; fromInteger = pure . fromInteger |
2025-10-20 19:13:22 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
2025-10-20 19:14:06 +0200 | <geekosaur> | this and Num polymorphism means using that instance is a good way to induce insanity |
2025-10-20 19:14:30 +0200 | <haskellbridge> | <doc> yep this was also mentioned on that discussion i read, to avoid having this general instance in scope |
2025-10-20 19:14:54 +0200 | <geekosaur> | it shouldn't be difficult to write some TH to auto-derive it |
2025-10-20 19:17:58 +0200 | kubrat | (~kubrat@149.62.205.137) |
2025-10-20 19:18:12 +0200 | qqe | (~qqq@185.54.23.200) |
2025-10-20 19:20:23 +0200 | kubrat | (~kubrat@149.62.205.137) (Client Quit) |
2025-10-20 19:31:05 +0200 | mastarija | (~mastarija@89-164-108-176.dsl.iskon.hr) mastarija |
2025-10-20 19:31:22 +0200 | tromp | (~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5) |
2025-10-20 19:32:12 +0200 | <mastarija> | Is there a way to recover the actual type from generics? The type names are written out as a type level string, but I'd like to somehow recover the original type. |
2025-10-20 19:32:31 +0200 | <mastarija> | I'd like to construct a type level list of all the field types of a product type. |
2025-10-20 19:33:59 +0200 | <mastarija> | I'm thinking it might be possible to hack a HasField + type family to get the fields since there's a functional dependency between the parent type, type level field name and the type of the field. |
2025-10-20 19:34:37 +0200 | <mastarija> | But that will only work on product types that have field names (if it's even possible to use HasField like that). |
2025-10-20 19:35:27 +0200 | <geekosaur> | I think the actual type is available, but not that way. Generics are built on Data.Data iirc, which should allow getting the actual type I think? |
2025-10-20 19:36:09 +0200 | <mastarija> | Hm... interesting. I did not know that. |
2025-10-20 19:37:47 +0200 | <geekosaur> | my recollection is Generics <- Data.Data <- Typeable, but while Typeable has the type available in some sense it's not powerful enough to make it directly available; the best you can do is its `cast` which produces a `Maybe targetType` |
2025-10-20 19:38:17 +0200 | <geekosaur> | that said, it's entirely possible I remember wrong and Data.Data is the basis for a different generics implementation (SYB seems most likely in that case) |
2025-10-20 19:38:32 +0200 | <mastarija> | Yeah. They mention something about that. |
2025-10-20 19:38:33 +0200 | <tomsmeding> | I'm fairly sure Data.Data is not involved here |
2025-10-20 19:38:41 +0200 | <tomsmeding> | Data.Data is untyped, and GHC.Generics is quite typed |
2025-10-20 19:38:42 +0200 | <mastarija> | I think Typeable is not what I want. |
2025-10-20 19:39:00 +0200 | <geekosaur> | it's not; like I said, it's not strong enough |
2025-10-20 19:39:07 +0200 | <tomsmeding> | mastarija: which type exactly are you looking for? The type of a field? |
2025-10-20 19:39:35 +0200 | <mastarija> | Like, my ultimate goal is to be able to make a `toTuple` / `fromTuple` instances where I could generically convert any product type into a tuple. |
2025-10-20 19:39:51 +0200 | <mastarija> | But yes. Type of a field is what I'm looking for. |
2025-10-20 19:39:58 +0200 | <tomsmeding> | the field types are simply there inside the Rec0 constructors |
2025-10-20 19:40:16 +0200 | <mastarija> | When using `Rep` I unfortunatelly do not get that. |
2025-10-20 19:40:21 +0200 | <mastarija> | Wait, really? |
2025-10-20 19:40:26 +0200 | <tomsmeding> | % :seti -XDeriveGeneric |
2025-10-20 19:40:26 +0200 | <yahb2> | <no output> |
2025-10-20 19:40:32 +0200 | <tomsmeding> | % data A = A Int Bool deriving (Generic) |
2025-10-20 19:40:32 +0200 | <yahb2> | <interactive>:63:31: error: [GHC-76037] ; Not in scope: type constructor or class ‘Generic’ |
2025-10-20 19:40:37 +0200 | <tomsmeding> | % import GHC.Generics |
2025-10-20 19:40:37 +0200 | <yahb2> | <no output> |
2025-10-20 19:40:39 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2025-10-20 19:40:40 +0200 | <tomsmeding> | % data A = A Int Bool deriving (Generic) |
2025-10-20 19:40:40 +0200 | <yahb2> | <no output> |
2025-10-20 19:40:43 +0200 | <geekosaur> | yes |
2025-10-20 19:40:43 +0200 | <tomsmeding> | %% :k! Rep A |
2025-10-20 19:40:43 +0200 | <yahb2> | https://paste.tomsmeding.com/UQWaOWBa |
2025-10-20 19:40:53 +0200 | <tomsmeding> | note the Int and Bool in there |
2025-10-20 19:41:05 +0200 | <tomsmeding> | I don't even see any string forms anywhere |
2025-10-20 19:41:39 +0200 | <mastarija> | But will that work for a field that's another product? I just want to go one level deep. |
2025-10-20 19:42:28 +0200 | <tomsmeding> | what do you mean? Do you have a simple example type? |
2025-10-20 19:42:32 +0200 | <mastarija> | Huh. It does. |
2025-10-20 19:42:35 +0200 | <dcpagan> | Did "join" used to be a class method that one could optionally define for a Monad instance? I could have sworn that I read somewhere that you could define a Monad instance by defining join instead of defining bind, since m >>= k = join $ fmap k m |
2025-10-20 19:42:39 +0200 | <mastarija> | I don't know what I was thinking. |
2025-10-20 19:42:50 +0200 | <monochrom> | I don't think join was ever a method. |
2025-10-20 19:42:53 +0200 | <tomsmeding> | dcpagan: well you can always define (>>=) in terms of join yourself |
2025-10-20 19:43:03 +0200 | <mastarija> | Yeah. I guess on Rec0 we are supposed to manually call Rep if we want to go deeper, right? |
2025-10-20 19:43:11 +0200 | <mastarija> | Now it's coming back to me... |
2025-10-20 19:43:15 +0200 | <tomsmeding> | if you want to recurse into a field, then yes |
2025-10-20 19:43:55 +0200 | <mastarija> | Yeah. Thanks. I somehow misremembered stuff and got stuck thinking my thinking is correct xD |
2025-10-20 19:43:57 +0200 | <monochrom> | Not sure what you read, but generally "could" could (pun!) be highly hypothetical as in "in another parallel universe" and/or "if I were World Dictator". |
2025-10-20 19:44:30 +0200 | <dolio> | Is that a pun? |
2025-10-20 19:47:20 +0200 | <monochrom> | Could be! |
2025-10-20 19:47:25 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 264 seconds) |
2025-10-20 19:47:33 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 19:53:17 +0200 | ephilalethes | (~noumenon@113.51-175-156.customer.lyse.net) noumenon |
2025-10-20 19:53:26 +0200 | ephilalethes | (~noumenon@113.51-175-156.customer.lyse.net) (Remote host closed the connection) |
2025-10-20 19:55:04 +0200 | flipflops | (~cmo@2604:3d09:207f:8000::d1dc) |
2025-10-20 20:05:43 +0200 | Googulator67 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 20:05:44 +0200 | Googulator7 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 20:09:35 +0200 | Natch | (~natch@c-92-34-15-120.bbcust.telenor.se) |
2025-10-20 20:10:54 +0200 | flipflops | (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 252 seconds) |
2025-10-20 20:11:44 +0200 | yabobay | (~pizza@2a02:85f:fcd5:1601:439e:d9b3:6a5d:d567) yabobay |
2025-10-20 20:12:13 +0200 | <yabobay> | is there a generic version of splitWith somewhere in the standard library? or at least one that works on String's? |
2025-10-20 20:13:00 +0200 | <EvanR> | what do you mean by generic, maybe write the desired type signature |
2025-10-20 20:14:44 +0200 | <yabobay> | (a -> Bool) -> [a] -> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=a |
2025-10-20 20:14:51 +0200 | <yabobay> | uh |
2025-10-20 20:15:02 +0200 | <EvanR> | :t breakOn |
2025-10-20 20:15:03 +0200 | <lambdabot> | error: |
2025-10-20 20:15:04 +0200 | <lambdabot> | • Variable not in scope: breakOn |
2025-10-20 20:15:04 +0200 | <lambdabot> | • Perhaps you meant one of these: |
2025-10-20 20:15:17 +0200 | <EvanR> | :t break |
2025-10-20 20:15:18 +0200 | <lambdabot> | (a -> Bool) -> [a] -> ([a], [a]) |
2025-10-20 20:15:40 +0200 | <yabobay> | well what if i want it to break at every delimiter instead of just the first one |
2025-10-20 20:15:50 +0200 | <yabobay> | and so return a list |
2025-10-20 20:15:56 +0200 | <EvanR> | that is a pretty simple combination of break and scanl |
2025-10-20 20:16:10 +0200 | <EvanR> | which I reimplemented a few times |
2025-10-20 20:16:20 +0200 | <EvanR> | there is a package with a bunch of splitting utilities |
2025-10-20 20:16:23 +0200 | <yabobay> | you can probably write it easily but gimme a moment to figure it out for fun |
2025-10-20 20:16:32 +0200 | <EvanR> | it's called `split' |
2025-10-20 20:16:52 +0200 | <yabobay> | you mean the package? |
2025-10-20 20:16:55 +0200 | <EvanR> | yeah |
2025-10-20 20:17:26 +0200 | <EvanR> | splitWhen :: (a -> Bool) -> [a] -> [[a]] is in there |
2025-10-20 20:18:07 +0200 | tabaqui | (~tabaqui@167.71.80.236) (Ping timeout: 260 seconds) |
2025-10-20 20:19:06 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 248 seconds) |
2025-10-20 20:21:11 +0200 | wbrawner | (~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner |
2025-10-20 20:22:04 +0200 | <tomsmeding> | EvanR: are you sure it's scanl that you need? |
2025-10-20 20:22:58 +0200 | <tomsmeding> | and no, such a function is not in the standard library |
2025-10-20 20:23:14 +0200 | <tomsmeding> | which is very convenient for teachers, because then they can ask students to implement it :) |
2025-10-20 20:23:43 +0200 | <EvanR> | well scanl will do it, but I found it easier to write a direct recursion |
2025-10-20 20:23:47 +0200 | <monochrom> | Yeah if something is in the standard library, then I can only put it on exams. |
2025-10-20 20:26:00 +0200 | Frostillicus | (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) |
2025-10-20 20:26:04 +0200 | <tomsmeding> | EvanR: what I'm confused about is how you sensibly combine scanl and break in this case; I could do it with either, but not sure how to usefully use both together |
2025-10-20 20:26:22 +0200 | <tomsmeding> | you could do it with break and unfoldl |
2025-10-20 20:26:59 +0200 | <EvanR> | @src unfoldl |
2025-10-20 20:26:59 +0200 | <lambdabot> | Source not found. Sorry about this, I know it's a bit silly. |
2025-10-20 20:27:30 +0200 | <EvanR> | yeah unfoldl would work |
2025-10-20 20:27:55 +0200 | Lycurgus | (~juan@user/Lycurgus) Lycurgus |
2025-10-20 20:28:09 +0200 | <EvanR> | you just have to munge a Maybe as opposed to just analyzing the pair coming out of break |
2025-10-20 20:29:58 +0200 | target_i | (~target_i@user/target-i/x-6023099) target_i |
2025-10-20 20:30:24 +0200 | <tomsmeding> | scanl forces you to iterate over a particular list, and I'm not clear on what that list would be |
2025-10-20 20:30:30 +0200 | Googulator7 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 20:30:40 +0200 | Googulator7 | (~Googulato@92-249-221-245.pool.digikabel.hu) |
2025-10-20 20:33:02 +0200 | <EvanR> | you're right, it would be a scanl to implement the entire shebang |
2025-10-20 20:33:05 +0200 | tabaqui | (~tabaqui@167.71.80.236) tabaqui |
2025-10-20 20:34:35 +0200 | rvalue- | (~rvalue@about/hackers/rvalue) rvalue |
2025-10-20 20:35:01 +0200 | rvalue | (~rvalue@about/hackers/rvalue) (Ping timeout: 246 seconds) |
2025-10-20 20:36:52 +0200 | <yabobay> | okkk i got it |
2025-10-20 20:37:26 +0200 | <EvanR> | :t unfoldl |
2025-10-20 20:37:27 +0200 | <lambdabot> | error: |
2025-10-20 20:37:27 +0200 | <lambdabot> | • Variable not in scope: unfoldl |
2025-10-20 20:37:27 +0200 | <lambdabot> | • Perhaps you meant one of these: |
2025-10-20 20:37:34 +0200 | <EvanR> | :t unfoldr |
2025-10-20 20:37:35 +0200 | <lambdabot> | (b -> Maybe (a, b)) -> b -> [a] |
2025-10-20 20:37:43 +0200 | <EvanR> | @src unfoldr |
2025-10-20 20:37:43 +0200 | <lambdabot> | unfoldr f b = case f b of |
2025-10-20 20:37:43 +0200 | <lambdabot> | Just (a, b') -> a : unfoldr f b' |
2025-10-20 20:37:43 +0200 | <lambdabot> | Nothing -> [] |
2025-10-20 20:37:45 +0200 | <bwe> | Having a data constructor that carries only `Maybe _` records. How can I generically identify and collect only those records that are missing? Example: https://paste.tomsmeding.com/QNAkizLd |
2025-10-20 20:39:01 +0200 | gustrb | (~gustrb@191.243.134.87) (Ping timeout: 264 seconds) |
2025-10-20 20:39:33 +0200 | <bwe> | (I don't want to implement a case monster for MyCollectorA and MyCollectorB; I feel it could be done easily with HashMaps yet I loose with them the strictness of storing values to only specific records.) |
2025-10-20 20:40:10 +0200 | <bwe> | (Maybe the closest bet would be some Validation package, so I'd appreciate it if someone with experience in that could point me to some that fits my use case.) |
2025-10-20 20:41:41 +0200 | peterbecich | (~Thunderbi@172.222.148.214) peterbecich |
2025-10-20 20:41:53 +0200 | <EvanR> | well to just write the function you could hit each field with *> Just "a", *> Just "b", *> Just "c" respectively, then catMaybes |
2025-10-20 20:41:57 +0200 | rvalue- | rvalue |
2025-10-20 20:42:13 +0200 | <EvanR> | but something tells me the whole question could be improved looking at the bigger picture |
2025-10-20 20:43:11 +0200 | <EvanR> | ok, and there are a lot of fields |
2025-10-20 20:43:37 +0200 | <EvanR> | doing stuff field by field like that might benefit from extensible records |
2025-10-20 20:44:30 +0200 | <EvanR> | whose record type often comes with a functor f on every field that you can use in natural transformations |
2025-10-20 20:44:31 +0200 | <bwe> | EvanR: The bigger picture is scraping some data from different sources using ld+json and meta / item properties. Since the data quality varies with different sources, I need to know which data is missing from the machine readable provided one. For them I need to supplement it by writing manual parsers. |
2025-10-20 20:44:33 +0200 | <EvanR> | f = Maybe in this case |
2025-10-20 20:44:55 +0200 | jmcantrell | (~weechat@user/jmcantrell) (Ping timeout: 240 seconds) |
2025-10-20 20:45:16 +0200 | yabobay | (~pizza@2a02:85f:fcd5:1601:439e:d9b3:6a5d:d567) (Konversation terminated!) |
2025-10-20 20:46:00 +0200 | Lycurgus | (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
2025-10-20 20:46:41 +0200 | <EvanR> | if the data is not strictly structured maybe represent it using dynamic types, like the json Value type |
2025-10-20 20:46:52 +0200 | <EvanR> | the parser for such a type is the validation |
2025-10-20 20:48:14 +0200 | <bwe> | …which would go more into the direction of HashMaps, isn't it? Is there such thing like HashMap with only predefined keys (instead of free text)? |
2025-10-20 20:49:26 +0200 | <EvanR> | yes, dependent map |
2025-10-20 20:49:50 +0200 | <bwe> | Never heard about this. |
2025-10-20 20:50:06 +0200 | <EvanR> | it's extensible record adjacent |
2025-10-20 20:50:39 +0200 | SlackCoder | (~SlackCode@208.26.91.234) SlackCoder |
2025-10-20 20:51:10 +0200 | trickard_ | (~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-10-20 20:51:23 +0200 | trickard_ | (~trickard@cpe-53-98-47-163.wireline.com.au) |
2025-10-20 20:52:35 +0200 | <bwe> | So, which packages should I consider? |
2025-10-20 20:56:41 +0200 | <EvanR> | let me try to clarify, just using something like the json Value (which might be a hashmap of more values) would be pretty unstructured |
2025-10-20 20:57:22 +0200 | <EvanR> | dependent-map is more structured, and would let you do something with the original question in a well typed way, but might still be too rigid for whatever else you're trying to do |
2025-10-20 20:58:28 +0200 | peterbecich | (~Thunderbi@172.222.148.214) (Ping timeout: 246 seconds) |
2025-10-20 21:00:01 +0200 | caconym7478798 | (~caconym@user/caconym) (Quit: bye) |
2025-10-20 21:00:42 +0200 | caconym7478798 | (~caconym@user/caconym) caconym |
2025-10-20 21:00:53 +0200 | <bwe> | EvanR: json Value: Yes, because I would pattern match by String values anyway instead of concrete record names. |
2025-10-20 21:02:15 +0200 | gustrb | (~gustrb@191.243.134.87) |
2025-10-20 21:02:22 +0200 | <EvanR> | yeah you could zip together the list of possible field names with the result of looking up that field |
2025-10-20 21:02:47 +0200 | <EvanR> | and output the field name if it's missing, or nothing, and collect at the end |
2025-10-20 21:03:18 +0200 | <bwe> | okay, I am thinking now I might roll a new, additional, minimal data constructor with non-Maybe, having all required fields, and if any isn't provided by the `Maybe a` upstream constructor, I let it emit a `These a b` type. |
2025-10-20 21:04:08 +0200 | <EvanR> | having your formal record types be reserved for cases where all the require fields exist probably would simplify things |
2025-10-20 21:04:20 +0200 | <EvanR> | up to that point use a more unstructured representation |
2025-10-20 21:04:34 +0200 | <EvanR> | the bridge between them is the parser/validator |
2025-10-20 21:04:58 +0200 | <bwe> | It's sort of the data transfer object vs. the non-Maybe variant. And the translator inbetween both should tell what's missing. |
2025-10-20 21:05:09 +0200 | <bwe> | yeah, that'd be the parser/validator. |
2025-10-20 21:05:33 +0200 | <bwe> | And I am searching for a way to do it differently than pattern matching over all fields or creating a case monster. |
2025-10-20 21:06:10 +0200 | <EvanR> | have you seen how json value -> application type parsers are done? |
2025-10-20 21:06:12 +0200 | <EvanR> | using applicative |
2025-10-20 21:07:00 +0200 | gustrb | (~gustrb@191.243.134.87) (Ping timeout: 252 seconds) |
2025-10-20 21:09:43 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 21:10:04 +0200 | <EvanR> | e.g. going from Object v = {x: 9, y: 3.14} to data Coord = Coord {x :: Double, y :: Double}, write Coord <$> v.:"y" <*> v.:"z" |
2025-10-20 21:10:23 +0200 | <EvanR> | or a more involved parser if there are non trivial requirements on the json |
2025-10-20 21:12:07 +0200 | <EvanR> | the above parser only yields a Coord if the x and y fields exist and parse into Doubles |
2025-10-20 21:13:20 +0200 | trickard_ | (~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
2025-10-20 21:14:23 +0200 | <probie> | bwe: cobbled together, but if all the fields are `Maybe`, you can do this with generics https://play.haskell.org/saved/T08yEkzo |
2025-10-20 21:16:00 +0200 | <mastarija> | Does anyone know if there are any utilities in the `base` package for working with type level lists? e.g. Concat type family? |
2025-10-20 21:16:07 +0200 | trickard_ | (~trickard@cpe-53-98-47-163.wireline.com.au) |
2025-10-20 21:16:08 +0200 | <mastarija> | I feel like there was something. |
2025-10-20 21:16:16 +0200 | qqe | (~qqq@185.54.23.200) (Quit: Lost terminal) |
2025-10-20 21:16:19 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
2025-10-20 21:16:24 +0200 | <tomsmeding> | there's some basic stuff for Nats, but I don't recall anything for lists |
2025-10-20 21:16:34 +0200 | <haskellbridge> | <loonycyborg> Only DataKinds |
2025-10-20 21:16:36 +0200 | <haskellbridge> | <loonycyborg> and some supporting modules |
2025-10-20 21:16:41 +0200 | <haskellbridge> | <loonycyborg> like Natural and Symbol |
2025-10-20 21:17:00 +0200 | <mastarija> | Hm... I guess I've mixed that up with Symbol |
2025-10-20 21:17:06 +0200 | <haskellbridge> | <loonycyborg> Even DataKinds on its own is pretty powerful though |
2025-10-20 21:19:10 +0200 | tccq | (~user@user/tccq) tccq |
2025-10-20 21:21:44 +0200 | <tccq> | Are there decent solutions for jump-to-def and complete symbol names in emacs these days? haskell-mode is good and I like C-c C-c for compilation but the completion doesn't work for locals as far as I can tell. Also even with hls+eglot, jump to def doesn't work for anything outside the current project. I assume that's for lack of source files for system libs? But not even being able to fetch the type seems somewhat harsh. What are |
2025-10-20 21:21:44 +0200 | <tccq> | people's setups? |
2025-10-20 21:24:58 +0200 | <bwe> | EvanR: No, I haven't looked how json value -> application type parser are done yet. But will do. |
2025-10-20 21:24:58 +0200 | <monochrom> | I haven't needed jump-to-def for locals, so haskell-mode suffices for me. |
2025-10-20 21:25:18 +0200 | <monochrom> | err, I haven't needed completion for locals. |
2025-10-20 21:25:28 +0200 | trickard_ | trickard |
2025-10-20 21:25:35 +0200 | <bwe> | probie: wow, didn't think that this would be possible. |
2025-10-20 21:25:42 +0200 | Googulator8 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 21:26:03 +0200 | Googulator7 | (~Googulato@92-249-221-245.pool.digikabel.hu) (Quit: Client closed) |
2025-10-20 21:26:04 +0200 | <monochrom> | I can fetch types, global and local. |
2025-10-20 21:26:55 +0200 | <tccq> | do you get jump to def for prelude or standard packages? |
2025-10-20 21:27:02 +0200 | <monochrom> | No. |
2025-10-20 21:27:47 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 21:30:34 +0200 | <tccq> | hmm. Maybe I will drop the lsp part and just try to configure haskell-mode better. Probably with htags and dabbrev I should be set |
2025-10-20 21:32:32 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
2025-10-20 21:34:45 +0200 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2025-10-20 21:34:54 +0200 | gustrb | (~gustrb@191.243.134.87) |
2025-10-20 21:39:28 +0200 | gustrb | (~gustrb@191.243.134.87) (Ping timeout: 244 seconds) |
2025-10-20 21:40:06 +0200 | mastarija | (~mastarija@89-164-108-176.dsl.iskon.hr) (Quit: Client closed) |
2025-10-20 21:43:39 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 21:48:33 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
2025-10-20 21:49:41 +0200 | AlexZenon | (~alzenon@85.174.182.163) (Ping timeout: 256 seconds) |
2025-10-20 21:53:29 +0200 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
2025-10-20 21:54:22 +0200 | Googulator8 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 21:54:37 +0200 | Googulator8 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 21:59:29 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 22:04:52 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-10-20 22:08:28 +0200 | gustrb | (~gustrb@191.243.134.87) |
2025-10-20 22:10:02 +0200 | ephilalethes | (~noumenon@113.51-175-156.customer.lyse.net) noumenon |
2025-10-20 22:13:49 +0200 | gustrb | (~gustrb@191.243.134.87) (Ping timeout: 264 seconds) |
2025-10-20 22:15:17 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 22:15:27 +0200 | jmcantrell | (~weechat@user/jmcantrell) jmcantrell |
2025-10-20 22:15:37 +0200 | Googulator8 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 22:15:38 +0200 | Googulator52 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 22:18:41 +0200 | takuan | (~takuan@d8D86B9E9.access.telenet.be) (Remote host closed the connection) |
2025-10-20 22:20:08 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
2025-10-20 22:21:13 +0200 | gustrb | (~gustrb@191.243.134.87) |
2025-10-20 22:22:39 +0200 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2025-10-20 22:26:26 +0200 | peterbecich | (~Thunderbi@172.222.148.214) peterbecich |
2025-10-20 22:26:56 +0200 | AlexZenon | (~alzenon@85.174.182.163) |
2025-10-20 22:27:01 +0200 | Frostillicus | (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) (Ping timeout: 264 seconds) |
2025-10-20 22:28:32 +0200 | <chromoblob> | DeepSeek stole its name from Haskell's DeepSeq |
2025-10-20 22:28:47 +0200 | gustrb | (~gustrb@191.243.134.87) (Ping timeout: 256 seconds) |
2025-10-20 22:31:03 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 22:35:34 +0200 | Googulator52 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 22:35:37 +0200 | Googulator47 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 22:35:44 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
2025-10-20 22:37:37 +0200 | Square | (~Square4@user/square) Square |
2025-10-20 22:38:32 +0200 | Square2 | (~Square@user/square) Square |
2025-10-20 22:39:42 +0200 | <bwe> | EvanR: You are actually right. I am solving the wrong problem: Currently I parse ld+json (embedded machine readable data in html) to 'Maybe a' using Aeson. Only to then to re-use the 'Maybe a' records (dto) to extract the required fields and store them in a non-Maybe constructor. Why not parsing the values directly into a constructor where required fields have a non-Maybe type and optional one's a Maybe type? I get the errors of the missing bits for free w |
2025-10-20 22:39:42 +0200 | <bwe> | ithout needing to reinvent the wheel. |
2025-10-20 22:40:20 +0200 | <EvanR> | yes |
2025-10-20 22:40:33 +0200 | <EvanR> | parse "don't validate" (parse = validate) |
2025-10-20 22:42:09 +0200 | Square | (~Square4@user/square) (Ping timeout: 252 seconds) |
2025-10-20 22:42:20 +0200 | <bwe> | I wanted to finish the partly done parsing job by validating. |
2025-10-20 22:47:01 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 22:47:37 +0200 | <EvanR> | partly done parsing *scream emoji* |
2025-10-20 22:48:06 +0200 | <EvanR> | if it's really invalid then it shouldn't parse |
2025-10-20 22:54:01 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 22:55:25 +0200 | peterbecich | (~Thunderbi@172.222.148.214) (Ping timeout: 256 seconds) |
2025-10-20 22:59:16 +0200 | ttybitnik | (~ttybitnik@user/wolper) ttybitnik |
2025-10-20 23:04:53 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 23:08:35 +0200 | <yin> | also, make illegal states unrepresentable |
2025-10-20 23:08:54 +0200 | lisq_ | (~quassel@lis.moe) () |
2025-10-20 23:08:56 +0200 | <EvanR> | that might be more trouble than its worth |
2025-10-20 23:09:04 +0200 | lisq | (~quassel@lis.moe) lisq |
2025-10-20 23:09:39 +0200 | <EvanR> | like how the real projective plane is this weird space that needs 4 dimensions, or it's just a half a sphere, ignore the other half |
2025-10-20 23:09:46 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-10-20 23:10:09 +0200 | michalz | (~michalz@185.246.207.221) (Remote host closed the connection) |
2025-10-20 23:10:41 +0200 | <EvanR> | actually 5 |
2025-10-20 23:13:13 +0200 | <monochrom> | I only needed 3 back then. |
2025-10-20 23:13:18 +0200 | <monochrom> | Inflation! |
2025-10-20 23:14:12 +0200 | gustrb | (~gustrb@191.243.134.87) |
2025-10-20 23:14:37 +0200 | <EvanR> | it's a 2D space so you only need 2 really |
2025-10-20 23:14:45 +0200 | <bwe> | EvanR: I admit initially the dto data constructor just collected the data. Design criterion was to not fail even if some fields can't be populated (for debugging purposes). Hence I ended up with the "everything is Maybe" dto constructor. Second requirement was then to roll a domain data constructor that has only required fields. Now, the hassle turns out to be how to translate between them. |
2025-10-20 23:15:31 +0200 | <bwe> | EvanR: I wonder how I might be more aware next time when I am opening the pandoras box with validating instead of parsing. |
2025-10-20 23:16:23 +0200 | <EvanR> | if it's business apps, I might just veer on the side of "this has no structure, even if some boss said on some date that it did" |
2025-10-20 23:17:05 +0200 | <EvanR> | but if it really does, there's always versioning your data types and doing type checked migrations |
2025-10-20 23:17:15 +0200 | <EvanR> | and there is a different parser for each version |
2025-10-20 23:20:40 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 23:21:47 +0200 | target_i | (~target_i@user/target-i/x-6023099) (Quit: leaving) |
2025-10-20 23:25:20 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
2025-10-20 23:25:37 +0200 | Googulator80 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) |
2025-10-20 23:25:39 +0200 | Googulator47 | (~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed) |
2025-10-20 23:27:57 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2025-10-20 23:33:49 +0200 | <EvanR> | monochrom, 2 dimensions to get in, 3 to visualize it with intersections, 4 without intersections, 5 to preserve distances and angles |
2025-10-20 23:36:35 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 23:37:02 +0200 | emmanuelux | (~emmanuelu@user/emmanuelux) emmanuelux |
2025-10-20 23:41:25 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
2025-10-20 23:52:17 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-10-20 23:55:50 +0200 | tccq | (~user@user/tccq) (Remote host closed the connection) |