Home liberachat/#haskell: Logs Calendar

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.