Logs on 2025-12-16 (liberachat/#haskell)
| 00:01:15 | → | dolio joins (~dolio@130.44.140.168) |
| 00:03:01 | × | dolio quits (~dolio@130.44.140.168) (Client Quit) |
| 00:03:47 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 00:09:04 | jmcantrell_ | is now known as jmcantrell |
| 00:14:36 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:15:08 | → | dolio joins (~dolio@130.44.140.168) |
| 00:19:14 | → | itaipu joins (~itaipu@168.121.97.28) |
| 00:19:31 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 00:30:23 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:30:40 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 00:34:53 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Ping timeout: 244 seconds) |
| 00:35:10 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 00:35:23 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 00:36:00 | → | Googulator20 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 00:36:23 | × | Googulator quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 00:38:02 | × | ttybitnik quits (~ttybitnik@user/wolper) (Quit: Fading out...) |
| 00:46:11 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:55:36 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 01:04:20 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 244 seconds) |
| 01:04:36 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 01:06:25 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:08:15 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 240 seconds) |
| 01:08:55 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 240 seconds) |
| 01:10:31 | × | xff0x quits (~xff0x@2405:6580:b080:900:1f68:a6af:8023:736) (Ping timeout: 246 seconds) |
| 01:10:55 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 01:20:15 | × | Tuplanolla quits (~Tuplanoll@91-152-225-194.elisa-laajakaista.fi) (Ping timeout: 240 seconds) |
| 01:22:01 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:24:40 | × | divlamir quits (~divlamir@user/divlamir) (Read error: Connection reset by peer) |
| 01:24:52 | → | divlamir joins (~divlamir@user/divlamir) |
| 01:25:10 | × | somemathguy quits (~somemathg@user/somemathguy) (Quit: WeeChat 4.1.1) |
| 01:25:23 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 01:26:43 | × | kodachi quits (~kodachi@198.105.112.55) (Quit: Leaving) |
| 01:27:25 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 01:28:49 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 01:29:03 | → | omidmash5 joins (~omidmash@user/omidmash) |
| 01:30:28 | × | acidjnk quits (~acidjnk@p200300d6e7171911ece553fa3dd3d975.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 01:30:59 | × | omidmash quits (~omidmash@user/omidmash) (Ping timeout: 265 seconds) |
| 01:30:59 | omidmash5 | is now known as omidmash |
| 01:31:54 | × | spew quits (~spew@user/spew) (Ping timeout: 252 seconds) |
| 01:33:41 | → | somemathguy joins (~somemathg@user/somemathguy) |
| 01:39:50 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 01:40:04 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:40:04 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 01:42:34 | → | DetourNe- joins (DetourNetw@user/DetourNetworkUK) |
| 01:43:04 | × | DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Ping timeout: 246 seconds) |
| 01:44:50 | DetourNe- | is now known as DetourNetworkUK |
| 01:45:20 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 01:46:10 | → | Square joins (~Square4@user/square) |
| 01:49:49 | × | Square2 quits (~Square@user/square) (Ping timeout: 264 seconds) |
| 01:55:49 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:57:11 | Googulator20 | is now known as Googulator |
| 02:01:10 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 02:05:52 | × | Googulator quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 02:05:55 | → | Googulator73 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 02:10:25 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
| 02:11:57 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:16:08 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 02:16:34 | → | spew joins (~spew@user/spew) |
| 02:16:35 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 02:24:23 | × | spew quits (~spew@user/spew) (Ping timeout: 260 seconds) |
| 02:26:34 | → | spew joins (~spew@user/spew) |
| 02:27:45 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:33:01 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 02:35:47 | × | Googulator73 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 02:35:52 | → | Googulator11 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 02:40:13 | Googulator11 | is now known as Googulator |
| 02:43:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:48:07 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 02:59:18 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:05:19 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 246 seconds) |
| 03:05:45 | × | Googulator quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 03:05:49 | → | Googulator61 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 03:05:55 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 03:06:05 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 03:13:30 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 244 seconds) |
| 03:15:33 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 03:15:43 | × | spew quits (~spew@user/spew) (Ping timeout: 260 seconds) |
| 03:16:18 | → | finsternis joins (~X@23.226.237.192) |
| 03:17:20 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:22:07 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 03:24:37 | × | hsw quits (~hsw@112-104-86-252.adsl.dynamic.seed.net.tw) (Quit: Leaving) |
| 03:33:05 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:35:42 | × | Googulator61 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 03:35:47 | → | Googulator31 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 03:37:26 | Googulator31 | is now known as Googulator |
| 03:37:43 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 03:39:01 | → | hsw joins (~hsw@112-104-86-252.adsl.dynamic.seed.net.tw) |
| 03:40:49 | × | td_ quits (~td@i53870904.versanet.de) (Ping timeout: 264 seconds) |
| 03:42:05 | → | td_ joins (~td@i53870911.versanet.de) |
| 03:48:54 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:49:57 | × | omidmash quits (~omidmash@user/omidmash) (Quit: The Lounge - https://thelounge.chat) |
| 03:52:20 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 03:52:28 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 03:53:35 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 03:54:19 | → | omidmash joins (~omidmash@user/omidmash) |
| 03:59:55 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 240 seconds) |
| 04:00:47 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 04:03:19 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 04:03:46 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 04:04:40 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:06:24 | × | latticepolytope quits (~user@user/isekaijin) (Quit: bbl) |
| 04:06:31 | × | somemathguy quits (~somemathg@user/somemathguy) (Quit: WeeChat 4.1.1) |
| 04:08:25 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 264 seconds) |
| 04:09:02 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 04:09:37 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 04:11:33 | → | spew joins (~spew@user/spew) |
| 04:20:27 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:25:25 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 04:25:50 | × | Square quits (~Square4@user/square) (Ping timeout: 244 seconds) |
| 04:26:09 | × | vetkat quits (~vetkat@user/vetkat) (Read error: Connection reset by peer) |
| 04:26:31 | → | vetkat joins (~vetkat@user/vetkat) |
| 04:27:26 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 04:27:47 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 04:28:06 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 04:32:37 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 255 seconds) |
| 04:36:16 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:43:18 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 04:48:01 | × | haritz quits (~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in) |
| 04:54:19 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:54:33 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 04:58:55 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 05:07:22 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 05:14:52 | × | spew quits (~spew@user/spew) (Quit: WeeChat 4.7.2) |
| 05:20:38 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 05:22:45 | → | weary-traveler joins (~user@user/user363627) |
| 05:23:00 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:24:26 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 265 seconds) |
| 05:27:18 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 05:28:26 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.8.1) |
| 05:34:19 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 05:34:39 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 05:37:34 | × | mange quits (~mange@user/mange) (Quit: Zzz...) |
| 05:38:23 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:43:38 | → | michalz joins (~michalz@185.246.207.221) |
| 05:43:49 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 05:52:29 | <chromoblob> | and i was frustrated that you can't set $$ to less precedence than $ |
| 05:54:12 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:58:05 | <[exa]> | lol. |
| 05:58:55 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 06:03:14 | <[exa]> | Is there a way to do something Selective-like with parsers that read a sequence length and then the sequence? roughly like: parseInt >>= \n -> replicateA n parseValue |
| 06:04:05 | <[exa]> | (or do we need Repetitive or something such for that) |
| 06:05:36 | → | Googulator88 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 06:05:49 | × | Googulator quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 06:10:00 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:16:49 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 06:21:07 | → | takuan joins (~takuan@d8D86B9E9.access.telenet.be) |
| 06:21:29 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 06:27:59 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:33:04 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 06:35:40 | → | Googulator52 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 06:37:21 | × | Googulator88 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 06:43:18 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 06:43:47 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:48:24 | × | ft quits (~ft@p4fc2ab42.dip0.t-ipconnect.de) (Quit: leaving) |
| 06:48:31 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 06:59:27 | → | tt12316072 joins (~tt1231@75.185.104.199) |
| 06:59:34 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:00:22 | × | tt1231607 quits (~tt1231@75.185.104.199) (Read error: Connection reset by peer) |
| 07:00:22 | tt12316072 | is now known as tt1231607 |
| 07:00:40 | × | lbseale quits (~quassel@user/ep1ctetus) (Quit: No Ping reply in 180 seconds.) |
| 07:00:56 | → | lbseale joins (~quassel@user/ep1ctetus) |
| 07:01:55 | → | myxos joins (~myxos@2001:579:8380:f20:bd90:58c1:9ba1:835a) |
| 07:03:37 | × | Pixi quits (~Pixi@user/pixi) (Ping timeout: 264 seconds) |
| 07:03:53 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 07:04:07 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 07:04:15 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 07:04:56 | × | myxokephale quits (~myxos@2001:579:8380:f20:50ce:9e79:bbea:e21f) (Ping timeout: 256 seconds) |
| 07:05:42 | × | Googulator52 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 07:05:47 | → | Googulator90 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 07:06:37 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:08:32 | × | xstill_ quits (xstill@fimu/xstill) (Quit: Ping timeout (120 seconds)) |
| 07:11:15 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 07:11:53 | → | xstill_ joins (xstill@fimu/xstill) |
| 07:22:24 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:25:33 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 07:26:40 | × | Igloo quits (~ian@81.2.99.210) (Ping timeout: 244 seconds) |
| 07:27:43 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 07:34:00 | <gentauro> | quote: tomsmeding> gentauro: nice, very helpful error. -> I guess it was inevitable: https://github.com/NixOS/nixpkgs/commit/39e997304a220f5e80a097296fa07149344f0e15 (🤖 Generated with [Claude Code]) GG |
| 07:36:09 | <gentauro> | no wonder the "stable" NixOS channel keeps breaking https://status.nixos.org/. I guess that's the state of software development these days :( |
| 07:38:11 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:38:35 | → | Igloo joins (~ian@81.2.99.210) |
| 07:39:25 | → | Guest98 joins (~Guest98@122.11.246.146) |
| 07:41:30 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 07:42:29 | ski | likes `return' more |
| 07:42:37 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds) |
| 07:43:12 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 07:48:10 | × | Guest98 quits (~Guest98@122.11.246.146) (Quit: Client closed) |
| 07:53:57 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:56:35 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 240 seconds) |
| 07:57:36 | → | fp joins (~Thunderbi@2001:708:20:1406::10c5) |
| 07:58:39 | → | tromp joins (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) |
| 07:59:03 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 07:59:05 | → | lucabtz joins (~lucabtz@user/lucabtz) |
| 07:59:14 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 08:07:38 | <gentauro> | ski: if related to `Monads` then `return` is the right keyword. If related to `Applicative`, `pure` is the right keyword |
| 08:07:38 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 08:12:31 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 08:15:40 | → | Googulator72 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 08:15:49 | × | Googulator90 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 08:17:45 | → | euphores joins (~SASL_euph@user/euphores) |
| 08:22:30 | → | LainIwakura joins (~LainIwaku@user/LainIwakura) |
| 08:24:09 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:24:33 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 08:26:42 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 08:27:15 | × | weary-traveler quits (~user@user/user363627) (Ping timeout: 240 seconds) |
| 08:27:56 | → | weary-traveler joins (~user@user/user363627) |
| 08:42:41 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 08:42:54 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 08:58:24 | → | merijn joins (~merijn@77.242.116.146) |
| 09:00:41 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 09:00:54 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 09:03:47 | → | fp1 joins (~Thunderbi@dhcp-86-128.eduroam.aalto.fi) |
| 09:05:06 | × | fp quits (~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 252 seconds) |
| 09:05:10 | fp1 | is now known as fp |
| 09:05:17 | Googulator72 | is now known as Googulator |
| 09:06:33 | → | acidjnk joins (~acidjnk@p200300d6e71719974d985e7e473d8889.dip0.t-ipconnect.de) |
| 09:10:49 | <tomsmeding> | gentauro: is it indeed that commit that breaks things for you? |
| 09:12:46 | <tomsmeding> | gentauro: also, if the problem is broken haskell packages, then that still doesn't explain why you get an error without any info |
| 09:15:07 | → | kuribas joins (~user@2a02:1808:41:7270:9839:ee7c:6379:63a8) |
| 09:15:38 | → | fp1 joins (~Thunderbi@2001:708:20:1406::1370) |
| 09:15:42 | × | Googulator quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 09:15:43 | → | Googulator18 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 09:16:14 | × | fp quits (~Thunderbi@dhcp-86-128.eduroam.aalto.fi) (Ping timeout: 260 seconds) |
| 09:16:14 | fp1 | is now known as fp |
| 09:16:28 | → | chele joins (~chele@user/chele) |
| 09:18:18 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:18:40 | Googulator18 | is now known as Googulator |
| 09:24:01 | × | sp1ff quits (~user@2601:1c2:4c00:6820::c593) (Ping timeout: 246 seconds) |
| 09:28:36 | → | sp1ff joins (~user@2601:1c2:4c00:6820::c593) |
| 09:30:48 | × | kuribas quits (~user@2a02:1808:41:7270:9839:ee7c:6379:63a8) (Ping timeout: 260 seconds) |
| 09:34:33 | × | fp quits (~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 256 seconds) |
| 09:42:22 | <gentauro> | tomsmeding: jep xD |
| 09:44:49 | <dminuoso> | gentauro: I favour `pure` only, but I learned Haskell post AMPD. |
| 09:44:54 | <dminuoso> | s/AMPD/AMP/ |
| 09:45:05 | <gentauro> | but truth to be told, I'm building from GIT (scratch), so I'm not really impacted by that issue. (they have made a simplex-chat-desktop heavy on the UI, but not the simplex-chat-cli, which is what I'm trying to do, but, if I can't build locally, pretty diff to make a pkg) |
| 09:45:56 | trickard_ | is now known as trickard |
| 09:46:19 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 09:47:49 | <dminuoso> | [exa]: No, that's precisely the upgrade you get from Monad over Applicative or Selective. |
| 09:48:12 | <dminuoso> | % :t (>>=>) |
| 09:48:12 | <yahb2> | <interactive>:1:1: error: [GHC-88464] ; Variable not in scope: >>=> ; Suggested fix: Perhaps use ‘>>=’ (imported from Prelude) |
| 09:48:17 | <dminuoso> | % :t (>>=) |
| 09:48:17 | <yahb2> | (>>=) :: Monad m => m a -> (a -> m b) -> m b |
| 09:48:51 | <dminuoso> | This describes precisely an effect that depends on the result of a previous effect. |
| 09:50:26 | <dminuoso> | [exa]: *If* your Int is bounded, in theory you could also describe it with Selective of course if you enumerate every possible number in your program. |
| 09:50:45 | <dminuoso> | I'll leave the decision up to you whether you should do that. :-) |
| 09:51:49 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 260 seconds) |
| 09:52:30 | <gentauro> | if you parse, lets say encoded bytes over the wire, where the length is encoded in varInt/zigZag/…, you MUST use `>>=` to parse length to ensure correct boundries with upcoming bytes? |
| 09:52:59 | <gentauro> | ex: list of strings |
| 09:53:09 | <dminuoso> | gentauro: I think you could do a kind of recursion trick parsing it with `select` perhaps. |
| 09:53:20 | <dminuoso> | But it would result in downright silly performance. |
| 09:53:38 | → | fp joins (~Thunderbi@130.233.70.102) |
| 09:53:41 | <gentauro> | makes sense |
| 09:54:07 | → | fp1 joins (~Thunderbi@wireless-86-50-140-165.open.aalto.fi) |
| 09:55:07 | <dminuoso> | This should be a fun excercise, let me try this. |
| 09:55:30 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 09:56:30 | <dminuoso> | I think you should be able to write `>>= :: (Enum a, Selective f) => f a -> (a -> f b) -> f b` |
| 09:56:30 | chromoblob | ✌️ ski |
| 09:57:03 | × | poscat0x04 quits (~poscat@user/poscat) (Remote host closed the connection) |
| 09:57:08 | <dminuoso> | Ah no, not quite. |
| 09:57:47 | <dminuoso> | `bindEither :: (Enum a, Selective f) => f (Either a b) -> (a -> f b) -> f b` |
| 09:57:49 | <dminuoso> | This. |
| 09:58:05 | × | fp quits (~Thunderbi@130.233.70.102) (Ping timeout: 250 seconds) |
| 09:58:07 | × | fp1 quits (~Thunderbi@wireless-86-50-140-165.open.aalto.fi) (Ping timeout: 240 seconds) |
| 10:00:10 | → | poscat joins (~poscat@user/poscat) |
| 10:04:41 | → | humasect_ joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 10:04:52 | → | merijn joins (~merijn@77.242.116.146) |
| 10:06:28 | → | mangoiv joins (~mangoiv@user/mangoiv) |
| 10:09:18 | × | humasect_ quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 260 seconds) |
| 10:09:19 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 240 seconds) |
| 10:21:15 | → | merijn joins (~merijn@77.242.116.146) |
| 10:21:25 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 246 seconds) |
| 10:24:26 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 10:25:14 | × | trickard quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 10:25:27 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 10:25:35 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 240 seconds) |
| 10:28:59 | → | haritz joins (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) |
| 10:28:59 | × | haritz quits (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host) |
| 10:28:59 | → | haritz joins (~hrtz@user/haritz) |
| 10:31:20 | <dutchie> | I'm having trouble with quoting ghc-options in cabal files. In my .cabal I have: `ghc-options: -Wall -with-rtsopts="-N -I0"` but when I build, I get a warning `Warning: [misplaced-c-opt] Instead of 'ghc-options: -I0"' use 'include-dirs: 0"'` and then my program errors out complaining that the rts option `"-N` is unexpected |
| 10:31:34 | <dutchie> | how can i pass multiple flags to -with-rtsopts? |
| 10:31:48 | <[exa]> | dminuoso: Is that precisely the Monad jump though? I somehow felt that having the integers always finite would degrade the capabilities of the stuff a little (as in, you can't encode actual turing machine into that computation, right?) |
| 10:31:51 | <tomsmeding> | dutchie: you have to put the quotes around the entire thing |
| 10:31:57 | <tomsmeding> | "-with-rtsopts=-N -I0" |
| 10:32:14 | <dutchie> | ah i think that's about the only quotation mode i've not tried lol |
| 10:32:40 | <dminuoso> | [exa]: Like I said, in principle you could recurse over anything enumerable with something like `bindEither :: (Enum a, Selective f) => f (Either a b) -> (a -> f b) -> f b`, but it would result in terrible performance |
| 10:33:17 | <dutchie> | ty, that's sorted it |
| 10:33:39 | <dminuoso> | [exa]: So its not just about being finite, but being enumerable. |
| 10:33:45 | <[exa]> | dminuoso: yeah that is true, I'm more like searching for a theoretical argument |
| 10:34:51 | <[exa]> | as in, not "how to simulate this with selectives" but "how does this allow you to run an arbitrary monad" |
| 10:34:58 | <dminuoso> | [exa]: Selective gives you the power to branch. To find a number, you would have to essentially enumerate that branching until you arrive at a branch that matches that precise number/ |
| 10:35:17 | <dminuoso> | [exa]: That is, you enumerate all possible numbers into a parser tree, and with `select` you can navigate one branch at a time. |
| 10:35:32 | <dminuoso> | This is not an arbitrary monad. |
| 10:35:35 | <dminuoso> | Monad is strictly more powerful. |
| 10:35:44 | <[exa]> | ah okay good |
| 10:35:54 | <dminuoso> | Monad can do it without having to enumerate. |
| 10:36:03 | <dminuoso> | So it works on things that are not enumerable. |
| 10:36:24 | <[exa]> | ahhhhhhhhh ok I think I get the whole problem now |
| 10:36:26 | <[exa]> | okay |
| 10:36:28 | <[exa]> | good |
| 10:36:30 | <[exa]> | thanks |
| 10:37:08 | → | merijn joins (~merijn@77.242.116.146) |
| 10:37:28 | <[exa]> | so if this would be a typeclass, it would make sense (not completely a Monad) but it would be more like an efficiency upgrade of Selectives for this exact case, not actual new functionality |
| 10:37:51 | <dminuoso> | [exa]: One good way to think about selective is to imagine that `Applicative` gives you a kind of diamond that acts "in parallel" (but I mean that in a reall loose sense), whereas `Selective` gives you a diamond that acts as a conditional branch . |
| 10:39:08 | <dminuoso> | [exa]: And no, not a separate typeclass |
| 10:39:24 | <dminuoso> | [exa]: The prescribed `bindEither` above should be writable. |
| 10:39:28 | <dminuoso> | With no extra typeclass |
| 10:39:54 | <tomsmeding> | I guess you can formulate it as: with Selective you can have branching on previously-computed values, but the whole branching tree must be known before seeing any values |
| 10:40:14 | <[exa]> | yeah, I wanted this more for the static analysis, the extra action would be somewhat of a kleene star, but you'd know exactly what you need to compute to know how many repetitions are there |
| 10:40:40 | <tomsmeding> | whereas with Monad, the branches can be decided on _after_ seeing values, which corresponds to a possibly infinite branching tree if you'dd need to specify it all statically |
| 10:40:49 | <dminuoso> | tomsmeding: Sure. And with `monad` the parse structure is potentially completely unknown, as it can depend on effect results. |
| 10:40:58 | <dminuoso> | % :t (>>=) |
| 10:40:59 | <yahb2> | (>>=) :: Monad m => m a -> (a -> m b) -> m b |
| 10:41:02 | <dminuoso> | It's literally baked into this type. :) |
| 10:41:07 | <tomsmeding> | yes :) |
| 10:41:43 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 10:41:58 | <dminuoso> | Of course, if we applied some black hole theory and cosmology, one could argue that all possible executions are enumeratable - the entropy of the visible universe is finite. |
| 10:42:03 | <dminuoso> | enumerable? |
| 10:42:10 | <[exa]> | I probably just want an actual marker there into the selective tree that tells me "this selection is numeric" |
| 10:42:33 | <tomsmeding> | and give an infinite list of branches? |
| 10:42:48 | <dminuoso> | Finiteness is a red herring. |
| 10:42:54 | <dminuoso> | It's just about enumerability I think? |
| 10:42:59 | <tomsmeding> | is Integer enumerable? |
| 10:43:09 | <tomsmeding> | (ignoring cosmology arguments) |
| 10:43:30 | <dminuoso> | `Enum Integer` is a thing |
| 10:44:06 | <tomsmeding> | but can you simulate `(>>=) @_ @Integer` with Selective? |
| 10:44:25 | <tomsmeding> | (you can simulate `(>>=) @_ @Bool` trivially using Either () ()) |
| 10:44:48 | <dminuoso> | Im thinking that perhaps we need at least one bound, or some base case. Enum doesnt seem to have `zero :: Enum a => a` |
| 10:45:11 | <tomsmeding> | you can also simulate `(>>=) @_ @Int`, with a branching tree that has 2^64 leaves, and a cosmological computer |
| 10:45:18 | <dminuoso> | There is `toEnum :: Enum a => Int -> a` but Im not sure about its semantics |
| 10:45:30 | → | merijn joins (~merijn@77.242.116.146) |
| 10:45:42 | → | Googulator71 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 10:45:44 | <dminuoso> | tomsmeding: Even without cosmology arguments, it's very trivial to enumerate over all Integer? |
| 10:45:48 | <dminuoso> | Assuming infinite memory. |
| 10:45:55 | <dminuoso> | Integer is countable |
| 10:45:58 | <tomsmeding> | only if the selective functor itself is lazy, I guess? |
| 10:46:07 | <tomsmeding> | because the branching tree would be infinitely large |
| 10:46:14 | <dminuoso> | It just matters whether its countable. |
| 10:46:20 | <dminuoso> | Or does it? |
| 10:46:24 | <tomsmeding> | well everything is countable |
| 10:46:25 | × | Googulator quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 10:46:29 | <dminuoso> | Not everything is. |
| 10:46:34 | <tomsmeding> | in computer science, everything is |
| 10:47:45 | <tomsmeding> | so if the question is just whether the thing being branched on is countable, then the difference between Selective and Monad would only be one of performance and memory use |
| 10:48:03 | <dminuoso> | So this is an interesting question. |
| 10:48:16 | <dminuoso> | Is `Enum` the typeclass of things that are countable? |
| 10:48:21 | <dminuoso> | Is Rational Enum? |
| 10:48:38 | <tomsmeding> | Enum is nothing, essentially, as it has no sensible laws and the methods are nonsense too (can you only enumerate things that are Int-large?) |
| 10:49:23 | <tomsmeding> | no, because Rational is at least as large as Integer, and Integer is bigger than Int, and you must define fromEnum |
| 10:49:38 | <tomsmeding> | but that just shows that the Enum class is nonsense, not any kind of enumerability of Rational |
| 10:49:47 | <tomsmeding> | because Rational is very countable indeed |
| 10:49:53 | → | somemathguy joins (~somemathg@user/somemathguy) |
| 10:50:22 | <tomsmeding> | (Enum is useful as a base for [..] syntax, but that's not under discussion here) |
| 10:52:09 | <dminuoso> | tomsmeding: I think Enum is in a weird state in that it feels like its *meant* to represent things that are countable, since the ability to enumerate seems to align with the mathematical notion of countability. But the [..] and relatedly fromEnum/toEnum make it a somewhat adhoc thing. |
| 10:52:25 | <tomsmeding> | right |
| 10:53:19 | <tomsmeding> | it's actually useful for [..] (apart from not being able to enumerate stuff that's bigger than Int, which is nonsense), and it's _almost_ useful for describing enumerability in general, but then falls short |
| 10:53:36 | <tomsmeding> | it's like Arrow with `arr`, except that Enum actually has some use still |
| 10:53:43 | <dminuoso> | So we would need a kind of `class Countable a => fromNat :: Natural -> a` |
| 10:54:07 | <tomsmeding> | I'd like a mapping in the other direction too with a law saying that they are inverses |
| 10:54:22 | <haskellbridge> | <loonycyborg> I don't see how it represents countability in mathematical sense |
| 10:54:22 | <haskellbridge> | <loonycyborg> it's merely prerequisite |
| 10:54:31 | <haskellbridge> | <loonycyborg> but there are many ways of counting the same thing |
| 10:54:47 | <dminuoso> | loonycyborg: The fromEnum/toEnum are really the same essence. |
| 10:55:01 | Googulator71 | is now known as Googulator |
| 10:55:01 | <dminuoso> | Except it's constrained to Int instead of Natural |
| 10:55:03 | <haskellbridge> | <loonycyborg> that is making a mapping of Thing -> Natural |
| 10:55:46 | <tomsmeding> | (another problem is that fromEnum and toEnum are not declared in the documentation to be inverses of each other, although we can reasonably say that they "obviously" must be) |
| 10:56:01 | <dminuoso> | Being countable really means a one-to-one mapping to ℕ |
| 10:56:27 | <dminuoso> | loonycyborg: It does not matter *how* you count it. |
| 10:56:38 | <dminuoso> | As long as you *can* provide any way to map to ℕ |
| 10:56:47 | <haskellbridge> | <loonycyborg> Enum represents only one way that is deemed useful for whatever reason |
| 10:58:03 | <lucabtz> | dminuoso: countable = finite or 1-1 mapping to N |
| 10:58:14 | <tomsmeding> | countable = injective mapping to N |
| 10:58:19 | × | arandombit quits (~arandombi@user/arandombit) (Ping timeout: 260 seconds) |
| 10:58:21 | <lucabtz> | if finite there is not 1-1 mapping with N, but still countable |
| 10:58:21 | <dminuoso> | Given that `toEnum, fromEnum` are the minimal methods, and `toEnum` is in principle derivable from `fromEnum`... the loose description in the Haskell report really implies that its something along the lines of Countability. |
| 10:58:43 | → | arandombit joins (~arandombi@user/arandombit) |
| 10:58:52 | <dminuoso> | lucabtz: Yes, Enum lacks the ability to talk about infinite sets. |
| 10:59:00 | <merijn> | and sparse sets |
| 10:59:14 | <tomsmeding> | merijn: we're talking about countability here, not usefulness |
| 10:59:32 | <dminuoso> | But that really goes into the line of "Haskell has Int in a lot of places where, morally, it should use Integer or Natural" instead. |
| 10:59:34 | <lucabtz> | tomsmeding: yeah i suppose dropping surjectivity is the same |
| 10:59:42 | <dminuoso> | The choice of `Int` in most places is because of history and performance. |
| 11:00:09 | <dminuoso> | So if we squint a bit, Enum is meant to be that Countable typeclass... |
| 11:01:11 | <probie> | and also reasonability, `(!!) :: [a] -> Integer -> a` doesn't gain you anything, because you don't have time to walk that very large list (nor enough memory unless it has a cycle) |
| 11:01:37 | <tomsmeding> | walking Int is also not particularly practical |
| 11:01:52 | <tomsmeding> | (on modern 64-bit machines) |
| 11:02:27 | <dminuoso> | probie: That's the other side of it. The [] structure is so pervasive because it both represents control flow *and* data. When its used for data, its a really poor fit because it results in terrible access patterns. |
| 11:02:52 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 11:02:56 | <dminuoso> | So on one hand we favour Int because its much faster due to direct mapping into machine registers, but then we drag those singly linked lists around everywhere. |
| 11:03:00 | <dminuoso> | A weird state we are in. |
| 11:03:06 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 11:03:29 | <probie> | but for Enum, it's quite possible to want `[a..b]` where `fromEnum a - fromEnum b` is small, but `fromEnum a` is bigger than int |
| 11:03:53 | <dminuoso> | probie: Given that `fromEnum/toEnum` are minimal, one could assume that they should not be partial. |
| 11:04:05 | <dminuoso> | But there's so many bottoms flying around in base... |
| 11:04:42 | <probie> | Sorry, I was unclear. I mean for things that "should" be `Enum`, if there weren't too many of them |
| 11:04:48 | <dminuoso> | At least for `fromEnum` an argument could be made that it should behave in a cyclic fashion. |
| 11:04:59 | <dminuoso> | Or no, I meant `toEnum` |
| 11:05:37 | <haskellbridge> | <magic_rb> Singly linked lists make sense in many cases due to laziness, but generally one should use vector yes |
| 11:06:37 | <probie> | as in `Integer` is genuinely a better chouce needed for {to,from}Enum in a way that isn't the case in other places `Int` is used instead (like `(!!)`) |
| 11:06:38 | <merijn> | magic_rb: I don't think "generally you should use vector" is right. |
| 11:06:51 | → | deptype joins (~deptype@2406:b400:3a:9d2f:476c:a58e:3471:ff37) |
| 11:06:53 | <merijn> | Don't get me wrong, Vector is *often* right, but I'm not sure I'd ever recommend defaulting to it |
| 11:07:01 | <probie> | Vector requires me to copy the whole thing to "change" a single element. This is often not desirable |
| 11:07:23 | <dminuoso> | I sometimes wish there was a kind of Vector/[] polymorphism, that I could myself decide what I want. |
| 11:07:29 | <dminuoso> | But something without typeclasses |
| 11:07:34 | <merijn> | probie: Vector doesn't always copy the whole thing, and also mutable Vector exists :) |
| 11:07:48 | <dminuoso> | What was that cabal feature along the lines of OCaml functors called again? |
| 11:07:51 | <haskellbridge> | <loonycyborg> in ST monad? |
| 11:07:51 | <haskellbridge> | <magic_rb> ^ |
| 11:07:54 | <merijn> | dminuoso: backpack |
| 11:07:55 | <probie> | dminuoso: backpack |
| 11:07:57 | <haskellbridge> | <magic_rb> Yeah vector in ST |
| 11:08:03 | <dminuoso> | Right backpack. |
| 11:08:17 | <merijn> | loonycyborg: Vector has a bunch, there's ST, but also IO |
| 11:08:26 | <merijn> | Depending on your usecase |
| 11:08:30 | <dminuoso> | Yeah if via backpack I could just swap between vector or list for a given package that would be ideal. |
| 11:08:50 | <dminuoso> | Of course it's completely unreasonable for 2 major reasons. |
| 11:09:06 | <merijn> | tbh, I'm a big fan of "just thinking about your data type choices" :p |
| 11:09:07 | <haskellbridge> | <loonycyborg> But still it's procedural state, in haskell you'd want a persistent structure in general. Unless you wanna go all out for a hotspot. |
| 11:09:30 | <merijn> | Vector is very good for lots of things, and List good for lots of other things |
| 11:09:46 | <dminuoso> | merijn: For a library thats tought unless you like to duplicate interfaces. And with duplicated things you get the typical `toLazy/fromLazy` nonsense when passing text between library portions. |
| 11:10:13 | <haskellbridge> | <magic_rb> Generally List is fine if you dont care about performance and arent storing it around or traversing it in any other direction than linearly forward |
| 11:10:15 | <probie> | Vector is very good for lots of things, and GHC does some very heavy lifting to make List good for lots of other things :p |
| 11:10:42 | <merijn> | dminuoso: A library should use whatever's best for said library |
| 11:10:51 | <merijn> | especially since Vector.toList is super cheap |
| 11:11:06 | <merijn> | So someone wanting to pass a vector can easily convert to a list on demand |
| 11:12:54 | <haskellbridge> | <loonycyborg> There's also Seq, and Set and lots of other containers depending on your needs |
| 11:13:17 | <probie> | Let's just cut out the middle man and pass the fold `data List a = forall b . List ((a -> b -> b) -> b -> b)` |
| 11:13:24 | <dminuoso> | Maybe it depends a bit on your problem domain, but in one of our projects there's quite a bit of `pack/unpack`, `fromStrict/ToString` or even combinations going on. |
| 11:13:43 | <dminuoso> | There's just so much impedance mismatching going on when interfacing with more than one library at a time. |
| 11:13:54 | → | Pixi joins (~Pixi@user/pixi) |
| 11:14:00 | <probie> | (to clarify, my above statement is a joke, since that meets even fewer use cases than a list) |
| 11:14:03 | <dminuoso> | And those problems are exactly the same as the above vector/list problems. |
| 11:14:11 | <haskellbridge> | <magic_rb> Sounds to me like things need to get more generic :) |
| 11:14:31 | <dminuoso> | probie: Joke is on you, thats precisely what GHC does behind the scenes for you in a lot of places. |
| 11:15:21 | <dminuoso> | Its what the whole build/foldr fusion works. |
| 11:15:57 | <dminuoso> | Or is that what you were hinting at? |
| 11:18:48 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Read error: Connection reset by peer) |
| 11:20:03 | → | xff0x joins (~xff0x@2405:6580:b080:900:4560:111e:4edd:d178) |
| 11:23:05 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 11:28:13 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 11:28:27 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 11:35:23 | trickard_ | is now known as trickard |
| 11:39:40 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds) |
| 11:40:11 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 11:40:49 | → | merijn joins (~merijn@77.242.116.146) |
| 11:40:56 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 11:45:37 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 11:54:12 | → | bggd joins (~bgg@2a01:e0a:fd5:f510:fc9f:3e03:d92a:8f6) |
| 11:54:13 | × | bggd quits (~bgg@2a01:e0a:fd5:f510:fc9f:3e03:d92a:8f6) (Changing host) |
| 11:54:13 | → | bggd joins (~bgg@user/bggd) |
| 11:56:38 | → | merijn joins (~merijn@77.242.116.146) |
| 12:00:43 | × | somemathguy quits (~somemathg@user/somemathguy) (Quit: WeeChat 4.1.1) |
| 12:01:10 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 12:07:45 | → | merijn joins (~merijn@77.242.116.146) |
| 12:08:29 | × | tromp quits (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:15:41 | × | Googulator quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 12:15:48 | → | Googulator67 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 12:20:55 | × | lucabtz quits (~lucabtz@user/lucabtz) (Ping timeout: 240 seconds) |
| 12:31:15 | → | latticepolytope joins (~user@user/isekaijin) |
| 12:32:27 | × | pavonia quits (~user@user/siracusa) (Ping timeout: 252 seconds) |
| 12:32:35 | × | LainIwakura quits (~LainIwaku@user/LainIwakura) (Quit: Client closed) |
| 12:33:38 | → | lucabtz joins (~lucabtz@user/lucabtz) |
| 12:34:07 | × | pabs3 quits (~pabs3@user/pabs3) (Ping timeout: 240 seconds) |
| 12:35:40 | → | pabs3 joins (~pabs3@user/pabs3) |
| 12:40:11 | × | Googulator67 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 12:40:29 | → | Googulator67 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 12:42:21 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 252 seconds) |
| 12:42:42 | <Leary> | [exa], dminuoso: Bit late to the party, but I wrote something vaguely amusing: https://gist.github.com/LSLeary/e108d7a7ee27e0a9e9bee27fe9247910 |
| 12:45:24 | → | pavonia joins (~user@user/siracusa) |
| 12:45:32 | × | Googulator67 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 12:45:41 | → | Googulator67 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 12:48:00 | <[exa]> | Leary: that's wonderful |
| 12:54:37 | × | weary-traveler quits (~user@user/user363627) (Quit: Konversation terminated!) |
| 12:54:54 | → | weary-traveler joins (~user@user/user363627) |
| 12:57:08 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 12:58:34 | <kuribas> | Can you use lazyness to determine if a graph has loops? |
| 12:58:40 | <kuribas> | I guess no, because it will just loop? |
| 12:59:39 | <kuribas> | For example, Map a [a] -> Map a (Maybe Int), where Nothing means ther is a loop, n means it has n parents. |
| 13:02:01 | <kuribas> | I guess I just need to recurse, and consider visited nodes. |
| 13:04:52 | × | merijn quits (~merijn@77.242.116.146) (Quit: reboot) |
| 13:05:33 | × | Googulator67 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 13:05:51 | → | Googulator67 joins (~Googulato@87-97-86-146.pool.digikabel.hu) |
| 13:15:12 | × | Googulator67 quits (~Googulato@87-97-86-146.pool.digikabel.hu) (Quit: Client closed) |
| 13:15:35 | → | Googulator67 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 13:21:17 | → | myxokephale joins (~myxos@2001:579:8380:f20:f2c2:4b00:b76e:8530) |
| 13:21:22 | <ski> | gentauro : yea (although not keywords) |
| 13:23:31 | → | merijn joins (~merijn@77.242.116.146) |
| 13:23:46 | × | myxos quits (~myxos@2001:579:8380:f20:bd90:58c1:9ba1:835a) (Ping timeout: 246 seconds) |
| 13:25:01 | → | Psy-Q joins (~psy-q@user/psy-q) |
| 13:29:37 | <kuribas> | How can this work without constraints? reachable :: HashSet a -> HashMap a [a] -> HashSet a |
| 13:29:59 | <kuribas> | Does GHC now infer constraints? |
| 13:32:54 | <[exa]> | kuribas: which constraint would be missing there? I guess Hashable, but that might not be needed |
| 13:33:06 | <[exa]> | (depending on what kind of hash table is used ofc) |
| 13:33:14 | <kuribas> | [exa]: HashMap.lookupDefault needs it though? |
| 13:33:23 | <kuribas> | unordered-containers |
| 13:34:22 | <[exa]> | yeah I guess there it doesn't need the actual values, it just follows the hashes |
| 13:34:39 | <[exa]> | use the source tho |
| 13:35:09 | <kuribas> | https://hackage-content.haskell.org/package/unordered-containers-0.2.21/docs/src/Data.HashMap.Internal.html#lookupDefault |
| 13:35:22 | → | tromp joins (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) |
| 13:41:09 | <tomsmeding> | it's the source of reachable that is relevant here, not that of lookupDefault |
| 13:41:30 | <kuribas> | tomsmeding: HashSet.fromList $ HashSet.toList nodes >>= (\n -> HashMap.lookupDefault [] n mapping) |
| 13:42:42 | <tomsmeding> | it's even easier to think about the fromList |
| 13:43:03 | <tomsmeding> | this should definitely incur a 'Hashable a' constraint |
| 13:43:57 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 13:44:13 | <kuribas> | Yes, but it doesn't? |
| 13:44:38 | <kuribas> | Or do you mean infer, by incur? |
| 13:45:09 | → | rekahsoft joins (~rekahsoft@70.51.99.245) |
| 13:45:43 | × | Googulator67 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 13:45:46 | → | Googulator54 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 13:52:32 | <[exa]> | kuribas: where did you get the `reachable` btw? |
| 13:52:43 | <kuribas> | [exa]: I wrote it |
| 13:53:25 | <kuribas> | Oh, there was another error somewhere else, which took precedence over the instance check apparently... |
| 13:53:40 | <[exa]> | yeah I was wondering |
| 13:55:56 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 14:01:02 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 14:01:27 | jmcantrell_ | is now known as jmcantrell |
| 14:04:05 | → | cubic_jpg joins (~cubic_jpg@user/cubic-jpg:13603) |
| 14:06:24 | <tomsmeding> | kuribas: if you're using HLS, then parse error > name resolution errors in patterns > kind errors > type errors > constraint errors, iirc |
| 14:06:43 | <tomsmeding> | or equivalently when using -fdefer-type-errors, because HLS passes that to GHC |
| 14:06:52 | <tomsmeding> | when not using that flag, the order is a bit more compressed, but there's still an ordering |
| 14:08:04 | <kuribas> | right |
| 14:09:08 | <tomsmeding> | see the "side note" here in the issue description https://gitlab.haskell.org/ghc/ghc/-/issues/26016 |
| 14:09:11 | <tomsmeding> | I've complained about it before :p |
| 14:13:19 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 240 seconds) |
| 14:16:01 | × | cubic_jpg quits (~cubic_jpg@user/cubic-jpg:13603) (Quit: Client closed) |
| 14:16:30 | → | cubic_jpg joins (~cubic_jpg@user/cubic-jpg:13603) |
| 14:17:50 | → | Enrico63 joins (~Enrico63@host-95-251-99-143.retail.telecomitalia.it) |
| 14:21:31 | <kuribas> | Also, for some reason lsp gives me the internal documentation, where there is no docstring... |
| 14:27:54 | → | somemathguy joins (~somemathg@user/somemathguy) |
| 14:29:40 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 14:34:56 | × | trickard quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 14:37:43 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 14:44:10 | → | spew joins (~spew@user/spew) |
| 14:49:51 | → | fp joins (~Thunderbi@130.233.70.102) |
| 14:53:10 | × | tromp quits (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 14:54:15 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 14:55:39 | → | tromp joins (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) |
| 14:56:39 | × | tromp quits (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Client Quit) |
| 14:56:54 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 260 seconds) |
| 14:57:25 | × | spew quits (~spew@user/spew) (Quit: WeeChat 4.7.2) |
| 14:59:27 | → | spew joins (~spew@user/spew) |
| 15:01:38 | → | tromp joins (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) |
| 15:03:16 | → | Square2 joins (~Square@user/square) |
| 15:06:27 | × | weary-traveler quits (~user@user/user363627) (Quit: Konversation terminated!) |
| 15:06:43 | → | weary-traveler joins (~user@user/user363627) |
| 15:08:03 | × | weary-traveler quits (~user@user/user363627) (Client Quit) |
| 15:08:27 | → | weary-traveler joins (~user@user/user363627) |
| 15:08:48 | → | tremon joins (~tremon@83.80.159.219) |
| 15:09:03 | → | merijn joins (~merijn@77.242.116.146) |
| 15:11:05 | → | deptype_ joins (~deptype@2406:b400:3a:9d2f:476c:a58e:3471:ff37) |
| 15:11:37 | × | infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 255 seconds) |
| 15:13:40 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 15:13:49 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Ping timeout: 264 seconds) |
| 15:14:05 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 15:15:18 | × | Enrico63 quits (~Enrico63@host-95-251-99-143.retail.telecomitalia.it) (Quit: Client closed) |
| 15:15:50 | → | Googulator98 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 15:15:54 | × | Googulator54 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 15:27:15 | → | merijn joins (~merijn@77.242.116.146) |
| 15:27:40 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 15:32:11 | → | infinity0 joins (~infinity0@pwned.gg) |
| 15:33:03 | → | Pixi` joins (~Pixi@user/pixi) |
| 15:35:43 | × | Pixi quits (~Pixi@user/pixi) (Ping timeout: 246 seconds) |
| 15:37:24 | × | j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
| 15:43:29 | <kuribas> | is it possible to do "pure" memoization, for example using a fix-point combinator? |
| 15:44:22 | <lucabtz> | i saw some libraries that do that |
| 15:44:32 | <opqdonut> | yes, using a lazy self-referential data structure |
| 15:44:35 | <lucabtz> | or claim to do that at least |
| 15:44:49 | <opqdonut> | for example an array, if you can enumerate all the inputt |
| 15:45:00 | → | j1n37 joins (~j1n37@user/j1n37) |
| 15:45:13 | <opqdonut> | doing it "sparsely" like you would by mutating a map of values, is harder |
| 15:46:02 | <opqdonut> | the iconic fibonacci list is an example of this kind of memoization with an unbounded domain |
| 15:47:35 | <opqdonut> | a more general-purpose solution might be a trie |
| 15:47:44 | × | latticepolytope quits (~user@user/isekaijin) (Ping timeout: 244 seconds) |
| 15:48:21 | → | latticepolytope joins (~user@user/isekaijin) |
| 15:48:24 | <opqdonut> | (practically people do it using unsafePerformIO, of course) |
| 15:48:31 | <kuribas> | Or parametrize over a monad? Like memoFix :: (forall m.Monad m => (a -> foo) -> a -> m foo) -> (a -> foo) |
| 15:48:50 | <opqdonut> | yeah |
| 15:48:51 | × | spew quits (~spew@user/spew) (Read error: Connection reset by peer) |
| 15:49:15 | <kuribas> | (missed an m...) |
| 15:49:58 | <opqdonut> | you can't make the m disappear from the final result tho |
| 15:50:21 | <kuribas> | Why not? |
| 15:50:43 | × | fgarcia quits (~lei@user/fgarcia) (Ping timeout: 264 seconds) |
| 15:51:17 | <opqdonut> | if you're relying on the monad sequencing to provide the concept of this-has-been-computed-before-that |
| 15:52:10 | <kuribas> | I can get "(a -> State memo foo)" =~ a -> memo -> (foo, memo), then flip, apply memo, and take the first. |
| 15:52:42 | <opqdonut> | sure, but then the next call won't use the outputted memo |
| 15:53:12 | <lucabtz> | yeah if you use State you have to live in the State monad |
| 15:53:13 | <opqdonut> | (unless you store it somewhere impurely) |
| 15:53:35 | → | spew joins (~spew@user/spew) |
| 15:53:38 | <kuribas> | yes, just the pure state monad, and I remove it in the end. |
| 15:53:47 | <lucabtz> | to escape the state you will have to provide a initial memo using runState which will be empty |
| 15:54:07 | × | tromp quits (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:54:08 | <lucabtz> | unless you thread around the memo from different runState calls |
| 15:56:18 | → | fgarcia joins (~lei@user/fgarcia) |
| 15:56:35 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 15:59:55 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 250 seconds) |
| 16:01:37 | × | fp quits (~Thunderbi@130.233.70.102) (Quit: fp) |
| 16:05:33 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:14:07 | → | tromp joins (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) |
| 16:14:44 | × | tromp quits (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Client Quit) |
| 16:15:10 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 16:15:50 | → | tromp joins (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) |
| 16:21:28 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 16:22:00 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 16:22:35 | × | annamalai quits (~annamalai@157.32.210.253) (Ping timeout: 240 seconds) |
| 16:22:54 | → | annamalai joins (~annamalai@117.246.58.193) |
| 16:23:01 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 16:23:15 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 16:24:55 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 245 seconds) |
| 16:26:29 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 244 seconds) |
| 16:28:36 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:32:07 | × | lucabtz quits (~lucabtz@user/lucabtz) (Quit: Lost terminal) |
| 16:33:43 | × | Pixi` quits (~Pixi@user/pixi) (Quit: Leaving) |
| 16:34:35 | × | latticepolytope quits (~user@user/isekaijin) (Ping timeout: 240 seconds) |
| 16:36:30 | → | merijn joins (~merijn@77.242.116.146) |
| 16:36:36 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 16:37:29 | cubic_jpg | is now known as NikServe |
| 16:38:07 | → | latticepolytope joins (~user@user/isekaijin) |
| 16:39:29 | → | Pixi joins (~Pixi@user/pixi) |
| 16:40:15 | NikServe | is now known as NikoChanServv |
| 16:42:22 | NikoChanServv | is now known as NickSer |
| 16:43:09 | × | NickSer quits (~cubic_jpg@user/cubic-jpg:13603) (Quit: Client closed) |
| 16:43:41 | → | cubic_jpg joins (~cubic_jpg@user/cubic-jpg:13603) |
| 16:48:02 | cubic_jpg | is now known as SnacksSer |
| 16:48:07 | Googulator98 | is now known as Googulator |
| 16:48:08 | × | bggd quits (~bgg@user/bggd) (Remote host closed the connection) |
| 16:48:40 | → | Guest15 joins (~Guest15@31-39-208.wireless.csail.mit.edu) |
| 16:49:13 | × | annamalai quits (~annamalai@117.246.58.193) (Ping timeout: 264 seconds) |
| 16:57:16 | × | weary-traveler quits (~user@user/user363627) (Quit: Konversation terminated!) |
| 16:57:32 | → | weary-traveler joins (~user@user/user363627) |
| 16:58:58 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 16:59:56 | <dminuoso> | Leary: Ah yeah, guess I had something like that in mind. The choice of ifS makes it quite readable and expressive. |
| 17:00:04 | × | SnacksSer quits (~cubic_jpg@user/cubic-jpg:13603) (Quit: Client closed) |
| 17:00:19 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 17:00:33 | → | cubic_jpg joins (~cubic_jpg@user/cubic-jpg:13603) |
| 17:11:02 | → | ft_ joins (~ft@p4fc2ab42.dip0.t-ipconnect.de) |
| 17:20:01 | ft_ | is now known as ft |
| 17:21:45 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
| 17:22:44 | × | Googulator quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 17:23:18 | → | Googulator joins (~Googulato@87-97-86-146.pool.digikabel.hu) |
| 17:29:50 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 17:30:27 | → | annamalai joins (~annamalai@117.246.173.168) |
| 17:33:08 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 17:40:48 | × | annamalai quits (~annamalai@117.246.173.168) (Remote host closed the connection) |
| 17:41:18 | × | thaumavorio_ quits (~thaumavor@thaumavor.io) (Quit: ZNC 1.8.2 - https://znc.in) |
| 17:41:38 | → | annamalai joins (~annamalai@117.246.173.168) |
| 17:42:25 | × | Square2 quits (~Square@user/square) (Remote host closed the connection) |
| 17:42:46 | → | Square2 joins (~Square@user/square) |
| 17:43:19 | × | Guest15 quits (~Guest15@31-39-208.wireless.csail.mit.edu) (Quit: Client closed) |
| 17:43:39 | → | thaumavorio joins (~thaumavor@thaumavor.io) |
| 17:45:42 | × | Googulator quits (~Googulato@87-97-86-146.pool.digikabel.hu) (Quit: Client closed) |
| 17:45:49 | → | Googulator25 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 17:54:23 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 17:56:54 | × | cubic_jpg quits (~cubic_jpg@user/cubic-jpg:13603) (Quit: Client closed) |
| 17:58:11 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
| 18:05:31 | × | annamalai quits (~annamalai@117.246.173.168) (Ping timeout: 246 seconds) |
| 18:05:55 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 252 seconds) |
| 18:06:01 | → | annamalai joins (~annamalai@157.32.212.233) |
| 18:07:28 | × | tromp quits (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:08:06 | → | gmg joins (~user@user/gehmehgeh) |
| 18:08:38 | → | larsivi joins (~larsivi@user/larsivi) |
| 18:09:19 | → | tromp joins (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) |
| 18:11:19 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 240 seconds) |
| 18:15:22 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 18:15:46 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 18:17:12 | × | kaskal quits (~kaskal@2a02:8388:1a8b:7d00:dfb3:620:180e:8832) (Quit: ZNC - https://znc.in) |
| 18:17:32 | → | kaskal joins (~kaskal@84-115-235-223.cable.dynamic.surfer.at) |
| 18:27:28 | × | kimiamania99 quits (~67ff9c12@user/kimiamania) (Quit: PegeLinux) |
| 18:28:44 | → | kimiamania99 joins (~67ff9c12@user/kimiamania) |
| 18:30:01 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 18:30:14 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 18:31:29 | × | deptype quits (~deptype@2406:b400:3a:9d2f:476c:a58e:3471:ff37) (Remote host closed the connection) |
| 18:31:29 | × | deptype_ quits (~deptype@2406:b400:3a:9d2f:476c:a58e:3471:ff37) (Remote host closed the connection) |
| 18:31:59 | trickard_ | is now known as trickard |
| 18:41:16 | × | tromp quits (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:41:17 | → | kuribas joins (~user@2a02:1808:41:1c70:586a:7bf2:33fa:d708) |
| 18:46:50 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 18:51:55 | × | Square2 quits (~Square@user/square) (Ping timeout: 240 seconds) |
| 18:52:25 | × | trickard quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 18:52:39 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 18:53:19 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 19:04:31 | × | kuribas quits (~user@2a02:1808:41:1c70:586a:7bf2:33fa:d708) (Ping timeout: 250 seconds) |
| 19:04:43 | → | tromp joins (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) |
| 19:04:52 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 19:09:29 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 19:11:09 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 19:19:15 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 252 seconds) |
| 19:20:16 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 19:21:50 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 19:24:30 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 19:28:07 | → | gmg joins (~user@user/gehmehgeh) |
| 19:32:00 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 19:33:01 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds) |
| 19:33:19 | Lord_of_Life_ | is now known as Lord_of_Life |
| 19:34:40 | → | lambda_gibbon joins (~lambda_gi@208.83.175.39) |
| 19:35:31 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 19:39:43 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 19:45:15 | × | latticepolytope quits (~user@user/isekaijin) (Ping timeout: 240 seconds) |
| 19:47:45 | Googulator25 | is now known as Googulator |
| 19:53:28 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 19:57:09 | × | Googulator quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 19:57:33 | → | Googulator joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 19:57:46 | × | tromp quits (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:57:48 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 19:59:51 | × | GdeVolpiano quits (~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.5.2) |
| 20:01:53 | × | kst quits (~krjst@2a0a:4cc0:2000:789a:b827:c6ff:fed6:bb48) (Quit: bye) |
| 20:02:10 | → | krjst joins (~krjst@2a0a:4cc0:2000:789a:b827:c6ff:fed6:bb48) |
| 20:02:34 | → | GdeVolpiano joins (~GdeVolpia@user/GdeVolpiano) |
| 20:06:10 | → | pavonia joins (~user@user/siracusa) |
| 20:06:55 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 20:07:08 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 20:08:51 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 20:10:36 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 20:12:01 | × | trickard_ quits (~trickard@cpe-81-98-47-163.wireline.com.au) (Ping timeout: 264 seconds) |
| 20:13:46 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 20:17:38 | → | Guest42 joins (~Guest42@93-159-22-28.cgnat.inetia.pl) |
| 20:19:40 | × | Guest42 quits (~Guest42@93-159-22-28.cgnat.inetia.pl) (Client Quit) |
| 20:21:19 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 20:23:00 | → | tromp joins (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) |
| 20:24:14 | → | trickard_ joins (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 20:25:53 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 20:36:50 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 20:41:25 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 20:45:40 | × | Googulator quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 20:45:46 | → | Googulator16 joins (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 20:45:50 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 20:52:20 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 20:56:48 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 21:07:44 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 21:12:07 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 21:13:44 | → | Square2 joins (~Square@user/square) |
| 21:14:19 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
| 21:14:37 | → | ljdarj1 joins (~Thunderbi@user/ljdarj) |
| 21:15:48 | × | Googulator16 quits (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 21:15:50 | → | Googulator38 joins (~Googulato@87-97-86-146.pool.digikabel.hu) |
| 21:16:55 | ljdarj1 | is now known as ljdarj |
| 21:21:25 | → | myxos joins (~myxos@2001:579:8380:f20:b869:f32d:617d:ee68) |
| 21:22:18 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 21:22:50 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:24:18 | × | myxokephale quits (~myxos@2001:579:8380:f20:f2c2:4b00:b76e:8530) (Ping timeout: 252 seconds) |
| 21:28:55 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 21:30:21 | × | GdeVolpiano quits (~GdeVolpia@user/GdeVolpiano) (Ping timeout: 252 seconds) |
| 21:31:23 | → | GdeVolpiano joins (~GdeVolpia@user/GdeVolpiano) |
| 21:33:52 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 21:38:25 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 21:41:42 | → | arkeet joins (~arkeet@moriya.ca) |
| 21:48:54 | × | Square2 quits (~Square@user/square) (Remote host closed the connection) |
| 21:49:10 | → | Square2 joins (~Square@user/square) |
| 21:49:13 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 21:53:01 | × | lambda_gibbon quits (~lambda_gi@208.83.175.39) (Ping timeout: 255 seconds) |
| 21:53:43 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 21:58:04 | → | Everything joins (~Everythin@172-232-54-192.ip.linodeusercontent.com) |
| 21:59:47 | → | ljdarj1 joins (~Thunderbi@user/ljdarj) |
| 22:00:15 | × | _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 244 seconds) |
| 22:01:43 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 240 seconds) |
| 22:01:44 | ljdarj1 | is now known as ljdarj |
| 22:04:37 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 22:05:39 | → | _d0t joins (~{-d0t-}@user/-d0t-/x-7915216) |
| 22:06:44 | <haskellbridge> | <lucabtz> this is similar to the discussion there was between pure and return. when I have a monad should I use liftM or fmap. similarly liftM2 or liftA2. I would use the M versions but using the other two could make the code more general in case at some point you may realize you can relax the monad to an Applicative |
| 22:07:15 | <monochrom> | :) |
| 22:09:17 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 22:09:26 | <monochrom> | I write "instance Functor MyMonad where fmap = liftM" when I'm lazy. :) |
| 22:12:36 | <monochrom> | Although, when teaching, I show coding up fmap for MyMonad directly because it is more basic and a good preparation. |
| 22:18:12 | <geekosaur> | isn't the lazy version `deriving Functor`? |
| 22:18:26 | <monochrom> | Oops heh. |
| 22:19:34 | <monochrom> | OK, "instance Applicative MyMonad where pure = (... this I will code up directly ...); liftA2 = liftM2; (<*>) = ap" |
| 22:20:56 | <monochrom> | Alternatively (pun!), I optimize for fewer import lines! So I use (<*>) to spare importing Control.Monad. :) |
| 22:21:06 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 22:21:25 | <monochrom> | (And then later I find myself needing foldM so the plan is foiled.) |
| 22:24:07 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 240 seconds) |
| 22:25:20 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 22:35:29 | trickard_ | is now known as trickard |
| 22:36:28 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 22:40:39 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 22:41:56 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 22:50:09 | → | mange joins (~mange@user/mange) |
| 22:51:38 | × | michalz quits (~michalz@185.246.207.221) (Remote host closed the connection) |
| 22:51:51 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 22:56:03 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 22:59:46 | → | lambda_gibbon joins (~lambda_gi@208.83.175.39) |
| 23:00:48 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 244 seconds) |
| 23:06:15 | × | gf32 quits (~gf3@user/gf3) (Ping timeout: 240 seconds) |
| 23:06:46 | → | gf31 joins (~gf3@user/gf3) |
| 23:07:14 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 23:11:46 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 23:16:07 | × | takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Remote host closed the connection) |
| 23:17:47 | × | tromp quits (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:17:56 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 23:19:09 | × | spew quits (~spew@user/spew) (Quit: WeeChat 4.7.2) |
| 23:19:13 | × | lambda_gibbon quits (~lambda_gi@208.83.175.39) (Ping timeout: 264 seconds) |
| 23:19:34 | → | spew joins (~spew@user/spew) |
| 23:21:01 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 23:22:46 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 23:27:37 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 23:30:11 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:30:13 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Remote host closed the connection) |
| 23:32:17 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 23:38:09 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 23:43:03 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 23:51:40 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 23:52:01 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Quit: Lost terminal) |
| 23:52:21 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 23:52:58 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Client Quit) |
| 23:53:17 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 23:55:20 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Client Quit) |
| 23:55:38 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 23:56:07 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
All times are in UTC on 2025-12-16.