Home liberachat/#haskell: Logs Calendar

Logs on 2023-03-09 (liberachat/#haskell)

00:05:21 mauke_ joins (~mauke@user/mauke)
00:05:49 caryhartline joins (~caryhartl@2600:1700:2d0:8d30:4147:a345:6569:5bc8)
00:07:07 × mauke quits (~mauke@user/mauke) (Ping timeout: 248 seconds)
00:07:07 mauke_ is now known as mauke
00:10:58 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
00:30:06 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
00:30:06 × tusko quits (~yeurt@user/tusko) (Remote host closed the connection)
00:30:22 chexum joins (~quassel@gateway/tor-sasl/chexum)
00:30:39 tusko joins (~yeurt@user/tusko)
00:44:28 × jarkad quits (~u@188.163.45.157) (Ping timeout: 252 seconds)
00:45:31 × _xor quits (~xor@72.49.195.228) (Ping timeout: 246 seconds)
00:52:21 × fnurglewitz quits (uid263868@id-263868.lymington.irccloud.com) (Quit: Connection closed for inactivity)
00:54:30 × remedan quits (~remedan@ip-94-112-0-18.bb.vodafone.cz) (Ping timeout: 255 seconds)
00:54:46 kimiamania8 joins (~65804703@user/kimiamania)
00:55:09 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:55:09 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:55:09 wroathe joins (~wroathe@user/wroathe)
00:55:51 × tdammers quits (~tdammers@219-131-178-143.ftth.glasoperator.nl) (Ping timeout: 255 seconds)
00:56:01 remedan joins (~remedan@ip-94-112-0-18.bb.vodafone.cz)
00:56:16 tdammers joins (~tdammers@219-131-178-143.ftth.glasoperator.nl)
00:56:18 × kimiamania quits (~65804703@user/kimiamania) (Ping timeout: 255 seconds)
00:56:18 × jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 255 seconds)
00:56:18 × Cheery quits (~cheery@server-239-7.tentacle.cloud) (Ping timeout: 255 seconds)
00:56:19 × tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 255 seconds)
00:56:19 × typedfern_ quits (~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net) (Ping timeout: 255 seconds)
00:56:21 kimiamania8 is now known as kimiamania
00:56:27 Cheery joins (~cheery@server-239-7.tentacle.cloud)
00:56:45 × turlando quits (~turlando@user/turlando) (Ping timeout: 255 seconds)
00:57:09 turlando joins (~turlando@user/turlando)
00:58:04 jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
00:58:19 tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com)
01:02:09 × marienz quits (~marienz@libera/staff/marienz) (Ping timeout: 624 seconds)
01:03:07 × polyphem_ quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Ping timeout: 248 seconds)
01:08:58 shriekingnoise joins (~shrieking@186.137.175.87)
01:09:19 typedfern_ joins (~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net)
01:09:41 marienz joins (~marienz@libera/staff/marienz)
01:10:25 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
01:10:43 polyphem_ joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
01:11:16 dsrt^ joins (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net)
01:11:52 zaquest joins (~notzaques@5.130.79.72)
01:35:38 × statusbot5 quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
01:35:51 statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
01:38:19 × dcoutts quits (~duncan@host81-156-211-236.range81-156.btcentralplus.com) (Ping timeout: 248 seconds)
01:49:24 × xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 255 seconds)
01:55:47 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
01:58:24 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
02:00:59 × esph quits (~weechat@user/esph) (Ping timeout: 255 seconds)
02:01:35 esph joins (~weechat@user/esph)
02:02:54 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
02:04:48 × pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-43-67-70-144-160.dsl.bell.ca) (Ping timeout: 248 seconds)
02:05:01 razetime joins (~Thunderbi@117.193.7.18)
02:07:47 × esph quits (~weechat@user/esph) (Read error: Connection reset by peer)
02:08:11 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 248 seconds)
02:12:12 × ix quits (~ix@213.205.192.69) (Ping timeout: 268 seconds)
02:18:50 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
02:21:05 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
02:22:13 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
02:24:34 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
02:27:10 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
02:27:57 ryanbooker joins (uid4340@id-4340.hampstead.irccloud.com)
02:34:19 × vglfr quits (~vglfr@209.198.138.162) (Ping timeout: 248 seconds)
02:34:39 vglfr joins (~vglfr@209.198.138.162)
02:35:38 × johnjaye quits (~pi@173.209.64.74) (Ping timeout: 268 seconds)
02:37:27 johnjaye joins (~pi@173.209.64.74)
02:37:27 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:43:36 mbuf joins (~Shakthi@49.207.178.186)
02:49:24 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
02:52:39 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
02:54:28 × codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 276 seconds)
02:58:23 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
03:01:37 × jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 276 seconds)
03:03:20 jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
03:03:53 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:03:53 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:03:53 finn_elija is now known as FinnElija
03:17:33 <sm> hey all
03:17:35 gastus_ joins (~gastus@185.6.123.209)
03:18:16 <sm> forM_ :: (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
03:18:16 <sm> forM :: (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b)
03:18:16 <sm> Am I wrong to think forM is forM_ but preserving the return value ? Is their combining behaviour different ?
03:20:43 × gastus quits (~gastus@185.6.123.242) (Ping timeout: 248 seconds)
03:27:52 <dibblego> not wrong, but forM_ is the specialisation of forM, not the other way around
03:28:31 × td_ quits (~td@i53870915.versanet.de) (Ping timeout: 248 seconds)
03:28:41 <sm> thanks
03:28:52 codaraxis joins (~codaraxis@user/codaraxis)
03:28:55 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 276 seconds)
03:30:21 td_ joins (~td@i53870909.versanet.de)
03:32:10 × malte quits (~malte@mal.tc) (Ping timeout: 276 seconds)
03:37:32 malte joins (~malte@mal.tc)
03:39:27 pieguy128 joins (~pieguy128@bas1-quebec14-67-70-103-117.dsl.bell.ca)
03:42:34 × malte quits (~malte@mal.tc) (Ping timeout: 276 seconds)
03:42:56 × nattiestnate quits (~nate@202.138.250.46) (Ping timeout: 248 seconds)
03:48:37 bilegeek joins (~bilegeek@2600:1008:b08e:25d7:448b:af41:2606:865f)
03:56:10 malte joins (~malte@mal.tc)
04:08:05 × cheater quits (~Username@user/cheater) (Remote host closed the connection)
04:10:51 × vglfr quits (~vglfr@209.198.138.162) (Ping timeout: 248 seconds)
04:11:05 cheater joins (~Username@user/cheater)
04:12:25 × polyphem_ quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Ping timeout: 260 seconds)
04:17:00 × razetime quits (~Thunderbi@117.193.7.18) (Ping timeout: 255 seconds)
04:26:17 × johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
04:26:17 × jwiegley quits (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
04:35:42 razetime joins (~Thunderbi@117.193.7.18)
04:37:45 × ryanbooker quits (uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
04:40:22 × wroathe quits (~wroathe@user/wroathe) (Quit: leaving)
04:42:19 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
04:42:20 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
04:42:20 wroathe joins (~wroathe@user/wroathe)
04:42:42 × wroathe quits (~wroathe@user/wroathe) (Client Quit)
05:03:20 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
05:12:22 _xor joins (~xor@74.215.46.17)
05:18:56 × stef204 quits (~stef204@user/stef204) (Ping timeout: 248 seconds)
05:19:25 Square2 joins (~Square4@user/square)
05:22:26 × koz quits (~koz@121.99.240.58) (Quit: ZNC 1.8.2 - https://znc.in)
05:23:24 × razetime quits (~Thunderbi@117.193.7.18) (Quit: See You Space Cowboy)
05:23:43 koz joins (~koz@121.99.240.58)
05:25:20 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 248 seconds)
05:26:21 Maxdamantus joins (~Maxdamant@user/maxdamantus)
05:27:31 trev joins (~trev@user/trev)
05:29:28 × koz quits (~koz@121.99.240.58) (Quit: ZNC 1.8.2 - https://znc.in)
05:30:09 × waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 268 seconds)
05:31:45 koz joins (~koz@121.99.240.58)
05:38:29 phma_ joins (~phma@2001:5b0:210f:3ec8:b53b:9627:f50b:d3ea)
05:39:06 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
05:39:39 cheater_ joins (~Username@user/cheater)
05:40:48 × phma quits (phma@2001:5b0:215d:c698:2a3:1662:71f8:9a54) (Ping timeout: 248 seconds)
05:42:03 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
05:42:04 cheater_ is now known as cheater
05:46:39 cheater_ joins (~Username@user/cheater)
05:47:37 × brettgilio quits (~brettgili@x-irc.gq) (Read error: Connection reset by peer)
05:50:09 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
05:50:15 cheater_ is now known as cheater
05:54:02 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
05:56:36 mechap joins (~mechap@user/mechap)
05:58:15 phma joins (~phma@host-67-44-208-56.hnremote.net)
05:58:37 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
06:00:31 × phma_ quits (~phma@2001:5b0:210f:3ec8:b53b:9627:f50b:d3ea) (Ping timeout: 246 seconds)
06:00:59 falafel joins (~falafel@75.161.218.9)
06:03:23 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
06:06:04 × m1dnight quits (~christoph@78-22-0-121.access.telenet.be) (Read error: Connection reset by peer)
06:09:10 kenran joins (~user@user/kenran)
06:11:56 m1dnight joins (~christoph@78-22-0-121.access.telenet.be)
06:14:25 xiliuya joins (~xiliuya@user/xiliuya)
06:19:23 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 264 seconds)
06:23:21 chomwitt joins (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1)
06:28:58 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 276 seconds)
06:31:59 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
06:33:02 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:33:09 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Quit: Ping timeout (120 seconds))
06:33:22 Goodbye_Vincent joins (cyvahl@freakshells.net)
06:33:26 freeside joins (~mengwong@103.252.202.85)
06:34:03 ec joins (~ec@gateway/tor-sasl/ec)
06:34:41 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
06:35:02 ec joins (~ec@gateway/tor-sasl/ec)
06:41:17 vglfr joins (~vglfr@209.198.138.7)
06:46:17 × phma quits (~phma@host-67-44-208-56.hnremote.net) (Quit: Konversation terminated!)
06:46:18 × falafel quits (~falafel@75.161.218.9) (Remote host closed the connection)
06:46:24 <Inst_> is anyone interested in helping me with what appears to be a cool GHCI bug?
06:46:39 <Inst_> https://media.discordapp.net/attachments/280033776820813825/1083277713877516298/image.png?width=1124&height=1402
06:47:21 phma joins (phma@2001:5b0:2144:2188:ce75:d293:d13a:b375)
06:49:05 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
06:49:35 jwiegley joins (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net)
06:49:59 razetime joins (~Thunderbi@117.193.7.18)
06:52:24 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
06:57:18 <Inst_> got it explained
06:57:22 <Inst_> I was defining the minus operator
07:09:11 × YoungFrog quits (~youngfrog@2a02:a03f:ca07:f900:a8be:2d7b:23bb:d884) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
07:09:31 YoungFrog joins (~youngfrog@2a02:a03f:ca07:f900:9c2d:58ba:f0b6:128f)
07:22:16 × vglfr quits (~vglfr@209.198.138.7) (Ping timeout: 276 seconds)
07:22:39 vglfr joins (~vglfr@209.198.138.7)
07:31:38 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
07:34:15 × bilegeek quits (~bilegeek@2600:1008:b08e:25d7:448b:af41:2606:865f) (Quit: Leaving)
07:35:21 <dminuoso> int-e: Ah I see, thanks
07:35:32 lortabac joins (~lortabac@2a01:e0a:541:b8f0:fc2c:23ef:a0df:9b5f)
07:43:09 × _xor quits (~xor@74.215.46.17) (Quit: brb)
07:44:42 × xiliuya quits (~xiliuya@user/xiliuya) (Quit: Lost terminal)
07:46:01 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
07:46:10 nattiestnate joins (~nate@167.205.0.251)
07:47:35 gurkenglas joins (~gurkengla@dynamic-046-114-178-105.46.114.pool.telefonica.de)
07:48:48 qhong_ is now known as qhong
07:49:30 × nattiestnate quits (~nate@167.205.0.251) (Client Quit)
07:58:59 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:00:37 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
08:02:23 MajorBiscuit joins (~MajorBisc@c-001-001-058.client.tudelft.eduvpn.nl)
08:05:14 × MajorBiscuit quits (~MajorBisc@c-001-001-058.client.tudelft.eduvpn.nl) (Client Quit)
08:06:43 × codaraxis quits (~codaraxis@user/codaraxis) (Quit: Leaving)
08:07:36 MajorBiscuit joins (~MajorBisc@c-001-001-058.client.tudelft.eduvpn.nl)
08:07:46 × razetime quits (~Thunderbi@117.193.7.18) (Ping timeout: 276 seconds)
08:08:18 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 255 seconds)
08:10:50 × thegeekinside quits (~thegeekin@189.141.115.134) (Remote host closed the connection)
08:13:14 × califax quits (~califax@user/califx) (Ping timeout: 255 seconds)
08:13:18 coot joins (~coot@213.134.171.3)
08:13:28 califax joins (~califax@user/califx)
08:17:05 fnurglewitz joins (uid263868@id-263868.lymington.irccloud.com)
08:18:38 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:20:28 razetime joins (~Thunderbi@117.193.7.18)
08:20:57 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
08:26:17 acidjnk joins (~acidjnk@p200300d6e715c49459520d9465f62029.dip0.t-ipconnect.de)
08:30:04 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Remote host closed the connection)
08:30:08 akegalj joins (~akegalj@78.3.82.42)
08:35:48 mc47 joins (~mc47@xmonad/TheMC47)
08:39:37 × vglfr quits (~vglfr@209.198.138.7) (Ping timeout: 276 seconds)
08:40:00 vglfr joins (~vglfr@145.224.100.102)
08:53:01 michalz joins (~michalz@185.246.204.125)
08:55:27 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
09:00:27 × gurkenglas quits (~gurkengla@dynamic-046-114-178-105.46.114.pool.telefonica.de) (Ping timeout: 248 seconds)
09:02:20 gurkenglas joins (~gurkengla@dynamic-046-114-178-105.46.114.pool.telefonica.de)
09:04:33 zeenk joins (~zeenk@2a02:2f04:a20d:f900::7fe)
09:11:34 × ft quits (~ft@p3e9bc443.dip0.t-ipconnect.de) (Quit: leaving)
09:17:16 × jtmar quits (~james@jtmar.me) (Ping timeout: 265 seconds)
09:18:03 jamestmartin joins (~james@jtmar.me)
09:29:40 _xor joins (~xor@74.215.46.17)
09:30:32 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559)
09:33:31 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 248 seconds)
09:35:07 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Ping timeout: 248 seconds)
09:36:49 × vglfr quits (~vglfr@145.224.100.102) (Ping timeout: 276 seconds)
09:38:08 CiaoSen joins (~Jura@p200300c9570e91002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
09:39:00 vglfr joins (~vglfr@145.224.100.102)
09:49:10 × vglfr quits (~vglfr@145.224.100.102) (Ping timeout: 276 seconds)
09:49:52 vglfr joins (~vglfr@209.198.138.7)
09:50:39 __monty__ joins (~toonn@user/toonn)
09:52:30 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
09:53:51 thegeekinside joins (~thegeekin@189.141.115.134)
09:54:23 azimut joins (~azimut@gateway/tor-sasl/azimut)
09:55:11 gmg joins (~user@user/gehmehgeh)
09:59:20 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
10:01:35 × zeenk quits (~zeenk@2a02:2f04:a20d:f900::7fe) (Remote host closed the connection)
10:01:57 zeenk joins (~zeenk@2a02:2f04:a20d:f900::fba)
10:02:19 × thegeekinside quits (~thegeekin@189.141.115.134) (Ping timeout: 248 seconds)
10:08:43 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 248 seconds)
10:09:35 × acidjnk quits (~acidjnk@p200300d6e715c49459520d9465f62029.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
10:13:58 × sayola quits (~sayola@ipservice-092-213-087-211.092.213.pools.vodafone-ip.de) (Read error: Connection reset by peer)
10:17:35 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
10:26:51 × ph88 quits (~ph88@ip5b426553.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
10:32:13 × MajorBiscuit quits (~MajorBisc@c-001-001-058.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.6)
10:33:13 Lycurgus joins (~juan@user/Lycurgus)
10:36:59 PhilipKaludercic joins (~oj14ozunf@2001:470:69fc:105::3:2913)
10:42:03 mmhat joins (~mmh@p200300f1c701ed74ee086bfffe095315.dip0.t-ipconnect.de)
10:46:03 × chomwitt quits (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 248 seconds)
10:46:50 × razetime quits (~Thunderbi@117.193.7.18) (Remote host closed the connection)
10:47:05 phma_ joins (~phma@host-67-44-208-90.hnremote.net)
10:48:58 <mmhat> -quit
10:49:06 × mmhat quits (~mmh@p200300f1c701ed74ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
10:50:08 × phma quits (phma@2001:5b0:2144:2188:ce75:d293:d13a:b375) (Ping timeout: 248 seconds)
10:50:55 × Square2 quits (~Square4@user/square) (Ping timeout: 276 seconds)
10:55:09 phma joins (~phma@host-67-44-208-94.hnremote.net)
10:56:59 × phma_ quits (~phma@host-67-44-208-90.hnremote.net) (Ping timeout: 268 seconds)
10:57:24 × CiaoSen quits (~Jura@p200300c9570e91002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
10:58:26 acidjnk joins (~acidjnk@p200300d6e715c494181d60e4bd1f4f9f.dip0.t-ipconnect.de)
10:59:29 phma_ joins (~phma@host-67-44-208-94.hnremote.net)
11:00:41 × phma quits (~phma@host-67-44-208-94.hnremote.net) (Ping timeout: 268 seconds)
11:01:19 <kuribas> nobody quits haskell, it's for life :)
11:06:42 mastarija joins (~mastarija@188.252.198.83)
11:09:08 freeside joins (~mengwong@103.252.202.85)
11:09:55 MajorBiscuit joins (~MajorBisc@c-001-001-058.client.tudelft.eduvpn.nl)
11:10:18 phma_ is now known as phma
11:14:46 xff0x joins (~xff0x@2405:6580:b080:900:a142:fa3c:5d94:d75c)
11:15:10 <sm> right
11:15:18 <sm> you can check in any time you want...
11:20:05 <kenran> for you opticians, can I do the following "just with optics"? if view #foo x == Blub then Just (view #bar x) else Nothing
11:21:22 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
11:21:27 <dminuoso> kenran: Exactly like that?
11:21:39 <dminuoso> Just give it a try. :)
11:22:31 <kenran> uhm, I'm probably lacking "vocabulary" here. I don't know how to get the conditional "into" the lens world, if that makes sense
11:24:26 <kenran> I know I can use something like preview (#foo . #_Blub) x to get either a Just () if it matches Blub, or Nothing otherwise. hum, maybe that leads somewhere
11:24:32 × phma quits (~phma@host-67-44-208-94.hnremote.net) (Read error: Connection reset by peer)
11:25:18 phma joins (~phma@2001:5b0:210f:6d68:df04:da38:ad7:41b3)
11:25:45 <kenran> but then I "went down too far" into x to somehow append the #foo to the chain, haven't I?
11:34:48 pdw joins (~user@215.156.62.185.bridgefibre.net)
11:35:21 × akegalj quits (~akegalj@78.3.82.42) (Quit: leaving)
11:40:47 <jackdk> you can shove it into the indexed part of an optic using selfIndex and pull it back out using asIndex, but I forget exactly how
11:43:59 × xff0x quits (~xff0x@2405:6580:b080:900:a142:fa3c:5d94:d75c) (Ping timeout: 248 seconds)
11:44:22 xff0x joins (~xff0x@ai098135.d.east.v6connect.net)
12:01:51 L29Ah joins (~L29Ah@wikipedia/L29Ah)
12:02:07 NiceBird joins (~NiceBird@185.133.111.196)
12:02:14 jpds joins (~jpds@gateway/tor-sasl/jpds)
12:04:10 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
12:10:51 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 255 seconds)
12:11:15 <dminuoso> kenran: You can use filtered or filteredBy
12:11:33 <dminuoso> (Or unsafe equivalents if needed)_
12:11:59 <dminuoso> Note, that this is even possible in lens (though in lens the unsafe behavior is mixed into the filteredBy)
12:12:21 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
12:16:42 chele joins (~chele@user/chele)
12:32:56 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
12:34:16 × xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 276 seconds)
12:34:55 × Lycurgus quits (~juan@user/Lycurgus) (Ping timeout: 276 seconds)
12:35:40 xff0x joins (~xff0x@178.255.149.135)
12:45:19 × xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 276 seconds)
12:46:53 xff0x joins (~xff0x@2405:6580:b080:900:a142:fa3c:5d94:d75c)
12:48:43 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
12:54:38 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
12:55:00 <kuribas> Is there something you can do with linear types, that you cannot do with the ST monad?
12:55:30 <kuribas> Many of the usecases I see can be done with the ST monad, like resource usage, or even better than with linear types.
12:56:36 <kuribas> for example: https://hackage.haskell.org/package/text-builder-linear-0.1/docs/Data-Text-Builder-Linear.html
12:57:12 <kuribas> What is different from using "Builder s -> ST s (Builder s)" instead of Buffer ⊸ Buffer
12:57:16 <kuribas> ?
12:58:19 × gurkenglas quits (~gurkengla@dynamic-046-114-178-105.46.114.pool.telefonica.de) (Ping timeout: 276 seconds)
12:58:19 × acidjnk quits (~acidjnk@p200300d6e715c494181d60e4bd1f4f9f.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
12:58:29 <kuribas> I have seen examples where the linear types actually can leak the resource.
12:59:08 lyle joins (~lyle@104.246.145.237)
12:59:16 <lortabac> kuribas: I'm not the right person to answer this question, but *as far as I understand* linear types are not about enabling new functionality, but tracking more information in the types
12:59:50 <merijn> kuribas: The former can be further mutated later
12:59:56 <merijn> oh, wait
13:00:03 <merijn> the 2nd one is linear arrow
13:00:10 <merijn> Then no fucking clue :p
13:00:51 <aforemny> kuribas: the paper on linear types has a section about that
13:02:55 stef204 joins (~stef204@user/stef204)
13:04:36 gurkenglas joins (~gurkengla@dynamic-046-114-177-189.46.114.pool.telefonica.de)
13:05:27 <aforemny> kuribas: i think specifically section 5.1 is an example, but maybe also 2.2, 2.3 i don't remember off the top of my head
13:05:36 <aforemny> kuribas: https://arxiv.org/abs/1710.09756
13:05:48 <int-e> kuribas: Linear types can express DAGs of dependencies, where the ST monad forces you to write linear computations (or to use unsafeInterleaveST)
13:06:09 <int-e> err, sequential, I should say
13:07:21 <ncf> what do linear types have to do with ST?
13:07:23 <int-e> Stemming from the fact that there's only one linearly restricted thing inside the ST monad (the encapsulated state token).
13:07:48 <ncf> Builder s -> ST s (Builder s) doesn't have to be linear in its argument, does it?
13:08:42 <int-e> ncf: I think I just accidentally answered this.
13:08:57 lechner parts (~lechner@debian/lechner) (Using Circe, the loveliest of all IRC clients)
13:09:19 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
13:10:52 <int-e> (In a slogan, `forall s. ST s a` provides linearity without linear types.)
13:11:15 <int-e> (But it's less flexible.)
13:11:34 <ncf> i don't see how
13:11:45 <ncf> it provides linearity
13:12:42 <int-e> Oh, the type Builder s -> ST s (Builder s) is wrong of course.
13:12:59 × stef204 quits (~stef204@user/stef204) (Quit: WeeChat 3.8)
13:13:27 <int-e> Instead you'd need a reference-like interface, Builder s -> Input -> ST s ()
13:14:04 <int-e> (for appending to te builder)
13:14:18 <ncf> so references provide linearity, is what we're saying?
13:14:36 <int-e> No. I'm saying that ST s a *embeds* a linear thing.
13:17:08 <int-e> You'll never see that thing (the state token) because without linear types to enforce that it's used only once, exposing it would break that linearity.
13:18:15 <kuribas> int-e: I don't know about less flexible. There was a leak in an idris library of mutable arrays.
13:18:28 <ncf> hmm so ST s a would be equivalent to s ⊸ (a, s) ?
13:18:29 <kuribas> int-e: whereas the ST monad didn't have a leak.
13:18:32 cfricke joins (~cfricke@user/cfricke)
13:18:42 <int-e> kuribas: apples, oranges
13:19:20 PhilipKaludercic parts (~oj14ozunf@2001:470:69fc:105::3:2913) ()
13:19:37 <kuribas> why? This was literally an advacated usecase for linear types, where the ST version worked fine.
13:19:49 <int-e> ncf: Pretty much.
13:19:59 <kuribas> And in the end there was a complicated construction that was supposed to be working.
13:21:02 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
13:21:11 <int-e> kuribas: I know nothing about that leak but I imagine that if you don't fully specify the order of evaluations, some part of the computation can be delayed forever.
13:21:37 <int-e> But foremost, I don't know about that leak so I probably shouldn't even speculate.
13:21:46 <kuribas> ncf: no, because there is nothing that specifies the values of type "s" have to be the same.
13:22:47 ec joins (~ec@gateway/tor-sasl/ec)
13:23:10 <kuribas> erm, if the s is always hidden I guess it's the same...
13:23:56 <kuribas> Isn't the "s" in "ST s a" a phantom type?
13:24:37 <int-e> Yes, the underlying type will be State# s -> (a, State# s)
13:24:51 Square2 joins (~Square4@user/square)
13:24:53 <int-e> But that's not essential for the analogy, I think.
13:26:10 <kuribas> int-e: leak: https://github.com/idris-lang/Idris2/issues/613
13:26:20 cheater_ joins (~Username@user/cheater)
13:26:31 <mauke> that doesn't look phantom
13:28:15 <mauke> that's less of a leak and more just outright unsafe
13:28:42 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
13:29:00 <int-e> Oh, contributed code... so it's more like early ByteString using inlinePerformIO everywhere.
13:30:33 <int-e> (Leading to mutable arrays being potentially shared across several bytestring creations... that's analogous, isn't it?)
13:31:08 <kuribas> mauke: right, it allows you to mutate an immutable array.
13:31:51 × cheater_ quits (~Username@user/cheater) (Ping timeout: 255 seconds)
13:33:50 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559)
13:34:02 <kuribas> int-e: so "Buffer s -> ST s ()" should give the same performance benifits as "Buffer ⊸ Buffer", right?
13:34:20 <kuribas> assuming the monad gets elimited by GHC.
13:34:35 cheater_ joins (~Username@user/cheater)
13:34:35 cheater_ is now known as cheater
13:34:59 <int-e> It gives you mutation.
13:35:04 <mauke> .oO( elimited ontinuations )
13:35:37 <kuribas> int-e: which I don't care, because this type is an implementation detail, right?
13:35:39 <int-e> "same"... depends on the underlying primitives, I won't speculate.
13:35:52 <ncf> i think the paper also touches on performance
13:36:38 cheater_ joins (~Username@user/cheater)
13:38:15 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Ping timeout: 260 seconds)
13:38:59 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
13:39:05 cheater_ is now known as cheater
13:39:06 <kuribas> So linear types can be useful to track state changes in the type using phantom variables.
13:39:12 <int-e> Anyway, ultimately that ticket seems to be more about actually working with linear types; I'll take away that constructors for mutable data can be tricky to express.
13:39:57 <int-e> It's a user error. :-P
13:40:10 <kuribas> That ticket solves a problem using linear types, that was actually already solved with ST monad.
13:41:12 <int-e> And I'm still very amused by the fact that we got *exactly* this phenomonon (sharing mutable arrays) in a completely different way in early bytestring.
13:41:45 <kuribas> And that was a bug in the implementation?
13:42:22 <int-e> Basically, `inlinePerformIO` exposes the state token so the compiler feels free to use it more than once.
13:43:56 <kuribas> Could I make a linear mutable array by tracking the version?
13:44:41 <kuribas> Like update :: Int -> a -> (Array a 1) ⊸ (Array 2)
13:44:52 <int-e> `unsafePerformIO` very much relies on blinding the compiler about the fact that the same state token is used every single time. This is achieved largely through cleverly *not* inlining it until the last possible moment.
13:45:18 <int-e> kuribas: What's preventing you from using version 1 more than once?
13:45:27 <kuribas> the linear arrow?
13:46:15 <int-e> [unsafePerformIO] and `inlinePerformIO` broke this careful balance by inlining immediately, opening IO actions up to common subexpression elimination and hence sharing.
13:46:36 <int-e> kuribas: then what do you need the version for?
13:46:47 × dsrt^ quits (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net) (Remote host closed the connection)
13:46:58 <kuribas> int-e: to avoid accessing a previous version?
13:47:12 <int-e> kuribas: you just said that that's what the linear arrow is for
13:47:28 <int-e> At least one of us is confused here.
13:47:34 <kuribas> me probably :)
13:47:54 <kuribas> Well, without the linear arrow, you could still access the old version.
13:48:54 <int-e> Sure, but what do you can compared to ... Array a -o Array a?
13:49:45 chomwitt joins (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1)
13:49:52 <kuribas> hmm...
13:50:11 <int-e> can? gain.
14:01:21 <kuribas> yeah this doesn't work.
14:03:27 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection)
14:03:46 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
14:04:50 jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
14:06:02 <kuribas> int-e: you need a linear continuation, which is where the bug occurs.
14:06:48 <kuribas> Because if the return value of the continuation is a type variables, you can return the mutable array.
14:07:00 <kuribas> I don't see an easy fix.
14:08:31 × gurkenglas quits (~gurkengla@dynamic-046-114-177-189.46.114.pool.telefonica.de) (Ping timeout: 276 seconds)
14:18:27 thegeekinside joins (~thegeekin@189.141.115.134)
14:22:05 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:23:43 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
14:24:27 azimut joins (~azimut@gateway/tor-sasl/azimut)
14:28:12 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
14:33:30 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
14:34:31 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.8)
14:36:01 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
14:38:31 MacSlow joins (~MacSlow@p57bb2fc5.dip0.t-ipconnect.de)
14:38:41 <MacSlow> Greetings everybody!
14:41:39 <MacSlow> Am I meant to be able to compile/install split 0.2.3.5 using ghc 8.8.4 and cabal 3.0.1.0? While it compiles (library and tests) the command 'cabal install' fails with: 'cabal: Cannot build the executables in the package split because it does not contain any executables.'
14:42:32 <MacSlow> I have no idea what that means and searching for hints on this error using the usual search engines yield links to unrelated errors.
14:42:49 <MacSlow> Any advice is greatly appreciated... thanks in advance!
14:45:01 <geekosaur> you don't install libraries directly, you let cabal (or stack) manage them
14:45:21 Lycurgus joins (~juan@98.4.112.204)
14:45:21 × Lycurgus quits (~juan@98.4.112.204) (Changing host)
14:45:21 Lycurgus joins (~juan@user/Lycurgus)
14:45:41 <geekosaur> if you have some project that uses that package, you declare a dependency on it and cabal will expose it as needed
14:45:49 <MacSlow> geekosaur: isn't that what I did via cabal_
14:45:52 <MacSlow> ?
14:46:13 × vglfr quits (~vglfr@209.198.138.7) (Ping timeout: 276 seconds)
14:46:17 <geekosaur> this avoids having multiple versions of a library installed and making ghc get confused about which one to use
14:46:29 <MacSlow> geekosaur: I git cloned split and then followed the readme file about how to build/install it via cabal.
14:46:48 <int-e> If you want to keep the old workflow for a bit longer, use `cabal v1-install`, but this command is going to disappear.
14:46:48 <geekosaur> most things like that have instructions for the old version of cabal
14:47:53 int-e wonders how terrible v2-install --lib is.
14:48:26 <MacSlow> geekosaur: hm... I just wend outside of the git cloned directory of split and did 'cabal install split --lib' and that seemed to have worked.
14:48:49 <geekosaur> right, but it invites problems later
14:49:07 <geekosaur> we stopped using v1-install (and --lib which simulates it) for a reason
14:50:05 <int-e> fsvo "we"
14:51:33 <int-e> (I realize this is an outlier but I still like cabal sandboxes)
14:52:17 <geekosaur> I do too, actually, and am somewhat surprised someone hasn't hacked up an external solution to bring them back
14:52:33 <geekosaur> but I've been getting used to the new workflow
14:52:35 <mastarija> Do we have something in base to check if type level list is a subset of another?
14:52:53 <geekosaur> afaik base has nothing for type level lists
14:53:34 <mastarija> any good package?
14:53:37 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
14:54:12 <geekosaur> re --lib: it can be bad news if you use the default package env, but if you use a local one it's fine
14:54:36 <geekosaur> (and is not so different from sandboxes)
14:55:18 <kuribas> int-e: You need to use an explicit continuation, like (mkResource : (Res ⊸ ()) -> ()), but that means I cannot return something meaningful.
14:55:32 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:55:44 <kuribas> int-e: If I use (mkResource : (Res ⊸ a) -> a), I can leak the resource.
14:55:56 shriekingnoise joins (~shrieking@186.137.175.87)
14:56:36 <geekosaur> maybe you want something ST-ish with the resource tagged?
14:57:03 <kuribas> geekosaur: yeah, I was arguing that the ST monad solves many of the problem that linear types are supposed to solve.
14:57:20 <MacSlow> geekosaur: cls
14:57:24 <MacSlow> ups :)
14:57:33 <MacSlow> wrong window
14:58:04 <MacSlow> cls
14:58:12 <MacSlow> gee... *sigh*
15:01:12 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
15:01:59 Lycurgus joins (~juan@user/Lycurgus)
15:05:16 <int-e> kuribas: It's funny that the first comment on that ticket is "let's just do what ST does".
15:05:27 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:fc2c:23ef:a0df:9b5f) (Quit: WeeChat 2.8)
15:06:26 <int-e> kuribas: with less clutter: ((forall s. Res s) -o a) -> a
15:06:53 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:08:17 <int-e> kuribas: But I guess you'd have to carry that over to updates too? So every update will be (forall s. Res s) -> Res s? I don't know. I've never thought about this before.
15:09:53 <int-e> kuribas: surry, that should be (forall s. Res s -o a) -> a instead. The point being, you get to 'leak' the resource, but the 's' will become fixed.
15:10:19 <int-e> hmm
15:10:23 <int-e> Nah, it just doesn't work.
15:11:28 <int-e> Funny. The linear types story is so neat for updates.
15:11:55 <kuribas> What if I want to create two arrays?
15:12:01 <kuribas> Can I mix the s'es?
15:12:48 <int-e> Your resource can be a root of linearity... once you have that you can have createArray :: Res s -o (Res s, Array s a)
15:12:49 cheater_ joins (~Username@user/cheater)
15:13:16 <kuribas> right
15:13:20 <kuribas> so the ST monad basically :)
15:13:50 <kuribas> I could make a linear indexed monads in idris with overloaded do.
15:14:08 <kuribas> But then, it works fine with the normal ST monad.
15:15:17 <kuribas> Well, maybe the advantage is that I can store the linear resource in a datatype.
15:15:23 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
15:15:25 cheater_ is now known as cheater
15:15:44 <kuribas> With an existential.
15:17:07 waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
15:18:45 vglfr joins (~vglfr@209.198.138.7)
15:21:06 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
15:27:46 × chomwitt quits (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 252 seconds)
15:28:37 polyphem_ joins (~rod@2a02:810d:840:8754:8192:31bf:f6c3:eb7e)
15:30:39 Sgeo joins (~Sgeo@user/sgeo)
15:33:40 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
15:34:10 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
15:35:53 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Read error: Connection reset by peer)
15:37:04 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
15:37:29 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:37:46 <kuribas> int-e: why did you say it doesn't work?
15:39:11 <int-e> kuribas: Because you can still leak the resource existentially.
15:40:21 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
15:42:09 <kuribas> int-e: but it will be fixed, like you said?
15:43:01 <int-e> Sure but you can still feed it into the proposed Res s -o (Res s, Array s a) interface.
15:43:09 CiaoSen joins (~Jura@p200300c9570e91002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
15:46:01 × waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 276 seconds)
15:47:18 × Lycurgus quits (~juan@user/Lycurgus) (Ping timeout: 255 seconds)
15:48:06 <EvanR> can you?
15:48:31 <EvanR> I thought when doing ST-like stuff the type checker (rightly) complains it can't tell they two s are the same
15:49:18 <EvanR> someone gives you an existential containing an "unknown" s, can't do anything with it
15:50:13 <kuribas> yeah, but then createArray must have another signature.
15:53:45 <int-e> maybe we should read https://arxiv.org/abs/2104.00480
15:54:02 <kuribas> right :)
15:54:07 <int-e> Section 4, "Linear Resource Usage Protocols"
15:55:28 <kuribas> int-e: that example already looks broken, since I can do newArray 2 id
15:55:46 Lycurgus joins (~juan@user/Lycurgus)
15:55:53 <int-e> no you can't? a isn't linear.
15:57:04 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
15:57:37 <int-e> Or maybe not, but then you can't use the result more than once.
15:57:57 <kuribas> sure I can
15:58:02 <kuribas> it doesn't say a has to be linear
15:58:32 <kuribas> So if I set a == Array t, it will happily return the array
15:58:55 <kuribas> well "\x => x" is linear.
16:00:07 <int-e> That make no sense.
16:01:02 <int-e> You're saying that you can write id : (1 x : a) -> a; id x = x, and then you can use the result of `id x` arbitrarily often?
16:04:56 cheater joins (~Username@user/cheater)
16:11:41 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559)
16:15:16 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
16:15:53 × YoungFrog quits (~youngfrog@2a02:a03f:ca07:f900:9c2d:58ba:f0b6:128f) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
16:16:13 YoungFrog joins (~youngfrog@2a02:a03f:ca07:f900:9c2d:58ba:f0b6:128f)
16:21:50 razetime joins (~Thunderbi@117.193.7.18)
16:31:06 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
16:31:47 × Alex_test quits (~al_test@178.34.160.55) (Ping timeout: 265 seconds)
16:32:45 × AlexZenon quits (~alzenon@178.34.160.55) (Ping timeout: 265 seconds)
16:32:46 × mbuf quits (~Shakthi@49.207.178.186) (Quit: Leaving)
16:34:03 chomwitt joins (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1)
16:35:35 Alex_test joins (~al_test@178.34.160.55)
16:36:38 AlexZenon joins (~alzenon@178.34.160.55)
16:37:14 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
16:39:35 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
16:40:59 × chomwitt quits (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 264 seconds)
16:43:14 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
16:43:30 <segfaultfizzbuzz> from reddit: "the Haskely way" (really the functional way) is to make/extend an algebra of basic program elements and construct your program from it 🤯
16:45:59 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Remote host closed the connection)
16:46:19 <segfaultfizzbuzz> algebra of program elements!!
16:47:30 × mastarija quits (~mastarija@188.252.198.83) (Quit: WeeChat 3.7.1)
16:47:52 acidjnk joins (~acidjnk@p200300d6e715c453bc1e3b7a524e041a.dip0.t-ipconnect.de)
16:48:02 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:48:58 <c_wraith> sure
16:50:07 <c_wraith> that's at least a common way of performing abstraction in Haskell.
16:50:49 <segfaultfizzbuzz> i know what algebraic structures are like groups and rings but "an algebra", i'm not aware of a formalization of what that means
16:50:51 <c_wraith> The algebra functions as primitives in your problem domain
16:51:03 <monochrom> s/the/a/
16:51:04 <segfaultfizzbuzz> am i exposing whether my functions are associative, commute, etc?
16:51:35 <c_wraith> monochrom: eh, viewpoint. "the algebra you've created" vs "an algebra you can create"
16:51:51 <monochrom> No no no, s/the Haskely way/a Haskely way/
16:51:55 <c_wraith> ah, yes.
16:52:00 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
16:52:01 <c_wraith> It's an option.
16:52:10 <c_wraith> Successful programs have done other things
16:52:57 <segfaultfizzbuzz> i'm not seeing the relationship between defining the functions for my program and an algebra at the moment
16:53:05 <c_wraith> segfaultfizzbuzz: https://www.schoolofhaskell.com/user/tel/algebras-coalgebras
16:53:35 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
16:54:04 <segfaultfizzbuzz> ah so algebra here is a jargon word and doesn't refer to the general meaning of the term?
16:54:25 <c_wraith> it refers to a common mathematical meaning of the term in branches of math you aren't yet familiar with :)
16:55:19 <segfaultfizzbuzz> "yet" sounds optimistic here but i suppose thanks for the flattery
16:55:37 <monochrom> And I wonder if "make an algebra" is tautological.
16:55:52 <c_wraith> That's less flattery and more an acknowledgement that if you want to, you can learn the stuff
16:56:42 <segfaultfizzbuzz> so a type and a function which is a functor is considered an algebra?
16:58:43 <c_wraith> It's a bit more specific than that, but that page isn't especially precise.
16:59:19 <segfaultfizzbuzz> how do folks deal with "definition spam":
17:00:12 <segfaultfizzbuzz> it feels like there is an unending torrent of definitions and properties and things
17:00:13 phma_ joins (~phma@host-67-44-208-201.hnremote.net)
17:00:27 × CiaoSen quits (~Jura@p200300c9570e91002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
17:00:44 <c_wraith> that's because there is. Things will always be defined!
17:01:32 <c_wraith> I don't really worry about it. If there are definitions in an area I'm interested in, I'll pick them up to keep up with what's going on. Otherwise, I leave them in peace.
17:01:56 <segfaultfizzbuzz> are you constantly confronting new definitions and terms and soforth?
17:01:57 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559)
17:02:08 <c_wraith> sure
17:02:18 <segfaultfizzbuzz> and then if you use a library or other thing, there will be things the author decided to use,...
17:02:36 <segfaultfizzbuzz> so it's like, the code i write feels like it will be "perpetually un-grounded"--which is to say, i can't really know what it stands on
17:02:59 × coot quits (~coot@213.134.171.3) (Quit: coot)
17:03:28 × phma quits (~phma@2001:5b0:210f:6d68:df04:da38:ad7:41b3) (Ping timeout: 248 seconds)
17:03:51 <geekosaur> always true
17:04:02 <c_wraith> I'm perfectly willing to outsource grounding to library authors I trust.
17:04:09 <segfaultfizzbuzz> so that's just how it is
17:04:28 <geekosaur> now think about how this affects cpan, npm, etc.
17:04:31 <c_wraith> Do I have any clue what a Kan extension is? Nope. But Edward Kmett wrote the library, so I know it's based on solid stuff.
17:04:45 <c_wraith> So I use the stuff in there if it solves my problems, and don't worry about it
17:05:17 <segfaultfizzbuzz> i also run into failures,... like i tried to use a stream in haskell once to do a simple computation on some data streamed over http and it was a disaster
17:05:49 <segfaultfizzbuzz> the types wouldn't fit together even though conceptually what i was doing was no more complicated than summing certain items from the stream
17:06:22 <segfaultfizzbuzz> c_wraith: yeah that's a great example, kan extension, yoneda lemma, etc
17:06:37 × vglfr quits (~vglfr@209.198.138.7) (Ping timeout: 276 seconds)
17:07:35 <segfaultfizzbuzz> and haskell is math, except it is not math, except it is math, except it is not... lol
17:08:13 <segfaultfizzbuzz> that is to say, i look up kan extension and i see adjoint functor,... so this term will be relevant to haskell, except it won't be, except it will be, except it won't
17:08:37 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.8)
17:09:13 <geekosaur> there are a lot of kinds of math
17:09:25 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
17:09:27 × kenran quits (~user@user/kenran) (Remote host closed the connection)
17:09:40 <geekosaur> you won't find many quaternions in haskell. you won't find much related to homotopy, in general
17:10:06 <geekosaur> (now watch someone mention HoTT)
17:11:10 <kuribas> int-e: of course. "id : (1 x : a) -> a", only means that id can use x once.
17:11:14 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
17:11:18 motherfsck joins (~motherfsc@user/motherfsck)
17:11:22 <kuribas> int-e: it doesn't say anything about other functions.
17:11:49 <kuribas> int-e: in particular, it doesn't mean that the passed object is unique.
17:11:52 × razetime quits (~Thunderbi@117.193.7.18) (Quit: See You Space Cowboy)
17:11:58 <kuribas> int-e: or that the returned object can be used only once.
17:13:37 phma_ is now known as phma
17:14:38 <c_wraith> segfaultfizzbuzz: You can learn a lot of just Haskell-as-Haskell. parametric polymorphism means types can say a *lot* about what's going on, and you can learn to work with that. So I don't care so much what math a library was derived from. That math might explain why the ideas were being studied in the first place, but it doesn't explain why I'd care about it as Haskell code. Instead, the types explain that, and I don't need to learn more than Haskell to
17:14:38 <c_wraith> read them.
17:16:27 × xff0x quits (~xff0x@2405:6580:b080:900:a142:fa3c:5d94:d75c) (Ping timeout: 248 seconds)
17:17:30 <segfaultfizzbuzz> i should shut up and finish writing tic tac toe lol, perhaps "shut up and code" is the right motto
17:18:15 <mauke> *looks at lens types* *head explodes*
17:18:22 xff0x joins (~xff0x@ai098135.d.east.v6connect.net)
17:18:44 <c_wraith> lens types are fine when you remove all the type aliases
17:18:56 <segfaultfizzbuzz> i was a little sad that i apparently couldn't expose the lattice structure of my tic tac toe board to haskell
17:19:19 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
17:21:05 <c_wraith> Well. The basic lens types. on the other hand, there is stuff like
17:21:08 <c_wraith> :t confusing
17:21:09 <lambdabot> Applicative f => LensLike (Data.Functor.Day.Curried.Curried (Data.Functor.Yoneda.Yoneda f) (Data.Functor.Yoneda.Yoneda f)) s t a b -> LensLike f s t a b
17:21:50 econo joins (uid147250@user/econo)
17:24:44 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Remote host closed the connection)
17:25:07 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
17:26:10 gmg joins (~user@user/gehmehgeh)
17:27:02 cheater joins (~Username@user/cheater)
17:27:59 × Square2 quits (~Square4@user/square) (Ping timeout: 248 seconds)
17:28:11 × polyphem_ quits (~rod@2a02:810d:840:8754:8192:31bf:f6c3:eb7e) (Ping timeout: 248 seconds)
17:28:57 polyphem_ joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
17:32:16 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
17:32:25 cheater joins (~Username@user/cheater)
17:35:06 × ddellacosta quits (~ddellacos@146.70.166.10) (Quit: WeeChat 3.8)
17:36:05 ddellacosta joins (~ddellacos@146.70.166.10)
17:36:05 <int-e> kuribas: I'm pretty sure that that's wrong; the multiplicity at which you can use the result of an application `f x` where f : (1 x: _) -> _ is governed by how many `x` you have in McBride's "Plenty O' Nuttin'" paper, so the same should be true for Atkey's QTT. Though in the copy of that paper, the `APP` rule has a very confusing, mostly unrestricted, sigma' that I feel is wrong... but the...
17:36:11 <int-e> ...conclusion is the same for the {0,1,omega} ring with 0,1 < omega weakening, which I think is what Idris uses.
17:36:12 × mechap quits (~mechap@user/mechap) (Ping timeout: 255 seconds)
17:36:42 × raym quits (~ray@user/raym) (Quit: kernel update, rebooting...)
17:36:59 mechap joins (~mechap@user/mechap)
17:38:54 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
17:39:43 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
17:40:24 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:43:01 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:45:19 <EvanR> geekosaur, yeah because quaternions are not as convenient as rotation matrices!
17:45:52 × MajorBiscuit quits (~MajorBisc@c-001-001-058.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.6)
17:46:26 <segfaultfizzbuzz> lol rust: "ampersand-driven development"
17:47:48 <segfaultfizzbuzz> i'm sure people have implemented quaternions in haskell, ... but as far as i know i can't expose algebraic characteristics of functions to the haskell compiler? like, if i was to define a quaternion type, can i tell haskell that addition of quaternions is associative?
17:48:18 <segfaultfizzbuzz> the significance there being that haskell might be able to use that information to optimize things or produce errors
17:49:40 <geekosaur> you can't even tell it that + on integers is associative
17:50:04 <geekosaur> but iirc you don't actually get much from that in languages that do support it
17:50:31 <geekosaur> in the end, it has to pick an ordering (ASTs are trees, not sets)
17:50:37 <segfaultfizzbuzz> if i tell a language that addition is associative, programming languages won't make use of that information?
17:50:43 <segfaultfizzbuzz> that's... bizarre
17:50:58 <int-e> @check \a b c -> (a + b) + c == a + (b + c :: Double)
17:51:01 <lambdabot> *** Failed! Falsifiable (after 4 tests and 4 shrinks):
17:51:01 <lambdabot> -0.11668115919024846 1.452549394947626 -0.4297849906259958
17:51:02 <geekosaur> and CPUs aren't set-bvased either
17:51:15 <segfaultfizzbuzz> geekosaur: whaaat, what does that mean
17:51:35 <geekosaur> when it comes down to it, it has to use an order
17:52:00 <segfaultfizzbuzz> @check \a b c -> (a*b)*c == a*(b*c :: Double)
17:52:01 <geekosaur> but it doesn't really matter which one it uses even before it gets down to coding an ADD
17:52:02 <lambdabot> *** Failed! Falsifiable (after 2 tests and 7 shrinks):
17:52:02 <lambdabot> -0.5208854264318805 -0.9738615249555872 -0.9289882691469215
17:52:36 <segfaultfizzbuzz> wao
17:53:10 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:53:20 <geekosaur> think about it. it still has to force both parameters to + before it can add them; it doesn't really matter what order it does them in unless there's a cycle, but it'll fail in that case anyway
17:55:13 <geekosaur> even if `a` depends on `b` in `a + b`, in Haskell that just means one evaluation will already have been completed/reduced depending on the order it chooses
17:55:48 <geekosaur> so in the end knowing about associativity gains you nothing
17:58:38 <mauke> that's not quite true in general. associativity can open up optimization avenues
17:59:16 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 276 seconds)
17:59:35 <geekosaur> we lost them anyway
18:00:13 <mauke> consider the following C code: unsigned fac(unsigned n) { if (n == 0) return 1; return n * fac(n - 1); }
18:00:30 <[Leary]> It's the associativity of `<>` that makes all of `Foldable` well-defined. It also means you can break operations into the most suitable tree structure for, e.g. parallel evaluation.
18:00:37 <int-e> "we" probably use associativity liberally when auto-vectorizing code.
18:01:07 <int-e> though that won't carry over to custom types anyway
18:01:09 <EvanR> algebraic laws are cool, but I would not expect it to matter to quaternions directly because floats
18:01:38 <EvanR> associativity is morally true and immorally false
18:02:55 <mauke> if * is associative, then we can rewrite as: unsigned fac(unsigned n) { return fac_a(n, 1); } unsigned fac_a(unsigned n, unsigned a) { if (n == 0) return a; return fac_a(n - 1, a * n); }
18:03:28 <mauke> the latter is tail recursive and can be compiled to a straight loop, saving O(n) stack space
18:03:56 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
18:04:05 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
18:05:23 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
18:05:46 <int-e> replacing foldr by foldl'
18:06:25 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 276 seconds)
18:06:55 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
18:07:24 <mauke> (gcc actually does this)
18:08:32 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 248 seconds)
18:09:48 raym joins (~ray@user/raym)
18:09:55 × Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Read error: Connection reset by peer)
18:10:10 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:10:15 Maeda joins (~Maeda@91-161-10-149.subs.proxad.net)
18:11:22 × Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Client Quit)
18:12:14 Maeda joins (~Maeda@91-161-10-149.subs.proxad.net)
18:21:02 cheater joins (~Username@user/cheater)
18:23:27 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
18:24:04 × Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Ping timeout: 268 seconds)
18:25:13 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559)
18:25:59 Maeda joins (~Maeda@91-161-10-149.subs.proxad.net)
18:26:00 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:29:39 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Ping timeout: 255 seconds)
18:31:33 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 255 seconds)
18:36:11 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
18:36:17 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559)
18:42:01 <hololeap> I think it's time for me to attempt making a mandelbrot explorer, but I have no idea what graphics-related packages would be good for that
18:42:47 <hololeap> I have done no user interface stuff in haskell outside of CLI and brick
18:42:57 <EvanR> to just show images you could use SDL
18:43:24 <EvanR> control it via IPC from a CLI app xD
18:43:33 <sm> terminal! https://github.com/haskell-game/tiny-games-hs/tree/main/prelude/tiny-brot#readme
18:43:38 <hololeap> lol, but I want knobs
18:43:49 <EvanR> RIP
18:44:34 <sm> some folks have been making little knobs-uis with dear-imlib
18:45:05 <sm> https://hackage.haskell.org/package/dear-imgui I guess. There's also https://hackage.haskell.org/package/raylib-imgui
18:45:44 <sm> https://hackage.haskell.org/package/monomer and https://hackage.haskell.org/package/fltkhs are also widget-ful
18:46:15 <sm> and https://hackage.haskell.org/package/h-raylib seems the newest
18:46:37 <hololeap> neat, I'll take a look
18:46:43 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.8)
18:48:07 × pwntips quits (~user@24-113-98-114.wavecable.com) (Ping timeout: 268 seconds)
18:49:51 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
18:58:16 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
18:59:28 <carter> Question: is HasCallStack => the simplest way to add source location data to an API currently?
19:01:20 <geekosaur> simplest but second most expensive after compiling with profiling
19:05:34 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 276 seconds)
19:06:58 Ashkan joins (~Ashkan@a119011.upc-a.chello.nl)
19:08:01 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
19:09:01 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Remote host closed the connection)
19:10:03 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
19:15:22 ft joins (~ft@p3e9bc443.dip0.t-ipconnect.de)
19:16:39 cheater_ joins (~Username@user/cheater)
19:20:17 <sm> did I see something in ghc 9.6 release notes about dual building for profiling being no longer necessary ? or less building required ?
19:20:31 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
19:20:36 cheater_ is now known as cheater
19:21:56 <sm> hmm no
19:22:33 <geekosaur> are you thinking of -prof-late?
19:22:57 <geekosaur> which makes profiling builds almost as fast as normal ones iirc
19:24:44 <sm> no it was something else maybe to do with adding more info to .hi files allowing GHC to make compilation decisions later/more locally
19:25:02 <sm> but -prof-late sounds great too
19:25:42 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Quit: Ping timeout (120 seconds))
19:26:02 Fischmiep joins (~Fischmiep@user/Fischmiep)
19:31:55 ph88 joins (~ph88@ip5b426553.dynamic.kabel-deutschland.de)
19:32:07 dsrt^ joins (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net)
19:33:18 kilolympus joins (~kilolympu@213.144.144.24)
19:40:35 <monochrom> -prof-late sounds like it solves the problem I observed where turning on profiling changes a O(1)-space program to Ω(n)-space.
19:40:57 × MacSlow quits (~MacSlow@p57bb2fc5.dip0.t-ipconnect.de) (Quit: leaving)
19:44:34 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
19:45:46 mc47 joins (~mc47@xmonad/TheMC47)
19:45:50 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559)
19:49:20 <segfaultfizzbuzz> wait a sec, does lazy evaluation mean that you can do less/very little/nothing with the knowledge that an operation is associative? because you need to evaluate each node...
19:49:52 <segfaultfizzbuzz> EvanR: you could define quaternions over rationals, over integers, etc
19:50:25 <EvanR> :thonk:
19:50:39 <EvanR> the formulas for converting quaternions involves trig
19:51:16 <EvanR> so maybe it works in isolation but uselessly for computer graphics
19:52:02 <segfaultfizzbuzz> yeah it would be a "mathematical curiousity" as far as i know
19:53:09 <EvanR> associativity is very useful for converting folds from one direction to another which has a more efficient evaluation strategy
19:53:25 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
19:54:42 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
19:56:16 <EvanR> to state the opposite of what you might have missed above, maybe you want to convert a foldl into a foldr which could be properly lazy
19:58:35 <dsal> foldl is a left fold and foldr is a right fold, but I generally prefer fold which is straightforward.
19:59:12 Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
19:59:51 <EvanR> lol
20:00:12 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 255 seconds)
20:01:50 kuribas joins (~user@ptr-17d51epmwvuiuir3x67.18120a2.ip6.access.telenet.be)
20:06:16 <kuribas> int-e: Linear.Array is just completely broken https://gist.github.com/kuribas/3539cd48795232553061571f6b7a64c1
20:06:26 <kuribas> It allows me to duplicate an array, and also to write twice to it.
20:09:10 <monochrom> Lazy evaluation does not know about associativity.
20:11:04 <monochrom> Some humans and some code optimizers exploit some associativity. But then neither are related to lazy evaluation.
20:11:26 <kuribas> int-e: well the second does fail when I make the input linear.
20:12:31 <monochrom> For example I bet C compilers know to simplify "x = 3 * y * 4" to "x = 12 * y" (and furthermore use a bitwise trick to avoid real multiplication).
20:12:37 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
20:13:38 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
20:14:44 <mauke> (y << 3) + (y << 2)?
20:14:45 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
20:18:48 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:19:55 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 248 seconds)
20:22:10 cheater joins (~Username@user/cheater)
20:22:40 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
20:24:22 cheater_ joins (~Username@user/cheater)
20:24:40 L29Ah joins (~L29Ah@wikipedia/L29Ah)
20:24:47 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 256 seconds)
20:25:10 <kuribas> int-e: it looks fine when I apply the Ur trick from the issue comments.
20:25:13 shriekingnoise joins (~shrieking@186.137.175.87)
20:25:45 pavonia joins (~user@user/siracusa)
20:27:27 <kuribas> if it's an Int
20:27:28 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
20:27:28 cheater_ is now known as cheater
20:27:38 <kuribas> if it's double, or polymorphic, those laws don't even hold.
20:34:06 hugo joins (znc@verdigris.lysator.liu.se)
20:38:43 × caryhartline quits (~caryhartl@2600:1700:2d0:8d30:4147:a345:6569:5bc8) (Quit: caryhartline)
20:39:00 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
20:39:04 <segfaultfizzbuzz> EvanR: i always check the logs, it would be rude to start a conversation and not read what people say
20:39:39 <EvanR> consulting the panopticon
20:39:48 <segfaultfizzbuzz> haha yeah
20:45:53 Joao003 joins (~Joao003@2804:840:8310:4e00:483b:dfbc:6ebe:6566)
20:47:13 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Remote host closed the connection)
20:48:34 × zeenk quits (~zeenk@2a02:2f04:a20d:f900::fba) (Quit: Konversation terminated!)
20:49:34 × kuribas quits (~user@ptr-17d51epmwvuiuir3x67.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
20:51:18 × Ashkan quits (~Ashkan@a119011.upc-a.chello.nl) (Quit: Client closed)
20:54:31 pwntips joins (~user@24-113-98-114.wavecable.com)
20:55:28 alphabeta joins (~kilolympu@vpn-fn-229.net.ed.ac.uk)
20:56:04 × kilolympus quits (~kilolympu@213.144.144.24) (Ping timeout: 276 seconds)
20:57:19 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
21:04:37 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
21:05:48 × npmania quits (~Thunderbi@91.193.7.59) (Quit: npmania)
21:06:47 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
21:13:57 × lyle quits (~lyle@104.246.145.237) (Quit: WeeChat 3.8)
21:18:48 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:19:25 × alphabeta quits (~kilolympu@vpn-fn-229.net.ed.ac.uk) (Read error: Connection reset by peer)
21:21:47 × acidjnk quits (~acidjnk@p200300d6e715c453bc1e3b7a524e041a.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
21:21:54 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
21:28:16 acidjnk joins (~acidjnk@p200300d6e715c453a916ccc9b0d1ef20.dip0.t-ipconnect.de)
21:29:59 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
21:31:29 acidjnk_new joins (~acidjnk@p200300d6e715c45369d03de84b7702ea.dip0.t-ipconnect.de)
21:35:39 × acidjnk quits (~acidjnk@p200300d6e715c453a916ccc9b0d1ef20.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
21:37:53 × michalz quits (~michalz@185.246.204.125) (Remote host closed the connection)
21:39:39 × AlexZenon quits (~alzenon@178.34.160.55) (Ping timeout: 255 seconds)
21:40:45 × Joao003 quits (~Joao003@2804:840:8310:4e00:483b:dfbc:6ebe:6566) (Quit: Leaving)
21:42:01 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
21:43:07 × Alex_test quits (~al_test@178.34.160.55) (Ping timeout: 248 seconds)
21:46:03 Alex_test joins (~al_test@178.34.160.55)
21:46:42 caryhartline joins (~caryhartl@2603-8080-6c00-6c01-2dd0-c76a-1d13-9758.res6.spectrum.com)
21:47:44 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559)
21:48:59 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 248 seconds)
21:51:07 × infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection)
21:51:10 AlexZenon joins (~alzenon@178.34.160.55)
21:51:26 waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
21:51:42 × trev quits (~trev@user/trev) (Remote host closed the connection)
21:52:08 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:182e:ca34:e210:1559) (Ping timeout: 255 seconds)
21:53:14 infinity0 joins (~infinity0@pwned.gg)
22:07:24 <DavidDenoncin[m]> Hi! Can anyone tell me the name of a proper package to compute a median? Is median-stream the one to go with?
22:10:56 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
22:18:47 <sclv> DavidDenoncin[m]: depends on what you want to do -- median over a small list, a big list, ongoing median over a stream, etc?
22:19:11 <sclv> the `statistics` package is good for a high quality and high perf implementations of lots of fancier stuff
22:20:26 <sclv> for a small-medium list, just like doing the obvious one-liner is good enough, unless one is worried about numeric stability issues
22:21:05 tsmc[m] joins (~tsmcmatri@2001:470:69fc:105::1:7e1)
22:22:53 zeenk joins (~zeenk@2a02:2f04:a20d:f900::fba)
22:24:43 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds)
22:25:38 <DavidDenoncin[m]> Well I'll apply it to small lists, I just don't want to have a to treat particularly that one case (I want to avoid recoding what I think should be there ^^). I saw mean and stdDev in the statistics package, but did not understand how to simply compute a median with this package
22:27:20 <sclv> ah i see the statistics median function is a quantile estimation, not a precise one https://hackage.haskell.org/package/statistics-0.16.1.2/docs/Statistics-Quantile.html#v:median
22:27:24 <sclv> too fancy :-P
22:28:32 tmiller joins (~tmiller@199.241.26.152)
22:28:44 <mauke> :t \xs -> sort xs !! (length xs `div` 2)
22:28:46 <lambdabot> Ord a => [a] -> a
22:28:52 <sclv> right, i guess everyone just does that :-P
22:29:19 hugo joins (znc@verdigris.lysator.liu.se)
22:29:25 <mauke> :t liftA2 (!!) sort (flip div 2 . length)
22:29:26 <lambdabot> Ord c => [c] -> c
22:29:28 × tmiller quits (~tmiller@199.241.26.152) (Client Quit)
22:29:34 <sclv> i forgot about "sorting to avoid catastrophic cancellation" because i always use the knuth version
22:30:12 <mauke> what's cancellation?
22:30:23 <sclv> wait i'm high, i'm thinking about mean, nevermind!
22:30:55 <mauke> :t (!!) <$> sort <*> (flip div 2 <$> length)
22:30:56 <lambdabot> Ord b => [b] -> b
22:31:31 × NiceBird quits (~NiceBird@185.133.111.196) (Quit: Leaving)
22:33:38 <DavidDenoncin[m]> I see. Either I'm going one liner (sort of only valid for odd length ;-) or fancy then ^^
22:34:28 <DavidDenoncin[m]> s/;-/isn't it ?/
22:36:06 cheater_ joins (~Username@user/cheater)
22:36:25 <sclv> i think last time it came up the "nicest" non-streaming precise fancy median algorithm was the one that could be derived from using vector-algorithm's select stuff in its heapsort https://hackage.haskell.org/package/vector-algorithms-0.9.0.1/docs/Data-Vector-Algorithms-Heap.html -- someone really should add a PR to have it directly there so people don't have to reinvent the wheel
22:37:22 <sclv> but yeah, just sort and index into the middle
22:38:10 <DavidDenoncin[m]> Allright, thanks!
22:38:35 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
22:38:41 cheater_ is now known as cheater
22:39:07 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
22:41:19 Lycurgus joins (~juan@user/Lycurgus)
22:58:29 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 268 seconds)
23:03:03 × zeenk quits (~zeenk@2a02:2f04:a20d:f900::fba) (Quit: Konversation terminated!)
23:09:52 × acidjnk_new quits (~acidjnk@p200300d6e715c45369d03de84b7702ea.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
23:10:25 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
23:12:21 × fnurglewitz quits (uid263868@id-263868.lymington.irccloud.com) (Quit: Connection closed for inactivity)
23:13:17 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
23:13:55 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:14:29 × caryhartline quits (~caryhartl@2603-8080-6c00-6c01-2dd0-c76a-1d13-9758.res6.spectrum.com) (Quit: caryhartline)
23:29:37 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
23:32:49 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
23:34:39 L29Ah joins (~L29Ah@wikipedia/L29Ah)
23:51:31 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:56:04 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
23:56:04 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
23:56:04 wroathe joins (~wroathe@user/wroathe)

All times are in UTC on 2023-03-09.