2026/06/16

2026-06-16 00:00:31 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net)
2026-06-16 00:03:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 00:08:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-06-16 00:14:43 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Ping timeout: 244 seconds)
2026-06-16 00:15:54 +0000weary-traveler(~user@user/user363627) (Quit: Konversation terminated!)
2026-06-16 00:16:12 +0000weary-traveler(~user@user/user363627) user363627
2026-06-16 00:18:14 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-06-16 00:18:30 +0000notzmv(~umar@user/notzmv) (Ping timeout: 245 seconds)
2026-06-16 00:18:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 00:19:22 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (Ping timeout: 244 seconds)
2026-06-16 00:25:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-16 00:26:32 +0000czan(~czan@user/mange) czan
2026-06-16 00:27:43 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-06-16 00:32:48 +0000bggd_(~bgg@2a01:e0a:fd5:f510:1a59:33f5:ef7c:52f1) (Ping timeout: 244 seconds)
2026-06-16 00:33:19 +0000acidjnk(~acidjnk@p200300d6e700e534f8213bb0af1b5ed0.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2026-06-16 00:33:22 +0000acidjnk_new(~acidjnk@p200300d6e700e534f8213bb0af1b5ed0.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2026-06-16 00:36:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 00:40:39 +0000redmp(~redmp@116-65-231-94.rev.home.ne.jp) redmp
2026-06-16 00:41:13 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-16 00:42:16 +0000kadobanana(~mud@user/kadoban) kadoban
2026-06-16 00:44:57 +0000mud(~mud@user/kadoban) (Ping timeout: 272 seconds)
2026-06-16 00:49:23 +0000fgarcia(~lei@user/fgarcia) (Ping timeout: 272 seconds)
2026-06-16 00:52:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 00:56:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-06-16 00:57:43 +0000xff0x(~xff0x@ai070051.d.east.v6connect.net) (Quit: xff0x)
2026-06-16 01:06:31 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 245 seconds)
2026-06-16 01:06:57 +0000redmp(~redmp@116-65-231-94.rev.home.ne.jp) (Ping timeout: 246 seconds)
2026-06-16 01:07:35 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 01:08:41 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-06-16 01:09:02 +0000emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-06-16 01:11:50 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-16 01:21:04 +0000spew(~spew@user/spew) spew
2026-06-16 01:22:46 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 245 seconds)
2026-06-16 01:22:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 01:27:26 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 247 seconds)
2026-06-16 01:34:14 +0000Pozyomka_(~pyon@user/pyon) pyon
2026-06-16 01:34:18 +0000Pozyomka(~pyon@user/pyon) (Remote host closed the connection)
2026-06-16 01:34:25 +0000spew(~spew@user/spew) (Quit: nyaa~)
2026-06-16 01:35:39 +0000Pozyomka_(~pyon@user/pyon) (Remote host closed the connection)
2026-06-16 01:36:03 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-16 01:38:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 01:38:27 +0000EvanR(~EvanR@user/evanr) (Remote host closed the connection)
2026-06-16 01:38:47 +0000EvanR(~EvanR@user/evanr) EvanR
2026-06-16 01:40:33 +0000karenw(~karenw@user/karenw) karenw
2026-06-16 01:43:13 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2026-06-16 01:52:12 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2026-06-16 01:53:31 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-06-16 01:53:39 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 01:54:54 +0000Axma23834(~Axman6@user/axman6) Axman6
2026-06-16 01:55:55 +0000Axman6(~Axman6@user/axman6) (Ping timeout: 245 seconds)
2026-06-16 02:00:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-16 02:03:28 +0000karenw(~karenw@user/karenw) (Quit: Deep into that darkness peering...)
2026-06-16 02:11:46 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 02:16:00 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-16 02:18:53 +0000polykernel(~polykerne@user/polykernel) polykernel
2026-06-16 02:19:34 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-06-16 02:20:15 +0000Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-06-16 02:21:07 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-16 02:27:03 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-16 02:31:26 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 256 seconds)
2026-06-16 02:41:45 +0000Square(~Square@user/square) (Ping timeout: 246 seconds)
2026-06-16 02:47:24 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 252 seconds)
2026-06-16 02:53:05 +0000td_(~td@i5387093E.versanet.de) (Ping timeout: 245 seconds)
2026-06-16 02:54:51 +0000td_(~td@i53870916.versanet.de)
2026-06-16 03:05:17 +0000Axma23834Axman6
2026-06-16 03:06:47 +0000notzmv(~umar@user/notzmv) notzmv
2026-06-16 03:14:54 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2026-06-16 03:39:28 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-06-16 03:40:14 +0000puke(~puke@user/puke) puke
2026-06-16 03:40:22 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 03:44:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-16 03:55:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 03:56:58 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 276 seconds)
2026-06-16 03:57:26 +0000ystael(~ystael@user/ystael) (Ping timeout: 252 seconds)
2026-06-16 04:03:36 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-06-16 04:14:34 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 04:16:45 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net)
2026-06-16 04:19:06 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-06-16 04:26:59 +0000synchromesh(~john@2406:5a00:247e:1500:a691:b1ff:0:f9d) (Read error: Connection reset by peer)
2026-06-16 04:27:00 +0000Axma73573(~Axman6@user/axman6) Axman6
2026-06-16 04:28:25 +0000Axman6(~Axman6@user/axman6) (Ping timeout: 245 seconds)
2026-06-16 04:29:55 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 04:32:58 +0000synchromesh(~john@2406:5a00:247e:1500:a691:b1ff:0:f9d) synchromesh
2026-06-16 04:34:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-16 04:41:30 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2026-06-16 04:42:51 +0000michalz(~michalz@185.246.207.197)
2026-06-16 04:44:51 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-06-16 04:45:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 04:52:28 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2026-06-16 05:03:16 +0000wickedjargon(~user@64.114.24.74) wickedjargon
2026-06-16 05:03:20 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 05:05:09 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (Ping timeout: 262 seconds)
2026-06-16 05:06:33 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 252 seconds)
2026-06-16 05:07:53 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-16 05:15:51 +0000tusko(~uwu@user/tusko) tusko
2026-06-16 05:18:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 05:19:09 +0000takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-06-16 05:21:52 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-06-16 05:23:03 +0000puke(~puke@user/puke) (Quit: puke)
2026-06-16 05:23:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-16 05:26:43 +0000puke(~puke@user/puke) puke
2026-06-16 05:34:04 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 05:35:59 +0000divlamir_(~divlamir@user/divlamir) divlamir
2026-06-16 05:38:54 +0000divlamir(~divlamir@user/divlamir) (Ping timeout: 246 seconds)
2026-06-16 05:38:54 +0000divlamir_divlamir
2026-06-16 05:38:58 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-16 05:46:13 +0000divlamir(~divlamir@user/divlamir) (Ping timeout: 265 seconds)
2026-06-16 05:46:28 +0000divlamir(~divlamir@user/divlamir) divlamir
2026-06-16 05:49:26 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 05:53:39 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-16 06:00:22 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 06:05:13 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 259 seconds)
2026-06-16 06:16:52 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 06:21:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-16 06:31:27 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-06-16 06:32:15 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 06:39:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-06-16 06:40:13 +0000czan(~czan@user/mange) (Quit: Quittin' time!)
2026-06-16 06:45:36 +0000divlamir_(~divlamir@user/divlamir) divlamir
2026-06-16 06:48:12 +0000divlamir(~divlamir@user/divlamir) (Ping timeout: 246 seconds)
2026-06-16 06:48:12 +0000divlamir_divlamir
2026-06-16 06:50:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 06:51:42 +0000Axma73573Axman6
2026-06-16 06:54:09 +0000kadobanana(~mud@user/kadoban) (Ping timeout: 246 seconds)
2026-06-16 06:54:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-06-16 06:55:46 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli)
2026-06-16 06:56:40 +0000kadobanana(~mud@user/kadoban) kadoban
2026-06-16 06:59:41 +0000Axma87347(~Axman6@user/axman6) Axman6
2026-06-16 07:01:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-16 07:01:59 +0000Axman6(~Axman6@user/axman6) (Ping timeout: 265 seconds)
2026-06-16 07:05:05 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) marinelli
2026-06-16 07:05:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 241 seconds)
2026-06-16 07:06:06 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-06-16 07:17:38 +0000CiaoSen(~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) CiaoSen
2026-06-16 07:19:11 +0000hc(~hc@mail.hce.li) (Remote host closed the connection)
2026-06-16 07:19:54 +0000jcarpenter2(~lol@96.78.87.197) (Ping timeout: 245 seconds)
2026-06-16 07:22:55 +0000jcarpenter2(~lol@2603:3016:1e01:b940:9e16:4716:cb0d:9d39)
2026-06-16 07:25:49 +0000chele(~chele@user/chele) chele
2026-06-16 07:27:37 +0000jcarpenter2(~lol@2603:3016:1e01:b940:9e16:4716:cb0d:9d39) (Ping timeout: 248 seconds)
2026-06-16 07:29:18 +0000jcarpenter2(~lol@96.78.87.197)
2026-06-16 07:33:26 +0000rainbyte(~rainbyte@181.47.219.31) (Read error: Connection reset by peer)
2026-06-16 07:36:27 +0000rainbyte(~rainbyte@181.47.219.31) rainbyte
2026-06-16 07:38:50 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2026-06-16 07:44:40 +0000oneeyedalien(~oneeyedal@user/oneeyedalien) oneeyedalien
2026-06-16 07:46:44 +0000hc(~hc@mail.hce.li) hc
2026-06-16 07:46:58 +0000puke(~puke@user/puke) (Ping timeout: 268 seconds)
2026-06-16 07:52:34 +0000kuribas(~user@2a02:1808:41:5a17:f424:93c2:8ba2:25d)
2026-06-16 07:53:37 +0000merijn(~merijn@77.242.116.146) merijn
2026-06-16 07:56:10 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline
2026-06-16 08:22:32 +0000oneeyedalien(~oneeyedal@user/oneeyedalien) (Quit: Leaving)
2026-06-16 08:25:54 +0000CiaoSen(~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) (Ping timeout: 248 seconds)
2026-06-16 08:34:20 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-06-16 08:40:25 +0000kuribas`(~user@ip-188-118-57-242.reverse.destiny.be) kuribas
2026-06-16 08:41:46 +0000bggd_(~bgg@2a01:e0a:fd5:f510:8949:3630:d504:97ee)
2026-06-16 08:42:16 +0000kuribas(~user@2a02:1808:41:5a17:f424:93c2:8ba2:25d) (Ping timeout: 268 seconds)
2026-06-16 08:44:26 +0000ft(~ft@p4fc2ab3f.dip0.t-ipconnect.de) (Quit: leaving)
2026-06-16 09:06:26 +0000CiaoSen(~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) CiaoSen
2026-06-16 09:08:10 +0000acidjnk(~acidjnk@p200300d6e700e5750409562b4c541c53.dip0.t-ipconnect.de) acidjnk
2026-06-16 09:08:17 +0000acidjnk_new(~acidjnk@p200300d6e700e5750409562b4c541c53.dip0.t-ipconnect.de)
2026-06-16 09:19:15 +0000ThePenguin(~ThePengui@cust-95-80-28-221.csbnet.se) (Remote host closed the connection)
2026-06-16 09:25:02 +0000picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.9.1)
2026-06-16 09:26:11 +0000picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) NinjaTrappeur
2026-06-16 09:28:36 +0000ThePenguin(~ThePengui@cust-95-80-28-221.csbnet.se) ThePenguin
2026-06-16 09:30:22 +0000ThePenguin(~ThePengui@cust-95-80-28-221.csbnet.se) (Remote host closed the connection)
2026-06-16 09:31:04 +0000ThePenguin(~ThePengui@cust-95-80-28-221.csbnet.se) ThePenguin
2026-06-16 09:31:21 +0000Axman6(~Axman6@user/axman6) Axman6
2026-06-16 09:33:25 +0000Axma87347(~Axman6@user/axman6) (Ping timeout: 245 seconds)
2026-06-16 09:38:52 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2026-06-16 10:07:35 +0000danza(~danza@user/danza) danza
2026-06-16 10:13:11 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) (Ping timeout: 245 seconds)
2026-06-16 10:15:15 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) marinelli
2026-06-16 10:21:59 +0000CiaoSen(~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) (Ping timeout: 245 seconds)
2026-06-16 10:24:02 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 256 seconds)
2026-06-16 10:36:01 +0000puke(~puke@user/puke) puke
2026-06-16 10:36:43 +0000danza(~danza@user/danza) (Remote host closed the connection)
2026-06-16 10:44:59 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) (Remote host closed the connection)
2026-06-16 10:45:21 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) marinelli
2026-06-16 10:47:49 +0000juri_(~juri@217-114-215-140.pool.ovpn.com) (Ping timeout: 265 seconds)
2026-06-16 10:51:04 +0000poscat0x04(~poscat@user/poscat) poscat
2026-06-16 10:52:58 +0000poscat(~poscat@user/poscat) (Ping timeout: 276 seconds)
2026-06-16 10:57:45 +0000juri_(~juri@217-114-215-140.pool.ovpn.com) juri_
2026-06-16 11:02:08 +0000fun-safe-math(~fun-safe-@97-120-35-225.ptld.qwest.net) ()
2026-06-16 11:04:12 +0000fun-safe-math(~fun-safe-@97-120-35-225.ptld.qwest.net) fun-safe-math
2026-06-16 11:16:44 +0000CiaoSen(~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) CiaoSen
2026-06-16 11:19:55 +0000puke(~puke@user/puke) (Quit: puke)
2026-06-16 11:20:11 +0000xal_(~xal@mx1.xal.systems) (Quit: No Ping reply in 180 seconds.)
2026-06-16 11:22:53 +0000xal(~xal@mx1.xal.systems) xal
2026-06-16 11:23:29 +0000Sgeo(~Sgeo@user/sgeo) Sgeo
2026-06-16 11:24:22 +0000puke(~puke@user/puke) puke
2026-06-16 11:26:37 +0000xff0x(~xff0x@2405:6580:b080:900:f8bd:50a9:9ed8:decc)
2026-06-16 11:28:46 +0000Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-06-16 11:29:24 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2026-06-16 11:31:38 +0000Lord_of_Life_Lord_of_Life
2026-06-16 11:31:53 +0000wickedjargon(~user@64.114.24.74) (Ping timeout: 248 seconds)
2026-06-16 11:32:24 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-06-16 11:33:43 +0000Square(~Square@user/square) Square
2026-06-16 11:38:28 +0000chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 276 seconds)
2026-06-16 11:39:13 +0000chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-06-16 11:45:25 +0000Axma10736(~Axman6@user/axman6) Axman6
2026-06-16 11:46:24 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net)
2026-06-16 11:47:10 +0000Axman6(~Axman6@user/axman6) (Ping timeout: 245 seconds)
2026-06-16 11:48:00 +0000chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2026-06-16 11:48:26 +0000chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-06-16 11:48:52 +0000weary-traveler(~user@user/user363627) user363627
2026-06-16 11:51:00 +0000fgarcia(~lei@user/fgarcia) (Ping timeout: 245 seconds)
2026-06-16 11:53:24 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-06-16 11:56:00 +0000CiaoSen(~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) (Ping timeout: 245 seconds)
2026-06-16 12:17:17 +0000puke(~puke@user/puke) (Read error: Connection reset by peer)
2026-06-16 12:17:33 +0000puke(~puke@user/puke) puke
2026-06-16 12:18:12 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2026-06-16 12:26:00 +0000tremon(~tremon@83-80-159-219.cable.dynamic.v4.ziggo.nl) tremon
2026-06-16 12:40:10 +0000puke(~puke@user/puke) (Remote host closed the connection)
2026-06-16 12:40:35 +0000puke(~puke@user/puke) puke
2026-06-16 12:42:22 +0000ridcully(~ridcully@p57b52a2d.dip0.t-ipconnect.de) (Quit: WeeChat 4.9.1)
2026-06-16 12:50:59 +0000CiaoSen(~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) CiaoSen
2026-06-16 13:13:50 +0000Square(~Square@user/square) (Quit: Leaving)
2026-06-16 13:24:04 +0000CiaoSen(~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) (Ping timeout: 245 seconds)
2026-06-16 14:19:05 +0000Axman6(~Axman6@user/axman6) Axman6
2026-06-16 14:21:20 +0000Axma10736(~Axman6@user/axman6) (Ping timeout: 245 seconds)
2026-06-16 14:23:19 +0000vms14(~vms14@user/vms14) (Quit: WeeChat 4.6.3)
2026-06-16 14:24:38 +0000pavonia(~user@user/siracusa) (Ping timeout: 244 seconds)
2026-06-16 14:25:06 +0000pavonia(~user@user/siracusa) siracusa
2026-06-16 14:28:22 +0000pavonia_(~user@user/siracusa) siracusa
2026-06-16 14:28:48 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-16 14:30:33 +0000pavonia(~user@user/siracusa) (Ping timeout: 248 seconds)
2026-06-16 14:30:49 +0000pavonia_pavonia
2026-06-16 14:32:49 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 245 seconds)
2026-06-16 14:33:04 +0000pyooque(~puke@user/puke) puke
2026-06-16 14:33:05 +0000pukeGuest4739
2026-06-16 14:33:05 +0000pyooquepuke
2026-06-16 14:35:23 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) machinedgod
2026-06-16 14:35:49 +0000Guest4739(~puke@user/puke) (Ping timeout: 268 seconds)
2026-06-16 14:38:13 +0000ridcully(~ridcully@p57b52a2d.dip0.t-ipconnect.de) ridcully
2026-06-16 14:42:28 +0000vms14(~vms14@user/vms14) vms14
2026-06-16 14:44:02 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Quit: KVIrc 5.2.8 Quasar http://www.kvirc.net/)
2026-06-16 14:45:02 +0000Googulator(~Googulato@team.broadbit.hu)
2026-06-16 14:49:45 +0000jayanth(~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (Ping timeout: 248 seconds)
2026-06-16 14:54:04 +0000pyooque(~puke@user/puke) puke
2026-06-16 14:54:05 +0000pukeGuest7801
2026-06-16 14:54:05 +0000pyooquepuke
2026-06-16 14:56:47 +0000Guest7801(~puke@user/puke) (Ping timeout: 268 seconds)
2026-06-16 15:01:59 +0000danza(~danza@user/danza) danza
2026-06-16 15:06:50 +0000chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 245 seconds)
2026-06-16 15:08:12 +0000chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-06-16 15:13:45 +0000chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2026-06-16 15:14:15 +0000chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-06-16 15:14:39 +0000 <merijn> > take 1 (map f [x,y,z]) -- vms14
2026-06-16 15:14:40 +0000 <lambdabot> Ambiguous type variable ‘a0’ arising from a use of ‘e_1114’
2026-06-16 15:14:40 +0000 <lambdabot> prevents the constraint ‘(FromExpr a0)’ from being solved.
2026-06-16 15:14:40 +0000 <lambdabot> Probable fix: use a type annotation to specify what ‘a0’ should be.
2026-06-16 15:14:44 +0000 <merijn> ah, wait type error
2026-06-16 15:14:51 +0000 <merijn> > take 1 (map f [x,y,z]) :: [Expr]
2026-06-16 15:14:53 +0000 <lambdabot> [f x]
2026-06-16 15:14:55 +0000 <vms14> :0
2026-06-16 15:15:07 +0000 <vms14> > putStrLn "oh.."
2026-06-16 15:15:08 +0000 <lambdabot> <IO ()>
2026-06-16 15:15:15 +0000 <merijn> Consider how that doesn't actually require building thunks for `f y` and `f z`
2026-06-16 15:15:30 +0000wickedjargon(~user@64.114.24.74) wickedjargon
2026-06-16 15:15:37 +0000 <merijn> vms14: IO is sandboxed and not allowed in lambdabot, I think yahb can run it, though
2026-06-16 15:15:44 +0000 <merijn> % putStrLn "oh.."
2026-06-16 15:15:44 +0000 <yahb2> oh..
2026-06-16 15:16:56 +0000 <merijn> vms14: When the result of `take 1` is evaluated, it has to inspect the list, so it takes the `map f [x,y,z]` thunk, forces it to Weak-Head Normal Form (i.e. force it until the outermost thing is a constructor)
2026-06-16 15:17:56 +0000 <merijn> So you start with a thunk `<map f [x, y, z]>` that gets forced into `<f x> : <map f [y, z]>` and `take 1` only grabs the `f x` part and that ends up getting forced by the printing to stdout
2026-06-16 15:18:16 +0000 <merijn> So the recursive step of `map` (and the thunks it would create) just never even happens
2026-06-16 15:18:55 +0000 <ski> % take 1 (map (\e -> trace ("it's " ++ show e ++ ", ") (e ^ 2)) [2,3,5,7])
2026-06-16 15:18:55 +0000 <yahb2> it's 2, ; [4]
2026-06-16 15:19:28 +0000 <merijn> vms14: This is probably the most important insight about laziness and recursion in Haskell. In most cases you stop at the very first constructor, so build ups only happen when that first constructor requires *a lot* of thunk forcing
2026-06-16 15:19:44 +0000 <merijn> > foldl (:) [] [x, y, z]
2026-06-16 15:19:46 +0000 <lambdabot> Couldn't match expected type ‘[[a]]’ with actual type ‘Expr’
2026-06-16 15:19:46 +0000 <lambdabot> In the expression: z
2026-06-16 15:19:46 +0000 <lambdabot> In the third argument of ‘foldl’, namely ‘[x, y, z]’
2026-06-16 15:19:57 +0000 <ski> flip
2026-06-16 15:20:00 +0000 <merijn> > foldl (:) [] [x, y, z] :: [Expr]
2026-06-16 15:20:02 +0000 <lambdabot> Couldn't match expected type ‘[[Expr]]’ with actual type ‘Expr’
2026-06-16 15:20:02 +0000 <lambdabot> In the expression: z
2026-06-16 15:20:02 +0000 <lambdabot> In the third argument of ‘foldl’, namely ‘[x, y, z]’
2026-06-16 15:20:07 +0000 <merijn> ah, rats
2026-06-16 15:20:18 +0000 <merijn> :t foldl
2026-06-16 15:20:20 +0000 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
2026-06-16 15:20:26 +0000 <ski> ..
2026-06-16 15:20:34 +0000 <vms14> i do not get why it does not explode and returns [f x] when they are free variables
2026-06-16 15:20:46 +0000 <ski> @type x
2026-06-16 15:20:47 +0000 <lambdabot> Expr
2026-06-16 15:20:48 +0000 <ski> @type f
2026-06-16 15:20:49 +0000 <lambdabot> FromExpr a => a
2026-06-16 15:21:06 +0000 <vms14> will it explode only when used?
2026-06-16 15:21:13 +0000 <merijn> vms14: lambdabot has a library `simple-reflect` which visualises applications of some pre-defined variables
2026-06-16 15:21:20 +0000 <vms14> ah
2026-06-16 15:21:39 +0000 <ski> @hackage simpl-ereflect
2026-06-16 15:21:40 +0000 <lambdabot> https://hackage.haskell.org/package/simpl-ereflect
2026-06-16 15:21:54 +0000 <merijn> :t foldl (flip (:)) [] [x, y, z] :: [Expr]
2026-06-16 15:21:56 +0000 <ski> er
2026-06-16 15:21:56 +0000 <lambdabot> [Expr]
2026-06-16 15:21:59 +0000 <ski> @hackage simple-reflect
2026-06-16 15:21:59 +0000 <lambdabot> https://hackage.haskell.org/package/simple-reflect
2026-06-16 15:22:00 +0000 <merijn> > foldl (flip (:)) [] [x, y, z] :: [Expr]
2026-06-16 15:22:02 +0000 <lambdabot> [z,y,x]
2026-06-16 15:22:06 +0000 <merijn> ah, wait
2026-06-16 15:22:10 +0000 <merijn> That's not what I wanted
2026-06-16 15:22:18 +0000 <merijn> > foldl f [] [x, y, z] :: [Expr]
2026-06-16 15:22:20 +0000 <lambdabot> No instance for ‘FromExpr [Expr]’ arising from a use of ‘f’
2026-06-16 15:22:20 +0000 <ski> you didn't want `foldl' ?
2026-06-16 15:22:20 +0000 <lambdabot> In the first argument of ‘foldl’, namely ‘f’
2026-06-16 15:22:20 +0000 <lambdabot> In the expression: foldl f [] [x, y, z] :: [Expr]
2026-06-16 15:22:28 +0000 <merijn> > foldl f [] [x, y, z] :: Expr
2026-06-16 15:22:30 +0000 <lambdabot> Couldn't match expected type ‘Expr’ with actual type ‘[a0]’
2026-06-16 15:22:30 +0000 <lambdabot> In the second argument of ‘foldl’, namely ‘[]’
2026-06-16 15:22:30 +0000 <lambdabot> In the expression: foldl f [] [x, y, z] :: Expr
2026-06-16 15:22:39 +0000 <merijn> > foldl f z [x, y] :: Expr
2026-06-16 15:22:40 +0000 <lambdabot> f (f z x) y
2026-06-16 15:22:44 +0000 <merijn> > foldr f z [x, y] :: Expr
2026-06-16 15:22:45 +0000 <lambdabot> f x (f y z)
2026-06-16 15:23:03 +0000 <ski> > foldr f z [a,b,c,d,e]
2026-06-16 15:23:05 +0000 <lambdabot> f a (f b (f c (f d (f e z))))
2026-06-16 15:23:12 +0000 <ski> > foldl f z [a,b,c,d,e]
2026-06-16 15:23:13 +0000 <merijn> vms14: imagine `f` is, e.g. `:` our list constructor. notice how foldr can stop **immediately*
2026-06-16 15:23:14 +0000 <lambdabot> f (f (f (f (f z a) b) c) d) e
2026-06-16 15:24:00 +0000 <merijn> Whereas trying to pattern match and extract the first element of foldl will make you evaluate 5 layers
2026-06-16 15:24:21 +0000 <ski> `foldl' has to traverse the whole list (because it is tail-recursive). `foldr' *may* hand back control earlier to the caller (if the `f' callback does, before looking at its second argument, which will be the recursive call to `foldr')
2026-06-16 15:24:34 +0000 <merijn> So the thunk buildup you mentioned only happens in the foldl case
2026-06-16 15:24:37 +0000phm_(~peter@fsf/member/phm) phm
2026-06-16 15:25:09 +0000 <vms14> i did not yet learn about fold xD
2026-06-16 15:25:21 +0000 <ski> @src foldl
2026-06-16 15:25:21 +0000 <lambdabot> foldl f z [] = z
2026-06-16 15:25:21 +0000 <lambdabot> foldl f z (x:xs) = foldl f (f z x) xs
2026-06-16 15:25:24 +0000 <ski> @src foldr
2026-06-16 15:25:24 +0000 <lambdabot> foldr f z [] = z
2026-06-16 15:25:24 +0000 <lambdabot> foldr f z (x:xs) = f x (foldr f z xs)
2026-06-16 15:25:33 +0000 <vms14> just that lists can be seen as foldable and foldable seems to mean sequence
2026-06-16 15:25:48 +0000 <merijn> vms14: foldl/foldr are with some squinting equivalent to, e.g. python's reduce
2026-06-16 15:25:59 +0000 <merijn> if you know that
2026-06-16 15:26:11 +0000 <vms14> oh
2026-06-16 15:26:17 +0000 <merijn> :t Data.List.foldl
2026-06-16 15:26:19 +0000 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
2026-06-16 15:26:21 +0000 <merijn> ah, rats
2026-06-16 15:26:27 +0000 <ski> you combine all the elements of a list together into some result, one at a time
2026-06-16 15:26:57 +0000 <merijn> vms14: Pretend that reads `foldl :: (b -> a -> b) -> b -> [a] -> b`. If you ponder that type, you should be able to figure out what it's doing
2026-06-16 15:27:07 +0000 <ski> (or, actually works for other things than lists, as long as they are instances of `Foldable'. but it's basically a "list/sequence-like" type class, yes)
2026-06-16 15:27:55 +0000phm(~peter@fsf/member/phm) (Ping timeout: 264 seconds)
2026-06-16 15:28:24 +0000 <vms14> foldr (+) 0 [1,2,3]
2026-06-16 15:28:33 +0000 <ski> > foldr (\n s -> "(" ++ show n ++ " + " ++ s ++ ")") "0" [2,3,5,7] -- can you see how this works ?
2026-06-16 15:28:34 +0000 <lambdabot> "(2 + (3 + (5 + (7 + 0))))"
2026-06-16 15:28:45 +0000 <ski> > foldr (+) 0 [2,3,5,7]
2026-06-16 15:28:47 +0000 <lambdabot> 17
2026-06-16 15:29:34 +0000 <ski> > foldl (\s n -> "(" ++ s ++ " + " ++ show n ++ ")") "0" [2,3,5,7] -- or this ?
2026-06-16 15:29:36 +0000 <lambdabot> "((((0 + 2) + 3) + 5) + 7)"
2026-06-16 15:29:41 +0000 <ski> > foldl (+) 0 [2,3,5,7]
2026-06-16 15:29:43 +0000 <lambdabot> 17
2026-06-16 15:30:14 +0000xal_(~xal@mx1.xal.systems) xal
2026-06-16 15:30:31 +0000xal(~xal@mx1.xal.systems) (Ping timeout: 276 seconds)
2026-06-16 15:30:43 +0000 <vms14> and l or r is just where the 0 goes in that case?
2026-06-16 15:31:29 +0000 <vms14> foldr (+) 0 [1,2,3] 0 + 1 + 2 + 3 where foldl would be 1 + 2 + 3 + 0
2026-06-16 15:32:01 +0000 <vms14> i guess the reverse
2026-06-16 15:32:37 +0000 <vms14> well i have to keep reading, the real world haskell book seems it will be fun
2026-06-16 15:32:41 +0000 <merijn> That's where simple-reflect is hekpful ;)
2026-06-16 15:32:46 +0000 <merijn> > foldl f z [a,b,c]
2026-06-16 15:32:48 +0000 <lambdabot> f (f (f z a) b) c
2026-06-16 15:32:50 +0000 <vms14> i want to play with sockets
2026-06-16 15:32:50 +0000 <merijn> > foldr f z [a,b,c]
2026-06-16 15:32:51 +0000 <lambdabot> f a (f b (f c z))
2026-06-16 15:33:13 +0000 <ski> "fold left", say `foldl f z xs', starts from the front, with `z', combines each element of `xs', as it encounters then, into the `z' accumulator, using `f' to combine
2026-06-16 15:33:24 +0000 <ski> and, when it has seen all elements, it returns final accumulator
2026-06-16 15:33:56 +0000 <vms14> i do not know anything yet so i can't move properly
2026-06-16 15:34:17 +0000 <vms14> and i feel like you guys are wasting time teaching me basics i should learn by myself
2026-06-16 15:34:35 +0000 <ski> it's fine to ask questions, if things are unclear
2026-06-16 15:34:49 +0000 <vms14> cool, i'll take your words :D
2026-06-16 15:36:12 +0000 <vms14> ty for teaching me though, i appreciate it
2026-06-16 15:36:59 +0000wickedja`(~user@2605:8d80:8201:680e:dadb:dabd:d818:4b27)
2026-06-16 15:38:21 +0000wickedjargon(~user@64.114.24.74) (Ping timeout: 242 seconds)
2026-06-16 15:53:26 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline
2026-06-16 16:02:49 +0000kuribas`(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2026-06-16 16:03:25 +0000m_a_r_k(~m_a_r_k@archlinux/support/mark) (Remote host closed the connection)
2026-06-16 16:04:18 +0000m_a_r_k(~m_a_r_k@archlinux/support/mark) m_a_r_k
2026-06-16 16:06:24 +0000 <c_wraith> I wouldn't worry too much about the names "foldl" and "foldr". In particular, thinking of them as left or right really doesn't clarify anything.
2026-06-16 16:09:54 +0000karenw(~karenw@user/karenw) karenw
2026-06-16 16:11:05 +0000 <int-e> c_wraith: it does though if you know that you're supposed to view `f` as an infix operator and l and r refer to associativity of said operator
2026-06-16 16:11:19 +0000 <c_wraith> I end up thinking of them as legacy names for 1) apply f to an accumulator with every element before returning or 2) immediately reduce to f with the first element and an unevaluated expression
2026-06-16 16:11:29 +0000wickedja`(~user@2605:8d80:8201:680e:dadb:dabd:d818:4b27) (Remote host closed the connection)
2026-06-16 16:12:18 +0000 <c_wraith> those are the actual useful ways to think about the operations
2026-06-16 16:13:05 +0000 <int-e> c_wraith: Anyway this is the burrito fallacy in full effect. For both of us.
2026-06-16 16:13:33 +0000 <davean> Yah I'm not sure I see a difference in those definitions. I think this is all about the person saying them
2026-06-16 16:13:34 +0000 <c_wraith> Is it? I'm rejecting metaphor in place of semantics.
2026-06-16 16:13:44 +0000 <jaror> Which way do the foldr and foldl go for numbers 1 and 2?
2026-06-16 16:13:46 +0000 <c_wraith> that's the opposite of the burrito fallacy
2026-06-16 16:14:04 +0000 <jaror> Laziness throws a wrench into that imo
2026-06-16 16:14:20 +0000 <int-e> (mistaking the explanation/model that made a concept connect for yourself for a good explanation that works for everyone, when in truth the right approach for teaching is to try all the explanations until one of them clicks for the student)
2026-06-16 16:14:49 +0000 <c_wraith> Oh, I didn't claim my explanations were good for teaching. Just that they're precisely correct.
2026-06-16 16:15:07 +0000 <int-e> c_wraith: I mean, what is an accumulator? Is it really a simpler concept than associativity?
2026-06-16 16:15:12 +0000 <c_wraith> yes
2026-06-16 16:15:20 +0000 <int-e> Well, I disagree.
2026-06-16 16:16:06 +0000 <int-e> Also, that's not what foldl does; you want foldl'.
2026-06-16 16:16:13 +0000 <int-e> Like, 99% of the time.
2026-06-16 16:16:31 +0000 <c_wraith> it's what both do. It's just a lot less useful with foldl than foldl'
2026-06-16 16:17:02 +0000 <c_wraith> I only said it applies f, not that it evaluates the result.
2026-06-16 16:18:09 +0000 <c_wraith> jaror: any explanation of foldr that doesn't focus on how laziness means it immediately reduces to a call to f without performing any recursion is missing about 95% of why foldr is important in Haskell
2026-06-16 16:19:23 +0000 <jaror> I guess "immediately reduce to f" is a bit of a cop-out, because if f is strict then folding won't immediately produce a result
2026-06-16 16:19:38 +0000 <jaror> Even explaining reduction is not that easy
2026-06-16 16:20:53 +0000 <int-e> Now let's discuss this for snoc lists :P
2026-06-16 16:21:07 +0000 <c_wraith> yes, and using a strict (in its second argument) function with foldr is *really bad*. It just destroys the stack.
2026-06-16 16:21:19 +0000 <int-e> Anyway. I think foldr and foldl are perfectly good names.
2026-06-16 16:21:25 +0000 <c_wraith> If you know that foldr immediately reduces to f, that's obvious
2026-06-16 16:22:00 +0000 <int-e> Especially now that they're generalized (and we have `fold` for general tree-shaped folding in the middle)
2026-06-16 16:27:07 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 265 seconds)
2026-06-16 16:27:41 +0000 <c_wraith> fwiw... Yes. My explanations depend heavily on understanding evaluation-by-reduction. I think that's necessary for understanding Haskell semantics and practical performance anyway, so I don't consider it an extra thing to learn. I consider it a foundational thing to learn.
2026-06-16 16:30:16 +0000 <danza> hi all. I have `f :: IO [a]` and i want to run it with `forever`.
2026-06-16 16:30:21 +0000 <danza> From my understanding, when `f` returns `mzero` forever will stop, but trying that all `[a]` are discarded. Is there a way to gracefully terminate `forever f` keeping the `[a]` thet were returned before returning `mzero`? I feel like i misunderstood forever's docs
2026-06-16 16:31:19 +0000 <c_wraith> indeed. forever is meant to not return any useful value
2026-06-16 16:31:46 +0000 <int-e> danza: if it's supposed to terminate then you don't want `forever`
2026-06-16 16:32:06 +0000 <c_wraith> :t forever
2026-06-16 16:32:07 +0000 <lambdabot> Applicative f => f a -> f b
2026-06-16 16:32:13 +0000 <int-e> @src forever
2026-06-16 16:32:13 +0000 <lambdabot> forever a = let a' = a >> a' in a'
2026-06-16 16:32:22 +0000 <c_wraith> Note the type there. f a -> f b
2026-06-16 16:32:31 +0000 <int-e> it'll just be f >> f >> f >> f >> f >> f >> f >> f >> f >> ... [scnr]
2026-06-16 16:32:33 +0000 <c_wraith> where does the b in the return type come from?
2026-06-16 16:32:54 +0000ft(~ft@p4fc2ab3f.dip0.t-ipconnect.de) ft
2026-06-16 16:32:59 +0000 <int-e> it expresses that no value is returned
2026-06-16 16:33:03 +0000 <danza> just to adapt to the enclosing monad i guess
2026-06-16 16:33:05 +0000 <danza> thanks both
2026-06-16 16:33:15 +0000 <int-e> s/no value/nothing/
2026-06-16 16:35:14 +0000 <int-e> % Control.Monad.forever (Control.Monad.mzero :: IO [Int])
2026-06-16 16:35:14 +0000 <yahb2> *** Exception: user error (mzero)
2026-06-16 16:35:31 +0000 <danza> :t loop
2026-06-16 16:35:32 +0000 <lambdabot> ArrowLoop a => a (b, d) (c, d) -> a b c
2026-06-16 16:35:41 +0000 <danza> is that of use?
2026-06-16 16:35:49 +0000 <int-e> I guess throwing an exception makes forever mzero = mzero
2026-06-16 16:35:53 +0000 <int-e> (eww)
2026-06-16 16:36:04 +0000 <danza> yep
2026-06-16 16:36:05 +0000 <c_wraith> You should probably just write the loop by hand, with recursion
2026-06-16 16:36:19 +0000 <c_wraith> there are other approaches, but that's the easiest one to understand
2026-06-16 16:36:23 +0000 <danza> yes was scouting for idioms
2026-06-16 16:36:58 +0000 <c_wraith> for IO [a] specifically, you might find that various streaming libraries actually fit what you want.
2026-06-16 16:37:14 +0000 <c_wraith> they're totally different idioms
2026-06-16 16:37:51 +0000 <c_wraith> But they are intended to handle when you're producing an unknown number of `a` values in IO, and want to keep memory use in line
2026-06-16 16:38:06 +0000 <danza> sounds overkill for my case
2026-06-16 16:38:22 +0000 <ski> `forever' can be useful with say `ExceptT e IO'
2026-06-16 16:38:44 +0000 <c_wraith> yeah, you *can* return a value from forever, but you have to smuggle it out in the f rather than the a
2026-06-16 16:38:52 +0000 <danza> hm i prefer to avoid exceptions anyways
2026-06-16 16:38:53 +0000 <int-e> @hoogle untilM
2026-06-16 16:38:54 +0000 <lambdabot> Control.Monad.Loops untilM :: Monad m => m a -> m Bool -> m [a]
2026-06-16 16:38:54 +0000 <lambdabot> Control.Monad.HT untilM :: Monad m => (a -> Bool) -> m a -> m a
2026-06-16 16:38:54 +0000 <lambdabot> Control.Monad.IfElse untilM :: Monad m => m Bool -> m () -> m ()
2026-06-16 16:39:23 +0000 <int-e> (not in base, but this is a pattern people have clearly felt a need for)
2026-06-16 16:39:49 +0000 <danza> @hoogle loop
2026-06-16 16:39:50 +0000 <lambdabot> Control.Arrow loop :: ArrowLoop a => a (b, d) (c, d) -> a b c
2026-06-16 16:39:50 +0000 <lambdabot> GHC.JS.Make loop :: JStgExpr -> (JStgExpr -> JStgExpr) -> (JStgExpr -> JSM JStgStat) -> JSM JStgStat
2026-06-16 16:39:50 +0000 <lambdabot> Control.Monad.Extra loop :: (a -> Either a b) -> a -> b
2026-06-16 16:40:03 +0000 <Leary> :t fmap concat . many
2026-06-16 16:40:04 +0000 <lambdabot> Alternative f => f [a] -> f [a]
2026-06-16 16:40:13 +0000chele(~chele@user/chele) (Remote host closed the connection)
2026-06-16 16:40:15 +0000 <danza> entry from Control Monad Extra seems suited, but it requires a pure function
2026-06-16 16:40:38 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2026-06-16 16:41:15 +0000 <danza> i guess i would have an `f :: IO (Maybe a)` and then turn that into an `IO [a]` with a bespoke loop
2026-06-16 16:41:48 +0000 <danza> with Nothing terminating
2026-06-16 16:47:31 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2026-06-16 16:51:39 +0000danz40363(~danza@user/danza) danza
2026-06-16 16:53:30 +0000danza(~danza@user/danza) (Ping timeout: 245 seconds)
2026-06-16 16:57:45 +0000Fijxu(~Fijxu@user/fijxu) (Quit: XD!!)
2026-06-16 17:01:01 +0000Fijxu(~Fijxu@user/fijxu) fijxu
2026-06-16 17:07:25 +0000jreicher(~joelr@user/jreicher) (Quit: brb)
2026-06-16 17:09:04 +0000jreicher(~joelr@user/jreicher) jreicher
2026-06-16 17:16:34 +0000nattkyrro(~serenity@user/nattkyrro) (Ping timeout: 256 seconds)
2026-06-16 17:18:20 +0000nattkyrro(~serenity@user/nattkyrro) nattkyrro
2026-06-16 17:20:14 +0000karenw(~karenw@user/karenw) (Quit: Deep into that darkness peering...)
2026-06-16 17:22:39 +0000danz40363(~danza@user/danza) (Remote host closed the connection)
2026-06-16 17:29:21 +0000tessier_(~tessier@ip68-8-117-219.sd.sd.cox.net) (Quit: leaving)
2026-06-16 17:31:33 +0000pyooque(~puke@user/puke) puke
2026-06-16 17:31:34 +0000pukeGuest127
2026-06-16 17:31:34 +0000pyooquepuke
2026-06-16 17:34:39 +0000Guest127(~puke@user/puke) (Ping timeout: 268 seconds)