| 2026-06-16 00:00:31 +0000 | jayanth | (~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) |
| 2026-06-16 00:03:19 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 00:08:02 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-06-16 00:14:43 +0000 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) (Ping timeout: 244 seconds) |
| 2026-06-16 00:15:54 +0000 | weary-traveler | (~user@user/user363627) (Quit: Konversation terminated!) |
| 2026-06-16 00:16:12 +0000 | weary-traveler | (~user@user/user363627) user363627 |
| 2026-06-16 00:18:14 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
| 2026-06-16 00:18:30 +0000 | notzmv | (~umar@user/notzmv) (Ping timeout: 245 seconds) |
| 2026-06-16 00:18:42 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 00:19:22 +0000 | jayanth | (~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (Ping timeout: 244 seconds) |
| 2026-06-16 00:25:43 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2026-06-16 00:26:32 +0000 | czan | (~czan@user/mange) czan |
| 2026-06-16 00:27:43 +0000 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) GdeVolpiano |
| 2026-06-16 00:32:48 +0000 | bggd_ | (~bgg@2a01:e0a:fd5:f510:1a59:33f5:ef7c:52f1) (Ping timeout: 244 seconds) |
| 2026-06-16 00:33:19 +0000 | acidjnk | (~acidjnk@p200300d6e700e534f8213bb0af1b5ed0.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 2026-06-16 00:33:22 +0000 | acidjnk_new | (~acidjnk@p200300d6e700e534f8213bb0af1b5ed0.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 2026-06-16 00:36:45 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 00:40:39 +0000 | redmp | (~redmp@116-65-231-94.rev.home.ne.jp) redmp |
| 2026-06-16 00:41:13 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-06-16 00:42:16 +0000 | kadobanana | (~mud@user/kadoban) kadoban |
| 2026-06-16 00:44:57 +0000 | mud | (~mud@user/kadoban) (Ping timeout: 272 seconds) |
| 2026-06-16 00:49:23 +0000 | fgarcia | (~lei@user/fgarcia) (Ping timeout: 272 seconds) |
| 2026-06-16 00:52:18 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 00:56:43 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-06-16 00:57:43 +0000 | xff0x | (~xff0x@ai070051.d.east.v6connect.net) (Quit: xff0x) |
| 2026-06-16 01:06:31 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 245 seconds) |
| 2026-06-16 01:06:57 +0000 | redmp | (~redmp@116-65-231-94.rev.home.ne.jp) (Ping timeout: 246 seconds) |
| 2026-06-16 01:07:35 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 01:08:41 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
| 2026-06-16 01:09:02 +0000 | emmanuelux | (~em@user/emmanuelux) (Quit: bye) |
| 2026-06-16 01:11:50 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-06-16 01:21:04 +0000 | spew | (~spew@user/spew) spew |
| 2026-06-16 01:22:46 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 245 seconds) |
| 2026-06-16 01:22:54 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 01:27:26 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 247 seconds) |
| 2026-06-16 01:34:14 +0000 | Pozyomka_ | (~pyon@user/pyon) pyon |
| 2026-06-16 01:34:18 +0000 | Pozyomka | (~pyon@user/pyon) (Remote host closed the connection) |
| 2026-06-16 01:34:25 +0000 | spew | (~spew@user/spew) (Quit: nyaa~) |
| 2026-06-16 01:35:39 +0000 | Pozyomka_ | (~pyon@user/pyon) (Remote host closed the connection) |
| 2026-06-16 01:36:03 +0000 | Pozyomka | (~pyon@user/pyon) pyon |
| 2026-06-16 01:38:16 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 01:38:27 +0000 | EvanR | (~EvanR@user/evanr) (Remote host closed the connection) |
| 2026-06-16 01:38:47 +0000 | EvanR | (~EvanR@user/evanr) EvanR |
| 2026-06-16 01:40:33 +0000 | karenw | (~karenw@user/karenw) karenw |
| 2026-06-16 01:43:13 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 2026-06-16 01:52:12 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) lisbeths |
| 2026-06-16 01:53:31 +0000 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 2026-06-16 01:53:39 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 01:54:54 +0000 | Axma23834 | (~Axman6@user/axman6) Axman6 |
| 2026-06-16 01:55:55 +0000 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 245 seconds) |
| 2026-06-16 02:00:18 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-06-16 02:03:28 +0000 | karenw | (~karenw@user/karenw) (Quit: Deep into that darkness peering...) |
| 2026-06-16 02:11:46 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 02:16:00 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-06-16 02:18:53 +0000 | polykernel | (~polykerne@user/polykernel) polykernel |
| 2026-06-16 02:19:34 +0000 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-06-16 02:20:15 +0000 | Pozyomka | (~pyon@user/pyon) (Quit: brb) |
| 2026-06-16 02:21:07 +0000 | Pozyomka | (~pyon@user/pyon) pyon |
| 2026-06-16 02:27:03 +0000 | emilym | (~Thunderbi@user/emilym) emilym |
| 2026-06-16 02:31:26 +0000 | emilym | (~Thunderbi@user/emilym) (Ping timeout: 256 seconds) |
| 2026-06-16 02:41:45 +0000 | Square | (~Square@user/square) (Ping timeout: 246 seconds) |
| 2026-06-16 02:47:24 +0000 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 252 seconds) |
| 2026-06-16 02:53:05 +0000 | td_ | (~td@i5387093E.versanet.de) (Ping timeout: 245 seconds) |
| 2026-06-16 02:54:51 +0000 | td_ | (~td@i53870916.versanet.de) |
| 2026-06-16 03:05:17 +0000 | Axma23834 | Axman6 |
| 2026-06-16 03:06:47 +0000 | notzmv | (~umar@user/notzmv) notzmv |
| 2026-06-16 03:14:54 +0000 | leppard | (~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
| 2026-06-16 03:39:28 +0000 | fgarcia | (~lei@user/fgarcia) fgarcia |
| 2026-06-16 03:40:14 +0000 | puke | (~puke@user/puke) puke |
| 2026-06-16 03:40:22 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 03:44:45 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-06-16 03:55:45 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 03:56:58 +0000 | machinedgod | (~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 276 seconds) |
| 2026-06-16 03:57:26 +0000 | ystael | (~ystael@user/ystael) (Ping timeout: 252 seconds) |
| 2026-06-16 04:03:36 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-06-16 04:14:34 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 04:16:45 +0000 | jayanth | (~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) |
| 2026-06-16 04:19:06 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-06-16 04:26:59 +0000 | synchromesh | (~john@2406:5a00:247e:1500:a691:b1ff:0:f9d) (Read error: Connection reset by peer) |
| 2026-06-16 04:27:00 +0000 | Axma73573 | (~Axman6@user/axman6) Axman6 |
| 2026-06-16 04:28:25 +0000 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 245 seconds) |
| 2026-06-16 04:29:55 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 04:32:58 +0000 | synchromesh | (~john@2406:5a00:247e:1500:a691:b1ff:0:f9d) synchromesh |
| 2026-06-16 04:34:09 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-06-16 04:41:30 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 2026-06-16 04:42:51 +0000 | michalz | (~michalz@185.246.207.197) |
| 2026-06-16 04:44:51 +0000 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-06-16 04:45:17 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 04:52:28 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 2026-06-16 05:03:16 +0000 | wickedjargon | (~user@64.114.24.74) wickedjargon |
| 2026-06-16 05:03:20 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 05:05:09 +0000 | jayanth | (~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (Ping timeout: 262 seconds) |
| 2026-06-16 05:06:33 +0000 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 252 seconds) |
| 2026-06-16 05:07:53 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-06-16 05:15:51 +0000 | tusko | (~uwu@user/tusko) tusko |
| 2026-06-16 05:18:43 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 05:19:09 +0000 | takuan | (~takuan@d8D86B9E9.access.telenet.be) |
| 2026-06-16 05:21:52 +0000 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
| 2026-06-16 05:23:03 +0000 | puke | (~puke@user/puke) (Quit: puke) |
| 2026-06-16 05:23:25 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2026-06-16 05:26:43 +0000 | puke | (~puke@user/puke) puke |
| 2026-06-16 05:34:04 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 05:35:59 +0000 | divlamir_ | (~divlamir@user/divlamir) divlamir |
| 2026-06-16 05:38:54 +0000 | divlamir | (~divlamir@user/divlamir) (Ping timeout: 246 seconds) |
| 2026-06-16 05:38:54 +0000 | divlamir_ | divlamir |
| 2026-06-16 05:38:58 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2026-06-16 05:46:13 +0000 | divlamir | (~divlamir@user/divlamir) (Ping timeout: 265 seconds) |
| 2026-06-16 05:46:28 +0000 | divlamir | (~divlamir@user/divlamir) divlamir |
| 2026-06-16 05:49:26 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 05:53:39 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-06-16 06:00:22 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 06:05:13 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 259 seconds) |
| 2026-06-16 06:16:52 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 06:21:29 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-06-16 06:31:27 +0000 | humasect | (~humasect@dyn-192-249-132-90.nexicom.net) humasect |
| 2026-06-16 06:32:15 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 06:39:19 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-06-16 06:40:13 +0000 | czan | (~czan@user/mange) (Quit: Quittin' time!) |
| 2026-06-16 06:45:36 +0000 | divlamir_ | (~divlamir@user/divlamir) divlamir |
| 2026-06-16 06:48:12 +0000 | divlamir | (~divlamir@user/divlamir) (Ping timeout: 246 seconds) |
| 2026-06-16 06:48:12 +0000 | divlamir_ | divlamir |
| 2026-06-16 06:50:19 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 06:51:42 +0000 | Axma73573 | Axman6 |
| 2026-06-16 06:54:09 +0000 | kadobanana | (~mud@user/kadoban) (Ping timeout: 246 seconds) |
| 2026-06-16 06:54:56 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2026-06-16 06:55:46 +0000 | marinelli | (~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli) |
| 2026-06-16 06:56:40 +0000 | kadobanana | (~mud@user/kadoban) kadoban |
| 2026-06-16 06:59:41 +0000 | Axma87347 | (~Axman6@user/axman6) Axman6 |
| 2026-06-16 07:01:24 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-16 07:01:59 +0000 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 265 seconds) |
| 2026-06-16 07:05:05 +0000 | marinelli | (~weechat@gateway/tor-sasl/marinelli) marinelli |
| 2026-06-16 07:05:31 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 241 seconds) |
| 2026-06-16 07:06:06 +0000 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 2026-06-16 07:17:38 +0000 | CiaoSen | (~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) CiaoSen |
| 2026-06-16 07:19:11 +0000 | hc | (~hc@mail.hce.li) (Remote host closed the connection) |
| 2026-06-16 07:19:54 +0000 | jcarpenter2 | (~lol@96.78.87.197) (Ping timeout: 245 seconds) |
| 2026-06-16 07:22:55 +0000 | jcarpenter2 | (~lol@2603:3016:1e01:b940:9e16:4716:cb0d:9d39) |
| 2026-06-16 07:25:49 +0000 | chele | (~chele@user/chele) chele |
| 2026-06-16 07:27:37 +0000 | jcarpenter2 | (~lol@2603:3016:1e01:b940:9e16:4716:cb0d:9d39) (Ping timeout: 248 seconds) |
| 2026-06-16 07:29:18 +0000 | jcarpenter2 | (~lol@96.78.87.197) |
| 2026-06-16 07:33:26 +0000 | rainbyte | (~rainbyte@181.47.219.31) (Read error: Connection reset by peer) |
| 2026-06-16 07:36:27 +0000 | rainbyte | (~rainbyte@181.47.219.31) rainbyte |
| 2026-06-16 07:38:50 +0000 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 2026-06-16 07:44:40 +0000 | oneeyedalien | (~oneeyedal@user/oneeyedalien) oneeyedalien |
| 2026-06-16 07:46:44 +0000 | hc | (~hc@mail.hce.li) hc |
| 2026-06-16 07:46:58 +0000 | puke | (~puke@user/puke) (Ping timeout: 268 seconds) |
| 2026-06-16 07:52:34 +0000 | kuribas | (~user@2a02:1808:41:5a17:f424:93c2:8ba2:25d) |
| 2026-06-16 07:53:37 +0000 | merijn | (~merijn@77.242.116.146) merijn |
| 2026-06-16 07:56:10 +0000 | leppard | (~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline |
| 2026-06-16 08:22:32 +0000 | oneeyedalien | (~oneeyedal@user/oneeyedalien) (Quit: Leaving) |
| 2026-06-16 08:25:54 +0000 | CiaoSen | (~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) (Ping timeout: 248 seconds) |
| 2026-06-16 08:34:20 +0000 | humasect | (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 2026-06-16 08:40:25 +0000 | kuribas` | (~user@ip-188-118-57-242.reverse.destiny.be) kuribas |
| 2026-06-16 08:41:46 +0000 | bggd_ | (~bgg@2a01:e0a:fd5:f510:8949:3630:d504:97ee) |
| 2026-06-16 08:42:16 +0000 | kuribas | (~user@2a02:1808:41:5a17:f424:93c2:8ba2:25d) (Ping timeout: 268 seconds) |
| 2026-06-16 08:44:26 +0000 | ft | (~ft@p4fc2ab3f.dip0.t-ipconnect.de) (Quit: leaving) |
| 2026-06-16 09:06:26 +0000 | CiaoSen | (~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) CiaoSen |
| 2026-06-16 09:08:10 +0000 | acidjnk | (~acidjnk@p200300d6e700e5750409562b4c541c53.dip0.t-ipconnect.de) acidjnk |
| 2026-06-16 09:08:17 +0000 | acidjnk_new | (~acidjnk@p200300d6e700e5750409562b4c541c53.dip0.t-ipconnect.de) |
| 2026-06-16 09:19:15 +0000 | ThePenguin | (~ThePengui@cust-95-80-28-221.csbnet.se) (Remote host closed the connection) |
| 2026-06-16 09:25:02 +0000 | picnoir | (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.9.1) |
| 2026-06-16 09:26:11 +0000 | picnoir | (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) NinjaTrappeur |
| 2026-06-16 09:28:36 +0000 | ThePenguin | (~ThePengui@cust-95-80-28-221.csbnet.se) ThePenguin |
| 2026-06-16 09:30:22 +0000 | ThePenguin | (~ThePengui@cust-95-80-28-221.csbnet.se) (Remote host closed the connection) |
| 2026-06-16 09:31:04 +0000 | ThePenguin | (~ThePengui@cust-95-80-28-221.csbnet.se) ThePenguin |
| 2026-06-16 09:31:21 +0000 | Axman6 | (~Axman6@user/axman6) Axman6 |
| 2026-06-16 09:33:25 +0000 | Axma87347 | (~Axman6@user/axman6) (Ping timeout: 245 seconds) |
| 2026-06-16 09:38:52 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) lisbeths |
| 2026-06-16 10:07:35 +0000 | danza | (~danza@user/danza) danza |
| 2026-06-16 10:13:11 +0000 | marinelli | (~weechat@gateway/tor-sasl/marinelli) (Ping timeout: 245 seconds) |
| 2026-06-16 10:15:15 +0000 | marinelli | (~weechat@gateway/tor-sasl/marinelli) marinelli |
| 2026-06-16 10:21:59 +0000 | CiaoSen | (~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) (Ping timeout: 245 seconds) |
| 2026-06-16 10:24:02 +0000 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 256 seconds) |
| 2026-06-16 10:36:01 +0000 | puke | (~puke@user/puke) puke |
| 2026-06-16 10:36:43 +0000 | danza | (~danza@user/danza) (Remote host closed the connection) |
| 2026-06-16 10:44:59 +0000 | marinelli | (~weechat@gateway/tor-sasl/marinelli) (Remote host closed the connection) |
| 2026-06-16 10:45:21 +0000 | marinelli | (~weechat@gateway/tor-sasl/marinelli) marinelli |
| 2026-06-16 10:47:49 +0000 | juri_ | (~juri@217-114-215-140.pool.ovpn.com) (Ping timeout: 265 seconds) |
| 2026-06-16 10:51:04 +0000 | poscat0x04 | (~poscat@user/poscat) poscat |
| 2026-06-16 10:52:58 +0000 | poscat | (~poscat@user/poscat) (Ping timeout: 276 seconds) |
| 2026-06-16 10:57:45 +0000 | juri_ | (~juri@217-114-215-140.pool.ovpn.com) juri_ |
| 2026-06-16 11:02:08 +0000 | fun-safe-math | (~fun-safe-@97-120-35-225.ptld.qwest.net) () |
| 2026-06-16 11:04:12 +0000 | fun-safe-math | (~fun-safe-@97-120-35-225.ptld.qwest.net) fun-safe-math |
| 2026-06-16 11:16:44 +0000 | CiaoSen | (~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) CiaoSen |
| 2026-06-16 11:19:55 +0000 | puke | (~puke@user/puke) (Quit: puke) |
| 2026-06-16 11:20:11 +0000 | xal_ | (~xal@mx1.xal.systems) (Quit: No Ping reply in 180 seconds.) |
| 2026-06-16 11:22:53 +0000 | xal | (~xal@mx1.xal.systems) xal |
| 2026-06-16 11:23:29 +0000 | Sgeo | (~Sgeo@user/sgeo) Sgeo |
| 2026-06-16 11:24:22 +0000 | puke | (~puke@user/puke) puke |
| 2026-06-16 11:26:37 +0000 | xff0x | (~xff0x@2405:6580:b080:900:f8bd:50a9:9ed8:decc) |
| 2026-06-16 11:28:46 +0000 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
| 2026-06-16 11:29:24 +0000 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds) |
| 2026-06-16 11:31:38 +0000 | Lord_of_Life_ | Lord_of_Life |
| 2026-06-16 11:31:53 +0000 | wickedjargon | (~user@64.114.24.74) (Ping timeout: 248 seconds) |
| 2026-06-16 11:32:24 +0000 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
| 2026-06-16 11:33:43 +0000 | Square | (~Square@user/square) Square |
| 2026-06-16 11:38:28 +0000 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 276 seconds) |
| 2026-06-16 11:39:13 +0000 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
| 2026-06-16 11:45:25 +0000 | Axma10736 | (~Axman6@user/axman6) Axman6 |
| 2026-06-16 11:46:24 +0000 | jayanth | (~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) |
| 2026-06-16 11:47:10 +0000 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 245 seconds) |
| 2026-06-16 11:48:00 +0000 | chromoblob | (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 2026-06-16 11:48:26 +0000 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
| 2026-06-16 11:48:52 +0000 | weary-traveler | (~user@user/user363627) user363627 |
| 2026-06-16 11:51:00 +0000 | fgarcia | (~lei@user/fgarcia) (Ping timeout: 245 seconds) |
| 2026-06-16 11:53:24 +0000 | fgarcia | (~lei@user/fgarcia) fgarcia |
| 2026-06-16 11:56:00 +0000 | CiaoSen | (~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) (Ping timeout: 245 seconds) |
| 2026-06-16 12:17:17 +0000 | puke | (~puke@user/puke) (Read error: Connection reset by peer) |
| 2026-06-16 12:17:33 +0000 | puke | (~puke@user/puke) puke |
| 2026-06-16 12:18:12 +0000 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 2026-06-16 12:26:00 +0000 | tremon | (~tremon@83-80-159-219.cable.dynamic.v4.ziggo.nl) tremon |
| 2026-06-16 12:40:10 +0000 | puke | (~puke@user/puke) (Remote host closed the connection) |
| 2026-06-16 12:40:35 +0000 | puke | (~puke@user/puke) puke |
| 2026-06-16 12:42:22 +0000 | ridcully | (~ridcully@p57b52a2d.dip0.t-ipconnect.de) (Quit: WeeChat 4.9.1) |
| 2026-06-16 12:50:59 +0000 | CiaoSen | (~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) CiaoSen |
| 2026-06-16 13:13:50 +0000 | Square | (~Square@user/square) (Quit: Leaving) |
| 2026-06-16 13:24:04 +0000 | CiaoSen | (~Jura@2a02:3035:eef:857d:4e50:ddff:fe9b:8922) (Ping timeout: 245 seconds) |
| 2026-06-16 14:19:05 +0000 | Axman6 | (~Axman6@user/axman6) Axman6 |
| 2026-06-16 14:21:20 +0000 | Axma10736 | (~Axman6@user/axman6) (Ping timeout: 245 seconds) |
| 2026-06-16 14:23:19 +0000 | vms14 | (~vms14@user/vms14) (Quit: WeeChat 4.6.3) |
| 2026-06-16 14:24:38 +0000 | pavonia | (~user@user/siracusa) (Ping timeout: 244 seconds) |
| 2026-06-16 14:25:06 +0000 | pavonia | (~user@user/siracusa) siracusa |
| 2026-06-16 14:28:22 +0000 | pavonia_ | (~user@user/siracusa) siracusa |
| 2026-06-16 14:28:48 +0000 | emilym | (~Thunderbi@user/emilym) emilym |
| 2026-06-16 14:30:33 +0000 | pavonia | (~user@user/siracusa) (Ping timeout: 248 seconds) |
| 2026-06-16 14:30:49 +0000 | pavonia_ | pavonia |
| 2026-06-16 14:32:49 +0000 | emilym | (~Thunderbi@user/emilym) (Ping timeout: 245 seconds) |
| 2026-06-16 14:33:04 +0000 | pyooque | (~puke@user/puke) puke |
| 2026-06-16 14:33:05 +0000 | puke | Guest4739 |
| 2026-06-16 14:33:05 +0000 | pyooque | puke |
| 2026-06-16 14:35:23 +0000 | machinedgod | (~machinedg@d172-219-48-230.abhsia.telus.net) machinedgod |
| 2026-06-16 14:35:49 +0000 | Guest4739 | (~puke@user/puke) (Ping timeout: 268 seconds) |
| 2026-06-16 14:38:13 +0000 | ridcully | (~ridcully@p57b52a2d.dip0.t-ipconnect.de) ridcully |
| 2026-06-16 14:42:28 +0000 | vms14 | (~vms14@user/vms14) vms14 |
| 2026-06-16 14:44:02 +0000 | leppard | (~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 +0000 | Googulator | (~Googulato@team.broadbit.hu) |
| 2026-06-16 14:49:45 +0000 | jayanth | (~jayanth@static-98-115-128-109.phlapa.fios.verizon.net) (Ping timeout: 248 seconds) |
| 2026-06-16 14:54:04 +0000 | pyooque | (~puke@user/puke) puke |
| 2026-06-16 14:54:05 +0000 | puke | Guest7801 |
| 2026-06-16 14:54:05 +0000 | pyooque | puke |
| 2026-06-16 14:56:47 +0000 | Guest7801 | (~puke@user/puke) (Ping timeout: 268 seconds) |
| 2026-06-16 15:01:59 +0000 | danza | (~danza@user/danza) danza |
| 2026-06-16 15:06:50 +0000 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 245 seconds) |
| 2026-06-16 15:08:12 +0000 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
| 2026-06-16 15:13:45 +0000 | chromoblob | (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 2026-06-16 15:14:15 +0000 | chromoblob | (~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 +0000 | wickedjargon | (~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 +0000 | phm_ | (~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 +0000 | phm | (~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 +0000 | xal_ | (~xal@mx1.xal.systems) xal |
| 2026-06-16 15:30:31 +0000 | xal | (~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 +0000 | wickedja` | (~user@2605:8d80:8201:680e:dadb:dabd:d818:4b27) |
| 2026-06-16 15:38:21 +0000 | wickedjargon | (~user@64.114.24.74) (Ping timeout: 242 seconds) |
| 2026-06-16 15:53:26 +0000 | leppard | (~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline |
| 2026-06-16 16:02:49 +0000 | kuribas` | (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
| 2026-06-16 16:03:25 +0000 | m_a_r_k | (~m_a_r_k@archlinux/support/mark) (Remote host closed the connection) |
| 2026-06-16 16:04:18 +0000 | m_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 +0000 | karenw | (~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 +0000 | wickedja` | (~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 +0000 | merijn | (~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 +0000 | ft | (~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 +0000 | chele | (~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 +0000 | pavonia | (~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 +0000 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 2026-06-16 16:51:39 +0000 | danz40363 | (~danza@user/danza) danza |
| 2026-06-16 16:53:30 +0000 | danza | (~danza@user/danza) (Ping timeout: 245 seconds) |
| 2026-06-16 16:57:45 +0000 | Fijxu | (~Fijxu@user/fijxu) (Quit: XD!!) |
| 2026-06-16 17:01:01 +0000 | Fijxu | (~Fijxu@user/fijxu) fijxu |
| 2026-06-16 17:07:25 +0000 | jreicher | (~joelr@user/jreicher) (Quit: brb) |
| 2026-06-16 17:09:04 +0000 | jreicher | (~joelr@user/jreicher) jreicher |
| 2026-06-16 17:16:34 +0000 | nattkyrro | (~serenity@user/nattkyrro) (Ping timeout: 256 seconds) |
| 2026-06-16 17:18:20 +0000 | nattkyrro | (~serenity@user/nattkyrro) nattkyrro |
| 2026-06-16 17:20:14 +0000 | karenw | (~karenw@user/karenw) (Quit: Deep into that darkness peering...) |
| 2026-06-16 17:22:39 +0000 | danz40363 | (~danza@user/danza) (Remote host closed the connection) |
| 2026-06-16 17:29:21 +0000 | tessier_ | (~tessier@ip68-8-117-219.sd.sd.cox.net) (Quit: leaving) |
| 2026-06-16 17:31:33 +0000 | pyooque | (~puke@user/puke) puke |
| 2026-06-16 17:31:34 +0000 | puke | Guest127 |
| 2026-06-16 17:31:34 +0000 | pyooque | puke |
| 2026-06-16 17:34:39 +0000 | Guest127 | (~puke@user/puke) (Ping timeout: 268 seconds) |