2025/04/16

2025-04-16 00:01:27 +0000infinity0(~infinity0@pwned.gg) infinity0
2025-04-16 00:03:05 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 00:07:42 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 00:08:55 +0000hololeap(~quassel@user/hololeap) (Quit: Bye)
2025-04-16 00:09:17 +0000Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu) (Quit: Client closed)
2025-04-16 00:09:41 +0000Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-16 00:10:52 +0000j1n37-(~j1n37@user/j1n37) j1n37
2025-04-16 00:11:00 +0000j1n37(~j1n37@user/j1n37) (Ping timeout: 252 seconds)
2025-04-16 00:11:35 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 00:13:33 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 00:14:22 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 00:15:17 +0000j1n37-(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 00:16:26 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 00:19:08 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 00:19:32 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 00:20:29 +0000hololeap(~quassel@user/hololeap) hololeap
2025-04-16 00:21:29 +0000hololeap(~quassel@user/hololeap) (Client Quit)
2025-04-16 00:24:11 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 00:24:53 +0000machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 248 seconds)
2025-04-16 00:26:14 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 00:28:04 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 00:29:35 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 00:31:06 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 00:31:45 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 00:31:45 +0000polyphem(~rod@p4fc2c7a3.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2025-04-16 00:32:00 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 00:32:50 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 00:32:53 +0000acidjnk(~acidjnk@p200300d6e71c4f5865559714f8604ffa.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2025-04-16 00:32:54 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-16 00:33:06 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 00:33:27 +0000polyphem(~rod@p4fc2c4fb.dip0.t-ipconnect.de) polyphem
2025-04-16 00:35:54 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 00:36:51 +0000j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 00:37:38 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 00:39:12 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 00:39:56 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 00:43:01 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 00:44:57 +0000tremon(~tremon@83.80.159.219) (Quit: getting boxed in)
2025-04-16 00:52:56 +0000hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) hgolden
2025-04-16 00:53:09 +0000otto_s(~user@p5b04470d.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2025-04-16 00:53:59 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 00:55:11 +0000otto_s(~user@p5b044a7e.dip0.t-ipconnect.de)
2025-04-16 00:58:29 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 00:59:21 +0000notdabs(~Owner@2600:1700:69cf:9000:2d58:f7ab:5036:c251) (Quit: Leaving)
2025-04-16 00:59:43 +0000L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out)
2025-04-16 01:00:22 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 01:02:13 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 01:11:26 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 01:12:59 +0000xff0x(~xff0x@2405:6580:b080:900:a06a:3d55:af99:ce4d) (Ping timeout: 265 seconds)
2025-04-16 01:15:01 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 01:15:12 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds)
2025-04-16 01:16:06 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 01:16:49 +0000j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 01:17:15 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 01:19:34 +0000Igloo(~ian@81.2.99.210) Igfoo
2025-04-16 01:19:42 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
2025-04-16 01:21:35 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 01:21:54 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 01:22:31 +0000Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu) (Quit: Client closed)
2025-04-16 01:22:53 +0000Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-16 01:23:46 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 01:25:07 +0000causal(~eric@50.35.84.231) causal
2025-04-16 01:25:33 +0000CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 265 seconds)
2025-04-16 01:27:58 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 01:28:16 +0000j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 01:30:17 +0000rosco(~rosco@183.171.72.24) rosco
2025-04-16 01:30:49 +0000euleritian(~euleritia@95.90.214.149) (Remote host closed the connection)
2025-04-16 01:31:40 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 01:32:21 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 01:32:25 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 01:36:31 +0000rosco(~rosco@183.171.72.24) (Quit: Gotta go.)
2025-04-16 01:40:40 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2025-04-16 01:43:33 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 01:44:53 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-04-16 01:45:11 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-16 01:46:35 +0000rosco(~rosco@183.171.72.24) rosco
2025-04-16 01:48:14 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 01:50:39 +0000rosco(~rosco@183.171.72.24) (Read error: Connection reset by peer)
2025-04-16 01:50:48 +0000rosco(~rosco@2001:e68:5442:b896:2437:120f:9971:a543) rosco
2025-04-16 01:53:48 +0000 <monochrom> You can learn linear algebra by just learning quantum computing. >:)
2025-04-16 01:55:26 +0000 <monochrom> You can learn more linear algebra by just learning machine learning. >:)
2025-04-16 01:59:21 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 02:04:28 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 02:08:45 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-04-16 02:14:15 +0000rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2025-04-16 02:14:31 +0000Square2(~Square4@user/square) Square
2025-04-16 02:14:50 +0000rvalue(~rvalue@user/rvalue) rvalue
2025-04-16 02:16:49 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 02:17:35 +0000Square(~Square@user/square) (Ping timeout: 260 seconds)
2025-04-16 02:23:36 +0000 <haskellbridge> <Liamzee> what is there to linear algebra besides the capstone course of the standard undergraduate mathematics education (if you're some place decent)
2025-04-16 02:24:02 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 02:24:19 +0000 <haskellbridge> <Liamzee> just do artin for rigor?
2025-04-16 02:29:15 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2025-04-16 02:29:51 +0000euleritian(~euleritia@95.90.214.149)
2025-04-16 02:31:12 +0000td_(~td@i5387093D.versanet.de) (Ping timeout: 272 seconds)
2025-04-16 02:31:13 +0000euleritian(~euleritia@95.90.214.149) (Read error: Connection reset by peer)
2025-04-16 02:32:08 +0000euleritian(~euleritia@95.90.214.149)
2025-04-16 02:32:40 +0000td_(~td@i53870938.versanet.de)
2025-04-16 02:37:40 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 02:39:09 +0000foul_owl(~kerry@94.156.149.97) (Ping timeout: 245 seconds)
2025-04-16 02:41:21 +0000inca(~inca@71.30.233.213) (Ping timeout: 244 seconds)
2025-04-16 02:42:04 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 02:43:30 +0000inca(~inca@71.30.233.213)
2025-04-16 02:47:55 +0000inca(~inca@71.30.233.213) (Ping timeout: 252 seconds)
2025-04-16 02:50:41 +0000inca(~inca@h213.233.30.71.dynamic.ip.windstream.net)
2025-04-16 02:52:18 +0000foul_owl(~kerry@174-21-146-90.tukw.qwest.net) foul_owl
2025-04-16 02:53:39 +0000Core1389(~rosco@183.171.73.8) rosco
2025-04-16 02:54:06 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 02:54:54 +0000inca(~inca@h213.233.30.71.dynamic.ip.windstream.net) (Ping timeout: 252 seconds)
2025-04-16 02:58:12 +0000EvanR(~EvanR@user/evanr) (Remote host closed the connection)
2025-04-16 02:58:25 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 02:58:30 +0000rosco(~rosco@2001:e68:5442:b896:2437:120f:9971:a543) (Ping timeout: 276 seconds)
2025-04-16 02:58:31 +0000EvanR(~EvanR@user/evanr) EvanR
2025-04-16 03:01:30 +0000hololeap(~quassel@user/hololeap) hololeap
2025-04-16 03:07:10 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 03:07:55 +0000inca(~inca@71.30.233.213)
2025-04-16 03:12:22 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 03:17:08 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2025-04-16 03:19:28 +0000Core1389(~rosco@183.171.73.8) (Quit: Gotta go.)
2025-04-16 03:19:33 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-16 03:23:52 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 03:26:56 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-16 03:28:48 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 03:39:18 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 03:40:40 +0000famubu(~julinuser@user/famubu) (Quit: leaving)
2025-04-16 03:44:00 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 03:45:08 +0000dutchie(~dutchie@user/dutchie) (Remote host closed the connection)
2025-04-16 03:46:09 +0000j1n37-(~j1n37@user/j1n37) j1n37
2025-04-16 03:46:11 +0000dutchie(~dutchie@user/dutchie) dutchie
2025-04-16 03:46:45 +0000j1n37(~j1n37@user/j1n37) (Ping timeout: 244 seconds)
2025-04-16 03:50:33 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 265 seconds)
2025-04-16 03:51:13 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-16 03:54:09 +0000michalz(~michalz@185.246.207.197)
2025-04-16 03:56:05 +0000euleritian(~euleritia@95.90.214.149) (Read error: Connection reset by peer)
2025-04-16 03:57:05 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 03:57:09 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 04:04:09 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-16 04:16:28 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 04:21:07 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-16 04:33:41 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 04:37:34 +0000JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-04-16 04:38:09 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 04:42:50 +0000amadaluzia(~amadaluzi@user/amadaluzia) (Ping timeout: 260 seconds)
2025-04-16 04:49:43 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 04:50:34 +0000talismanick(~user@2601:644:937c:ed10::ae5) (Remote host closed the connection)
2025-04-16 04:54:04 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 05:03:43 +0000j1n37-(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 05:05:43 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 05:07:03 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 05:11:48 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2025-04-16 05:12:14 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-04-16 05:12:59 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 05:17:58 +0000takuan(~takuan@d8D86B601.access.telenet.be)
2025-04-16 05:21:37 +0000sp1ff(~user@c-67-160-173-55.hsd1.wa.comcast.net) sp1ff
2025-04-16 05:22:54 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
2025-04-16 05:23:05 +0000euleritian(~euleritia@dynamic-176-002-180-095.176.2.pool.telefonica.de)
2025-04-16 05:23:25 +0000euleritian(~euleritia@dynamic-176-002-180-095.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
2025-04-16 05:23:42 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 05:24:04 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 05:28:20 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2025-04-16 05:28:40 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 05:29:11 +0000euleritian(~euleritia@dynamic-176-002-180-095.176.2.pool.telefonica.de)
2025-04-16 05:31:21 +0000JuanDaughertyColinRobinson
2025-04-16 05:38:26 +0000ColinRobinsonJuanDaugherty
2025-04-16 05:40:16 +0000jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 252 seconds)
2025-04-16 05:40:16 +0000jmcantrell_jmcantrell
2025-04-16 05:41:12 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 05:42:10 +0000__jmcantrell__(~weechat@user/jmcantrell) jmcantrell
2025-04-16 05:47:31 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 05:48:00 +0000Feuermagier(~Feuermagi@user/feuermagier) Feuermagier
2025-04-16 05:48:05 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 05:51:59 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 252 seconds)
2025-04-16 05:55:24 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 05:56:31 +0000hurricane_sam(~halloy304@2001:569:76fd:b00:c916:45b:5a2a:d00)
2025-04-16 05:57:18 +0000hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) (Remote host closed the connection)
2025-04-16 06:01:48 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 06:02:29 +0000amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-16 06:02:46 +0000JuanDaughertyColinRobinson
2025-04-16 06:06:24 +0000ColinRobinson(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-04-16 06:06:34 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-16 06:09:14 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 06:09:19 +0000__jmcantrell__(~weechat@user/jmcantrell) (Quit: WeeChat 4.6.1)
2025-04-16 06:14:09 +0000haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2025-04-16 06:14:35 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-16 06:16:41 +0000hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) hgolden
2025-04-16 06:19:54 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 265 seconds)
2025-04-16 06:25:02 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 06:27:52 +0000tromp(~textual@2001:1c00:3487:1b00:c0e6:9a43:de22:8c0a)
2025-04-16 06:28:57 +0000takuan(~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
2025-04-16 06:29:45 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 06:40:00 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 06:40:28 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 06:41:50 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 06:44:26 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-04-16 06:45:00 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 06:46:43 +0000CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-04-16 06:47:04 +0000aaronv(~aaronv@user/aaronv) aaronv
2025-04-16 06:48:34 +0000hidjgr(~hidjgr@user/hidjgr) (Quit: WeeChat 4.4.2)
2025-04-16 06:50:58 +0000hidjgr(~hidjgr@68.52.120.78.rev.sfr.net)
2025-04-16 06:51:06 +0000hidjgr(~hidjgr@68.52.120.78.rev.sfr.net) (Client Quit)
2025-04-16 06:51:44 +0000hidjgr(~hidjgr@68.52.120.78.rev.sfr.net)
2025-04-16 06:51:49 +0000acidjnk(~acidjnk@p200300d6e71c4f5865559714f8604ffa.dip0.t-ipconnect.de) acidjnk
2025-04-16 06:52:12 +0000hidjgr(~hidjgr@68.52.120.78.rev.sfr.net) (Changing host)
2025-04-16 06:52:12 +0000hidjgr(~hidjgr@user/hidjgr) hidjgr
2025-04-16 06:52:54 +0000hidjgr(~hidjgr@user/hidjgr) (Client Quit)
2025-04-16 06:53:12 +0000hidjgr(~hidjgr@68.52.120.78.rev.sfr.net)
2025-04-16 06:53:19 +0000hidjgr(~hidjgr@68.52.120.78.rev.sfr.net) (Client Quit)
2025-04-16 06:53:36 +0000hidjgr(~hidjgr@68.52.120.78.rev.sfr.net)
2025-04-16 06:53:36 +0000hidjgr(~hidjgr@68.52.120.78.rev.sfr.net) (Changing host)
2025-04-16 06:53:36 +0000hidjgr(~hidjgr@user/hidjgr) hidjgr
2025-04-16 06:57:10 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-04-16 06:57:18 +0000sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2025-04-16 06:57:36 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-04-16 06:58:23 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 06:58:44 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 06:59:03 +0000alecs(~alecs@nat16.software.imdea.org) alecs
2025-04-16 07:00:01 +0000caconym(~caconym@user/caconym) (Quit: bye)
2025-04-16 07:01:01 +0000caconym(~caconym@user/caconym) caconym
2025-04-16 07:03:07 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 07:03:34 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-04-16 07:04:49 +0000TMA(tma@twin.jikos.cz) (Ping timeout: 272 seconds)
2025-04-16 07:07:46 +0000rvalue-(~rvalue@user/rvalue) rvalue
2025-04-16 07:08:33 +0000rvalue(~rvalue@user/rvalue) (Ping timeout: 248 seconds)
2025-04-16 07:10:10 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 07:12:47 +0000alecs(~alecs@nat16.software.imdea.org) (Quit: Client closed)
2025-04-16 07:14:31 +0000rvalue-rvalue
2025-04-16 07:15:01 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 07:18:09 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 252 seconds)
2025-04-16 07:19:10 +0000Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-04-16 07:19:37 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2025-04-16 07:20:31 +0000Lord_of_Life_Lord_of_Life
2025-04-16 07:24:36 +0000ft(~ft@p4fc2a6e6.dip0.t-ipconnect.de) (Quit: leaving)
2025-04-16 07:26:25 +0000euleritian(~euleritia@dynamic-176-002-180-095.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
2025-04-16 07:26:44 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 07:27:17 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 07:31:01 +0000zmt01(~zmt00@user/zmt00) (Read error: Connection reset by peer)
2025-04-16 07:31:26 +0000ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-04-16 07:34:45 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-16 07:37:25 +0000causal(~eric@50.35.84.231) (Quit: WeeChat 4.5.1)
2025-04-16 07:40:43 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-04-16 07:42:53 +0000ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 07:43:06 +0000ljdarj(~Thunderbi@user/ljdarj) (Client Quit)
2025-04-16 07:43:57 +0000emmanuelux(~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
2025-04-16 07:45:30 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 07:48:50 +0000forell_(~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Ping timeout: 265 seconds)
2025-04-16 07:50:06 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 07:56:56 +0000machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-04-16 07:58:12 +0000hidjgrtestnick
2025-04-16 07:58:48 +0000todi(~todi@p57803331.dip0.t-ipconnect.de) (Remote host closed the connection)
2025-04-16 07:59:10 +0000testnickhidjgr
2025-04-16 07:59:58 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 08:02:13 +0000todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-04-16 08:02:40 +0000delyan_(sid523379@id-523379.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2025-04-16 08:04:18 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds)
2025-04-16 08:04:39 +0000roconnor(~quassel@rocq/roconnor) (Ping timeout: 252 seconds)
2025-04-16 08:04:59 +0000roconnor(~quassel@rocq/roconnor) roconnor
2025-04-16 08:05:12 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 08:07:14 +0000todi(~todi@p57803331.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2025-04-16 08:08:38 +0000todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-04-16 08:08:41 +0000todi(~todi@p57803331.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2025-04-16 08:10:43 +0000todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-04-16 08:11:10 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 08:13:25 +0000nacation(~m-3l4s76@user/nacation) (Read error: Connection reset by peer)
2025-04-16 08:15:08 +0000gmg(~user@user/gehmehgeh) gehmehgeh
2025-04-16 08:17:31 +0000nacation(~m-3l4s76@user/nacation) nacation
2025-04-16 08:19:24 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 08:24:29 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-04-16 08:25:43 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 08:33:46 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 08:37:14 +0000chele(~chele@user/chele) chele
2025-04-16 08:38:37 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 08:45:16 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 08:45:30 +0000__monty__(~toonn@user/toonn) toonn
2025-04-16 08:45:35 +0000pabs3(~pabs3@user/pabs3) (Read error: Connection reset by peer)
2025-04-16 08:46:27 +0000pabs3(~pabs3@user/pabs3) pabs3
2025-04-16 08:47:21 +0000cheater(~Username@user/cheater) cheater
2025-04-16 08:48:49 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 248 seconds)
2025-04-16 08:50:13 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 08:50:32 +0000econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2025-04-16 08:54:42 +0000 <bwe> Hi again, which simpler State Monad tutorial can you recommend other than Bragilevsky's (which uses random or implementing a RPN calculator)?
2025-04-16 09:01:50 +0000mrmr(~mrmr@user/mrmr) mrmr
2025-04-16 09:03:56 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 09:04:23 +0000rosco(~rosco@183.171.73.8) rosco
2025-04-16 09:04:48 +0000rosco(~rosco@183.171.73.8) (Read error: Connection reset by peer)
2025-04-16 09:04:58 +0000rosco(~rosco@2001:e68:5442:b896:2437:120f:9971:a543) rosco
2025-04-16 09:09:37 +0000aaronv(~aaronv@user/aaronv) (Ping timeout: 252 seconds)
2025-04-16 09:11:13 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 09:12:11 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 09:16:23 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 09:17:16 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 09:20:33 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 252 seconds)
2025-04-16 09:29:49 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 09:34:01 +0000tromp(~textual@2001:1c00:3487:1b00:c0e6:9a43:de22:8c0a) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-16 09:34:41 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 09:43:12 +0000amadaluzia_(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-16 09:45:15 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 09:49:56 +0000forell(~forell@user/forell) forell
2025-04-16 09:50:15 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 09:50:54 +0000 <haskellbridge> <Morj> Whic RPC schemes are you familiar with? I can name grpc, json-rpc, json over http
2025-04-16 09:51:34 +0000 <haskellbridge> <Morj> Ughh xml over http is a thing too, and I know there are xml-over-something older than that that I never used
2025-04-16 09:51:45 +0000 <haskellbridge> <Morj> What are some things more modern and cool?
2025-04-16 09:51:52 +0000 <[exa]> remote lambda application
2025-04-16 09:52:36 +0000 <[exa]> bwe: tbh I'd recommend just biting the bullet and trying to reimplement the thing yourself, it's most effective
2025-04-16 09:52:40 +0000 <haskellbridge> <Morj> That sounds more like an idea than a concrete rpc with a library and shit :]
2025-04-16 09:53:34 +0000 <[exa]> bwe: as the initial hint you get the information that stateful functions can be represented as (s -> (result, s)), possibly with more parameters such as (a->b->s->(result, s)), then you add Functor Applicative Monad instances and eventually it just works
2025-04-16 09:54:28 +0000 <[exa]> Morj: yeah but it's lovable no? why do you need RPC in 2025?
2025-04-16 09:56:14 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 245 seconds)
2025-04-16 09:56:19 +0000 <haskellbridge> <Morj> Indeed, why do I
2025-04-16 09:56:39 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 245 seconds)
2025-04-16 09:57:26 +0000 <haskellbridge> <Morj> I'm actually looking for a replacement for our grpc which supports backwards connections: it's a server that establishes the connection to the client, and then the client sends requests
2025-04-16 09:57:45 +0000Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess
2025-04-16 09:59:03 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2025-04-16 09:59:22 +0000euleritian(~euleritia@176.2.178.231)
2025-04-16 09:59:51 +0000L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-04-16 10:01:44 +0000j1n37(~j1n37@user/j1n37) (Ping timeout: 260 seconds)
2025-04-16 10:02:43 +0000lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2025-04-16 10:02:50 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 10:03:02 +0000euleritian(~euleritia@176.2.178.231) (Read error: Connection reset by peer)
2025-04-16 10:03:27 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 10:04:17 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 10:06:55 +0000turlando(~turlando@user/turlando) turlando
2025-04-16 10:07:45 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 10:13:12 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 10:17:04 +0000CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 245 seconds)
2025-04-16 10:18:19 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 10:23:39 +0000 <[exa]> Morj: how much other programs do you need to talk to it?
2025-04-16 10:24:21 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2025-04-16 10:24:34 +0000 <[exa]> (other than that it's probably quite easy to do the server&client layer with a bit of haskell. streaming libraries can help you with parsing the command stream)
2025-04-16 10:25:18 +0000euleritian(~euleritia@dynamic-176-002-178-231.176.2.pool.telefonica.de)
2025-04-16 10:30:12 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 10:30:39 +0000Digit(~user@user/digit) (Remote host closed the connection)
2025-04-16 10:32:00 +0000gmg(~user@user/gehmehgeh) (Ping timeout: 264 seconds)
2025-04-16 10:32:31 +0000gmg(~user@user/gehmehgeh) gehmehgeh
2025-04-16 10:35:22 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 10:35:47 +0000ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 10:39:07 +0000Digit(~user@user/digit) Digit
2025-04-16 10:40:41 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2025-04-16 10:43:10 +0000__monty__(~toonn@user/toonn) (Ping timeout: 276 seconds)
2025-04-16 10:45:46 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 10:52:33 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 10:53:28 +0000xff0x(~xff0x@2405:6580:b080:900:121f:92ea:5a7d:afb)
2025-04-16 11:00:10 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2025-04-16 11:04:45 +0000jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
2025-04-16 11:06:46 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 11:07:58 +0000jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Client Quit)
2025-04-16 11:11:20 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 11:13:46 +0000ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-04-16 11:14:12 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 11:15:00 +0000haritz(~hrtz@152.37.68.178)
2025-04-16 11:15:00 +0000haritz(~hrtz@152.37.68.178) (Changing host)
2025-04-16 11:15:00 +0000haritz(~hrtz@user/haritz) haritz
2025-04-16 11:18:55 +0000 <haskellbridge> <Morj> [exa] Yeah that's the problem: the other part will be written by the other team in typescript >_<
2025-04-16 11:19:05 +0000Digit(~user@user/digit) (Remote host closed the connection)
2025-04-16 11:19:08 +0000 <haskellbridge> <Morj> So I would prefer something at least known
2025-04-16 11:19:34 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 11:21:40 +0000Digit(~user@user/digit) Digit
2025-04-16 11:25:45 +0000__monty__(~toonn@user/toonn) toonn
2025-04-16 11:27:29 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 11:29:49 +0000xff0x(~xff0x@2405:6580:b080:900:121f:92ea:5a7d:afb) (Ping timeout: 252 seconds)
2025-04-16 11:31:17 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 11:31:54 +0000 <[exa]> Morj: so you'd like something like Servant that can generate typescript bindings automagically?
2025-04-16 11:32:05 +0000 <[exa]> btw typescript ain't bad, not even remotely the worst choice :D
2025-04-16 11:32:59 +0000 <haskellbridge> <Morj> Well, I doubt that I will find a second servant, though it would be nice. I'm thinking a protobuf-like spec is most likely to exist
2025-04-16 11:34:44 +0000 <haskellbridge> <Morj> For now I'm playing around with protobuf in reverse: replace "rpc CoolFunc(CoolArg) returns (CoolRet)" with "rpc CoolFuncR(stream CoolRet) returns (stream CoolArg)" - you call CoolFuncR, await the argument from the stream, and send the return through you own stream back
2025-04-16 11:35:32 +0000 <[exa]> stupid idea: check what Servant uses to generate the js bindings, check reverse dependencies of that package, find other packages that generate some bindings for js
2025-04-16 11:36:28 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 11:36:58 +0000 <[exa]> (as in, I solved most of my software choices that way)
2025-04-16 11:39:31 +0000 <haskellbridge> <Morj> Mm, it uses servant-typescript, which is used by nothing (-:
2025-04-16 11:39:37 +0000Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2025-04-16 11:40:08 +0000 <haskellbridge> <Morj> And servant-typescript generates code using "string-interpolate", not very useful
2025-04-16 11:43:44 +0000 <[exa]> ok well, I hoped there's an intermediate package there
2025-04-16 11:44:06 +0000 <[exa]> (this apparent failure guarantees more luck next time!)
2025-04-16 11:47:43 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 11:52:17 +0000j1n37(~j1n37@user/j1n37) (Ping timeout: 248 seconds)
2025-04-16 11:52:44 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 11:54:51 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 11:55:19 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 276 seconds)
2025-04-16 12:01:03 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 12:03:26 +0000ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 12:05:00 +0000koz(~koz@121.99.240.58) (Ping timeout: 272 seconds)
2025-04-16 12:07:58 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 12:10:23 +0000jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) jespada
2025-04-16 12:11:01 +0000j1n37(~j1n37@user/j1n37) (Ping timeout: 248 seconds)
2025-04-16 12:11:50 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 12:12:01 +0000amadaluzia_(~amadaluzi@user/amadaluzia) (Quit: Hi, this is Paul Allen. I'm being called away to London for a few days. Meredith, I'll call you when I get back. Hasta la vista, baby.)
2025-04-16 12:12:29 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-16 12:15:14 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 12:17:50 +0000 <haskellbridge> <eldritchcookie> hello is there any dependency light way for equivalents of System.Environment on OsString?
2025-04-16 12:17:59 +0000amadaluzia_(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-16 12:19:31 +0000euleritian(~euleritia@dynamic-176-002-178-231.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
2025-04-16 12:19:51 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 12:19:59 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-16 12:22:05 +0000 <bwe> [exa]: https://github.com/benjaminweb/state-monad/blob/main/src/MyLib.hs
2025-04-16 12:23:05 +0000 <[exa]> bwe: ok good, first you'll want to make instances on that so you need some kind of type tag for the "function" in your type there
2025-04-16 12:23:29 +0000 <[exa]> usually we do with `data` or `newtype`, in this case `newtype State ... = State (.. -> ..)` is probably the way
2025-04-16 12:24:03 +0000 <[exa]> (doing instances on `type` aliases is .... well, complicated)
2025-04-16 12:24:32 +0000 <[exa]> anyway the rest of that seems ok
2025-04-16 12:25:26 +0000 <[exa]> in particular the last line is basically what you just throw to the monad instance and it should work
2025-04-16 12:27:19 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2025-04-16 12:27:56 +0000 <[exa]> bwe: as the next task try to think how to implement "set state" function and "get state" function
2025-04-16 12:28:06 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 12:28:39 +0000 <[exa]> (the types of these should be roughly `s -> State s ()` and `State s s`, respectively)
2025-04-16 12:29:10 +0000xff0x(~xff0x@2405:6580:b080:900:1f70:b482:b471:6289)
2025-04-16 12:30:00 +0000poscat(~poscat@user/poscat) poscat
2025-04-16 12:32:48 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 12:37:28 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 12:41:07 +0000koz(~koz@121.99.240.58)
2025-04-16 12:41:43 +0000jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-16 12:46:13 +0000jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) jespada
2025-04-16 12:46:24 +0000 <bwe> [exa]: that's interesting, shifting from type alias to newtype is bringing me headaches. The function body of the bind does not compile anymore, wherever I try to put State as data constructor.
2025-04-16 12:48:50 +0000 <[exa]> yes you suddenly have to remove&add the "type tag" everywhere
2025-04-16 12:49:13 +0000 <[exa]> which is annoying but that ensures that the typesystem can actually work with your stateful computation s->(s,a) specially, not just like some other function
2025-04-16 12:49:37 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 12:50:02 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2025-04-16 12:50:25 +0000ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2025-04-16 12:50:34 +0000amadaluzia(~amadaluzi@user/amadaluzia) (Ping timeout: 276 seconds)
2025-04-16 12:50:41 +0000 <bwe> So, I am starting now with: newtype State s a = State (s -> (a, s))
2025-04-16 12:50:58 +0000amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-16 12:51:07 +0000 <bwe> coming from: type State s a = (s -> (a, s))
2025-04-16 12:54:35 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 13:00:54 +0000ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 13:07:02 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 13:08:45 +0000skiwould use `newtype State s a = MkState (s -> (a,s))', for clarity
2025-04-16 13:08:59 +0000Guest38(~Guest38@175.143.89.234)
2025-04-16 13:09:44 +0000Guest38(~Guest38@175.143.89.234) ()
2025-04-16 13:10:03 +0000weary-traveler(~user@user/user363627) user363627
2025-04-16 13:10:06 +0000 <ski> .. or `newtype State s a = MkState {runState :: s -> (a,s)}', using record syntax notation to automagically get the projection/selector
2025-04-16 13:11:54 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 13:15:12 +0000Cattycatties
2025-04-16 13:16:17 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 13:18:44 +0000Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu) (Quit: Client closed)
2025-04-16 13:19:12 +0000Googulator82(~Googulato@94-21-172-228.pool.digikabel.hu)
2025-04-16 13:20:59 +0000haritz(~hrtz@user/haritz) (Read error: Connection reset by peer)
2025-04-16 13:21:21 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 13:22:35 +0000gorignak(~gorignak@user/gorignak) (Quit: quit)
2025-04-16 13:23:51 +0000haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8)
2025-04-16 13:23:51 +0000haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host)
2025-04-16 13:23:51 +0000haritz(~hrtz@user/haritz) haritz
2025-04-16 13:27:11 +0000L29Ah(~L29Ah@wikipedia/L29Ah) ()
2025-04-16 13:27:15 +0000acidjnk(~acidjnk@p200300d6e71c4f5865559714f8604ffa.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2025-04-16 13:27:36 +0000 <bwe> Functor and Applicative: https://github.com/benjaminweb/state-monad/blob/main/src/MyLib.hs
2025-04-16 13:28:38 +0000L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-04-16 13:31:51 +0000 <[exa]> bwe: looks all OK to me
2025-04-16 13:32:11 +0000 <[exa]> bwe: for the monad instance the only thing you might need to do is to unpack the `f` from State, and repack the result
2025-04-16 13:33:57 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 13:34:17 +0000 <ski> -- fmap :: (a -> b) -> State (s -> (a, s)) -> State (s -> (b, s))
2025-04-16 13:34:18 +0000 <ski> should be
2025-04-16 13:34:28 +0000 <ski> -- fmap :: (a -> b) -> (s -> (a,s)) -> (s -> (b,s))
2025-04-16 13:35:00 +0000jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
2025-04-16 13:35:06 +0000 <ski> similarly
2025-04-16 13:35:08 +0000 <ski> -- <*> :: MkState (s0 -> (a -> b, s1)) -> MkState (s0 -> (a, s1)) -> MkState (s0 -> (b, s1))
2025-04-16 13:35:11 +0000 <ski> should be
2025-04-16 13:35:55 +0000 <ski> -- <*> :: (s0 -> (a -> b,s1)) -> (s0 -> (a,s1)) -> (s0 -> (b,s1)) -- well, actually not quite this, either. can you see why ?
2025-04-16 13:36:36 +0000 <bwe> [exa]: updated. includes Monad definition now, however I don't use the s1 yet, I should, right?
2025-04-16 13:37:47 +0000ystael(~ystael@user/ystael) ystael
2025-04-16 13:38:08 +0000 <ski> if you add
2025-04-16 13:38:17 +0000 <ski> {-# LANGUAGE InstanceSigs #-}
2025-04-16 13:38:35 +0000 <ski> to the first line, you can uncomment one of the type signatures, for each method of each instance
2025-04-16 13:39:24 +0000 <ski> (<*>) (MkState f) (MkState g) = ..f..g..
2025-04-16 13:39:31 +0000 <ski> also could be written as
2025-04-16 13:39:40 +0000 <ski> MkState f <*> MkState g = ..f..g..
2025-04-16 13:40:35 +0000 <bwe> ski: puh, I don't get why the type signatures should be (s -> (a, s)) for Functor, wh?
2025-04-16 13:40:58 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 13:41:21 +0000 <ski> `State (s -> (a, s))' makes no sense, here
2025-04-16 13:41:55 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
2025-04-16 13:41:56 +0000 <ski> `fmap :: (a -> b) -> (s -> (a,s)) -> (s -> (b,s))' also, strictly speaking, isn't correct. but it's the type signature you'd get, if you were able to use `type State s a = (s -> (a,s))'
2025-04-16 13:42:07 +0000euleritian(~euleritia@dynamic-176-002-178-231.176.2.pool.telefonica.de)
2025-04-16 13:44:49 +0000 <ski> the definition of `(>>=)' isn't quite correct, but i guess you knew that
2025-04-16 13:45:29 +0000 <ski> ah, you updated it
2025-04-16 13:45:32 +0000 <ski> -- (>>=) :: Monad m => MkState (s -> (a, s)) -> (a -> MkState (s -> (b, s))) -> MkState (s -> (b, s))
2025-04-16 13:45:36 +0000 <ski> this makes no sense
2025-04-16 13:46:15 +0000 <ski> `MkState' is value-level (a data constructor), it's not type-level. so it makes no sense to mention it in the type signature
2025-04-16 13:46:33 +0000 <ski> presumably the notation
2025-04-16 13:46:34 +0000 <ski> newtype State s a = MkState (s -> (a, s))
2025-04-16 13:46:42 +0000 <ski> here is what's confusing
2025-04-16 13:47:02 +0000dutchie(~dutchie@user/dutchie) (Remote host closed the connection)
2025-04-16 13:47:19 +0000 <ski> this notation does not mean that the type `State s a' is equal to the "type" `MkState (s -> (a, s))' (this is not a type)
2025-04-16 13:47:20 +0000dutchie(~dutchie@user/dutchie) dutchie
2025-04-16 13:48:06 +0000 <ski> what this (BNF-inspired) notation *actually* means, is that if `x' has type `s -> (a,s)', then `MkState x' has type `State s a'
2025-04-16 13:48:32 +0000 <ski> in symbols, if `x :: s -> (a,s)', then `MkState x :: State s a'
2025-04-16 13:48:45 +0000 <ski> which you can abbreviate as
2025-04-16 13:48:57 +0000 <ski> MkState :: (s -> (a,s)) -> State s a
2025-04-16 13:49:35 +0000 <bwe> [exa]: >>= is now defined, incorporating s1
2025-04-16 13:49:50 +0000 <bwe> ski: how are the type signatures now?
2025-04-16 13:50:25 +0000 <ski> the definition of `(>>=)' is still not right
2025-04-16 13:50:57 +0000amadaluzia(~amadaluzi@user/amadaluzia) (Ping timeout: 244 seconds)
2025-04-16 13:51:12 +0000 <ski> -- fmap :: (a -> b) -> MkState (s0 -> (a, s1)) -> MkState (s0 -> (l, s1))
2025-04-16 13:51:16 +0000 <ski> is not any better than
2025-04-16 13:51:17 +0000 <ski> -- fmap :: (a -> b) -> State (s -> (a, s)) -> State (s -> (b, s))
2025-04-16 13:52:01 +0000 <ski> (good that you added brackets around `<*>', in the type signatures. was wondering whether i had to point that out)
2025-04-16 13:52:31 +0000 <bwe> Instance Type Signatures were a good idea btw.
2025-04-16 13:52:42 +0000 <ski> yes
2025-04-16 13:52:46 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 13:52:47 +0000amadaluzia_(~amadaluzi@user/amadaluzia) (Ping timeout: 265 seconds)
2025-04-16 13:52:49 +0000 <ski> this last definition of `(>>=)' is fine
2025-04-16 13:53:20 +0000 <ski> i still would like you to remove all mentions of `MkState ' from the type signatures
2025-04-16 13:53:49 +0000 <ski> after `::', you're writing types. `MkState' is not a type, it does not belong there
2025-04-16 13:54:23 +0000 <bwe> ok, let me try to get it right :).
2025-04-16 13:54:47 +0000 <ski> (and then there's the issue with `s0' and `s1' in the signature for `(<*>)')
2025-04-16 13:55:11 +0000 <ski> (you also changed one `b' to `l', for unclear reasons)
2025-04-16 13:55:43 +0000JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-04-16 13:55:48 +0000 <ski> ah, imho you should also remove the remaining `Monad m => '
2025-04-16 13:56:05 +0000 <ski> @src Monad
2025-04-16 13:56:06 +0000 <lambdabot> class Applicative m => Monad m where
2025-04-16 13:56:06 +0000 <lambdabot> -- Note: Applicative wasn't a superclass before GHC 7.10
2025-04-16 13:56:06 +0000 <lambdabot> (>>=) :: m a -> (a -> m b) -> m b
2025-04-16 13:56:06 +0000 <lambdabot> (>>) :: m a -> m b -> m b
2025-04-16 13:56:08 +0000 <lambdabot> return :: a -> m a
2025-04-16 13:56:10 +0000 <lambdabot> fail :: String -> m a
2025-04-16 13:56:18 +0000 <ski> note that this does not mention any `Monad => ' in the type signatures of the methods here
2025-04-16 13:56:33 +0000 <ski> that's implied, implicit, due to them being methods of `Monad m', here
2025-04-16 13:57:31 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 13:59:13 +0000acidjnk(~acidjnk@p200300d6e71c4f4138f4856942b014fc.dip0.t-ipconnect.de) acidjnk
2025-04-16 14:00:16 +0000Digitteknohippie(~user@user/digit) Digit
2025-04-16 14:01:40 +0000Digit(~user@user/digit) (Ping timeout: 260 seconds)
2025-04-16 14:02:44 +0000 <bwe> ski: updated. though, the level where I tried to collapse types into data constructors really helped me to deconstruct and see the components!
2025-04-16 14:05:45 +0000Digitteknohippie(~user@user/digit) (Ping timeout: 260 seconds)
2025-04-16 14:05:50 +0000 <ski> dunno why you changed `>>=' from being defined infix, to being defined prefix, though
2025-04-16 14:06:36 +0000 <ski> and the `s0' and `s1' in the signatures is still incorrect
2025-04-16 14:08:14 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 14:12:29 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-16 14:13:25 +0000JuanDaughertyColinRobinson
2025-04-16 14:17:16 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 14:17:21 +0000mange(~user@user/mange) (Quit: Zzz...)
2025-04-16 14:18:56 +0000Square2(~Square4@user/square) (Remote host closed the connection)
2025-04-16 14:18:59 +0000Digit(~user@user/digit) Digit
2025-04-16 14:19:01 +0000forell(~forell@user/forell) (Quit: ZNC - https://znc.in)
2025-04-16 14:19:19 +0000forell(~forell@user/forell) forell
2025-04-16 14:19:36 +0000Square2(~Square4@user/square) Square
2025-04-16 14:21:42 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 14:22:26 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-16 14:23:30 +0000hc(~hc@mail.hce.li) hc
2025-04-16 14:33:57 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 14:35:06 +0000fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 272 seconds)
2025-04-16 14:35:07 +0000Square2(~Square4@user/square) (Ping timeout: 272 seconds)
2025-04-16 14:39:12 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 14:49:32 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 14:50:30 +0000Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess
2025-04-16 14:50:34 +0000Digitdigitteknohippie
2025-04-16 14:50:43 +0000digitteknohippieDigit
2025-04-16 14:54:43 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 14:56:23 +0000 <bwe> s /away
2025-04-16 14:57:05 +0000 <bwe> ski: do you mean the numbers should go away or the way the numbers are currently is incorrect?
2025-04-16 15:04:34 +0000notdabs(~Owner@2600:1700:69cf:9000:e035:2729:333c:ea)
2025-04-16 15:05:00 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 15:09:41 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 15:13:26 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2025-04-16 15:14:49 +0000__jmcantrell__(~weechat@user/jmcantrell) jmcantrell
2025-04-16 15:14:55 +0000jmcantrell(644f1bed9a@user/jmcantrell) (Killed (erbium.libera.chat (Nickname regained by services)))
2025-04-16 15:14:55 +0000__jmcantrell__jmcantrell
2025-04-16 15:15:04 +0000jmcantrell_(644f1bed9a@user/jmcantrell) jmcantrell
2025-04-16 15:15:36 +0000ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
2025-04-16 15:18:09 +0000euleritian(~euleritia@dynamic-176-002-178-231.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
2025-04-16 15:18:16 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 15:18:29 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 15:18:30 +0000 <bwe> [exa]: set & get implemented: https://github.com/benjaminweb/state-monad/blob/main/src/MyLib.hs
2025-04-16 15:24:30 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 15:24:35 +0000 <[exa]> bwe: o great
2025-04-16 15:25:12 +0000 <[exa]> bwe: so essentially what you need now is some helper tool for the "users" that allows you to run the state (starting with some initial state), e.g. `evalState :: State s a -> s -> a` or so
2025-04-16 15:25:28 +0000ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 15:27:09 +0000 <[exa]> bwe: as a good test you can try something like: stateSum xs = evalState 0 $ traverse (\x -> get >>= set . (+x)) xs
2025-04-16 15:28:38 +0000 <[exa]> or a simpler sanity-check-kindof-test: `evalState 'a' (put 'b' >> get)` should return 'b'
2025-04-16 15:30:57 +0000bweadded evalState
2025-04-16 15:31:02 +0000 <[exa]> bwe: small notes: you don't need to define `return` (it's defaulted from `pure`), and in definitions it's quite pretty to use infix operators, such as: `MkState f <*> MkState a = ...`
2025-04-16 15:31:32 +0000 <[exa]> bwe: looks right
2025-04-16 15:32:20 +0000 <[exa]> bwe: btw people normally define a `runState` kinda implicitly, with saying something like: newtype State s a = MkState { runState :: s -> (a,s) }
2025-04-16 15:32:29 +0000kuribas(~user@ip-188-118-57-242.reverse.destiny.be) kuribas
2025-04-16 15:32:57 +0000 <[exa]> conveniently, then you get the "accessor" with type `runState :: State s a -> s -> (a,s)` which is almost evalState. :)
2025-04-16 15:35:02 +0000 <[exa]> oh noes I'm using flipped `evalState` in the examples, sorry :D
2025-04-16 15:36:42 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 15:37:40 +0000 <[exa]> bwe: ok my examples are actually super wrong but fixing them to a working state might become a good exercise (in both cases you need one `flip`, and in the one case you need to return state instead of the (redundant) return value)
2025-04-16 15:38:31 +0000 <[exa]> (sorry for the mess, I'm doing cellphone haskell rn :D)
2025-04-16 15:41:14 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 15:45:34 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 252 seconds)
2025-04-16 15:52:17 +0000 <bwe> [exa]: evalState (set 42 >> get) 0 -- outputs 42
2025-04-16 15:52:17 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
2025-04-16 15:53:05 +0000euleritian(~euleritia@176.2.178.231)
2025-04-16 15:53:19 +0000bwehas updated https://github.com/benjaminweb/state-monad/blob/main/src/MyLib.hs to include evalState and runState now.
2025-04-16 15:53:46 +0000 <bwe> ski: also, <*> and >>= are defined by infix notation.
2025-04-16 15:54:13 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 15:58:52 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 15:59:10 +0000zmt00(~zmt00@user/zmt00) zmt00
2025-04-16 16:01:41 +0000chele(~chele@user/chele) (Remote host closed the connection)
2025-04-16 16:03:38 +0000 <ski> `(MkState f) <*> (MkState g)' can be just `MkState f <*> MkState g'
2025-04-16 16:03:43 +0000 <ski> bwe : "do you mean the numbers should go away or the way the numbers are currently is incorrect?" -- both
2025-04-16 16:06:54 +0000ColinRobinson(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-04-16 16:06:58 +0000amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-16 16:07:37 +0000 <bwe> ski: fixed
2025-04-16 16:07:41 +0000 <ski> bwe : another exercise, define a reasonable type `Tree' of trees (you should be able to make it a `Functor'), and then define `label :: Tree a -> Tree (Integer,a)', numbering every element with a running index, starting at `0', counting upwards
2025-04-16 16:08:33 +0000 <ski> you could make two definitions of `label', one "direct", and one using your `State'
2025-04-16 16:09:17 +0000 <ski> (it might help to define a `tick :: State Integer Integer', that yields the current count, while also post-incrementing it)
2025-04-16 16:12:11 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 16:17:41 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 16:18:17 +0000 <bwe> ski: nice one, will try later :). -- but as far as the State Monad implementation concerned, is that it?
2025-04-16 16:19:19 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 16:21:18 +0000kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2025-04-16 16:22:13 +0000inca(~inca@71.30.233.213) (Ping timeout: 248 seconds)
2025-04-16 16:23:51 +0000 <ski> you still have redundant brackets in the definition of `>>='
2025-04-16 16:24:24 +0000 <ski> otherwise, yes
2025-04-16 16:24:40 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-16 16:26:16 +0000kadobanana(~mud@user/kadoban) kadoban
2025-04-16 16:26:39 +0000mud(~mud@user/kadoban) (Ping timeout: 245 seconds)
2025-04-16 16:28:01 +0000kilolympus6(~kilolympu@vmi1102682.contaboserver.net) kilolympus
2025-04-16 16:28:04 +0000kilolympus(~kilolympu@vmi1102682.contaboserver.net) (Read error: Connection reset by peer)
2025-04-16 16:28:05 +0000kilolympus6kilolympus
2025-04-16 16:30:07 +0000inca(~inca@71.30.233.213)
2025-04-16 16:34:56 +0000inca(~inca@71.30.233.213) (Ping timeout: 268 seconds)
2025-04-16 16:35:05 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 16:35:21 +0000inca(~inca@71.30.233.213)
2025-04-16 16:42:29 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 16:42:58 +0000inca(~inca@71.30.233.213) (Ping timeout: 268 seconds)
2025-04-16 16:48:15 +0000inca(~inca@h213.233.30.71.dynamic.ip.windstream.net)
2025-04-16 16:48:46 +0000ft(~ft@p4fc2a6e6.dip0.t-ipconnect.de) ft
2025-04-16 16:54:01 +0000Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2025-04-16 16:54:01 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-16 16:54:26 +0000fp(~Thunderbi@cig3.wlan.kyla.fi) fp
2025-04-16 16:55:08 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 16:55:45 +0000ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2025-04-16 16:57:14 +0000rosco(~rosco@2001:e68:5442:b896:2437:120f:9971:a543) (Quit: Gotta go.)
2025-04-16 16:59:19 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 17:04:29 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
2025-04-16 17:05:31 +0000kilolympus(~kilolympu@vmi1102682.contaboserver.net) (Quit: Ping timeout (120 seconds))
2025-04-16 17:05:51 +0000kilolympus(~kilolympu@vmi1102682.contaboserver.net) kilolympus
2025-04-16 17:11:57 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 17:16:19 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 17:18:07 +0000 <[exa]> bwe: hey ok good job
2025-04-16 17:18:19 +0000 <[exa]> anyway this is essentially how the standard State in the libraries looks like
2025-04-16 17:18:24 +0000 <tomsmeding> cellphone haskell is best haskell
2025-04-16 17:18:38 +0000 <EvanR> emoji haskell
2025-04-16 17:18:41 +0000fp(~Thunderbi@cig3.wlan.kyla.fi) (Ping timeout: 265 seconds)
2025-04-16 17:19:22 +0000 <EvanR> which was banned from twitter for violating platform rules but direct nazis is ok
2025-04-16 17:19:39 +0000 <EvanR> s/zis/zism/
2025-04-16 17:20:03 +0000 <tomsmeding> bummer that emojis are symbols so if you want emoji variables you have to put them in parens
2025-04-16 17:20:20 +0000 <tomsmeding> % let (🍌) = 42 in (🍌) + (🍌)
2025-04-16 17:20:21 +0000 <yahb2> 84
2025-04-16 17:22:05 +0000 <int-e> . o O ( GHC supports banana brackets now? )
2025-04-16 17:23:08 +0000 <tomsmeding> it doesn't, because a 🍌 is a symbol, so [🍌| 1 + 2 |] doesn't work
2025-04-16 17:23:18 +0000 <EvanR> was emoji haskell a lie?
2025-04-16 17:23:26 +0000 <EvanR> I don't recall so many parentheses
2025-04-16 17:23:48 +0000 <tomsmeding> % let (🍌) = (+) in 2 🍌 4
2025-04-16 17:23:48 +0000 <yahb2> 6
2025-04-16 17:26:23 +0000 <hidjgr> but you can have banana operators
2025-04-16 17:26:55 +0000fp(~Thunderbi@cig3.wlan.kyla.fi) fp
2025-04-16 17:28:00 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 17:31:08 +0000eron(~eron@143.0.15.20) lidenbrock
2025-04-16 17:31:16 +0000 <EvanR> what's the alt code for banana
2025-04-16 17:31:45 +0000 <tomsmeding> https://tomsmeding.com/unicode#banana
2025-04-16 17:31:57 +0000 <EvanR> also I propose redefining emojis so they can be identifiers
2025-04-16 17:32:09 +0000 <EvanR> [banana, kiwi, mango]
2025-04-16 17:32:15 +0000 <tomsmeding> unfortunately ⦅ seems to be neither a valid character nor a valid symbol in haskell
2025-04-16 17:32:37 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 17:32:41 +0000 <tomsmeding> > Data.Char.generalCategory '⦅'
2025-04-16 17:32:42 +0000 <lambdabot> OpenPunctuation
2025-04-16 17:32:53 +0000 <EvanR> > :t '⦅'
2025-04-16 17:32:55 +0000 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
2025-04-16 17:32:59 +0000 <EvanR> :t '⦅'
2025-04-16 17:33:00 +0000 <lambdabot> Char
2025-04-16 17:33:06 +0000 <EvanR> at least it's a valid character
2025-04-16 17:33:21 +0000 <tomsmeding> well, every unicode codepoint is a valid character
2025-04-16 17:34:22 +0000 <EvanR> every unicode codepoint embeds into Char using chr
2025-04-16 17:34:55 +0000jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed)
2025-04-16 17:35:09 +0000 <EvanR> don't offend my platonism
2025-04-16 17:35:46 +0000wlhn(~wlhn@2001-14ba-4e20-21f0-b172-6fd9-faec-6e08.rev.dnainternet.fi) wlhn
2025-04-16 17:36:40 +0000Googulator82(~Googulato@94-21-172-228.pool.digikabel.hu) (Quit: Client closed)
2025-04-16 17:36:55 +0000kilolympus(~kilolympu@vmi1102682.contaboserver.net) (Quit: Ping timeout (120 seconds))
2025-04-16 17:37:01 +0000Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-16 17:37:12 +0000kilolympus(~kilolympu@vmi1102682.contaboserver.net) kilolympus
2025-04-16 17:38:00 +0000 <EvanR> [🍎,🍌,🥒] would fail but at least "🍎,🍌,🥒" is a thing
2025-04-16 17:38:01 +0000 <hidjgr> mfw no cuneiform haskell
2025-04-16 17:38:52 +0000 <EvanR> smh they should have had the foresight in 1990 to make the former thing a thing
2025-04-16 17:39:01 +0000rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2025-04-16 17:39:32 +0000rvalue(~rvalue@user/rvalue) rvalue
2025-04-16 17:39:33 +0000 <tomsmeding> > Data.Char.generalCategory '🍌'
2025-04-16 17:39:35 +0000 <lambdabot> OtherSymbol
2025-04-16 17:44:39 +0000 <tomsmeding> https://tomsmeding.com/ss/get/tomsmeding/G81wZ6
2025-04-16 17:44:45 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 17:44:50 +0000 <tomsmeding> I tortured my terminal to show all the OtherSymbols so you don't have to
2025-04-16 17:46:02 +0000 <EvanR> that is stressing my monitor just displaying it
2025-04-16 17:46:34 +0000 <geekosaur> » valid character // sadly, not true for Private Use Area characters, at least according to GHC
2025-04-16 17:46:52 +0000 <geekosaur> cant' even use them in strings; you have to use an escape
2025-04-16 17:46:59 +0000 <EvanR> oof
2025-04-16 17:49:08 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 17:50:29 +0000 <monochrom> Compromise: ['🍎','🍌','🥒'] >:)
2025-04-16 17:51:16 +0000eron(~eron@143.0.15.20) (Quit: Client closed)
2025-04-16 17:52:49 +0000fp(~Thunderbi@cig3.wlan.kyla.fi) (Ping timeout: 248 seconds)
2025-04-16 17:53:17 +0000 <int-e> tomsmeding: (🍌) does have a banana and brackets (well I'm abusing terminology, but I won't apologise for that) ;-)
2025-04-16 17:53:29 +0000 <tomsmeding> no, it has parentheses ;)
2025-04-16 17:55:09 +0000 <EvanR> lunate brackets
2025-04-16 17:55:20 +0000 <EvanR> digressions
2025-04-16 17:55:25 +0000 <EvanR> argument pods
2025-04-16 17:55:34 +0000 <EvanR> eyelids
2025-04-16 17:55:51 +0000 <EvanR> runde Klammern
2025-04-16 17:57:01 +0000kilolympus(~kilolympu@vmi1102682.contaboserver.net) (Quit: Ping timeout (120 seconds))
2025-04-16 17:57:47 +0000jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
2025-04-16 17:59:05 +0000kilolympus(~kilolympu@vmi1102682.contaboserver.net) kilolympus
2025-04-16 17:59:45 +0000 <int-e> round clamps ;-)
2025-04-16 18:00:10 +0000 <geekosaur> crescent wrench
2025-04-16 18:02:35 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 18:03:09 +0000polyphem(~rod@p4fc2c4fb.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2025-04-16 18:07:27 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-16 18:07:48 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-16 18:12:53 +0000 <haskellbridge> <Bowuigi> Waning and waxing crescents
2025-04-16 18:13:32 +0000 <haskellbridge> <Bowuigi> Third and first quarters for banana brackets
2025-04-16 18:15:36 +0000 <int-e> > (1 + 3) * 5 -- waning one plus three waxing times 5 -- like this? (northern hemisphere; ymmv)
2025-04-16 18:15:37 +0000 <lambdabot> 20
2025-04-16 18:17:24 +0000sprotte24(~sprotte24@p200300d16f081b009801dcc9b07045e3.dip0.t-ipconnect.de)
2025-04-16 18:19:57 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 18:26:39 +0000tromp(~textual@2001:1c00:3487:1b00:c0e6:9a43:de22:8c0a)
2025-04-16 18:27:05 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 18:27:43 +0000Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu) (Quit: Client closed)
2025-04-16 18:28:00 +0000Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-16 18:32:20 +0000jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) (Ping timeout: 260 seconds)
2025-04-16 18:34:48 +0000tremon(~tremon@83.80.159.219) tremon
2025-04-16 18:35:42 +0000jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) jespada
2025-04-16 18:37:55 +0000 <bwe> ski: relabeling tree directly & using State finished: https://github.com/benjaminweb/state-monad/blob/main/src/MyLib.hs#L64-L103
2025-04-16 18:38:13 +0000 <bwe> (what's the difference between Int and Integer? which should I use by default?)
2025-04-16 18:38:26 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 18:38:38 +0000 <bwe> why can't I make `relabel n t = fst $ go n t` point-free?
2025-04-16 18:38:57 +0000 <monochrom> Integer is unlimited, Int is limited. Do you aim for correctness by default or aim for performance by default?
2025-04-16 18:39:30 +0000 <mauke> because you don't know about (f .) . g
2025-04-16 18:39:32 +0000 <monochrom> I know C people who aim for performance by default and correctness as an afterthought. For them I would recomment Int. >:)
2025-04-16 18:39:56 +0000 <bwe> …and when (not) to use foldr (I remember vaguely I should default to foldr, is this right)?
2025-04-16 18:40:24 +0000 <monochrom> Me, I aim for fewer keystrokes by default, so I still default to Int >:)
2025-04-16 18:40:31 +0000tccq(~user@user/tccq) tccq
2025-04-16 18:40:45 +0000 <monochrom> (In Curry, there is only Int, and it's Haskell's Integer. That is a win-win.)
2025-04-16 18:41:35 +0000 <monochrom> IMO foldr should be neither default nor non-default.
2025-04-16 18:41:40 +0000 <EvanR> compatibility with many APIs by default (Int)
2025-04-16 18:41:43 +0000 <bwe> mauke: confirmed.
2025-04-16 18:42:26 +0000 <monochrom> The correct default is to write what makes most sense for your target audience.
2025-04-16 18:43:01 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 18:43:13 +0000 <bwe> monochrom: then again, on which data structures should I prefer foldl and on which foldr?
2025-04-16 18:43:43 +0000 <monochrom> That's yet another false dichotomy. I thought it would depend on the problem being solved.
2025-04-16 18:44:19 +0000 <EvanR> yeah you might want foldl or foldr on the same data structure
2025-04-16 18:44:46 +0000 <EvanR> they're not interchangeable
2025-04-16 18:44:54 +0000 <monochrom> Alternatively, ask an AI to make all decisions for you.
2025-04-16 18:45:12 +0000 <bwe> I don't. Thanks for clearing this up.
2025-04-16 18:46:28 +0000 <EvanR> > foldr f z [a,b,c,d]
2025-04-16 18:46:29 +0000 <lambdabot> f a (f b (f c (f d z)))
2025-04-16 18:46:33 +0000 <EvanR> >foldl f z [a,b,c,d]
2025-04-16 18:46:40 +0000 <EvanR> > foldl f z [a,b,c,d]
2025-04-16 18:46:42 +0000 <lambdabot> f (f (f (f z a) b) c) d
2025-04-16 18:48:09 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2025-04-16 18:49:23 +0000euleritian(~euleritia@176.2.178.231) (Ping timeout: 268 seconds)
2025-04-16 18:49:52 +0000 <mauke> foldr on lists is good if you can stream the result (or just terminate early)
2025-04-16 18:50:03 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 18:50:31 +0000 <mauke> foldl' on lists is good if you can't stream the result and need to reach the end before returning anything
2025-04-16 18:50:41 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-04-16 18:54:10 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 18:56:05 +0000 <c_wraith> really, foldr is for when you want f to control when/whether the recursion happens
2025-04-16 18:58:15 +0000lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 265 seconds)
2025-04-16 18:58:25 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 18:58:50 +0000ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 18:59:12 +0000 <[exa]> bwe: you might want foldl' (with the tick!) for accumulator-like computations because it tends to be much more efficient in some specific cases (e.g., summing up a list of integers). foldr for pretty much all other cases because of the generality.
2025-04-16 19:00:03 +0000caconym(~caconym@user/caconym) (Quit: bye)
2025-04-16 19:00:04 +0000 <[exa]> bwe: btw one interesting look at foldr is as an "interpreter" for the list structure. Consider e.g. the "universal interpreter" for Maybe's:
2025-04-16 19:00:07 +0000 <[exa]> :t maybe
2025-04-16 19:00:08 +0000 <lambdabot> b -> (a -> b) -> Maybe a -> b
2025-04-16 19:00:34 +0000 <[exa]> (the parameters correspond to Nothing case, the Just case, then there's the actual data to take apart ("interpret"), and a result)
2025-04-16 19:00:46 +0000caconym(~caconym@user/caconym) caconym
2025-04-16 19:00:47 +0000 <[exa]> :t either -- similarly
2025-04-16 19:00:48 +0000 <lambdabot> (a -> c) -> (b -> c) -> Either a b -> c
2025-04-16 19:00:57 +0000 <[exa]> :t bool -the same again
2025-04-16 19:00:58 +0000 <lambdabot> error:
2025-04-16 19:00:58 +0000 <lambdabot> Variable not in scope:
2025-04-16 19:00:59 +0000 <lambdabot> the
2025-04-16 19:01:05 +0000 <[exa]> :t bool --the same again, whoops sorry for noise
2025-04-16 19:01:06 +0000 <lambdabot> a -> a -> Bool -> a
2025-04-16 19:02:21 +0000 <[exa]> and in foldr, we have the very same schema with constructors [] and (:)
2025-04-16 19:02:28 +0000 <bwe> [exa]: did you see the latest revision of my State Monad implementation? ski asked me to do relabel a Tree of Trees using State.
2025-04-16 19:02:38 +0000 <[exa]> :t flip foldr -- flipping so that it's more picturesque
2025-04-16 19:02:39 +0000 <lambdabot> Foldable t => b -> (a -> b -> b) -> t a -> b
2025-04-16 19:03:44 +0000 <[exa]> bwe: looks cool
2025-04-16 19:04:13 +0000 <[exa]> bwe: you might love either `do` or applicative notation for the last line
2025-04-16 19:04:57 +0000 <[exa]> also in common libraries the get/set combo is normally called `modify`, with that you can shorten what you have on lines 98&99 to a nice `modify (+1)`
2025-04-16 19:05:40 +0000 <[exa]> (spoilers here: https://hackage.haskell.org/package/mtl-2.3.1/docs/Control-Monad-State-Class.html#v:modify )
2025-04-16 19:06:01 +0000 <c_wraith> Honestly, foldr is pretty general. You should look to see if there's something more specific if you are at all uncertain.
2025-04-16 19:06:17 +0000 <c_wraith> like mapAccumL and mapAccumR exist
2025-04-16 19:07:04 +0000 <c_wraith> (I say, then I'll use foldr instead of either of those)
2025-04-16 19:07:06 +0000 <[exa]> bwe: re applicative notation, try this: `(+) <$> Just 3 <*> Just 5`
2025-04-16 19:07:35 +0000 <haskellbridge> <hellwolf> btw, why tom from bluefin saying for_ is all you need?
2025-04-16 19:07:37 +0000__monty__(~toonn@user/toonn) (Quit: leaving)
2025-04-16 19:08:31 +0000 <[exa]> hellwolf: depends on what you need it for I guess?
2025-04-16 19:08:41 +0000 <c_wraith> for_ is traverse_, and the joke is usually "traverse does that"
2025-04-16 19:09:12 +0000 <[exa]> c_wraith: I managed to suppress my note about traverse is all we need :D
2025-04-16 19:09:19 +0000 <monochrom> Ask tom? But IIRC, tom hid the real diversity in the applicative or monad you use.
2025-04-16 19:09:20 +0000 <ski> monochrom : in my case, i specified `Integer'
2025-04-16 19:09:23 +0000 <c_wraith> but a lot of things can also be done with traverse_
2025-04-16 19:09:39 +0000 <EvanR> :t for
2025-04-16 19:09:40 +0000 <lambdabot> (Traversable t, Applicative f) => t a -> (a -> f b) -> f (t b)
2025-04-16 19:09:46 +0000 <bwe> [exa]: thanks :) - btw what's your setup doing haskell / irc from mobile phone?
2025-04-16 19:09:56 +0000 <monochrom> or functor
2025-04-16 19:10:20 +0000 <[exa]> bwe: weechat-android and the haskell is present implicitly :D
2025-04-16 19:10:39 +0000 <[exa]> (wish there was ghc-android)
2025-04-16 19:10:49 +0000 <ski> bwe : your code for relabelling is basically okay, modulo some minor issues
2025-04-16 19:10:57 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 19:11:38 +0000 <ski> bwe : the first comment example call to relabel is incorrect
2025-04-16 19:12:20 +0000 <tomsmeding> [exa]: termux has a ghc
2025-04-16 19:12:29 +0000 <ski> bwe : and, i specified `relabel' should start counting at zero, not that you should pass the starting point as a parameter. and the variant (using `State') should still have the same type, not a different type
2025-04-16 19:13:47 +0000 <ski> bwe : finally, you can use `(<*>)' (and `(<$>)'), rather than `(>>=)', in the version using `State'. if you define `tick :: State Integer Integer', you can avoid the `go', too
2025-04-16 19:14:06 +0000 <ski> er, the `do'
2025-04-16 19:14:50 +0000 <bwe> ski: will incorporate that tomorrow.
2025-04-16 19:15:10 +0000 <EvanR> haskell on mobile sounds useful
2025-04-16 19:15:22 +0000 <EvanR> I can demonstrate the wonders of functional programming at the bar
2025-04-16 19:15:24 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-16 19:15:33 +0000 <[exa]> EvanR: some phones are Foldable
2025-04-16 19:15:35 +0000[exa]ducks
2025-04-16 19:15:49 +0000 <EvanR> drink and derive Functor
2025-04-16 19:15:52 +0000 <tomsmeding> they are typically not Traversable
2025-04-16 19:16:20 +0000 <[exa]> tomsmeding: I had termux a loooooooong time ago, then kinda forgot about that. will retry, thanks!
2025-04-16 19:17:29 +0000 <ski> bwe : anyway, i hope that was a somewhat more illustrative example of doing state-threading, either explicitly, or by using monadic or idiaomatic combinators
2025-04-16 19:17:49 +0000 <EvanR> idea-o-matic
2025-04-16 19:19:07 +0000 <tomsmeding> or just with a French idiom
2025-04-16 19:20:48 +0000ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 19:23:18 +0000 <monochrom> hahaha [exa]
2025-04-16 19:24:50 +0000ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-04-16 19:24:50 +0000ljdarj1ljdarj
2025-04-16 19:26:59 +0000 <[exa]> "can I also have your Num" product jokes incoming in 3 2 1
2025-04-16 19:27:08 +0000ljdarj(~Thunderbi@user/ljdarj) (Quit: ljdarj)
2025-04-16 19:27:24 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 19:28:19 +0000 <tomsmeding> the problem is that you generally cannot call numbers in haskell
2025-04-16 19:28:53 +0000ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 19:29:05 +0000j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 19:29:20 +0000 <tomsmeding> in smalltalk you'd at least be able to send messages to them
2025-04-16 19:29:27 +0000emmanuelux(~emmanuelu@user/emmanuelux) emmanuelux
2025-04-16 19:31:01 +0000 <bwe> ski: it was :) thanks for bringing that in. - what would be the next step concept wise to learn?
2025-04-16 19:31:52 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 19:32:45 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 19:33:00 +0000 <EvanR> tomsmeding, good call
2025-04-16 19:33:18 +0000 <tomsmeding> :)
2025-04-16 19:37:00 +0000pavonia(~user@user/siracusa) siracusa
2025-04-16 19:39:49 +0000arahael(~arahael@user/arahael) (Ping timeout: 265 seconds)
2025-04-16 19:40:27 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2025-04-16 19:40:46 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 19:41:40 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2025-04-16 19:41:57 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 19:41:59 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2025-04-16 19:42:17 +0000euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 19:42:59 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 19:44:49 +0000j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 19:47:29 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 19:50:25 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 19:55:41 +0000foul_owl(~kerry@174-21-146-90.tukw.qwest.net) (Ping timeout: 252 seconds)
2025-04-16 20:01:05 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 20:01:17 +0000jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed)
2025-04-16 20:05:05 +0000acidjnk(~acidjnk@p200300d6e71c4f4138f4856942b014fc.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2025-04-16 20:05:28 +0000jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-16 20:06:21 +0000jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) jespada
2025-04-16 20:07:47 +0000acidjnk(~acidjnk@p200300d6e71c4f41a8499be0fe4c63d3.dip0.t-ipconnect.de) acidjnk
2025-04-16 20:08:04 +0000foul_owl(~kerry@94.156.149.93) foul_owl
2025-04-16 20:08:45 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 20:11:53 +0000sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2025-04-16 20:14:08 +0000notdabs(~Owner@2600:1700:69cf:9000:e035:2729:333c:ea) (Quit: Leaving)
2025-04-16 20:19:45 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 20:24:18 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 20:31:03 +0000inca(~inca@h213.233.30.71.dynamic.ip.windstream.net) (Ping timeout: 265 seconds)
2025-04-16 20:33:21 +0000inca(~inca@h213.233.30.71.dynamic.ip.windstream.net)
2025-04-16 20:36:19 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 20:38:20 +0000inca(~inca@h213.233.30.71.dynamic.ip.windstream.net) (Ping timeout: 260 seconds)
2025-04-16 20:38:39 +0000hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) (Remote host closed the connection)
2025-04-16 20:40:58 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 20:41:57 +0000Angelz(Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973) (Changing host)
2025-04-16 20:41:57 +0000Angelz(Angelz@user/angelz) angelz
2025-04-16 20:42:03 +0000AngelzANgelz
2025-04-16 20:42:07 +0000ANgelzAngelz
2025-04-16 20:42:31 +0000inca(~inca@71.30.233.213)
2025-04-16 20:43:43 +0000Angelzgadot
2025-04-16 20:46:31 +0000 <haskellbridge> <Liamzee> is there a specialize everything option?
2025-04-16 20:47:05 +0000 <haskellbridge> <Liamzee> EvanR: play.haskell.org
2025-04-16 20:47:40 +0000inca(~inca@71.30.233.213) (Ping timeout: 276 seconds)
2025-04-16 20:47:53 +0000 <haskellbridge> <Liamzee> hellwolf: actually, foldr is all you need, not sure if probie will explain why, though
2025-04-16 20:48:37 +0000inca(~inca@71.30.233.213)
2025-04-16 20:48:58 +0000 <EvanR> foldr is the induction principle for List
2025-04-16 20:49:19 +0000 <geekosaur> -fspecialise-aggressively, I think?
2025-04-16 20:52:15 +0000 <haskellbridge> <Liamzee> thanks
2025-04-16 20:52:24 +0000 <haskellbridge> <Liamzee> induction principle for []?
2025-04-16 20:52:39 +0000 <EvanR> if z :: B and f :: (A -> B -> B) then there's a function g :: [A] -> B such that g [] = z and g (x:xs) = f x (g xs)
2025-04-16 20:52:40 +0000 <haskellbridge> <Liamzee> foldr is the actual best analogue to for loop, not for_
2025-04-16 20:53:19 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 20:54:07 +0000 <EvanR> and foldr f z computes g using recursion
2025-04-16 20:55:12 +0000 <haskellbridge> <Liamzee> thanks for restating the builder rewrite rule
2025-04-16 20:55:20 +0000 <haskellbridge> <Liamzee> in a way easier for me to understand
2025-04-16 20:58:10 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 20:59:16 +0000takuan(~takuan@d8D86B601.access.telenet.be)
2025-04-16 20:59:17 +0000 <EvanR> it lets you define a large class of functions on [A]
2025-04-16 20:59:23 +0000jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-16 20:59:30 +0000 <EvanR> though I'm not sure how large
2025-04-16 20:59:43 +0000 <haskellbridge> <Liamzee> implicitly, there are functions on [a] that cannot be defined by foldr
2025-04-16 20:59:55 +0000 <EvanR> that is a bold claim
2025-04-16 21:00:10 +0000inca(~inca@71.30.233.213) (Ping timeout: 252 seconds)
2025-04-16 21:00:29 +0000 <haskellbridge> <Liamzee> i guess large doesn't imply a subset of all functions on [a]
2025-04-16 21:00:58 +0000 <c_wraith> It's not a bold claim.
2025-04-16 21:01:04 +0000 <EvanR> what's an example
2025-04-16 21:01:16 +0000 <c_wraith> It's got equivalent computational power to primitive recursion (paramorphism)
2025-04-16 21:01:21 +0000 <haskellbridge> <Liamzee> i thought that was what you said by saying "a large class of functions on [a]"
2025-04-16 21:01:24 +0000 <c_wraith> so it can't be used for Ackernman's function, for example
2025-04-16 21:01:40 +0000 <EvanR> ackermann is on numbers
2025-04-16 21:01:49 +0000 <c_wraith> definte ackerman on the length of lists
2025-04-16 21:02:31 +0000 <EvanR> so ackermann is recursive but not primitive recursive
2025-04-16 21:02:34 +0000 <c_wraith> yes
2025-04-16 21:02:59 +0000 <c_wraith> that's the main reason anyone knows about it. It was the first example used to demonstrate primitive recursion is less powerful than general recursion
2025-04-16 21:03:52 +0000inca(~inca@71.30.233.213)
2025-04-16 21:06:34 +0000 <EvanR> so after this tiny quest we come back to the shire and conclude, no, foldr is not all you need xD
2025-04-16 21:07:28 +0000michalz(~michalz@185.246.207.197) (Remote host closed the connection)
2025-04-16 21:07:56 +0000 <c_wraith> but it is very uncommon to need more :)
2025-04-16 21:09:00 +0000 <EvanR> fine. *puts ackermann on a boat to Valinor*
2025-04-16 21:09:22 +0000 <c_wraith> the true danger of being a foundational computer scientist
2025-04-16 21:11:13 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 21:11:20 +0000 <haskellbridge> <Liamzee> afaik tomjaguarpaw / Tom Ellis's point
2025-04-16 21:11:38 +0000 <haskellbridge> <Liamzee> was that you could reconstruct imperative programming just by combining Bluefin with For
2025-04-16 21:12:21 +0000 <haskellbridge> <Liamzee> since you'd get the short-circuiting behavior and potentially unrestricted effects via for_ + bluefin
2025-04-16 21:12:40 +0000 <haskellbridge> <Liamzee> my counterpoint is that you can just ditch bluefin for loops by going straight to foldr
2025-04-16 21:14:15 +0000 <EvanR> who
2025-04-16 21:15:29 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 21:15:32 +0000inca(~inca@71.30.233.213) (Ping timeout: 268 seconds)
2025-04-16 21:15:37 +0000 <haskellbridge> <Liamzee> "tom from bluefin"
2025-04-16 21:16:36 +0000 <haskellbridge> <Liamzee> Groq engineer, Vice Chair, Vice Treasurer of Haskell Foundation
2025-04-16 21:17:32 +0000inca(~inca@71.30.233.213)
2025-04-16 21:17:48 +0000 <tomsmeding> also a nice guy
2025-04-16 21:20:12 +0000 <haskellbridge> <Liamzee> that's the most important trait! :3
2025-04-16 21:20:21 +0000Inst(~Inst@user/Inst) Inst
2025-04-16 21:23:46 +0000prdak(~Thunderbi@user/prdak) prdak
2025-04-16 21:26:46 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 21:28:21 +0000inca(~inca@71.30.233.213) (Ping timeout: 248 seconds)
2025-04-16 21:29:15 +0000inca(~inca@71.30.233.213)
2025-04-16 21:30:41 +0000Inst(~Inst@user/Inst) (Remote host closed the connection)
2025-04-16 21:31:24 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 21:31:59 +0000gmg(~user@user/gehmehgeh) (Quit: Leaving)
2025-04-16 21:34:55 +0000j1n37-(~j1n37@user/j1n37) j1n37
2025-04-16 21:35:20 +0000j1n37(~j1n37@user/j1n37) (Ping timeout: 265 seconds)
2025-04-16 21:38:40 +0000weary-traveler(~user@user/user363627) user363627
2025-04-16 21:40:19 +0000inca(~inca@71.30.233.213) (Ping timeout: 276 seconds)
2025-04-16 21:42:11 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 21:48:28 +0000inca(~inca@71.30.233.213)
2025-04-16 21:49:21 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 21:49:21 +0000notdabs(~Owner@2600:1700:69cf:9000:e035:2729:333c:ea)
2025-04-16 22:01:30 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 22:02:25 +0000j1n37-(~j1n37@user/j1n37) (Ping timeout: 276 seconds)
2025-04-16 22:02:30 +0000takuan(~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
2025-04-16 22:03:03 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 22:07:01 +0000jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) jespada
2025-04-16 22:07:42 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 22:10:26 +0000j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 22:13:08 +0000tromp(~textual@2001:1c00:3487:1b00:c0e6:9a43:de22:8c0a) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-16 22:15:29 +0000j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 22:18:20 +0000hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) hgolden
2025-04-16 22:18:40 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 22:22:09 +0000hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) (Remote host closed the connection)
2025-04-16 22:23:20 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 22:27:51 +0000notdabs(~Owner@2600:1700:69cf:9000:e035:2729:333c:ea) (Quit: Leaving)
2025-04-16 22:36:58 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 22:41:33 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 22:52:10 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Remote host closed the connection)
2025-04-16 22:53:10 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-04-16 22:53:53 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 22:58:24 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 23:06:36 +0000sprotte24(~sprotte24@p200300d16f081b009801dcc9b07045e3.dip0.t-ipconnect.de) (Quit: Leaving)
2025-04-16 23:08:06 +0000forell(~forell@user/forell) (Ping timeout: 272 seconds)
2025-04-16 23:09:21 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 23:09:35 +0000ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-04-16 23:10:46 +0000ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 23:14:34 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 23:15:40 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-16 23:16:09 +0000Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2025-04-16 23:17:49 +0000ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
2025-04-16 23:21:42 +0000ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 23:25:17 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 23:25:38 +0000prdak(~Thunderbi@user/prdak) (Ping timeout: 268 seconds)
2025-04-16 23:32:24 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 23:41:13 +0000notdabs(~Owner@2600:1700:69cf:9000:e035:2729:333c:ea)
2025-04-16 23:43:50 +0000notdabs(~Owner@2600:1700:69cf:9000:e035:2729:333c:ea) (Client Quit)
2025-04-16 23:45:24 +0000ethantwardy(user@user/ethantwardy) (Ping timeout: 260 seconds)
2025-04-16 23:45:39 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 23:45:44 +0000hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) hgolden
2025-04-16 23:49:08 +0000Sgeo(~Sgeo@user/sgeo) Sgeo
2025-04-16 23:49:43 +0000jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-16 23:50:07 +0000merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 23:50:19 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2025-04-16 23:51:14 +0000aaronv(~aaronv@user/aaronv) aaronv
2025-04-16 23:51:52 +0000j1n37-(~j1n37@user/j1n37) j1n37
2025-04-16 23:52:44 +0000jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
2025-04-16 23:52:44 +0000aaronv_(~aaronv@user/aaronv) aaronv
2025-04-16 23:53:05 +0000j1n37(~j1n37@user/j1n37) (Ping timeout: 265 seconds)
2025-04-16 23:53:30 +0000jacopovalanzanofrogz
2025-04-16 23:53:35 +0000frogzfrogzy
2025-04-16 23:56:15 +0000aaronv(~aaronv@user/aaronv) (Ping timeout: 272 seconds)
2025-04-16 23:58:36 +0000frogzyjacopovalanzano
2025-04-16 23:59:24 +0000inca(~inca@71.30.233.213) (Ping timeout: 272 seconds)