2025/10/20

2025-10-20 00:02:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 00:10:30 +0200jreicher(~user@user/jreicher) (Read error: Connection reset by peer)
2025-10-20 00:11:08 +0200bggd(~bgg@2a01:e0a:819:1510:3eb5:dbc5:9370:da5d)
2025-10-20 00:11:56 +0200inline(~inline@2a02:8071:57a1:1260:5a1:e9a9:aa3a:fee6) Inline
2025-10-20 00:12:49 +0200peterbecich(~Thunderbi@172.222.148.214) (Quit: peterbecich)
2025-10-20 00:13:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 00:13:22 +0200peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-10-20 00:18:07 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-10-20 00:18:37 +0200karenw(~karenw@user/karenw) (Ping timeout: 264 seconds)
2025-10-20 00:19:32 +0200Guest57(~Guest57@95.214.217.193)
2025-10-20 00:22:52 +0200Guest57(~Guest57@95.214.217.193) (Quit: Client closed)
2025-10-20 00:23:25 +0200kk-strat(~halloy995@ip72-208-127-103.ph.ph.cox.net) (Quit: kk-strat)
2025-10-20 00:23:29 +0200inline_(~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline
2025-10-20 00:26:23 +0200inline__(~inline@2a02:8071:57a1:1260:1ce3:efcb:ed4f:9e96) Inline
2025-10-20 00:26:24 +0200inline(~inline@2a02:8071:57a1:1260:5a1:e9a9:aa3a:fee6) (Ping timeout: 244 seconds)
2025-10-20 00:26:35 +0200inline__Inline
2025-10-20 00:27:15 +0200inline__(~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline
2025-10-20 00:29:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 00:29:43 +0200inline_(~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2025-10-20 00:30:42 +0200inline_(~inline@2a02:8071:57a1:1260:7925:4f19:c6de:9865) Inline
2025-10-20 00:31:03 +0200Inline(~inline@2a02:8071:57a1:1260:1ce3:efcb:ed4f:9e96) (Ping timeout: 244 seconds)
2025-10-20 00:32:25 +0200inline__(~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2025-10-20 00:33:30 +0200inline__(~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline
2025-10-20 00:34:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-20 00:35:39 +0200tromp(~textual@2001:1c00:3487:1b00:5da6:eb72:7bdc:37c8) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-10-20 00:37:19 +0200inline_(~inline@2a02:8071:57a1:1260:7925:4f19:c6de:9865) (Ping timeout: 246 seconds)
2025-10-20 00:41:36 +0200dolio(~dolio@130.44.140.168) (Quit: ZNC 1.9.1 - https://znc.in)
2025-10-20 00:43:28 +0200dolio(~dolio@130.44.140.168) dolio
2025-10-20 00:44:50 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 00:45:20 +0200inline__inline
2025-10-20 00:47:46 +0200dolio(~dolio@130.44.140.168) (Client Quit)
2025-10-20 00:48:24 +0200jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-10-20 00:49:01 +0200dolio(~dolio@130.44.140.168) dolio
2025-10-20 00:49:49 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 00:55:24 +0200hololeap(~quassel@user/hololeap) (Quit: Bye)
2025-10-20 00:56:07 +0200hololeap(~quassel@user/hololeap) hololeap
2025-10-20 01:00:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 01:02:23 +0200Ram-Z(Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) Ram-Z
2025-10-20 01:04:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-20 01:05:14 +0200Ram-Z_(~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 260 seconds)
2025-10-20 01:07:38 +0200mreh(~matthew@host86-146-25-125.range86-146.btcentralplus.com) (Ping timeout: 248 seconds)
2025-10-20 01:08:59 +0200qqe(~qqq@185.54.23.200) (Quit: Lost terminal)
2025-10-20 01:15:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 01:16:23 +0200chromoblob(~chromoblo@user/chromob1ot1c) (Remote host closed the connection)
2025-10-20 01:16:39 +0200chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2025-10-20 01:21:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 01:24:36 +0200ljdarj(~Thunderbi@user/ljdarj) (Quit: ljdarj)
2025-10-20 01:31:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 01:33:37 +0200peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 264 seconds)
2025-10-20 01:38:43 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-20 01:49:50 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 01:54:45 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-10-20 02:03:54 +0200craunts795335385(~craunts@136.158.7.194) (Read error: Connection reset by peer)
2025-10-20 02:04:10 +0200craunts795335385(~craunts@136.158.7.194)
2025-10-20 02:05:36 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 02:10:47 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-20 02:13:51 +0200machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 256 seconds)
2025-10-20 02:21:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 02:24:05 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2025-10-20 02:26:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-20 02:29:53 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-10-20 02:32:09 +0200weary-traveler(~user@user/user363627) user363627
2025-10-20 02:37:11 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 02:41:55 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-20 02:42:17 +0200otto_s(~user@p4ff274f9.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2025-10-20 02:44:18 +0200otto_s(~user@p5b044609.dip0.t-ipconnect.de)
2025-10-20 02:48:30 +0200werneta(~werneta@71.83.160.242) werneta
2025-10-20 02:50:28 +0200qqe(~qqq@185.54.23.200)
2025-10-20 02:50:56 +0200trickard(~trickard@cpe-57-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-20 02:51:08 +0200trickard_(~trickard@cpe-57-98-47-163.wireline.com.au)
2025-10-20 02:51:22 +0200simplystuart(~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Ping timeout: 246 seconds)
2025-10-20 02:52:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 02:53:50 +0200gustrb(~gustrb@191.243.134.87)
2025-10-20 02:55:15 +0200flipflops(~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 252 seconds)
2025-10-20 02:56:24 +0200flipflops(~cmo@2604:3d09:207f:8000::d1dc)
2025-10-20 02:56:25 +0200trickard_(~trickard@cpe-57-98-47-163.wireline.com.au) (Ping timeout: 264 seconds)
2025-10-20 02:59:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-20 03:01:23 +0200trickard_(~trickard@cpe-57-98-47-163.wireline.com.au)
2025-10-20 03:03:52 +0200flipflops(~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 260 seconds)
2025-10-20 03:09:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 03:10:50 +0200xff0x(~xff0x@2405:6580:b080:900:d8fa:98a4:1ba0:2054) (Ping timeout: 248 seconds)
2025-10-20 03:15:31 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-20 03:23:25 +0200inline(~inline@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2025-10-20 03:27:22 +0200acidjnk(~acidjnk@p200300d6e71719659d28c4899d9c5d95.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2025-10-20 03:27:32 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 03:32:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 03:41:54 +0200trickard_trickard
2025-10-20 03:43:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 03:48:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 03:49:58 +0200ttybitnik(~ttybitnik@user/wolper) (Quit: Fading out...)
2025-10-20 03:56:45 +0200weary-traveler(~user@user/user363627) (Quit: Konversation terminated!)
2025-10-20 03:57:01 +0200weary-traveler(~user@user/user363627) user363627
2025-10-20 03:59:07 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 04:03:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-20 04:04:48 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-10-20 04:08:09 +0200werneta(~werneta@71.83.160.242) (Quit: Lost terminal)
2025-10-20 04:10:32 +0200ephilalethes(~noumenon@113.51-175-156.customer.lyse.net) noumenon
2025-10-20 04:14:54 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 04:18:38 +0200jxv(~simulacru@2600:1700:5040:a200:846b:56ef:4da8:a13)
2025-10-20 04:21:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-20 04:23:05 +0200trickard(~trickard@cpe-57-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-20 04:23:18 +0200trickard_(~trickard@cpe-57-98-47-163.wireline.com.au)
2025-10-20 04:26:37 +0200jxv(~simulacru@2600:1700:5040:a200:846b:56ef:4da8:a13) (Quit: Textual IRC Client: www.textualapp.com)
2025-10-20 04:29:40 +0200peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-10-20 04:31:22 +0200td_(~td@i5387091E.versanet.de) (Ping timeout: 248 seconds)
2025-10-20 04:33:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 04:33:23 +0200td_(~td@i53870936.versanet.de) td_
2025-10-20 04:33:35 +0200trickard_trickard
2025-10-20 04:36:01 +0200anpad(~pandeyan@user/anpad) (Ping timeout: 264 seconds)
2025-10-20 04:36:37 +0200peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 264 seconds)
2025-10-20 04:38:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 04:48:47 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 04:51:41 +0200khumba(~khumba@user/khumba) khumba
2025-10-20 04:53:31 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-10-20 04:54:47 +0200annamalai(~annamalai@157.49.239.48) (Ping timeout: 256 seconds)
2025-10-20 05:04:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 05:07:54 +0200anpad(~pandeyan@user/anpad) anpad
2025-10-20 05:09:08 +0200khumba(~khumba@user/khumba) ()
2025-10-20 05:09:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-20 05:10:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 05:15:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-20 05:16:13 +0200anpad(~pandeyan@user/anpad) (Ping timeout: 264 seconds)
2025-10-20 05:17:33 +0200qqe(~qqq@185.54.23.200) (Quit: Lost terminal)
2025-10-20 05:24:34 +0200khumba(~khumba@user/khumba) khumba
2025-10-20 05:25:43 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2025-10-20 05:26:12 +0200poscat0x04(~poscat@user/poscat) poscat
2025-10-20 05:26:47 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 05:27:00 +0200img(~img@user/img) img
2025-10-20 05:27:09 +0200werneta(~werneta@71.83.160.242) werneta
2025-10-20 05:27:54 +0200poscat(~poscat@user/poscat) (Ping timeout: 248 seconds)
2025-10-20 05:31:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-10-20 05:40:05 +0200peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-10-20 05:42:35 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 05:47:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-10-20 05:48:50 +0200anpad(~pandeyan@user/anpad) anpad
2025-10-20 05:52:20 +0200aforemny(~aforemny@2001:9e8:6cc7:6800:bfb8:1818:7f09:9156) aforemny
2025-10-20 05:52:40 +0200aforemny_(~aforemny@2001:9e8:6cea:8700:cf12:fc7b:8ca1:78b9) (Ping timeout: 246 seconds)
2025-10-20 05:58:20 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 05:59:13 +0200tomboy64(~tomboy64@user/tomboy64) (Read error: Connection reset by peer)
2025-10-20 05:59:28 +0200tomboy64(~tomboy64@user/tomboy64) tomboy64
2025-10-20 06:05:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-20 06:06:56 +0200werneta(~werneta@71.83.160.242) (Quit: Lost terminal)
2025-10-20 06:09:43 +0200wickedjargon(~user@120.29.79.98) wickedjargon
2025-10-20 06:12:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 06:16:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-20 06:22:35 +0200synchromesh(~john@2406:5a00:2412:2c00:3da8:1103:8261:15b5) (Read error: Connection reset by peer)
2025-10-20 06:23:20 +0200synchromesh(~john@2406:5a00:2412:2c00:75ff:6dec:5332:48f7) synchromesh
2025-10-20 06:27:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 06:28:53 +0200annamalai(~annamalai@2409:4072:601a:bdd2::2602:e0ac) annamalai
2025-10-20 06:32:42 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-20 06:43:14 +0200michalz(~michalz@185.246.207.221)
2025-10-20 06:43:35 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 06:48:26 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-20 06:59:23 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 07:01:05 +0200rvalue-(~rvalue@about/hackers/rvalue) rvalue
2025-10-20 07:01:07 +0200jreicher(~user@user/jreicher) jreicher
2025-10-20 07:01:39 +0200rvalue(~rvalue@about/hackers/rvalue) (Ping timeout: 244 seconds)
2025-10-20 07:04:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-20 07:05:21 +0200halloy9957(~halloy995@ip72-208-127-103.ph.ph.cox.net)
2025-10-20 07:10:56 +0200rvalue(~rvalue@about/hackers/rvalue) rvalue
2025-10-20 07:11:55 +0200rvalue-(~rvalue@about/hackers/rvalue) (Ping timeout: 256 seconds)
2025-10-20 07:13:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 07:13:52 +0200infinity0(~infinity0@pwned.gg) (Ping timeout: 246 seconds)
2025-10-20 07:14:01 +0200Googulator(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 07:14:17 +0200Googulator(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 07:15:51 +0200Googulator31(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 07:15:55 +0200Googulator(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Client Quit)
2025-10-20 07:15:58 +0200takuan(~takuan@d8D86B9E9.access.telenet.be)
2025-10-20 07:17:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-20 07:19:48 +0200EvanR(~EvanR@user/evanr) (Ping timeout: 252 seconds)
2025-10-20 07:21:04 +0200khumba(~khumba@user/khumba) ()
2025-10-20 07:27:22 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 248 seconds)
2025-10-20 07:28:05 +0200notzmv(~umar@user/notzmv) notzmv
2025-10-20 07:28:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 07:34:36 +0200infinity0(~infinity0@pwned.gg) infinity0
2025-10-20 07:36:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 07:42:24 +0200jreicher(~user@user/jreicher) (Read error: Connection reset by peer)
2025-10-20 07:45:25 +0200jreicher(~user@user/jreicher) jreicher
2025-10-20 07:45:43 +0200Googulator31(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 07:45:49 +0200Googulator22(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 07:46:18 +0200ephilalethes(~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving)
2025-10-20 07:46:50 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 07:52:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 08:02:02 +0200Square(~Square4@user/square) Square
2025-10-20 08:02:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 08:05:27 +0200Square2(~Square@user/square) (Ping timeout: 260 seconds)
2025-10-20 08:05:37 +0200Googulator96(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 08:05:40 +0200Googulator22(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 08:07:49 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 08:14:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 08:18:55 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-10-20 08:22:16 +0200craunts795335385(~craunts@136.158.7.194) (Quit: The Lounge - https://thelounge.chat)
2025-10-20 08:29:50 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 08:31:36 +0200halloy9957(~halloy995@ip72-208-127-103.ph.ph.cox.net) (Quit: halloy9957)
2025-10-20 08:35:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-20 08:42:24 +0200Googulator96(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 08:42:42 +0200Googulator96(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 08:44:13 +0200JimL(~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2025-10-20 08:45:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 08:47:21 +0200JimL(~quassel@89.162.16.26) JimL
2025-10-20 08:48:37 +0200jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 264 seconds)
2025-10-20 08:51:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 08:53:00 +0200sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-10-20 08:56:29 +0200gmg(~user@user/gehmehgeh) gehmehgeh
2025-10-20 09:00:03 +0200caconym7478798(~caconym@user/caconym) (Quit: bye)
2025-10-20 09:00:47 +0200caconym7478798(~caconym@user/caconym) caconym
2025-10-20 09:01:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 09:06:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 09:13:50 +0200Guest57(~Guest57@95.214.217.190)
2025-10-20 09:13:52 +0200gustrb(~gustrb@191.243.134.87)
2025-10-20 09:14:45 +0200peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 252 seconds)
2025-10-20 09:15:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 09:15:13 +0200tromp(~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5)
2025-10-20 09:18:59 +0200kukimik(~kukimik@nat1.mga.com.pl)
2025-10-20 09:20:24 +0200kukimik(~kukimik@nat1.mga.com.pl) (Remote host closed the connection)
2025-10-20 09:21:37 +0200chele(~chele@user/chele) chele
2025-10-20 09:21:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-10-20 09:28:53 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-10-20 09:33:08 +0200EvanR(~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 +0200weary-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 +0200tabemann(~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 +0200tabemann(~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 +0200emmanuelux(~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 +0200srazkvt(~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 +0200Guest31(~Guest57@95.214.217.190)
2025-10-20 09:49:36 +0200Guest57(~Guest57@95.214.217.190) (Quit: Client closed)
2025-10-20 09:49:44 +0200Guest31(~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 +0200trickard(~trickard@cpe-57-98-47-163.wireline.com.au) (Ping timeout: 264 seconds)
2025-10-20 09:53:08 +0200trickard_(~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 +0200acidjnk(~acidjnk@p200300d6e7171945c42b348415052731.dip0.t-ipconnect.de) acidjnk
2025-10-20 10:05:00 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-20 10:05:53 +0200jreicher(~user@user/jreicher) (Ping timeout: 256 seconds)
2025-10-20 10:06:12 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 244 seconds)
2025-10-20 10:07:18 +0200img(~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 +0200img(~img@user/img) img
2025-10-20 10:10:37 +0200Googulator64(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 10:10:38 +0200Googulator96(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 10:17:46 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106)
2025-10-20 10:18:43 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106) (Client Quit)
2025-10-20 10:19:49 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106)
2025-10-20 10:19:53 +0200fp(~Thunderbi@2001:708:20:1406::10c5) fp
2025-10-20 10:20:41 +0200gustrb(~gustrb@191.243.134.87)
2025-10-20 10:22:19 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-10-20 10:29:26 +0200kubrat(~kubrat@149.62.205.212) kubrat
2025-10-20 10:30:16 +0200mzg_(mzg@abusers.hu) (Remote host closed the connection)
2025-10-20 10:30:40 +0200synchromesh(~john@2406:5a00:2412:2c00:75ff:6dec:5332:48f7) (Read error: Connection reset by peer)
2025-10-20 10:31:59 +0200synchromesh(~john@2406:5a00:2412:2c00:75ff:6dec:5332:48f7) synchromesh
2025-10-20 10:32:26 +0200chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 248 seconds)
2025-10-20 10:34:08 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-20 10:34:55 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106) (Quit: Client closed)
2025-10-20 10:37:37 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 265 seconds)
2025-10-20 10:39:09 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner
2025-10-20 10:39:44 +0200merijn(~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 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106)
2025-10-20 10:45:37 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-20 10:45:38 +0200Googulator64(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 10:45:49 +0200Googulator64(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 10:46:56 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 240 seconds)
2025-10-20 10:47:07 +0200wbrawner(~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 +0200merijn(~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 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-20 11:08:30 +0200fp(~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 256 seconds)
2025-10-20 11:12:26 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 248 seconds)
2025-10-20 11:21:26 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-10-20 11:23:16 +0200FirefoxDeHuk(~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 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-20 11:24:43 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106)
2025-10-20 11:32:27 +0200fp(~Thunderbi@130.233.70.140) fp
2025-10-20 11:33:01 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 264 seconds)
2025-10-20 11:40:15 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-20 11:43:39 +0200trickard_(~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-20 11:43:52 +0200trickard_(~trickard@cpe-53-98-47-163.wireline.com.au)
2025-10-20 11:47:59 +0200FirefoxDeHuk(~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 +0200mreh(~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 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106)
2025-10-20 11:53:34 +0200FirefoxDeHuk(~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 +0200FirefoxDeHuk(~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 +0200FirefoxDeHuk(~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 +0200srazkvt(~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 +0200SlackCoder(~SlackCode@208.26.91.234) (Remote host closed the connection)
2025-10-20 12:04:25 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 244 seconds)
2025-10-20 12:05:06 +0200jreicher(~user@user/jreicher) jreicher
2025-10-20 12:05:30 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-20 12:08:05 +0200mzg(mzg@abusers.hu)
2025-10-20 12:10:02 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 248 seconds)
2025-10-20 12:11:04 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-10-20 12:15:52 +0200trickard_trickard
2025-10-20 12:22:18 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2025-10-20 12:32:22 +0200Googulator64(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 12:32:37 +0200Googulator64(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 12:34:40 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-20 12:35:38 +0200trickard(~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-20 12:35:52 +0200trickard_(~trickard@cpe-53-98-47-163.wireline.com.au)
2025-10-20 12:56:06 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out)
2025-10-20 12:56:31 +0200Googulator64Googulator
2025-10-20 13:00:17 +0200chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2025-10-20 13:05:57 +0200qqe(~qqq@185.54.23.200)
2025-10-20 13:09:17 +0200weary-traveler(~user@user/user363627) user363627
2025-10-20 13:13:18 +0200xff0x(~xff0x@2405:6580:b080:900:6316:ba02:9166:40eb)
2025-10-20 13:13:58 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106)
2025-10-20 13:15:43 +0200Googulator87(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 13:15:43 +0200Googulator(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 13:21:54 +0200tromp(~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-10-20 13:22:00 +0200chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 245 seconds)
2025-10-20 13:22:19 +0200inline(~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) Inline
2025-10-20 13:22:38 +0200chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2025-10-20 13:24:55 +0200Googulator87Googulator
2025-10-20 13:25:59 +0200Googulator7(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 13:26:12 +0200Googulator(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 13:26:14 +0200Googulator7Googulator
2025-10-20 13:27:21 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106) (Quit: Client closed)
2025-10-20 13:30:44 +0200Lycurgus(~juan@user/Lycurgus) Lycurgus
2025-10-20 13:36:54 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds)
2025-10-20 13:37:06 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-10-20 13:37:31 +0200chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2025-10-20 13:37:53 +0200chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2025-10-20 13:37:59 +0200kubrat(~kubrat@149.62.205.212) (Ping timeout: 250 seconds)
2025-10-20 13:38:25 +0200Lord_of_Life_Lord_of_Life
2025-10-20 13:41:08 +0200srazkvt(~sarah@user/srazkvt) srazkvt
2025-10-20 13:52:55 +0200inline_(~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) Inline
2025-10-20 13:54:10 +0200inline__(~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) Inline
2025-10-20 13:55:19 +0200trickard_trickard
2025-10-20 13:56:01 +0200inline(~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) (Ping timeout: 244 seconds)
2025-10-20 13:56:20 +0200Lycurgus(~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
2025-10-20 13:57:56 +0200inline_(~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) (Ping timeout: 256 seconds)
2025-10-20 14:00:55 +0200kubrat(~kubrat@149.62.205.137)
2025-10-20 14:15:34 +0200Googulator(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 14:15:37 +0200Googulator54(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 14:15:40 +0200SlackCoder(~SlackCode@208.26.91.234) SlackCoder
2025-10-20 14:17:02 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-10-20 14:20:45 +0200Googulator74(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 14:21:01 +0200Googulator54(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 14:30:13 +0200Natch(~natch@c-92-34-15-120.bbcust.telenor.se) (Ping timeout: 244 seconds)
2025-10-20 14:35:42 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106)
2025-10-20 14:37:38 +0200tromp(~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5)
2025-10-20 14:40:10 +0200synchromesh(~john@2406:5a00:2412:2c00:75ff:6dec:5332:48f7) (Read error: Connection reset by peer)
2025-10-20 14:41:40 +0200synchromesh(~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 +0200trickard(~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-20 14:51:54 +0200trickard_(~trickard@cpe-53-98-47-163.wireline.com.au)
2025-10-20 14:55:28 +0200hsw_(~hsw@112-104-9-97.adsl.dynamic.seed.net.tw) (Remote host closed the connection)
2025-10-20 14:55:52 +0200hsw_(~hsw@112-104-9-97.adsl.dynamic.seed.net.tw) hsw
2025-10-20 14:56:42 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 260 seconds)
2025-10-20 14:56:57 +0200simplystuart(~simplystu@c-75-75-152-164.hsd1.pa.comcast.net)
2025-10-20 14:57:43 +0200divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2025-10-20 14:58:04 +0200divlamir(~divlamir@user/divlamir) divlamir
2025-10-20 15:01:36 +0200ttybitnik(~ttybitnik@user/wolper) ttybitnik
2025-10-20 15:12:40 +0200chexum_(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2025-10-20 15:12:58 +0200chexum(~quassel@gateway/tor-sasl/chexum) chexum
2025-10-20 15:16:22 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 272 seconds)
2025-10-20 15:16:28 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2025-10-20 15:16:49 +0200Square(~Square4@user/square) (Ping timeout: 264 seconds)
2025-10-20 15:20:38 +0200Googulator50(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 15:20:42 +0200Googulator74(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 15:21:17 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-10-20 15:23:34 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106) (Quit: Client closed)
2025-10-20 15:24:20 +0200FirefoxDeHuk59(~FirefoxDe@109.108.69.106)
2025-10-20 15:24:37 +0200FirefoxDeHuk59(~FirefoxDe@109.108.69.106) (Client Quit)
2025-10-20 15:25:58 +0200FirefoxDeHuk5(~FirefoxDe@109.108.69.106)
2025-10-20 15:26:15 +0200FirefoxDeHuk5(~FirefoxDe@109.108.69.106) (Client Quit)
2025-10-20 15:27:37 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 260 seconds)
2025-10-20 15:28:34 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106)
2025-10-20 15:28:52 +0200FirefoxDeHuk(~FirefoxDe@109.108.69.106) (Write error: Broken pipe)
2025-10-20 15:28:54 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner
2025-10-20 15:31:04 +0200FirefoxDeHuk65(~FirefoxDe@109.108.69.106)
2025-10-20 15:31:34 +0200Zemy(~Zemy@2600:100c:b0a4:2b52:2c62:6eff:fe24:bb14)
2025-10-20 15:31:34 +0200Zemy_(~Zemy@72.178.108.235) (Read error: Connection reset by peer)
2025-10-20 15:32:05 +0200Zemy_(~Zemy@72.178.108.235)
2025-10-20 15:36:22 +0200Zemy(~Zemy@2600:100c:b0a4:2b52:2c62:6eff:fe24:bb14) (Ping timeout: 260 seconds)
2025-10-20 15:37:32 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 260 seconds)
2025-10-20 15:37:36 +0200humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2025-10-20 15:39:57 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner
2025-10-20 15:40:33 +0200Pozyomka(~pyon@user/pyon) (Ping timeout: 250 seconds)
2025-10-20 15:42:38 +0200Pozyomka(~pyon@user/pyon) pyon
2025-10-20 15:43:54 +0200tt12310978324354(~tt1231@2603:6010:8700:4a81:a4f6:acff:fe95:3803) (Ping timeout: 248 seconds)
2025-10-20 15:44:25 +0200Zemy(~Zemy@2600:100c:b0a4:2b52:30cd:7ff:fe22:3d41)
2025-10-20 15:44:26 +0200Zemy_(~Zemy@72.178.108.235) (Read error: Connection reset by peer)
2025-10-20 15:44:49 +0200Zemy_(~Zemy@72.178.108.235)
2025-10-20 15:48:43 +0200Zemy(~Zemy@2600:100c:b0a4:2b52:30cd:7ff:fe22:3d41) (Ping timeout: 246 seconds)
2025-10-20 15:52:16 +0200SlackCoder(~SlackCode@208.26.91.234) (Ping timeout: 244 seconds)
2025-10-20 15:52:52 +0200myxos(~myxos@65.25.110.175) myxokephale
2025-10-20 16:02:34 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2025-10-20 16:04:36 +0200srazkvt(~sarah@user/srazkvt) (Quit: Konversation terminated!)
2025-10-20 16:07:31 +0200FirefoxDeHuk65(~FirefoxDe@109.108.69.106) (Quit: Client closed)
2025-10-20 16:22:09 +0200fp(~Thunderbi@130.233.70.140) (Ping timeout: 256 seconds)
2025-10-20 16:26:13 +0200fp(~Thunderbi@130.233.55.40) fp
2025-10-20 16:27:32 +0200fp(~Thunderbi@130.233.55.40) (Remote host closed the connection)
2025-10-20 16:28:32 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2025-10-20 16:30:47 +0200fp(~Thunderbi@wireless-86-50-140-208.open.aalto.fi) fp
2025-10-20 16:31:41 +0200inline__Inline
2025-10-20 16:33:10 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 246 seconds)
2025-10-20 16:35:02 +0200tromp(~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-10-20 16:35:47 +0200Googulator52(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 16:35:48 +0200Googulator50(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 16:35:53 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner
2025-10-20 16:37:49 +0200fp(~Thunderbi@wireless-86-50-140-208.open.aalto.fi) (Ping timeout: 264 seconds)
2025-10-20 16:40:35 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-10-20 16:45:37 +0200trickard_trickard
2025-10-20 17:00:37 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 264 seconds)
2025-10-20 17:01:40 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner
2025-10-20 17:07:00 +0200tromp(~textual@2001:1c00:3487:1b00:242b:79a0:e1f9:7ea5)
2025-10-20 17:09:24 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 252 seconds)
2025-10-20 17:10:17 +0200wickedjargon(~user@120.29.79.98) (Ping timeout: 260 seconds)
2025-10-20 17:13:01 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner
2025-10-20 17:16:03 +0200ttybitnik(~ttybitnik@user/wolper) (Quit: Fading out...)
2025-10-20 17:19:43 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 240 seconds)
2025-10-20 17:22:02 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner
2025-10-20 17:25:42 +0200qqe(~qqq@185.54.23.200) (Quit: Lost terminal)
2025-10-20 17:28:40 +0200machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2025-10-20 17:28:59 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 244 seconds)
2025-10-20 17:29:18 +0200flipflops(~cmo@2604:3d09:207f:8000::d1dc)
2025-10-20 17:30:09 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner
2025-10-20 17:31:19 +0200trickard(~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-20 17:31:33 +0200trickard_(~trickard@cpe-53-98-47-163.wireline.com.au)
2025-10-20 17:33:10 +0200Googulator52Googulator
2025-10-20 17:33:39 +0200chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 250 seconds)
2025-10-20 17:34:03 +0200chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2025-10-20 17:34:44 +0200humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2025-10-20 17:37:48 +0200inline_(~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) Inline
2025-10-20 17:37:56 +0200kuribas(~user@2a02-1810-2825-6000-f3eb-4fa2-cbb5-436b.ip6.access.telenet.be) kuribas
2025-10-20 17:41:12 +0200Inline(~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) (Ping timeout: 256 seconds)
2025-10-20 17:47:35 +0200ladyfridaymrmonday
2025-10-20 17:55:44 +0200chele(~chele@user/chele) (Remote host closed the connection)
2025-10-20 18:01:26 +0200inline_(~inline@2a02:8071:57a1:1260:38c6:b31e:f98a:452e) (Ping timeout: 244 seconds)
2025-10-20 18:05:34 +0200flipflops(~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 246 seconds)
2025-10-20 18:07:16 +0200AeIo(~AeIo@109.108.69.106)
2025-10-20 18:08:04 +0200AeIo(~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 +0200Googulator33(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 18:20:45 +0200Googulator(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 18:21:37 +0200td_(~td@i53870936.versanet.de) (Ping timeout: 264 seconds)
2025-10-20 18:21:48 +0200chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2025-10-20 18:22:17 +0200merijn(~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 +0200kuribas(~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 +0200td_(~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 +0200jmcantrell(~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 +0200weary-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 +0200turlando(~turlando@user/turlando) turlando
2025-10-20 18:45:26 +0200chromoblob(~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 +0200Googulator30(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 18:45:45 +0200Googulator33(~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 +0200kimiamania99(~92460e22@user/kimiamania) (Quit: PegeLinux)
2025-10-20 18:50:41 +0200flipflops(~cmo@2604:3d09:207f:8000::d1dc)
2025-10-20 18:59:11 +0200tromp(~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 +0200kubrat(~kubrat@149.62.205.137) (Quit: Client closed)
2025-10-20 19:07:06 +0200flipflops(~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 +0200Googulator30(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 19:10:42 +0200Googulator67(~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 +0200wootehfoot(~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 +0200kubrat(~kubrat@149.62.205.137)
2025-10-20 19:18:12 +0200qqe(~qqq@185.54.23.200)
2025-10-20 19:20:23 +0200kubrat(~kubrat@149.62.205.137) (Client Quit)
2025-10-20 19:31:05 +0200mastarija(~mastarija@89-164-108-176.dsl.iskon.hr) mastarija
2025-10-20 19:31:22 +0200tromp(~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 +0200ljdarj(~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 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 264 seconds)
2025-10-20 19:47:33 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) wbrawner
2025-10-20 19:53:17 +0200ephilalethes(~noumenon@113.51-175-156.customer.lyse.net) noumenon
2025-10-20 19:53:26 +0200ephilalethes(~noumenon@113.51-175-156.customer.lyse.net) (Remote host closed the connection)
2025-10-20 19:55:04 +0200flipflops(~cmo@2604:3d09:207f:8000::d1dc)
2025-10-20 20:05:43 +0200Googulator67(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 20:05:44 +0200Googulator7(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 20:09:35 +0200Natch(~natch@c-92-34-15-120.bbcust.telenor.se)
2025-10-20 20:10:54 +0200flipflops(~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 252 seconds)
2025-10-20 20:11:44 +0200yabobay(~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 +0200tabaqui(~tabaqui@167.71.80.236) (Ping timeout: 260 seconds)
2025-10-20 20:19:06 +0200wbrawner(~wbrawner@static.56.224.132.142.clients.your-server.de) (Ping timeout: 248 seconds)
2025-10-20 20:21:11 +0200wbrawner(~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 +0200Frostillicus(~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 +0200Lycurgus(~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 +0200target_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 +0200Googulator7(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 20:30:40 +0200Googulator7(~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 +0200tabaqui(~tabaqui@167.71.80.236) tabaqui
2025-10-20 20:34:35 +0200rvalue-(~rvalue@about/hackers/rvalue) rvalue
2025-10-20 20:35:01 +0200rvalue(~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 +0200gustrb(~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 +0200peterbecich(~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 +0200rvalue-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 +0200jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 240 seconds)
2025-10-20 20:45:16 +0200yabobay(~pizza@2a02:85f:fcd5:1601:439e:d9b3:6a5d:d567) (Konversation terminated!)
2025-10-20 20:46:00 +0200Lycurgus(~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 +0200SlackCoder(~SlackCode@208.26.91.234) SlackCoder
2025-10-20 20:51:10 +0200trickard_(~trickard@cpe-53-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-20 20:51:23 +0200trickard_(~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 +0200peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 246 seconds)
2025-10-20 21:00:01 +0200caconym7478798(~caconym@user/caconym) (Quit: bye)
2025-10-20 21:00:42 +0200caconym7478798(~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 +0200gustrb(~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 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 252 seconds)
2025-10-20 21:09:43 +0200merijn(~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 +0200trickard_(~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 +0200trickard_(~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 +0200qqe(~qqq@185.54.23.200) (Quit: Lost terminal)
2025-10-20 21:16:19 +0200merijn(~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 +0200tccq(~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 +0200trickard_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 +0200Googulator8(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 21:26:03 +0200Googulator7(~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 +0200merijn(~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 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-10-20 21:34:45 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2025-10-20 21:34:54 +0200gustrb(~gustrb@191.243.134.87)
2025-10-20 21:39:28 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 244 seconds)
2025-10-20 21:40:06 +0200mastarija(~mastarija@89-164-108-176.dsl.iskon.hr) (Quit: Client closed)
2025-10-20 21:43:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 21:48:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-20 21:49:41 +0200AlexZenon(~alzenon@85.174.182.163) (Ping timeout: 256 seconds)
2025-10-20 21:53:29 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2025-10-20 21:54:22 +0200Googulator8(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 21:54:37 +0200Googulator8(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 21:59:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 22:04:52 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-20 22:08:28 +0200gustrb(~gustrb@191.243.134.87)
2025-10-20 22:10:02 +0200ephilalethes(~noumenon@113.51-175-156.customer.lyse.net) noumenon
2025-10-20 22:13:49 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 264 seconds)
2025-10-20 22:15:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 22:15:27 +0200jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-10-20 22:15:37 +0200Googulator8(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 22:15:38 +0200Googulator52(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 22:18:41 +0200takuan(~takuan@d8D86B9E9.access.telenet.be) (Remote host closed the connection)
2025-10-20 22:20:08 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-10-20 22:21:13 +0200gustrb(~gustrb@191.243.134.87)
2025-10-20 22:22:39 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2025-10-20 22:26:26 +0200peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-10-20 22:26:56 +0200AlexZenon(~alzenon@85.174.182.163)
2025-10-20 22:27:01 +0200Frostillicus(~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 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 256 seconds)
2025-10-20 22:31:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 22:35:34 +0200Googulator52(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 22:35:37 +0200Googulator47(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 22:35:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-10-20 22:37:37 +0200Square(~Square4@user/square) Square
2025-10-20 22:38:32 +0200Square2(~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 +0200Square(~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 +0200merijn(~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 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 22:55:25 +0200peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 256 seconds)
2025-10-20 22:59:16 +0200ttybitnik(~ttybitnik@user/wolper) ttybitnik
2025-10-20 23:04:53 +0200merijn(~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 +0200lisq_(~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 +0200lisq(~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 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-20 23:10:09 +0200michalz(~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 +0200gustrb(~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.