2025/10/14

2025-10-14 00:00:25 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2025-10-14 00:01:00 +0200ystael_(~ystael@user/ystael) (Ping timeout: 256 seconds)
2025-10-14 00:03:19 +0200Googulator30(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 00:06:59 +0200Googulator10(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Ping timeout: 250 seconds)
2025-10-14 00:07:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 00:09:25 +0200tromp(~textual@2001:1c00:3487:1b00:f86b:2618:bf3:3b08) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-10-14 00:11:30 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 256 seconds)
2025-10-14 00:12:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-14 00:15:38 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2025-10-14 00:16:33 +0200ec(~ec@gateway/tor-sasl/ec) ec
2025-10-14 00:18:17 +0200jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 256 seconds)
2025-10-14 00:20:29 +0200jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-10-14 00:23:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 00:30:11 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 00:33:46 +0200Square3(~Square@user/square) Square
2025-10-14 00:33:55 +0200pera(~pera@user/pera) (Quit: leaving)
2025-10-14 00:37:14 +0200Square(~Square4@user/square) (Ping timeout: 248 seconds)
2025-10-14 00:41:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 00:45:35 +0200peterbecich(~Thunderbi@syn-172-222-148-214.res.spectrum.com) peterbecich
2025-10-14 00:45:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-14 00:46:18 +0200tomku(~tomku@user/tomku) (Ping timeout: 248 seconds)
2025-10-14 00:46:51 +0200machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2025-10-14 00:47:53 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
2025-10-14 00:48:20 +0200tomku(~tomku@user/tomku) tomku
2025-10-14 00:51:02 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-10-14 00:57:04 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 01:01:56 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 01:03:32 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-10-14 01:11:00 +0200Googulator30(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 01:11:02 +0200Googulator27(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 01:12:51 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 01:13:34 +0200emmanuelux(~emmanuelu@user/emmanuelux) emmanuelux
2025-10-14 01:17:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-14 01:22:22 +0200Googulator5(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 01:25:43 +0200peterbecich(~Thunderbi@syn-172-222-148-214.res.spectrum.com) (Ping timeout: 256 seconds)
2025-10-14 01:25:51 +0200Googulator27(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Ping timeout: 250 seconds)
2025-10-14 01:27:05 +0200machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Quit: Lost terminal)
2025-10-14 01:30:11 +0200jmcantrell(~weechat@user/jmcantrell) (Quit: WeeChat 4.7.1)
2025-10-14 01:31:07 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 01:35:55 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 01:40:37 +0200Googulator51(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 01:40:43 +0200Googulator5(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 01:41:14 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) (Server closed connection)
2025-10-14 01:41:26 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) Adeon
2025-10-14 01:42:12 +0200jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-10-14 01:46:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 01:48:42 +0200Tuplanolla(~Tuplanoll@91-159-187-167.elisa-laajakaista.fi) (Quit: Leaving.)
2025-10-14 01:49:21 +0200jmcantrell(~weechat@user/jmcantrell) (Quit: WeeChat 4.7.1)
2025-10-14 01:50:01 +0200 <dcpagan> Codensity is missing a MonadError instance.
2025-10-14 01:50:12 +0200 <dcpagan> I had to roll one up with this: "catchError m k = lift $ catchError (lowerCodensity m) (lowerCodensity . k)"
2025-10-14 01:51:36 +0200 <dcpagan> Also, "shift" is defined as "shift f = Codensity (lowerCodensity . f)". I should look more into delimited continuations and their applications in exception-handling.
2025-10-14 01:51:47 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 01:53:07 +0200machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2025-10-14 02:02:18 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 02:07:55 +0200bgg(~bgg@2a01:e0a:819:1510:438b:91ce:16bb:429f)
2025-10-14 02:09:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-10-14 02:17:27 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-10-14 02:18:13 +0200inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline
2025-10-14 02:20:20 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 02:25:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 02:26:02 +0200acidjnk(~acidjnk@p200300d6e7171943fcd8740620ad93e7.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2025-10-14 02:29:59 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-14 02:31:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 02:32:31 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au)
2025-10-14 02:33:05 +0200califax(~califax@user/califx) (Remote host closed the connection)
2025-10-14 02:35:18 +0200califax(~califax@user/califx) califx
2025-10-14 02:35:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 02:36:43 +0200ttybitnik(~ttybitnik@user/wolper) (Quit: Fading out...)
2025-10-14 02:45:40 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au) (Ping timeout: 246 seconds)
2025-10-14 02:46:04 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au)
2025-10-14 02:47:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 02:48:28 +0200otto_s(~user@p4ff2701e.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2025-10-14 02:50:19 +0200otto_s(~user@p4ff27382.dip0.t-ipconnect.de)
2025-10-14 02:50:55 +0200xff0x(~xff0x@2405:6580:b080:900:f3f6:c4a2:4d90:7f3d) (Ping timeout: 246 seconds)
2025-10-14 02:51:53 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-10-14 02:59:28 +0200Square(~Square4@user/square) Square
2025-10-14 03:00:22 +0200vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
2025-10-14 03:02:07 +0200Square3(~Square@user/square) (Ping timeout: 246 seconds)
2025-10-14 03:02:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 03:05:42 +0200Googulator67(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 03:06:11 +0200Googulator51(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 03:07:01 +0200vetkat(~vetkat@user/vetkat) (Ping timeout: 246 seconds)
2025-10-14 03:07:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-14 03:08:08 +0200vetkat(~vetkat@user/vetkat) vetkat
2025-10-14 03:11:42 +0200machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 256 seconds)
2025-10-14 03:18:11 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 03:23:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 03:28:08 +0200Dhark8(~Shark8@c-174-56-102-109.hsd1.nm.comcast.net)
2025-10-14 03:29:30 +0200finsternis(~X@23.226.237.192) finsternis
2025-10-14 03:31:06 +0200Shark8(~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) (Ping timeout: 248 seconds)
2025-10-14 03:33:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 03:35:41 +0200Googulator67(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 03:35:42 +0200Googulator39(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 03:38:53 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 03:39:56 +0200Axman6(~Axman6@user/axman6) Axman6
2025-10-14 03:49:45 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 03:51:17 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-10-14 03:56:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 03:57:47 +0200peterbecich(~Thunderbi@syn-172-222-148-214.res.spectrum.com) peterbecich
2025-10-14 03:57:59 +0200jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-10-14 04:00:56 +0200trickard_trickard
2025-10-14 04:07:45 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 04:12:53 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 04:19:38 +0200haltsolver(~cmo@2604:3d09:207f:8000::d1dc)
2025-10-14 04:20:51 +0200Googulator39(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 04:20:51 +0200Googulator47(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 04:21:14 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) (Server closed connection)
2025-10-14 04:21:26 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) Adeon
2025-10-14 04:23:32 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 04:24:14 +0200haltsolver(~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 256 seconds)
2025-10-14 04:28:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 04:32:07 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
2025-10-14 04:36:07 +0200td_(~td@i53870910.versanet.de) (Ping timeout: 256 seconds)
2025-10-14 04:37:54 +0200td_(~td@i53870911.versanet.de) td_
2025-10-14 04:39:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 04:44:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 04:47:26 +0200califax_(~califax@user/califx) califx
2025-10-14 04:48:10 +0200califax(~califax@user/califx) (Ping timeout: 272 seconds)
2025-10-14 04:48:39 +0200califax_califax
2025-10-14 04:51:59 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2025-10-14 04:54:28 +0200peterbecich(~Thunderbi@syn-172-222-148-214.res.spectrum.com) (Ping timeout: 246 seconds)
2025-10-14 04:55:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 04:56:31 +0200jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 256 seconds)
2025-10-14 04:57:39 +0200humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2025-10-14 05:00:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-14 05:10:53 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 05:14:12 +0200Square(~Square4@user/square) (Ping timeout: 260 seconds)
2025-10-14 05:17:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-14 05:18:16 +0200annamalai(~annamalai@2409:4042:4e3c:ee1e::9e4a:2910) annamalai
2025-10-14 05:19:19 +0200inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2025-10-14 05:28:56 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 05:30:21 +0200jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-10-14 05:33:55 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 05:44:43 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 05:49:47 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-14 06:00:12 +0200aforemny(~aforemny@2001:9e8:6cd9:6800:96c8:2246:a5e7:93e3) aforemny
2025-10-14 06:00:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 06:01:41 +0200aforemny_(~aforemny@i59F4C4D3.versanet.de) (Ping timeout: 256 seconds)
2025-10-14 06:05:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 06:08:49 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 06:13:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-14 06:19:36 +0200 <jackdk> Some libraries use MonadFail as an error-reporting mechanism, but I think this is a historical error. These days I'd only use MonadFail to handle pattern-match failures in do expressions
2025-10-14 06:20:37 +0200Googulator1(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 06:20:51 +0200Googulator47(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 06:24:32 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 06:25:21 +0200craunts79533538(~craunts@136.158.7.194) (Quit: The Lounge - https://thelounge.chat)
2025-10-14 06:28:01 +0200craunts79533538(~craunts@136.158.7.194)
2025-10-14 06:29:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 06:30:31 +0200peterbecich(~Thunderbi@syn-172-222-148-214.res.spectrum.com) peterbecich
2025-10-14 06:33:34 +0200werneta(~werneta@syn-071-083-160-242.res.spectrum.com) werneta
2025-10-14 06:40:20 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 06:42:20 +0200rvalue-(~rvalue@about/hackers/rvalue) rvalue
2025-10-14 06:42:21 +0200rvalue-(~rvalue@about/hackers/rvalue) (Excess Flood)
2025-10-14 06:42:53 +0200rvalue-(~rvalue@about/hackers/rvalue) rvalue
2025-10-14 06:42:54 +0200rvalue-(~rvalue@about/hackers/rvalue) (Excess Flood)
2025-10-14 06:43:13 +0200rvalue(~rvalue@about/hackers/rvalue) (Ping timeout: 264 seconds)
2025-10-14 06:45:20 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 06:46:11 +0200rvalue(~rvalue@about/hackers/rvalue) rvalue
2025-10-14 06:46:12 +0200rvalue(~rvalue@about/hackers/rvalue) (Excess Flood)
2025-10-14 06:49:31 +0200rvalue(~rvalue@about/hackers/rvalue) rvalue
2025-10-14 06:49:36 +0200rvalue(~rvalue@about/hackers/rvalue) (Excess Flood)
2025-10-14 06:50:02 +0200rvalue(~rvalue@about/hackers/rvalue) rvalue
2025-10-14 06:50:03 +0200rvalue(~rvalue@about/hackers/rvalue) (Excess Flood)
2025-10-14 06:50:37 +0200Googulator1(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 06:50:40 +0200Googulator97(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 06:56:07 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 06:56:22 +0200annamalai(~annamalai@2409:4042:4e3c:ee1e::9e4a:2910) (Remote host closed the connection)
2025-10-14 06:57:02 +0200annamalai(~annamalai@157.32.210.114) annamalai
2025-10-14 06:57:30 +0200michalz(~michalz@185.246.207.221)
2025-10-14 07:02:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-14 07:02:54 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) (Server closed connection)
2025-10-14 07:03:06 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) Adeon
2025-10-14 07:06:08 +0200craunts79533538(~craunts@136.158.7.194) (Quit: The Lounge - https://thelounge.chat)
2025-10-14 07:09:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 07:13:56 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
2025-10-14 07:14:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-14 07:16:54 +0200synchromesh(~john@2406:5a00:2412:2c00:3507:235a:4a6c:ccc6) (Read error: Connection reset by peer)
2025-10-14 07:17:07 +0200takuan(~takuan@d8D86B9E9.access.telenet.be)
2025-10-14 07:18:03 +0200synchromesh(~john@2406:5a00:2412:2c00:6c29:d20b:9891:7dea) synchromesh
2025-10-14 07:25:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 07:25:24 +0200Googulator97(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 07:25:36 +0200Googulator97(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 07:30:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 07:31:56 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-10-14 07:34:46 +0200poscat(~poscat@user/poscat) poscat
2025-10-14 07:37:21 +0200jmcantrell(~weechat@user/jmcantrell) (Quit: WeeChat 4.7.1)
2025-10-14 07:41:04 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 07:45:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-14 07:50:13 +0200 <dminuoso> jackdk: Regarding botan bindings, I think any approach focusing on native bindings to a cryptographic library is more healthy both on on a security perspective as well as future proofing.
2025-10-14 07:50:20 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-10-14 07:51:02 +0200 <dminuoso> Especially since the crypton(ite) situation demonstrates, that even *if* we have some reliable cryptographic implementation it is dependent on probably just a single person. Having an ecosystem dependent on a bus-factor of 1 is just not healthy for the rest of hackage.
2025-10-14 07:52:05 +0200 <dminuoso> Not entirely sure if your comment was hinting at paying the botan person to work on crypton instead for a while.
2025-10-14 07:54:24 +0200 <jackdk> dminuoso: I agree with what you have written. I think binding a trusted native implementation is safer in the long run, and I am hopeful we can move the ecosystem onto something like botan one day
2025-10-14 07:55:12 +0200 <jackdk> And to be clear, I do not think paying the botan person to shift to crypton would be a good idea
2025-10-14 07:57:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 08:00:28 +0200peterbecich(~Thunderbi@syn-172-222-148-214.res.spectrum.com) (Ping timeout: 260 seconds)
2025-10-14 08:02:23 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 08:10:20 +0200itaipu(~itaipu@168.121.97.28) (Ping timeout: 256 seconds)
2025-10-14 08:10:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 08:14:55 +0200jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-10-14 08:15:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-14 08:26:31 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 08:31:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-14 08:42:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 08:49:26 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 08:53:43 +0200jmcantrell(~weechat@user/jmcantrell) (Quit: WeeChat 4.7.1)
2025-10-14 09:00:01 +0200caconym7478798(~caconym@user/caconym) (Quit: bye)
2025-10-14 09:00:21 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 09:00:41 +0200caconym7478798(~caconym@user/caconym) caconym
2025-10-14 09:04:37 +0200werneta(~werneta@syn-071-083-160-242.res.spectrum.com) (Ping timeout: 260 seconds)
2025-10-14 09:05:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-10-14 09:11:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 09:14:36 +0200itaipu(~itaipu@168.121.97.28) itaipu
2025-10-14 09:16:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-14 09:17:59 +0200craunts79533538(~craunts@136.158.7.194)
2025-10-14 09:19:43 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-10-14 09:26:17 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-10-14 09:27:57 +0200ByronJohnson(~bairyn@MAIL.DIGITALKINGDOM.ORG) (Ping timeout: 260 seconds)
2025-10-14 09:29:17 +0200ByronJohnson(~bairyn@MAIL.DIGITALKINGDOM.ORG) ByronJohnson
2025-10-14 09:38:44 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) (Server closed connection)
2025-10-14 09:38:56 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) Adeon
2025-10-14 09:40:26 +0200ft(~ft@p4fc2a207.dip0.t-ipconnect.de) (Quit: leaving)
2025-10-14 09:52:27 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 260 seconds)
2025-10-14 09:55:20 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de) (Ping timeout: 245 seconds)
2025-10-14 09:56:28 +0200sshine(~simon@dao.mechanicus.xyz) (Ping timeout: 265 seconds)
2025-10-14 09:56:34 +0200tomsmeding(~tomsmedin@user/tomsmeding) (Ping timeout: 256 seconds)
2025-10-14 09:58:54 +0200Googulator97Googulator
2025-10-14 09:59:20 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-14 09:59:39 +0200humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2025-10-14 10:02:44 +0200tomsmeding(~tomsmedin@user/tomsmeding) tomsmeding
2025-10-14 10:03:05 +0200sshine(~simon@dao.mechanicus.xyz) sshine
2025-10-14 10:05:36 +0200gustrb(~gustrb@191.243.134.87)
2025-10-14 10:08:30 +0200wz1000(~zubin@static.11.113.47.78.clients.your-server.de)
2025-10-14 10:10:34 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 248 seconds)
2025-10-14 10:14:37 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 10:14:51 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 10:21:32 +0200adig(~adi@86.123.72.40) adig
2025-10-14 10:21:38 +0200comerijn(~merijn@77.242.116.146) merijn
2025-10-14 10:21:42 +0200adig(~adi@86.123.72.40) ()
2025-10-14 10:22:40 +0200fp(~Thunderbi@2001:708:20:1406::10c5) fp
2025-10-14 10:24:38 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-10-14 10:27:51 +0200gustrb(~gustrb@191.243.134.87)
2025-10-14 10:33:01 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 264 seconds)
2025-10-14 10:33:49 +0200sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-10-14 10:35:38 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 10:35:42 +0200Googulator66(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 10:37:47 +0200gustrb(~gustrb@191.243.134.87)
2025-10-14 10:39:01 +0200comerijn(~merijn@77.242.116.146) (Ping timeout: 264 seconds)
2025-10-14 10:40:42 +0200chele(~chele@user/chele) chele
2025-10-14 10:42:52 +0200Googulator66Googulator
2025-10-14 10:44:30 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-14 10:44:37 +0200acidjnk(~acidjnk@p200300d6e71719931c47ad226c4c8e20.dip0.t-ipconnect.de) acidjnk
2025-10-14 10:45:01 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 256 seconds)
2025-10-14 10:48:32 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-10-14 10:49:22 +0200gustrb(~gustrb@191.243.134.87)
2025-10-14 10:50:45 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 245 seconds)
2025-10-14 10:57:14 +0200adig(~adi@86.123.72.40) adig
2025-10-14 10:57:22 +0200adig(~adi@86.123.72.40) ()
2025-10-14 11:02:51 +0200kuribas(~user@2a02-1810-2825-6000-b5ac-98ee-b19a-ab1f.ip6.access.telenet.be) kuribas
2025-10-14 11:04:18 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-14 11:05:43 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 11:05:47 +0200Googulator56(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 11:05:55 +0200Googulator56Googulator
2025-10-14 11:07:58 +0200bgamari(~bgamari@64.223.225.237) (Ping timeout: 256 seconds)
2025-10-14 11:11:25 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 264 seconds)
2025-10-14 11:18:39 +0200OWS(~Shark8@c-174-56-102-109.hsd1.nm.comcast.net)
2025-10-14 11:19:51 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-14 11:20:25 +0200bgamari(~bgamari@64.223.200.137)
2025-10-14 11:21:51 +0200Dhark8(~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) (Ping timeout: 256 seconds)
2025-10-14 11:24:58 +0200mreh(~matthew@host86-146-25-125.range86-146.btcentralplus.com) mreh
2025-10-14 11:27:14 +0200 <mreh> Is there a Semigroup instance for Map that is based on `unionWith (<>)` before I implement my own? I can't find one already.
2025-10-14 11:28:05 +0200bgamari(~bgamari@64.223.200.137) (Ping timeout: 256 seconds)
2025-10-14 11:28:20 +0200 <mreh> instance (Semigroup a, Ord k) => Semigroup (MergeMap k a) where MergeMap m <> MergeMap n = MergeMap $ unionWith (<>) m n
2025-10-14 11:28:29 +0200 <mreh> seems to fit the bill for what I'm doing
2025-10-14 11:28:43 +0200 <merijn> mreh: There is one, but it's inconvenient to use
2025-10-14 11:28:56 +0200 <mreh> merijn: oh?
2025-10-14 11:29:19 +0200 <merijn> I once tried to start a crusade to get the (imo more sensible) monoidal Map in containers, but no success
2025-10-14 11:30:01 +0200 <mreh> merijn: intuitively, it feels like the right default
2025-10-14 11:30:05 +0200 <merijn> mreh: There's like 3 or 4 libraries on Hackage that have monoidal map
2025-10-14 11:30:08 +0200 <tomsmeding> there are various packages on hackage that implement a monoidal map
2025-10-14 11:30:10 +0200 <tomsmeding> ^
2025-10-14 11:30:22 +0200 <merijn> In practice I tend to just do `unionWith (<>)` since it's more convenient
2025-10-14 11:30:51 +0200 <merijn> But every single time I want to `foldMap` a `Map` I am once again confronted with the default monoid of Map being shite >.<
2025-10-14 11:33:20 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 11:34:11 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 11:35:02 +0200bgamari(~bgamari@64.223.200.74)
2025-10-14 11:37:40 +0200 <mreh> oh yeah, it's too early, my eyes glazed over when reading Data.MonoidMap
2025-10-14 11:38:12 +0200 <mreh> v interesting how get is total when a is a Moniod
2025-10-14 11:46:48 +0200califax(~califax@user/califx) (Ping timeout: 272 seconds)
2025-10-14 11:51:00 +0200notzmv(~umar@user/notzmv) (Read error: Connection reset by peer)
2025-10-14 11:52:53 +0200 <dminuoso> merijn: Honestly I think much of Haskell typeclasses would be far more usable if we had an ergonomic way of just picking/swapping out instances other than newtype wrappers.
2025-10-14 11:53:24 +0200 <dminuoso> And yes, we'd give up guarantees on coherence that apply to some very obscure usecases...
2025-10-14 11:54:15 +0200mochie(~mochie@user/mochie) mochie
2025-10-14 11:54:20 +0200 <merijn> dminuoso: Hard disagree
2025-10-14 11:54:44 +0200 <merijn> I've been doing Scala for the past 2 years and the fact that implicit's let you do that is a giant nightmare
2025-10-14 11:56:00 +0200 <dminuoso> Having all these newtypes with clear bias about what the author thought should be "the authoritative behavior for typeclass XYZ" is just annoying.
2025-10-14 11:56:09 +0200dhil(~dhil@5.151.29.137) dhil
2025-10-14 11:56:26 +0200 <dminuoso> Some libraries are more honest like `time` where you just dont get Eq on some newtypes because there's two equally good possibilities.
2025-10-14 11:58:06 +0200califax(~califax@user/califx) califx
2025-10-14 11:58:24 +0200 <dminuoso> merijn: I think it may be a tooling problem in scala if its unclear what implicit is in scope right now.
2025-10-14 12:00:29 +0200 <merijn> My main tooling problem is sbt. I'd kill for cabal's speed xD
2025-10-14 12:06:04 +0200 <haskellbridge> <Morj> At least with newtypes unlike in rust you don't have problems that "fn(&MyType) -> &MyNewtype" is impossible to write
2025-10-14 12:06:57 +0200mochie(~mochie@user/mochie) ()
2025-10-14 12:08:27 +0200 <haskellbridge> <Morj> I find that where I use newtypes for their instances, it's usually not a bad ergonomic to write. Like "getProduct . foldMap Product"
2025-10-14 12:09:16 +0200 <haskellbridge> <Morj> Would be cool if there was a combinator like "foldMap coerce" so that I only had to write the newtype name once
2025-10-14 12:09:18 +0200 <mreh> shouldn't you use coerce and type applications in that case?
2025-10-14 12:09:18 +0200__monty__(~toonn@user/toonn) toonn
2025-10-14 12:09:50 +0200 <haskellbridge> <Morj> I like being explicit
2025-10-14 12:09:55 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 245 seconds)
2025-10-14 12:09:58 +0200 <haskellbridge> <Morj> Also is coerce in microhs? ;-)
2025-10-14 12:10:26 +0200 <mreh> ¯\_(ツ)_/¯
2025-10-14 12:10:52 +0200 <mreh> are type applications?
2025-10-14 12:11:01 +0200 <haskellbridge> <Morj> They at least are there
2025-10-14 12:12:21 +0200divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2025-10-14 12:12:45 +0200divlamir(~divlamir@user/divlamir) divlamir
2025-10-14 12:14:34 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) (Server closed connection)
2025-10-14 12:14:46 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) Adeon
2025-10-14 12:15:07 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 256 seconds)
2025-10-14 12:15:34 +0200 <merijn> coerce is good, but type applications is bad imo
2025-10-14 12:16:02 +0200 <merijn> Ugly syntax and (worse) far too brittle in my opinion
2025-10-14 12:20:08 +0200 <merijn> You're relying on the order of type variables as part of the public interface of a library (which basically no library author considers for PVP decisions) and unless the library author explicitly `forall`'s the type variables on every function that's dependent on the whims of GHC
2025-10-14 12:20:20 +0200 <tomsmeding> type applications would be more robust if they're allowed only on functions with an explicit type variable ordering
2025-10-14 12:20:29 +0200 <tomsmeding> but then nobody would have used it because of the chicken-egg problem
2025-10-14 12:20:44 +0200 <merijn> Which is far from hypothetical, since we've already had at least one GHC release where a type system rejiggle changed the order of inferred variables, leading to breakage
2025-10-14 12:25:52 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 260 seconds)
2025-10-14 12:33:31 +0200halloy7365(~halloy736@2404:4400:5446:4e00:c9d:2341:235f:e891)
2025-10-14 12:38:24 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-14 12:44:10 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 246 seconds)
2025-10-14 12:47:44 +0200yegor(~yegor@user/yegor) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2025-10-14 12:48:01 +0200yegor(yegor@user/yegor) yegor
2025-10-14 12:50:11 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-14 12:52:48 +0200halloy7365(~halloy736@2404:4400:5446:4e00:c9d:2341:235f:e891) (Quit: halloy7365)
2025-10-14 12:53:13 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-10-14 12:54:55 +0200chele(~chele@user/chele) (Ping timeout: 245 seconds)
2025-10-14 13:00:05 +0200caconym7478798(~caconym@user/caconym) (Quit: bye)
2025-10-14 13:01:29 +0200caconym7478798(~caconym@user/caconym) caconym
2025-10-14 13:08:24 +0200Zemy(~Zemy@syn-076-184-041-021.res.spectrum.com) (Read error: Connection reset by peer)
2025-10-14 13:08:29 +0200Zemy_(~Zemy@2600:100c:b035:5997:18fe:25ff:fe03:e2c)
2025-10-14 13:09:00 +0200Zemy(~Zemy@syn-076-184-041-021.res.spectrum.com)
2025-10-14 13:10:25 +0200MelodyOwO(~MelodyOwO@user/MelodyOwO) MelodyOwO
2025-10-14 13:12:57 +0200Zemy_(~Zemy@2600:100c:b035:5997:18fe:25ff:fe03:e2c) (Ping timeout: 252 seconds)
2025-10-14 13:13:14 +0200 <dminuoso> Morj: Every time I stare at rust Im a bit confused how people willingly drift towards it.
2025-10-14 13:16:21 +0200 <dminuoso> Every time I dabbled with it, it felt more like most rust idioms exist to please the borrow checker, not because it leads to good semantics that you can reason about.
2025-10-14 13:16:37 +0200 <dminuoso> Even something mundane as writing a graph library is hell.
2025-10-14 13:17:01 +0200 <lortabac> Morj: there is 'ala', which is in lens (and other packages too)
2025-10-14 13:17:06 +0200 <lortabac> > ala Sum foldMap [1,2,3]
2025-10-14 13:17:07 +0200 <lambdabot> 6
2025-10-14 13:17:30 +0200 <dminuoso> But maybe I haven't spent enough time with Rust yet, and you need a state of enlightenment before you can see it shine.
2025-10-14 13:18:28 +0200peutri_(~peutri@bobo.desast.re) (Ping timeout: 246 seconds)
2025-10-14 13:19:04 +0200 <merijn> dminuoso: It sounds like you just don't have the problems Rust solves
2025-10-14 13:19:29 +0200 <merijn> dminuoso: Rust seems great IFF I couldn't afford a garbage collector/less explicit memory control
2025-10-14 13:19:33 +0200 <merijn> dminuoso: If you
2025-10-14 13:19:48 +0200 <merijn> If you're fine with GC and less memory control, you're better off just writing Haskell
2025-10-14 13:20:01 +0200 <merijn> And 90-95% of code just does not require anything like that
2025-10-14 13:20:14 +0200 <dminuoso> merijn: Maybe I'm just biased a bit *because* I have learned to work with C++ - in comparison Rust feels a lot more effort to avoid reference counting.
2025-10-14 13:20:15 +0200 <merijn> So I've never had a real use case to use Rust
2025-10-14 13:20:33 +0200 <merijn> dminuoso: I mean, you *can* just do reference counting in Rust afaik
2025-10-14 13:20:49 +0200 <dminuoso> Sure, but then you wouldn't need to borrow references.
2025-10-14 13:23:25 +0200xff0x(~xff0x@2405:6580:b080:900:c19d:50a:4f2f:38d7)
2025-10-14 13:27:12 +0200pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2025-10-14 13:28:00 +0200peutri(~peutri@bobo.desast.re) peutri
2025-10-14 13:31:33 +0200chele(~chele@user/chele) chele
2025-10-14 13:35:52 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
2025-10-14 13:36:25 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-10-14 13:43:03 +0200 <jackdk> merijn: Now that we have the machinery to deprecate instances, we could restart the crusade to fix the most cursed monoid instance
2025-10-14 13:43:40 +0200 <jackdk> merijn: Also, we now have RequiredTypeArguments which makes it clearer when one is expected to pass an explicit type (as opposed to using haddocks or Proxy arguments)
2025-10-14 13:44:01 +0200chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 246 seconds)
2025-10-14 13:44:50 +0200chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2025-10-14 13:46:07 +0200 <haskellbridge> <Morj> lortabac oh thanks, I remember there was something, but couldn't recall. This is the one I thought about
2025-10-14 13:46:41 +0200 <lortabac> jackdk: what is "the most cursed monoid instance"?
2025-10-14 13:47:02 +0200trickard(~trickard@cpe-54-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-14 13:47:16 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au)
2025-10-14 13:47:31 +0200 <jackdk> lortabac: I consider `instance Ord k => Monoid (Map k)` to be a massive footgun, and think `instance (Ord k, Semigroup v) => Monoid (Map k v)` to be a better canonical instance.
2025-10-14 13:47:33 +0200 <haskellbridge> <Morj> dminuoso It makes more sense to use rust if you're coming from c++. I don't think it's a good choice instead of haskell in most cases. I write rust at work nowadays: the high-perf libraries are great, the application around it could be improved a lot with a smart runtime and a gc
2025-10-14 13:48:28 +0200 <lortabac> jackdk: thanks, I didn't even know that instance existed
2025-10-14 13:48:47 +0200weary-traveler(~user@user/user363627) user363627
2025-10-14 13:48:56 +0200Square(~Square4@user/square) Square
2025-10-14 13:49:15 +0200chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 252 seconds)
2025-10-14 13:49:28 +0200 <jackdk> lortabac: I consider it a footgun because it often does almost what you want: merge two maps together. But when keys clash it keeps the value in the left map, which is often surprising
2025-10-14 13:50:25 +0200 <lortabac> indeed your proposal makes more sense
2025-10-14 13:52:37 +0200 <__monty__> It's a useful behavior IMO, some languages have an operator for that kind of merging.
2025-10-14 13:53:33 +0200chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2025-10-14 13:54:39 +0200 <jackdk> __monty__: People who want it will still be able to get it via `Map k (First v)` (`First` from `Data.Semigroup`)
2025-10-14 13:55:39 +0200 <lortabac> it's useful but it doesn't make sense as a canonical instance
2025-10-14 13:56:21 +0200 <lortabac> you can still make an operator with that behavior
2025-10-14 13:59:35 +0200Zemy_(~Zemy@2600:100c:b035:5997:3087:68ff:feb8:f43e)
2025-10-14 13:59:35 +0200Zemy(~Zemy@syn-076-184-041-021.res.spectrum.com) (Read error: Connection reset by peer)
2025-10-14 14:00:02 +0200Zemy(~Zemy@syn-076-184-041-021.res.spectrum.com)
2025-10-14 14:00:51 +0200Zemy_(~Zemy@2600:100c:b035:5997:3087:68ff:feb8:f43e) (Read error: Connection reset by peer)
2025-10-14 14:08:24 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 14:08:41 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 14:10:04 +0200inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline
2025-10-14 14:11:02 +0200Zemy_(~Zemy@2600:100c:b035:5997:4c73:91ff:fe3e:e2e1)
2025-10-14 14:11:02 +0200Zemy(~Zemy@syn-076-184-041-021.res.spectrum.com) (Read error: Connection reset by peer)
2025-10-14 14:12:12 +0200Zemy(~Zemy@syn-076-184-041-021.res.spectrum.com)
2025-10-14 14:15:16 +0200Zemy_(~Zemy@2600:100c:b035:5997:4c73:91ff:fe3e:e2e1) (Ping timeout: 256 seconds)
2025-10-14 14:16:29 +0200 <mreh> jackdk: what happened to Queensland FP?
2025-10-14 14:17:42 +0200 <mreh> lack of funding?
2025-10-14 14:19:26 +0200 <jackdk> mreh: Correct. Its funding was not renewed. The Brisbane Functional Programming Group, however, resurrected itself after the pandemic: https://bfpg.org
2025-10-14 14:20:17 +0200 <mreh> jackdk: cool, I enjoyed that talk you gave on reflex a while back
2025-10-14 14:22:19 +0200 <jackdk> mreh: Thanks, that's good of you to say
2025-10-14 14:24:04 +0200 <mreh> recognised the name
2025-10-14 14:25:09 +0200inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Quit: Leaving)
2025-10-14 14:25:16 +0200mrehwishes there was a Haskell meetup in London again
2025-10-14 14:25:23 +0200 <merijn> jackdk: You've got my signature :p
2025-10-14 14:25:27 +0200rvalue(~rvalue@about/hackers/rvalue) rvalue
2025-10-14 14:25:29 +0200rvalue(~rvalue@about/hackers/rvalue) (Excess Flood)
2025-10-14 14:25:37 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 14:25:39 +0200Googulator81(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 14:25:55 +0200 <merijn> __monty__: It's useful, but not AS useful as the semigroup version
2025-10-14 14:26:07 +0200 <merijn> __monty__: I've used the semigroup monoid on Map hundreds of times
2025-10-14 14:26:13 +0200 <merijn> The left-biased merge never
2025-10-14 14:26:22 +0200 <merijn> And when you want that you can just use `unions`
2025-10-14 14:27:01 +0200 <jackdk> mreh: I would've thought there'd be a fair number of Haskellers in London?
2025-10-14 14:27:23 +0200 <mreh> there's no "just use" when you're using a Map in Writer :'(
2025-10-14 14:27:53 +0200 <merijn> mreh: Yes there is
2025-10-14 14:28:03 +0200 <merijn> mreh: It's called "Map k (First v)"
2025-10-14 14:28:36 +0200 <merijn> So the current behaviour is trivially reconstructible via a newtype wrapper on values
2025-10-14 14:28:49 +0200rvalue(~rvalue@about/hackers/rvalue) rvalue
2025-10-14 14:28:50 +0200rvalue(~rvalue@about/hackers/rvalue) (Excess Flood)
2025-10-14 14:29:30 +0200 <mreh> that's true
2025-10-14 14:31:34 +0200 <mreh> jackdk: I went to a meetup maybe 10 years ago, it's since folded
2025-10-14 14:31:52 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au) (Ping timeout: 260 seconds)
2025-10-14 14:32:08 +0200 <merijn> mreh: Yet another reason, the Semigroup version is superior :p
2025-10-14 14:32:19 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au)
2025-10-14 14:34:01 +0200rvalue(~rvalue@about/hackers/rvalue) rvalue
2025-10-14 14:36:42 +0200ski. o O ( <https://en.wikipedia.org/wiki/Monoid_ring> )
2025-10-14 14:43:55 +0200rvalue(~rvalue@about/hackers/rvalue) (Quit: bmV2ZXJnb25uYWdpdmV5b3V1cG5ldmVyZ29ubmFsZXR5b3Vkb3du)
2025-10-14 14:44:43 +0200 <tomsmeding> ski: why does that not open with "a monoid ring is a formal polynomial ring in a monoid with coefficient from a ring"
2025-10-14 14:45:42 +0200 <tomsmeding> perhaps that would be too "monoid in the category of endofunctors" for wikipedia
2025-10-14 14:46:05 +0200Googulator75(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 14:46:12 +0200rvalue(~rvalue@about/hackers/rvalue) rvalue
2025-10-14 14:46:14 +0200Googulator81(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 14:50:46 +0200Googulator49(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 14:50:50 +0200Googulator75(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Client Quit)
2025-10-14 15:00:52 +0200Googulator49Googulator
2025-10-14 15:03:45 +0200inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline
2025-10-14 15:05:42 +0200kuribas(~user@2a02-1810-2825-6000-b5ac-98ee-b19a-ab1f.ip6.access.telenet.be) (Ping timeout: 256 seconds)
2025-10-14 15:07:37 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 244 seconds)
2025-10-14 15:14:49 +0200luna___(~luna@fedora/bittin) bittin
2025-10-14 15:15:49 +0200Googulator6(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 15:16:13 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 15:17:36 +0200inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2025-10-14 15:17:53 +0200inline(~inlinE@ip-178-202-059-142.um47.pools.vodafone-ip.de) Inline
2025-10-14 15:25:59 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-10-14 15:28:44 +0200 <ski> tomsmeding : i guess saying "polynomial" implies that the monoid is the free (commutative) monoid (hm, for "formal polynomial", would that be cofree monoid ?)
2025-10-14 15:30:07 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2025-10-14 15:30:45 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-10-14 15:44:10 +0200 <tomsmeding> ski: well, the article does say that the polynomials are formal ("set of formal sums")
2025-10-14 15:44:33 +0200 <tomsmeding> so whether the elements of G do something with each other is not relevant for how many elements rae in R[G], it seems
2025-10-14 15:44:58 +0200 <tomsmeding> if the sums weren't formal, this would be a module, would it not?
2025-10-14 15:45:00 +0200ystael(~ystael@user/ystael) ystael
2025-10-14 15:45:50 +0200 <tomsmeding> (I guess it would be a "monoid module")
2025-10-14 15:50:20 +0200 <ski> "More formally, `R[G]' is the free `R'-module on the set `G', endowed with `R'-linear multiplication defined on the base elements by `g·h := gh', where the left-hand side is understood as the multiplication in `R[G]' and the right-hand side is understood in `G'."
2025-10-14 15:51:30 +0200 <ski> "so whether the elements of G do something with each other is not relevant for how many elements rae in R[G], it seems" -- it affects multiplication of them, yea
2025-10-14 15:51:33 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-10-14 15:53:47 +0200 <ski> instead of combining monomials like `x * y^2' and `x^3 * z' into `x^4 * y^2 * z', amounting to bag/multiset merging (multiplication in the free commutative monoid), you get a not-necessarily-injective multiplication in the monoid
2025-10-14 15:56:59 +0200 <ski> (and yea, i was reminded of this, by the talk about `Monoid (Map k v)'. if we ignore the multiplication (and subtraction/negation) in the monoid ring, then `k' corresponds to the set of indeterminates (generators) in the "polynomials", and `v' corresponds to the monoid of coefficients)
2025-10-14 15:58:08 +0200 <tomsmeding> ski: "not-necessarily-injective" -- ah! right
2025-10-14 15:59:36 +0200 <tomsmeding> thanks :)
2025-10-14 16:01:19 +0200 <ski> the "formal" here means that when we write a (finite) sum of products of monoid elements and associated coefficients, this is just a suggestive notation for having a function from the monoid elements to the coefficients, with "finite support" (meaning only finitely many monoid elements map to non-zero coefficients)
2025-10-14 16:02:33 +0200 <ski> (iirc, in some rings, (ordinary) polynomials can be distinct (having distinct coefficients), while still having the same value at each possible input (being extensionally equal, the corresponding functions to the polynomials being equal))
2025-10-14 16:02:37 +0200fp(~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 246 seconds)
2025-10-14 16:05:05 +0200 <tomsmeding> polynomials on Z/2Z have a bunch of such "redundancies"
2025-10-14 16:06:11 +0200 <tomsmeding> but yeah I see where my understanding went wrong: I wasn't properly thinking about the fact that this R[G] is supposed to be a _ring_, and what the multiplication operation ought to do
2025-10-14 16:06:35 +0200 <tomsmeding> then the structure of the monoid suddenly comes into play
2025-10-14 16:07:18 +0200inline(~inlinE@ip-178-202-059-142.um47.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2025-10-14 16:07:48 +0200inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline
2025-10-14 16:08:42 +0200MelodyOwO(~MelodyOwO@user/MelodyOwO) (Quit: Leaving.)
2025-10-14 16:09:35 +0200 <ski> (oh, and when i said "formal polynomial", above, i had "formal power series in mind" .. so wondering whether that would involve a cofree, rather than free, monoid. cf. how direct sum (categorical coproduct) and direct product (categorical product) for *commutative* groups (as well as monoids) coincide, for a *finite* family of groups (or monoids), but are distinct for an infinite family. difference is that
2025-10-14 16:09:41 +0200 <ski> the direct sum case involves a function, with *finite support*, from the family indices to elements of the corresponding groups (monoids), while for direct product, it's arbitrary such functions. for arbitrary (not necessarily commutative/abelian) groups (monoids), though, the categorical coproduct case (called "free product") becomes a larger object. `g_0 * h * g_1' is no longer equal to `(g_0 * g_1) * h',
2025-10-14 16:09:47 +0200 <ski> so you can no longer keep track of a single element per group (monoid))
2025-10-14 16:10:58 +0200 <ski> now .. is there a use case for wanting to multiply `Map k v's, given `Monoid k' ?
2025-10-14 16:12:21 +0200 <tomsmeding> feels a bit far-fetched to me, not least because the result "invents new keys" that were not there in the original
2025-10-14 16:12:30 +0200 <tomsmeding> *originals
2025-10-14 16:12:57 +0200 <ski> yea .. it kinda has a "tensor feel"
2025-10-14 16:13:25 +0200 <ski> wanting all combinations of the keys in one map, with the keys in the other map
2025-10-14 16:13:30 +0200 <tomsmeding> yes, the other problem is that the maps get very big this way
2025-10-14 16:13:42 +0200 <ski> right
2025-10-14 16:13:43 +0200 <tomsmeding> that's not usually what you want in practice
2025-10-14 16:14:01 +0200 <ski> unless the key monoid is highly non-injective, i guess
2025-10-14 16:14:29 +0200 <ski> like, the keys are lists, bags, or sets ?
2025-10-14 16:14:50 +0200 <tomsmeding> aren't those free and thus very injective?
2025-10-14 16:14:57 +0200 <ski> or `Sum a' or `Product a'
2025-10-14 16:15:12 +0200 <tomsmeding> even with Sum/Product the maps still grow quadratically
2025-10-14 16:15:31 +0200 <ski> mm, right, scratch the "lists"
2025-10-14 16:16:15 +0200luna___(~luna@fedora/bittin) ()
2025-10-14 16:16:19 +0200 <ski> ((finite) bags are free *commutative* monoids. (finite) sets are free *commutative* *idempotent* monoids)
2025-10-14 16:16:23 +0200 <tomsmeding> furthermore, for this to be useful as an abstraction, I'd expect the operation to be used more than, say, once in a program
2025-10-14 16:16:46 +0200 <tomsmeding> something which makes a datastructure grow quadratically in size is not something you use very often
2025-10-14 16:16:47 +0200 <ski> yes
2025-10-14 16:17:08 +0200 <tomsmeding> yes I know that bags/sets are not quite free
2025-10-14 16:17:29 +0200 <tomsmeding> hm, I guess subsets of a very small universe set could have the required very-non-injective property
2025-10-14 16:17:29 +0200 <ski> it might be useful to want a (lower approximation to) division, wrt this multiplication
2025-10-14 16:17:43 +0200inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Remote host closed the connection)
2025-10-14 16:17:58 +0200 <ski> like, how in relational algebra, division of relations is useful to express queries of the form "for all ..., ..."
2025-10-14 16:20:03 +0200 <ski> hmm .. `Map (k0,k1) v -> Map k0 v -> Map k1 v' would be a similar operation
2025-10-14 16:20:32 +0200 <ski> "bags/sets are not quite free" -- they are free, just not free *plain* monoids
2025-10-14 16:21:02 +0200tomsmedinghas to go, sorry
2025-10-14 16:22:36 +0200 <ski> ("free" is relative to the target category (monoids, commutative monoids, commutative idempotent monoids, ..), and also to the source category (sets, monoids, ..). "free commutative monoid on a monoid" means we force multiplication to be commutative, generally causing a lot of previously distinct elements to now be identified with each other. the "abelianization" of a monoid)
2025-10-14 16:22:49 +0200 <ski> no worries. was fun to ponder a bit
2025-10-14 16:24:21 +0200Beowulf(florian@2a01:4f9:3b:2d56::2) (Quit: = "")
2025-10-14 16:24:58 +0200mochie(~mochie@user/mochie) mochie
2025-10-14 16:27:04 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess
2025-10-14 16:29:48 +0200Beowulf(florian@2a01:4f9:3b:2d56::2)
2025-10-14 16:35:36 +0200Googulator6(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 16:35:38 +0200Googulator18(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 16:38:55 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-14 16:39:08 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au)
2025-10-14 16:41:44 +0200jreicher(~user@user/jreicher) (Ping timeout: 260 seconds)
2025-10-14 16:47:26 +0200Square3(~Square@user/square) Square
2025-10-14 17:02:47 +0200Zemy_(~Zemy@2600:100c:b0a0:3fd9:78c1:9aff:fe21:5d9e)
2025-10-14 17:03:57 +0200infinity0(~infinity0@pwned.gg) (Ping timeout: 250 seconds)
2025-10-14 17:05:15 +0200mreh(~matthew@host86-146-25-125.range86-146.btcentralplus.com) (Ping timeout: 256 seconds)
2025-10-14 17:06:24 +0200Zemy(~Zemy@syn-076-184-041-021.res.spectrum.com) (Ping timeout: 256 seconds)
2025-10-14 17:06:27 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 244 seconds)
2025-10-14 17:09:48 +0200dhil(~dhil@5.151.29.137) (Remote host closed the connection)
2025-10-14 17:10:13 +0200inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline
2025-10-14 17:13:55 +0200mreh(~matthew@host86-146-25-125.range86-146.btcentralplus.com)
2025-10-14 17:15:35 +0200Zemy(~Zemy@12.218.191.128)
2025-10-14 17:16:54 +0200bitterx(~marko@user/bitterx) (Quit: bitterx)
2025-10-14 17:18:42 +0200Zemy_(~Zemy@2600:100c:b0a0:3fd9:78c1:9aff:fe21:5d9e) (Ping timeout: 260 seconds)
2025-10-14 17:20:43 +0200Tri(~tnguyen@69.74.159.34)
2025-10-14 17:21:57 +0200 <Tri> I'm a haskell beginner, I've written a small program. Could someone review my code please? Thank you https://paste.tomsmeding.com/2dnXN2fo
2025-10-14 17:24:56 +0200infinity0(~infinity0@pwned.gg) infinity0
2025-10-14 17:25:45 +0200 <int-e> > groupBy (==) [1,2,1]
2025-10-14 17:25:47 +0200 <lambdabot> error:
2025-10-14 17:25:47 +0200 <lambdabot> Ambiguous occurrence ‘groupBy’
2025-10-14 17:25:47 +0200 <lambdabot> It could refer to
2025-10-14 17:25:56 +0200 <int-e> @undefine
2025-10-14 17:25:56 +0200 <lambdabot> Undefined.
2025-10-14 17:25:58 +0200 <int-e> > groupBy (==) [1,2,1]
2025-10-14 17:26:00 +0200 <lambdabot> [[1],[2],[1]]
2025-10-14 17:26:41 +0200 <int-e> (also, shouldn't most of this work be done in SQL instead...)
2025-10-14 17:27:54 +0200 <Tri> I never think about it, but I prefer to not use SQL
2025-10-14 17:28:01 +0200Shark8(~Shark8@c-174-56-102-109.hsd1.nm.comcast.net)
2025-10-14 17:28:29 +0200Square3(~Square@user/square) (Ping timeout: 256 seconds)
2025-10-14 17:29:03 +0200Square(~Square4@user/square) (Ping timeout: 256 seconds)
2025-10-14 17:30:21 +0200inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2025-10-14 17:30:57 +0200OWS(~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) (Ping timeout: 260 seconds)
2025-10-14 17:31:14 +0200Inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) Inline
2025-10-14 17:31:55 +0200Shark8(~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) (Remote host closed the connection)
2025-10-14 17:32:19 +0200Shark8(~Shark8@c-174-56-102-109.hsd1.nm.comcast.net)
2025-10-14 17:35:57 +0200gustrb(~gustrb@191.243.134.87)
2025-10-14 17:40:29 +0200 <int-e> ...why are you asking for a code review on code that doesn't even compile.
2025-10-14 17:41:41 +0200 <[exa]> Tri: you might want to join all the isWhateverOverlapping into a single function
2025-10-14 17:42:20 +0200int-eis going to mention that half of those predicates aren't transitive and leave it at that.
2025-10-14 17:43:33 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2025-10-14 17:47:14 +0200 <Tri> int-e, oh it didn't? I'm sorry let me double check, it compiles on my local, I've been running it. I've copied it across different forums to ask for suggestions, so I may have added/dropped something.
2025-10-14 17:50:13 +0200 <Tri> int-e, I just copy-pasted code from that link and recompile, it was fine. Perhaps you missed some package? Here is my cabal https://paste.tomsmeding.com/CLDOLEXr
2025-10-14 17:51:13 +0200 <Tri> int-e, I didn't give you this, sorry https://paste.tomsmeding.com/Zj0uN9k7
2025-10-14 17:52:37 +0200 <int-e> Oh, my bad. I thought startData and endDate would have the same type.
2025-10-14 17:52:39 +0200 <Tri> [exa], I think haskell has some concept to compose them, but I don't know what. I would like to string them together from small functions, not combine them into a big function, because I still want to use these small functions separately
2025-10-14 17:53:02 +0200 <Tri> int-e, all good, thank you for checking
2025-10-14 17:54:22 +0200 <Tri> maybe next time I will just make a repo for this for reviewer's convenience, the main.hs has the core logic so I only quickly pasted it into tomsmeding and ask for review
2025-10-14 17:54:23 +0200 <[exa]> Tri: I like to do e.g. this: isOverlapping a b = and [something a == something b, condition2, condition3, ...]
2025-10-14 17:56:25 +0200divya(divya@140.238.251.170) (Ping timeout: 265 seconds)
2025-10-14 17:57:32 +0200 <Tri> [exa], that's pretty neat. Thank you. Does Haskell have something that's even more expressive? I at least I could re-code my function, so that they can be compose like overlappingA >>> overlappingB >>> overlappingC >>> overlappingD, and just short-circuit on the first fail function. This looks a lot like bind in monad to me
2025-10-14 17:58:10 +0200 <geekosaur> Alternative?
2025-10-14 17:59:18 +0200 <Tri> let me look into that, I wonder if it works if my data doesn't have a monad structure
2025-10-14 17:59:19 +0200 <[exa]> Tri: like, you can put literal && in between the conditions, I used a list because it formats nicely if you have many conditions
2025-10-14 17:59:43 +0200 <geekosaur> Alternative only requires Applicative, not Monad
2025-10-14 17:59:47 +0200 <[exa]> saying "we have a list of conditions" and meaning an actual list counts. :)
2025-10-14 18:00:14 +0200 <geekosaur> and yes, if it's just a list of conditions you don't need either
2025-10-14 18:00:19 +0200 <Tri> ok I will look into them. Thank you
2025-10-14 18:03:20 +0200 <ski> Tri : define your own custom display function, rather than using `Show' instance to portray in a custom format
2025-10-14 18:03:38 +0200mari-estel(~mari-este@user/mari-estel) mari-estel
2025-10-14 18:04:39 +0200Zemy_(~Zemy@2600:100c:b0a0:3fd9:1cfb:70ff:feac:dc0e)
2025-10-14 18:04:40 +0200Zemy(~Zemy@12.218.191.128) (Read error: Connection reset by peer)
2025-10-14 18:05:09 +0200Zemy(~Zemy@syn-067-078-059-246.biz.spectrum.com)
2025-10-14 18:05:54 +0200 <Tri> [exa], my code is already using &&. I just find passing in the 2 parameters on every function check very clunky. I found this is pretty idiomatic https://paste.tomsmeding.com/98dJNMNB
2025-10-14 18:06:24 +0200 <ski> Tri : instead of using `case'-`of' in `isDateRangeOverlapping', you can use `all'
2025-10-14 18:06:53 +0200 <ski> ditto for `isConditionOverlapping'
2025-10-14 18:07:11 +0200 <ski> oh, and `isAssetOverlapping'
2025-10-14 18:07:49 +0200 <Tri> geekosaur, if I use Alternative, I need to modify my functions signature to return an Applicative structure, which is fine, but then it's bending the business logic, which I don't like. I want to keep the intent clear: return a Bool meaning it's either overlapping or not
2025-10-14 18:08:25 +0200 <EvanR> there's so many ways to skin this one
2025-10-14 18:08:34 +0200 <EvanR> @src and
2025-10-14 18:08:34 +0200 <lambdabot> and = foldr (&&) True
2025-10-14 18:08:58 +0200Zemy_(~Zemy@2600:100c:b0a0:3fd9:1cfb:70ff:feac:dc0e) (Ping timeout: 246 seconds)
2025-10-14 18:09:42 +0200 <Tri> I've got to get back to my job a bit, thank you everyone, I will get back later
2025-10-14 18:09:56 +0200 <EvanR> :t zipWith uncurry
2025-10-14 18:09:57 +0200 <lambdabot> [a -> b -> c] -> [(a, b)] -> [c]
2025-10-14 18:10:30 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 252 seconds)
2025-10-14 18:10:47 +0200Googulator18Googulator
2025-10-14 18:12:51 +0200tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 250 seconds)
2025-10-14 18:13:40 +0200 <EvanR> and I'm not sure there's a meaningful difference between anding by chaining && or and on an explicit list (chaining commas)
2025-10-14 18:14:18 +0200 <ski> groupBy (\x y -> and [f x y | f <- [isIssuerOverlapping,isAssetOverlapping,isConditionOverlapping,isDateRangeOverlapping,isTargetColumnOverlapping]])
2025-10-14 18:14:37 +0200 <ski> using `<>' with `All' seems rather clunky here, unfortunately ..
2025-10-14 18:14:58 +0200 <Tri> thank you for your help, I will get back to read your comments later
2025-10-14 18:15:23 +0200tomboy64(~tomboy64@user/tomboy64) tomboy64
2025-10-14 18:15:38 +0200Googulator26(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 18:15:38 +0200Googulator(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 18:16:10 +0200 <ski> Tri : `Show' and `Read' are intended to work together with instances for other types. for this reason, it is confusing to have them handle non-Haskell syntax, hence why i suggested making a separate function for your custom (non-Haskell syntax) formatting
2025-10-14 18:17:50 +0200divya(divya@140.238.251.170) divya
2025-10-14 18:17:54 +0200 <ski> Tri : "Does Haskell have something that's even more expressive? I at least I could re-code my function, so that they can be compose like overlappingA >>> overlappingB >>> overlappingC >>> overlappingD, and just short-circuit on the first fail function. This looks a lot like bind in monad to me" -- in the case where you'd use `<>' (rather than `&&'), this works fine
2025-10-14 18:18:38 +0200 <EvanR> because a monoid is just a category with one object?
2025-10-14 18:19:39 +0200 <ski> > sortBy (comparing length <> compare) (words "The quick brown fox jumps over the lazy dog") -- sort primarily by length, and only secondarily lexicographically
2025-10-14 18:19:41 +0200 <lambdabot> ["The","dog","fox","the","lazy","over","brown","jumps","quick"]
2025-10-14 18:19:44 +0200 <ski> @where monoids
2025-10-14 18:19:44 +0200 <lambdabot> comment on "Monoids? In my programming language?" by Cale in 2008 (or 2009 ?) at <http://www.reddit.com/r/programming/comments/7cf4r/monoids_in_my_programming_language/c06adnx> about a use of `
2025-10-14 18:19:44 +0200 <lambdabot> instance Monoid a => Monoid (rho -> a)'
2025-10-14 18:21:00 +0200 <ski> EvanR : because for a lot of algebraic structures (including monoids), if `A' is an algebra, then `A^R' / `R -> A' is also an algebra, for any set `R', with operations defined pointwise/coordinatewise
2025-10-14 18:22:45 +0200raym(~ray@user/raym) raym
2025-10-14 18:22:55 +0200 <ski> ah, i see you did the above (list comprehension), with `condList'
2025-10-14 18:23:10 +0200gustrb(~gustrb@191.243.134.87)
2025-10-14 18:25:29 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-14 18:25:42 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au)
2025-10-14 18:25:50 +0200 <geekosaur> can I suggest that side comments about advanced topics go to #haskell-in-depth so they don't confuse the original asker?
2025-10-14 18:26:26 +0200 <geekosaur> we do have this tendency for simple questions to get diverted into advanced algebra or CT
2025-10-14 18:27:31 +0200 <ski> (that's called a "power object", btw, in CT. it's an `R'-fold indexed categorical product, with all factors being `A'. a "copower object" (or "multiple/scaled object" ?) is the dual case, for categorical coproducts (sums))
2025-10-14 18:27:57 +0200 <ski> sure
2025-10-14 18:30:37 +0200Googulator3(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 18:30:39 +0200Googulator26(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 18:30:40 +0200 <Tri> geekosaur, I appreciate that... I was thinking the same thing. It just escalated from very quickly. Ski, not that I meant you are bad, it's just I'm not there yet, I really appreciate your help
2025-10-14 18:32:06 +0200 <ski> yeah, the CT comments weren't intended as being things you were suggested to understand, but were asides to EvanR
2025-10-14 18:32:08 +0200 <geekosaur> that happens in here a lot, and our rep has taken a bit of a hit because of it
2025-10-14 18:32:26 +0200 <geekosaur> so yeh, I'm now trying to divert the side chatter
2025-10-14 18:32:47 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 260 seconds)
2025-10-14 18:33:08 +0200 <EvanR> I saw >>> and <>
2025-10-14 18:33:20 +0200 <EvanR> I guess Tri was making that up
2025-10-14 18:33:34 +0200 <Tri> geekosaur, that's my impression too. I have been here multiple time, and every time, it didn't take more than 3-4 sentences before things took off into some concept way over my head, I just didn't know how to address it properly before
2025-10-14 18:33:34 +0200 <ski> i always enjoyed the mix of abstract and concrete, theoretical and practical, conversations on this channel
2025-10-14 18:34:01 +0200 <geekosaur> iyeh, but they confuse the hell out of beginners
2025-10-14 18:34:01 +0200 <ski> (and i've seen many other people expressing similar things, over the years)
2025-10-14 18:34:03 +0200 <Tri> EvanR, yes EvanR, I use >>> just as a placeholder for some operation that can string these functions together
2025-10-14 18:34:12 +0200 <EvanR> :t (>>>)
2025-10-14 18:34:13 +0200 <lambdabot> forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c
2025-10-14 18:34:16 +0200Zemy(~Zemy@syn-067-078-059-246.biz.spectrum.com) (Read error: Connection reset by peer)
2025-10-14 18:34:21 +0200Zemy_(~Zemy@2600:100c:b0a0:3fd9:5cfe:ffff:fe64:fccc)
2025-10-14 18:34:25 +0200 <EvanR> you accidentally went categorical!
2025-10-14 18:34:31 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au) (Ping timeout: 246 seconds)
2025-10-14 18:34:40 +0200 <Tri> I was trying to ask if there was any such function that can string many Override -> Override -> Bool together to return a final Bool
2025-10-14 18:34:41 +0200 <EvanR> it does infact string functions together
2025-10-14 18:34:45 +0200 <ski> it's definitely one of the reasons that made me stick around, when i started chatting here, some twentyfour years ago
2025-10-14 18:34:51 +0200Zemy(~Zemy@syn-067-078-059-246.biz.spectrum.com)
2025-10-14 18:36:06 +0200 <EvanR> an advanced degree is not required to learn haskell it's just a side effect
2025-10-14 18:36:07 +0200 <Tri> EvanR, I knew (>>>) was the opposite of function composition (.), coming from F# that's the way I'm comfortable with. It just I used (>>>) in that context to represent the thing i was asking :)
2025-10-14 18:36:26 +0200trickard_(~trickard@cpe-54-98-47-163.wireline.com.au)
2025-10-14 18:37:22 +0200 <ski> Tri : it's fine to ask people to address the practical or concrete concernss you have, or to ask about particular parts you're wondering about. and addressing questions of people looking for help takes precedence over other chatter
2025-10-14 18:38:16 +0200 <Tri> thank you ski
2025-10-14 18:38:27 +0200 <geekosaur> yeh, I didn't start to learn any of the stuff they've been talking about until I came here shortly after starting to learn Haskell
2025-10-14 18:38:33 +0200Zemy_(~Zemy@2600:100c:b0a0:3fd9:5cfe:ffff:fe64:fccc) (Ping timeout: 252 seconds)
2025-10-14 18:38:38 +0200Core7083(~Zemy@2600:100c:b0a0:3fd9:b093:6aff:fe5f:f77f)
2025-10-14 18:38:50 +0200 <ski> you could define `(f &&&& g) x y = f x y && g x y', i guess, and then use `groupBy (isIssuerOverlapping &&&& isAssetOverlapping &&&& isConditionOverlapping &&&& isDateRangeOverlapping &&&& isTargetColumnOverlapping)'
2025-10-14 18:39:00 +0200 <EvanR> chaining A -> A -> Bool functions to get an A -> A -> Bool, it requires answering what to do with all the Bools along the way
2025-10-14 18:39:11 +0200 <ski> indeed
2025-10-14 18:39:17 +0200 <EvanR> in this case anding them all I guess
2025-10-14 18:39:59 +0200 <ski> the two obvious choices are `&&' and `||'. you can do the former, with `All' and the latter with `Any', if you use `<>'. but inserting the `All's and `Any's turn out to be annoying ..
2025-10-14 18:40:43 +0200 <Tri> yes EvanR, in other words, short circuting to False, if there is a False. That resembles how bind works. I believe people have suggested to use <> and list comprehension, but I didn't have the mental capacity to read them yet, I'm working my day job at the moment
2025-10-14 18:40:59 +0200 <EvanR> I'm not sure that monads are appropriate for this
2025-10-14 18:41:00 +0200Zemy(~Zemy@syn-067-078-059-246.biz.spectrum.com) (Ping timeout: 244 seconds)
2025-10-14 18:41:13 +0200 <EvanR> short circuiting to False if there is a False is what `and' does
2025-10-14 18:41:23 +0200 <EvanR> i.e. folding Bools using &&
2025-10-14 18:41:50 +0200 <Tri> sure, I will think about it
2025-10-14 18:41:53 +0200 <EvanR> monads requires a different shaped type, one with a parameter
2025-10-14 18:42:17 +0200 <ski> groupBy ((getAll .) . ((All .) . isIssuerOverlapping <> (All .) . isAssetOverlapping <> (All .) . isConditionOverlapping <> (All .) . isDateRangeOverlapping <> (All .) . isTargetColumnOverlapping)) -- the `(blah .) .' is annoying !
2025-10-14 18:43:33 +0200 <EvanR> so it all boils down to ways of stitching a bunch of things together with &&
2025-10-14 18:43:41 +0200peterbecich(~Thunderbi@syn-172-222-148-214.res.spectrum.com) peterbecich
2025-10-14 18:43:47 +0200 <ski> in the `sortBy' example i gave above, there's no need for such nonsense, because the result is not a `Bool', but an `Ordering', and doing (short-circuiting) lexigographic composition of these seem to be the obvious choice of what `<>' should do, there
2025-10-14 18:48:03 +0200machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2025-10-14 18:48:16 +0200EvanR(~EvanR@user/evanr) (Quit: Leaving)
2025-10-14 18:51:16 +0200Zemy(~Zemy@syn-076-184-041-021.res.spectrum.com)
2025-10-14 18:51:30 +0200EvanR(~EvanR@user/evanr) EvanR
2025-10-14 18:51:31 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2025-10-14 18:52:24 +0200 <ski> Tri : do you see how to use `all' to avoid the matching on `Just' ?
2025-10-14 18:52:40 +0200chele(~chele@user/chele) (Remote host closed the connection)
2025-10-14 18:53:25 +0200Core7083(~Zemy@2600:100c:b0a0:3fd9:b093:6aff:fe5f:f77f) (Ping timeout: 246 seconds)
2025-10-14 18:55:21 +0200 <Tri> ski, I'm working right now so I haven't been able to parse all your suggestions, I will read it later. Thank you
2025-10-14 18:55:48 +0200 <ski> right, that's fine
2025-10-14 18:56:19 +0200 <ski> (just writing down the things i thought of, before i forget them again)
2025-10-14 18:57:17 +0200peterbecich(~Thunderbi@syn-172-222-148-214.res.spectrum.com) (Ping timeout: 260 seconds)
2025-10-14 18:58:31 +0200mari-estel(~mari-este@user/mari-estel) (Remote host closed the connection)
2025-10-14 19:01:39 +0200Zemy(~Zemy@syn-076-184-041-021.res.spectrum.com) (Ping timeout: 252 seconds)
2025-10-14 19:03:41 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 256 seconds)
2025-10-14 19:11:52 +0200gustrb(~gustrb@191.243.134.87)
2025-10-14 19:13:51 +0200haltsolver(~cmo@2604:3d09:207f:8000::d1dc)
2025-10-14 19:15:39 +0200Googulator3(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed)
2025-10-14 19:15:45 +0200Googulator60(~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu)
2025-10-14 19:16:45 +0200Shark8(~Shark8@c-174-56-102-109.hsd1.nm.comcast.net) (Read error: Connection reset by peer)
2025-10-14 19:17:39 +0200Shark8(~Shark8@c-174-56-102-109.hsd1.nm.comcast.net)
2025-10-14 19:21:01 +0200nogloff(uid464985@id-464985.tinside.irccloud.com)
2025-10-14 19:23:03 +0200 <haskellbridge> <sm> #haskell-beginners was another attempt to separate the streams of new learners and deep divers. Also #Haskell matrix room has a bit less of this tendency I think
2025-10-14 19:23:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 19:24:55 +0200Square3(~Square@user/square) Square
2025-10-14 19:25:36 +0200Square(~Square4@user/square) Square
2025-10-14 19:27:29 +0200 <haskellbridge> <sm> I think it's in the nature of the language and the community that this tends to happen. There's a wider range of interests and discussion than say php or js. And also a greater need for careful coaching/mentoring than in those languages.
2025-10-14 19:28:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 19:29:03 +0200weary-traveler(~user@user/user363627) user363627
2025-10-14 19:33:35 +0200wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-10-14 19:33:44 +0200Inline(~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2025-10-14 19:36:18 +0200gustrb(~gustrb@191.243.134.87) (Quit: gustrb)
2025-10-14 19:39:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 19:43:15 +0200vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 245 seconds)
2025-10-14 19:43:26 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2025-10-14 19:44:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 19:44:39 +0200 <ski> with a more abstract/technical/theoretical conversation, going on for a longer time period, and there being other extant conversation threads, i often suggest #haskell-overflow or #haskell-in-depth
2025-10-14 19:45:21 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-10-14 19:46:01 +0200 <haskellbridge> <sm> I haven't been in those channels much.. are they active / working pretty well ?
2025-10-14 19:47:47 +0200fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) fp
2025-10-14 19:49:09 +0200 <geekosaur> -overflow is moderately active, but Haskell-related discussions are discouraged. (more abstract ones are fine though)
2025-10-14 19:49:17 +0200 <ski> not that much, lately, seeing as this channel isn't too often overflowing with conversations
2025-10-14 19:49:30 +0200 <geekosaur> #h-i-d is pretty dead, but seems like a good use for it is this kind of discussion
2025-10-14 19:49:39 +0200 <ski> you're thinking of -offtopic, i believe, geekosaur ?
2025-10-14 19:50:10 +0200haltsolver(~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 256 seconds)
2025-10-14 19:50:16 +0200 <geekosaur> it's a leftover from an old sirtuation on Freenode wjhere someone started to do a detailed discussion of something in GJHC in #haskell and was asked to move. it hasn't really been used since, though
2025-10-14 19:50:30 +0200 <geekosaur> (wow my typing was bad there)
2025-10-14 19:51:18 +0200 <geekosaur> right, I meant offtopic, sorry
2025-10-14 19:51:21 +0200 <haskellbridge> <sm> three overflow channels at the deep end and at least one on the shallow seems too many
2025-10-14 19:51:42 +0200 <geekosaur> typing on autopilot, same reason as the typos 🙂
2025-10-14 19:52:00 +0200 <geekosaur> -beginners barely gets used these days
2025-10-14 19:52:06 +0200 <ski> well, just two, sm
2025-10-14 19:52:20 +0200 <geekosaur> iirc that one was originally created specifically for a particular Haskell book
2025-10-14 19:52:32 +0200 <ski> -offtopic is an alternative to -blah
2025-10-14 19:52:37 +0200 <ski> yes
2025-10-14 19:52:53 +0200 <ski> bitemyapp hasn't been around, in a while
2025-10-14 19:52:57 +0200inline(~inline@2a02:8071:57a1:1260:e9a3:cc45:338f:8e4a) Inline
2025-10-14 19:53:25 +0200 <geekosaur> I think it might be a good idea at this point to forward it here
2025-10-14 19:53:32 +0200 <haskellbridge> <sm> some housecleaning once it a while is good
2025-10-14 19:53:45 +0200 <geekosaur> the same way I forward #haskell-cabal to #hackage
2025-10-14 19:55:02 +0200 <ski> ah, i didn't know that's how -in-depth came to be
2025-10-14 19:55:23 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 19:55:24 +0200 <geekosaur> (you can set a forward ban on a channel in chanserv. people on chanserv's admins list can join for maintenance, everyone else is forwarded to the target channel)
2025-10-14 19:56:46 +0200 <geekosaur> also I think -blah is dead at this point and can be reaped or forward-banned to -overflow? it was originally separate due to a political situation, but I think that's now past history
2025-10-14 19:57:11 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2025-10-14 19:57:21 +0200 <ski> rather to -offtopic, in that case
2025-10-14 19:57:30 +0200 <geekosaur> right, I did that again. sigh
2025-10-14 19:59:27 +0200 <haskellbridge> <sm> +1
2025-10-14 19:59:28 +0200 <ski> i believe only edwardk can modify those ChanServ access lists. other ops could manually set `+if #...', though, on the channel itself
2025-10-14 20:00:24 +0200 <ski> haven't been in -blah in a while, dunno what they'd think about it
2025-10-14 20:01:42 +0200 <geekosaur> right, it's only the forward ban that we need to do, the access lists themselves are fine
2025-10-14 20:01:56 +0200 <haskellbridge> <sm> why should those blatherers get a free lifetime encampment on Haskell's lawn :)
2025-10-14 20:02:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-14 20:02:16 +0200 <geekosaur> last time I was in -blah there were a few hangers-on and no activity. that said, it's been a while and it may have sprouted a new community
2025-10-14 20:02:41 +0200 <geekosaur> and in any case we couldn't o this by fiat, we'd have to ask in there and possibly on discourse since IRC isn't persistent
2025-10-14 20:04:17 +0200skinods
2025-10-14 20:05:14 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-10-14 20:05:27 +0200Axma32074(~Axman6@user/axman6) Axman6
2025-10-14 20:05:38 +0200Axman6(~Axman6@user/axman6) (Read error: Connection reset by peer)
2025-10-14 20:05:45 +0200 <ski> there is the occasional query in -beginners
2025-10-14 20:11:44 +0200tromp(~textual@2001:1c00:3487:1b00:cdf:654a:2a7f:261)
2025-10-14 20:13:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 20:16:58 +0200fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 248 seconds)
2025-10-14 20:18:07 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-14 20:20:36 +0200fp(~Thunderbi@2001-14ba-6e24-3000--190.rev.dnainternet.fi) fp
2025-10-14 20:29:11 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 20:29:39 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2025-10-14 20:34:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-10-14 20:35:05 +0200ft(~ft@p4fc2a207.dip0.t-ipconnect.de) ft
2025-10-14 20:43:52 +0200gustrb(~gustrb@191.243.134.87)
2025-10-14 20:44:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 20:49:39 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 256 seconds)
2025-10-14 20:49:50 +0200 <geekosaur> right, that's why I want to forward-ban it: the topic already suggests asking here instead, and people in there often but not always end up coming here to ask anyway
2025-10-14 20:50:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-14 21:00:02 +0200caconym7478798(~caconym@user/caconym) (Quit: bye)
2025-10-14 21:00:44 +0200caconym7478798(~caconym@user/caconym) caconym
2025-10-14 21:00:47 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-14 21:05:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-10-14 21:06:00 +0200 <ski> aye
2025-10-14 21:06:51 +0200 <ski> (invite-only, rather than blanket ban, would probably be more comfortable, i think)
2025-10-14 21:07:25 +0200 <geekosaur> "forward-ban". which means instead of preventing joining it joins them to a different channel, in this case #haskell
2025-10-14 21:08:17 +0200 <ski> yep
2025-10-14 21:09:53 +0200 <ski> `+f' (forward) applies to all of `+i' (invite-only), `+j' (join throttle), `+l' (limit), `+r' (registered only), as well as `+b' (ban)
2025-10-14 21:11:40 +0200 <ski> (with `+i', you can easily temporarily side-step, with sending `invite' to ChanServ (.. or adding an invite exempt `+I'). with `+b', you'd have to add a ban exempt `+e')