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.