Home liberachat/#haskell: Logs Calendar

Logs on 2025-04-16 (liberachat/#haskell)

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

All times are in UTC on 2025-04-16.