Home liberachat/#haskell: Logs Calendar

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

00:01:25 × rref quits (~moe@cpc110681-lewi19-2-0-cust485.2-4.cable.virginm.net) (Client Quit)
00:02:57 × califax quits (~califax@user/califx) (Remote host closed the connection)
00:04:48 califax joins (~califax@user/califx)
00:15:09 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
00:15:27 nate4 joins (~nate@98.45.169.16)
00:21:53 × rustisafungus quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
00:23:43 × off^ quits (~off@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 268 seconds)
00:24:32 × Tuplanolla quits (~Tuplanoll@91-159-69-12.elisa-laajakaista.fi) (Quit: Leaving.)
00:32:07 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
00:34:23 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
00:35:41 rustisafungus joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
00:37:17 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 244 seconds)
00:43:39 nilradical joins (~nilradica@user/naso)
00:45:06 × rustisafungus quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
00:46:55 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
00:53:30 × OscarZ quits (~oscarz@95.175.104.83) (Ping timeout: 264 seconds)
00:59:43 razetime joins (~quassel@117.254.34.255)
01:11:54 × razetime quits (~quassel@117.254.34.255) (Ping timeout: 244 seconds)
01:12:51 razetime joins (~quassel@117.193.6.155)
01:13:47 rustisafungus joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
01:14:35 <SrPx> https://github.com/Kindelia/Functional-Benchmarks !!
01:18:13 × rustisafungus quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
01:18:13 × razetime quits (~quassel@117.193.6.155) (Read error: Connection reset by peer)
01:21:03 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
01:22:40 razetime joins (~quassel@117.254.35.60)
01:22:55 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 268 seconds)
01:25:14 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
01:27:43 × paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Remote host closed the connection)
01:27:59 paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
01:36:25 × nilradical quits (~nilradica@user/naso) (Remote host closed the connection)
01:36:37 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds)
01:37:12 nilradical joins (~nilradica@user/naso)
01:37:35 matthewmosior joins (~matthewmo@173.170.253.91)
01:38:34 × nilradical quits (~nilradica@user/naso) (Remote host closed the connection)
01:38:58 nilradical joins (~nilradica@user/naso)
01:44:03 off^ joins (~off@c-73-237-184-20.hsd1.ga.comcast.net)
01:47:45 azimut joins (~azimut@gateway/tor-sasl/azimut)
01:51:35 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
01:56:52 × off^ quits (~off@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 244 seconds)
02:05:32 × jargon quits (~jargon@184.101.185.66) (Remote host closed the connection)
02:05:38 rustisafungus joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
02:09:55 × rustisafungus quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
02:17:27 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
02:24:18 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
02:25:14 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
02:25:40 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
02:27:16 jargon joins (~jargon@184.101.185.66)
02:28:56 × nilradical quits (~nilradica@user/naso) (Remote host closed the connection)
02:29:43 nilradical joins (~nilradica@user/naso)
02:33:03 cyphase joins (~cyphase@user/cyphase)
02:34:21 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
02:36:39 ChaiTRex joins (~ChaiTRex@user/chaitrex)
02:39:44 × razetime quits (~quassel@117.254.35.60) (Ping timeout: 244 seconds)
02:41:22 × xff0x quits (~xff0x@2405:6580:b080:900:e333:df19:b280:4b33) (Ping timeout: 268 seconds)
02:41:48 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
02:42:36 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
02:42:44 razetime joins (~quassel@117.193.3.170)
02:43:04 × nilradical quits (~nilradica@user/naso) (Ping timeout: 268 seconds)
02:43:41 × td_ quits (~td@94.134.91.208) (Ping timeout: 268 seconds)
02:44:28 chexum joins (~quassel@gateway/tor-sasl/chexum)
02:45:05 × mzan quits (~quassel@mail.asterisell.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
02:45:14 td_ joins (~td@muedsl-82-207-238-133.citykom.de)
02:46:10 mzan joins (~quassel@mail.asterisell.com)
02:49:34 × glguy quits (x@libera/staff-emeritus/glguy) (Read error: Connection reset by peer)
02:50:02 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 258 seconds)
02:50:35 × razetime quits (~quassel@117.193.3.170) (Ping timeout: 244 seconds)
02:50:51 razetime joins (~quassel@2401:4900:234b:1cfb:d8:711a:a29e:7017)
02:51:19 qhong_ is now known as qhong
02:51:42 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
02:51:50 nilradical joins (~nilradica@user/naso)
02:52:06 glguy joins (x@libera/staff-emeritus/glguy)
02:52:40 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 244 seconds)
02:52:45 × nilradical quits (~nilradica@user/naso) (Client Quit)
02:53:06 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:53:06 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:53:06 finn_elija is now known as FinnElija
02:55:17 rustisafungus joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
02:56:15 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
02:56:23 Kaiepi joins (~Kaiepi@142.68.249.28)
02:56:47 × glguy quits (x@libera/staff-emeritus/glguy) (Ping timeout: 244 seconds)
02:56:48 × aeka quits (~aeka@pool-96-233-77-78.bstnma.fios.verizon.net) (Ping timeout: 244 seconds)
02:59:49 glguy joins (x@libera/staff-emeritus/glguy)
02:59:51 × rustisafungus quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
03:01:22 aeka joins (~aeka@user/hiruji)
03:02:06 off^ joins (~off@c-73-237-184-20.hsd1.ga.comcast.net)
03:04:44 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
03:05:54 zaquest joins (~notzaques@5.130.79.72)
03:06:08 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
03:06:28 ChaiTRex joins (~ChaiTRex@user/chaitrex)
03:06:47 matthewmosior joins (~matthewmo@173.170.253.91)
03:07:09 chexum joins (~quassel@gateway/tor-sasl/chexum)
03:08:00 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
03:08:23 ChaiTRex joins (~ChaiTRex@user/chaitrex)
03:14:21 × aeka quits (~aeka@user/hiruji) (Ping timeout: 244 seconds)
03:21:13 × raym quits (~raym@user/raym) (Remote host closed the connection)
03:22:09 × off^ quits (~off@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 252 seconds)
03:24:19 _xor joins (~xor@74.215.182.83)
03:24:55 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 258 seconds)
03:25:02 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
03:32:03 bilegeek joins (~bilegeek@2600:1008:b041:e5e8:7ca6:51d9:f9b4:708b)
03:34:21 xff0x joins (~xff0x@2405:6580:b080:900:e333:df19:b280:4b33)
03:35:32 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
03:36:00 zebrag joins (~chris@user/zebrag)
03:36:08 odnes joins (~odnes@5-203-166-239.pat.nym.cosmote.net)
03:36:13 × odnes quits (~odnes@5-203-166-239.pat.nym.cosmote.net) (Remote host closed the connection)
03:37:27 × zebrag quits (~chris@user/zebrag) (Client Quit)
03:38:45 zebrag joins (~chris@user/zebrag)
03:43:10 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
03:43:36 × zebrag quits (~chris@user/zebrag) (Client Quit)
03:45:10 notzmv joins (~zmv@user/notzmv)
03:47:26 × jargon quits (~jargon@184.101.185.66) (Remote host closed the connection)
03:48:02 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
03:52:09 zebrag joins (~chris@user/zebrag)
03:53:28 × zebrag quits (~chris@user/zebrag) (Client Quit)
03:54:34 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
04:07:52 × califax quits (~califax@user/califx) (Remote host closed the connection)
04:07:54 raym joins (~raym@user/raym)
04:08:45 califax joins (~califax@user/califx)
04:11:01 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
04:19:43 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
04:21:55 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
04:28:10 × califax quits (~califax@user/califx) (Ping timeout: 258 seconds)
04:28:45 califax joins (~califax@user/califx)
04:34:14 instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net)
04:44:35 fef joins (~thedawn@user/thedawn)
04:45:17 × vglfr quits (~vglfr@145.224.94.248) (Ping timeout: 244 seconds)
04:48:15 × instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 268 seconds)
04:52:00 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 244 seconds)
04:52:36 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
04:54:31 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
05:04:32 vglfr joins (~vglfr@145.224.94.248)
05:06:39 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
05:11:22 coot joins (~coot@213.134.176.158)
05:14:24 × paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Quit: Leaving)
05:17:52 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
05:18:29 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
05:21:13 paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
05:21:45 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
05:24:00 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
05:24:29 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
05:24:33 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
05:31:12 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
05:31:50 azimut joins (~azimut@gateway/tor-sasl/azimut)
05:34:19 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
05:40:19 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:42:36 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
05:42:38 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 244 seconds)
05:44:05 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
05:44:23 azimut joins (~azimut@gateway/tor-sasl/azimut)
05:44:37 Guest6348 joins (~owsley@pool-100-11-18-203.phlapa.fios.verizon.net)
05:45:32 × Guest6348 quits (~owsley@pool-100-11-18-203.phlapa.fios.verizon.net) (Changing host)
05:45:32 Guest6348 joins (~owsley@user/polo)
05:46:04 × Guest6348 quits (~owsley@user/polo) (Client Quit)
05:47:17 × razetime quits (~quassel@2401:4900:234b:1cfb:d8:711a:a29e:7017) (Ping timeout: 244 seconds)
05:47:37 razetime joins (~quassel@117.254.35.99)
05:48:06 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 264 seconds)
05:50:10 nate4 joins (~nate@98.45.169.16)
05:52:06 × paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Remote host closed the connection)
05:53:35 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
05:57:37 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 244 seconds)
05:57:38 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 244 seconds)
05:58:21 × superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (Quit: WeeChat 3.6)
05:58:42 superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net)
06:00:40 rockymarine joins (~rocky@user/rockymarine)
06:01:20 × soumen quits (~soumen@58.182.45.203) (Quit: Konversation terminated!)
06:01:39 off^ joins (~off@c-73-237-184-20.hsd1.ga.comcast.net)
06:03:42 soumen joins (~soumen@58.182.45.203)
06:03:47 poscat joins (~poscat@114.245.110.105)
06:04:41 × poscat0x04 quits (~poscat@114.245.109.80) (Ping timeout: 255 seconds)
06:05:41 × razetime quits (~quassel@117.254.35.99) (Ping timeout: 252 seconds)
06:05:57 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
06:06:16 razetime joins (~quassel@117.254.34.183)
06:06:22 × soumen quits (~soumen@58.182.45.203) (Client Quit)
06:07:57 Pickchea joins (~private@user/pickchea)
06:08:22 soumen joins (~soumen@58.182.45.203)
06:10:45 gmg joins (~user@user/gehmehgeh)
06:12:50 Linux is now known as Unix
06:16:26 × off^ quits (~off@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 268 seconds)
06:18:58 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:23:50 × razetime quits (~quassel@117.254.34.183) (Ping timeout: 268 seconds)
06:24:19 razetime joins (~quassel@117.193.4.200)
06:28:10 rockymarine joins (~rocky@user/rockymarine)
06:28:25 nate4 joins (~nate@98.45.169.16)
06:31:01 shriekingnoise joins (~shrieking@186.137.167.202)
06:33:05 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
06:33:11 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
06:34:49 × son0p quits (~ff@181.136.122.143) (Ping timeout: 244 seconds)
06:34:51 × hgolden quits (~Howard@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
06:35:02 mikoto-chan joins (~mikoto-ch@85-76-3-93-nat.elisa-mobile.fi)
06:36:55 × superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 268 seconds)
06:37:39 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
06:39:12 superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net)
06:40:43 paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
06:43:20 × bilegeek quits (~bilegeek@2600:1008:b041:e5e8:7ca6:51d9:f9b4:708b) (Quit: Leaving)
06:44:38 × razetime quits (~quassel@117.193.4.200) (Ping timeout: 244 seconds)
06:45:12 razetime joins (~quassel@117.254.34.232)
06:47:52 acidjnk joins (~acidjnk@p200300d6e7137a2230878ffc93dd9ace.dip0.t-ipconnect.de)
06:50:06 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
06:51:28 Unix is now known as UNIX
06:51:58 zeenk joins (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
06:52:32 titibandit joins (~titibandi@xdsl-84-44-227-248.nc.de)
06:56:03 × razetime quits (~quassel@117.254.34.232) (Ping timeout: 248 seconds)
06:59:33 MoC joins (~moc@user/moc)
07:01:53 rockymarine joins (~rocky@user/rockymarine)
07:04:20 <Franciman> thanks SrPx for bringing us light
07:05:26 <Franciman> make us dream. This is ultimately, what makes us stay alive
07:06:20 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 244 seconds)
07:09:07 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
07:14:21 jakalx joins (~jakalx@base.jakalx.net)
07:14:31 razetime joins (~quassel@117.254.34.180)
07:15:43 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds)
07:17:02 <[exa]> is there finally a good description of what HVM actually does?
07:19:17 <Franciman> there always was i suppose?
07:19:37 <Franciman> implement optimal \beta-reduction, last i checked, was the goal
07:21:35 <Franciman> https://github.com/kindelia/hvm#high-order-virtual-machine-hvm
07:23:20 <[exa]> the HOW.md is kinda chaotic tbh, was hoping for something more rigorous finally
07:23:56 <Franciman> https://www.academia.edu/79625586/Linear_Logic_Comonads_and_Optimal_Reductions this was a nice paper i was reading
07:24:09 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
07:24:13 <Franciman> [related to the subject, not strictly to HVM]
07:26:04 <[exa]> we've seen quite a few such magical approaches in past 20 years and all were subject to TAINSTAAFL
07:26:16 <Franciman> what does it mean?
07:26:43 <Franciman> that you perform benchmarks on accurately picked example so that you are faster than everyone?
07:27:07 <Franciman> ah
07:27:09 <Franciman> ok
07:27:11 <Franciman> https://it.wikipedia.org/wiki/TANSTAAFL
07:27:57 <Franciman> ops
07:28:03 <Franciman> https://en.wikipedia.org/wiki/There_ain%27t_no_such_thing_as_a_free_lunch
07:29:30 <Franciman> the thing is [exa], that you can work in the worst case as GHC
07:29:46 <Franciman> and then, in the case of pure lambda functions, you apply HVM optimal reduction operations
07:29:52 <Franciman> and get speed
07:30:20 × titibandit quits (~titibandi@xdsl-84-44-227-248.nc.de) (Quit: Leaving.)
07:31:39 <Franciman> so the no free lunch would be that you don't get all the time this extra speed
07:31:50 <Franciman> and you could equally effectively use ghc, with all its libs
07:31:55 <Franciman> but who knows
07:33:01 <Franciman> ofc haskellers would be wary of HVM
07:33:04 <Franciman> it's only natural
07:35:21 × m1dnight quits (~christoph@78-22-0-121.access.telenet.be) (Quit: WeeChat 3.6)
07:35:59 × mikoto-chan quits (~mikoto-ch@85-76-3-93-nat.elisa-mobile.fi) (Ping timeout: 268 seconds)
07:37:35 m1dnight joins (~christoph@78-22-0-121.access.telenet.be)
07:37:57 toeffel joins (~toeffel@user/toeffel)
07:38:38 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
07:39:34 <[exa]> Franciman: it's probably good and I'm not contradicting that it _is_ super good and fast, it's just fishy. Which is not supported by various ad-hoc explanations in the commentary such as https://github.com/Kindelia/HVM/blob/master/src/runtime.c#L365
07:40:04 <maerwald[m]> Yeah, it's threatening to GHC ;)
07:40:11 <Franciman> make sense
07:40:13 <Franciman> makes
07:40:27 <Franciman> ghc il threatened by its bloat more than HVM lol
07:40:36 <[exa]> the natural question is "did the authors really explore everything that could go wrong?" and the answer is "no proof available" now
07:40:47 Franciman nods
07:41:47 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
07:41:55 <[exa]> I'm perfectly okay with whatever current compiler going away if the replacement is somehow better or so, but before one starts destroying the established methods it is very useful to know the work won't be doomed by insufficient prior analysis
07:42:47 <[exa]> the authors in hvm should invest in explaining the whole concept in a way that can be verified, preferably without screaming "hahaha we pwned ghc!!!1111" at every corner
07:43:37 jakalx joins (~jakalx@base.jakalx.net)
07:46:09 <[exa]> Franciman: btw you're somehow related to the project? it would be really useful to explain how `subst()` and `link()` from the runtime.c works in the how-to
07:46:14 rockymarine joins (~rocky@user/rockymarine)
07:46:41 <Franciman> sorry, i am not
07:47:00 <Franciman> i agree with all your observations
07:47:24 <[exa]> so hopefully anyone from the HVM peeps will read haskelllogs and see this :D
07:47:39 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
07:47:41 <Franciman> i've been reading something about optimal evaluation, that's all lolz
07:48:07 <Franciman> the no free lunch wrt optimal evaluation, seems to me that can be reduced by using a purity check and applying mixed evaluation strategies
07:48:40 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
07:49:17 <[exa]> is it still provably optimal then?
07:50:07 <Franciman> does it make sense to apply optimal evaluation to impure code?
07:50:33 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
07:50:37 <Franciman> like laziness, it requires you manually encode the order of evaluation
07:50:43 <Franciman> using the State Monad
07:50:50 <Franciman> cps etc
07:51:34 <Franciman> so you have to actively fight against the evaluation system, to make it listen to you lol
08:00:08 hrberg joins (~quassel@171.79-160-161.customer.lyse.net)
08:00:09 wonko_ joins (~wjc@2a0e:1c80:2::130)
08:00:34 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.6)
08:07:42 nilradical joins (~nilradica@user/naso)
08:08:57 <nilradical> when doing "+s print timing/memory stats after each evaluation" in ghci, what does the displayed memory amount mean?
08:09:22 <nilradical> i do a computation and it said 8,622,559,104 bytes , but in my activity monitor it says ghc is only using about 300 MB
08:11:54 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
08:15:10 <analoq> im trying to figure out how to get this snipped to work https://dpaste.com/ATS8X5A7A.txt It works fine when i change the function type to IO() and print the data instead of returning it
08:15:11 × poscat quits (~poscat@114.245.110.105) (Quit: Bye)
08:16:07 <analoq> I assume my issue is that due to BS.readFile returning an IO ByteString it isn't pure. so the solution should be to convert IO ByteString to ByteString?
08:16:28 <[exa]> analoq: `decode` is from what package?
08:16:34 <analoq> aeson
08:16:40 <[exa]> ah.
08:16:57 <analoq> that part works. it's tricky to give a working sample due to the fact that im reading a file
08:17:27 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:17:32 <[exa]> analoq: add a return "return $" before the case
08:17:49 <[exa]> you can't return "pure" data from an IO action, but need something to carry the IO along
08:17:53 <[exa]> `return` does that
08:18:10 poscat joins (~poscat@114.245.106.91)
08:18:18 <[exa]> accordingly, the type of import_db should be FilePath -> IO [Task]
08:18:20 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
08:20:00 <[exa]> re "converting IO ByteString to ByteString" -- you can't really *convert* it because it is "tainted" by communication with external environment, but you can easily defer this communication with external environment to a larger scope and play with the inner ByteString locally
08:21:07 <analoq> [exa]: I thought i could either return [] if it fails or the actual result if it succeeds. Doesn't that remove the uncertainty?
08:21:19 <[exa]> which is precisely what `x <- someIOaction` does -- if someIOaction has type `IO value`, you get `x :: value`, but the environment must be of type `IO something` so that the IO actions do not "disappear"
08:21:52 <analoq> so as soon as IO happens inside a function the function needs to return IO .... ?
08:22:41 <[exa]> analoq: it is not about uncertainty but about evaluation order. the "Returning IO" can be seen as a mark for the runtime that the functions can't be evaluated in whatever order
08:23:18 <[exa]> (i.e., without IO the runtime is perfectly free to read your file after exiting the program, because it's sure that the exit always happens)
08:23:28 <analoq> i see. that makes sense
08:23:29 <[exa]> (haha)
08:24:01 <[exa]> anyway, yes -- basically all functions that do some kind of IO get the `IO something` return type, which is kinda annoying at first but there are good tools to cope with that
08:24:05 × poscat quits (~poscat@114.245.106.91) (Quit: Bye)
08:24:24 kitty4 joins (~kitty@096-039-147-043.res.spectrum.com)
08:25:54 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:26:10 <[exa]> in a bigger view, you can view values of type `IO something` as a description of sequential runtime behavior that your program is doing to produce the `something`, and the program is a big description of that behavior which is `main :: IO ()`
08:28:00 <[exa]> anyway
08:28:07 poscat joins (~poscat@2408:8206:4823:a05:4aaa:cd6a:209f:4edd)
08:29:13 <[exa]> you should eventually be able to get rid of the `:: Maybe [Task]` annotation in the middle of that function because ghc should be able to see that it should indeed return the same type as what the function should produce
08:30:04 titibandit joins (~titibandi@xdsl-84-44-227-248.nc.de)
08:30:11 <[exa]> and a few nice tools to reduce the complexity of the IO functions:
08:30:26 matthewmosior joins (~matthewmo@173.170.253.91)
08:30:45 nate4 joins (~nate@98.45.169.16)
08:31:41 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
08:31:50 <[exa]> 1] you can write stuff like `lineLength <- length <$> getLine` -- the operator (which is fmap) applies a pure function into the IO action
08:32:01 <[exa]> in your case it may be handy to do this with decode
08:34:20 <[exa]> and 2] there are tons of tiny helper functions to prevent you from writing ifs and cases yourself. `case x of {Nothing -> []; Just x -> x}` should be equivalent to `maybe [] id x` or `fromMaybe [] x` (but that's not directly in Prelude)
08:34:53 <analoq> yeah there's a lot of stuff. usually i write a long solution only to realize there was a one liner for it afterwards >.>
08:35:12 <[exa]> that's the haskell way tbh, I'm doing the same
08:35:39 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
08:35:52 jakalx joins (~jakalx@base.jakalx.net)
08:35:59 <[exa]> high-level concepts are rarely apparent before seeing a working example
08:36:26 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:37:06 <analoq> regarding your earlier fmap recommendation. you mean something like json <- decode <$> BS.readFile x :: Maybe [Task]?
08:38:31 analoq is out of his comfort zone :D
08:39:31 × acidjnk quits (~acidjnk@p200300d6e7137a2230878ffc93dd9ace.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
08:40:53 <c_wraith> there probably needs to be an IO in that type
08:43:17 <analoq> IO( Maybe [Task]) appears to work
08:43:32 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
08:43:35 jakalx joins (~jakalx@base.jakalx.net)
08:43:39 son0p joins (~ff@181.136.122.143)
08:47:29 <[exa]> analoq: yeah, the thing on the right side of <- is the description of an IO action
08:47:39 <analoq> the thing is the compiler considers `Just x -> x` to be [Task] and not IO [Task], while `Nothing -> []` is considered to be [[Task]] (which i totally not understand, how can an empty list be considered to be a list of lists?)
08:47:45 <analoq> https://dpaste.com/2LER588NW.txt
08:47:51 × poscat quits (~poscat@2408:8206:4823:a05:4aaa:cd6a:209f:4edd) (Quit: Bye)
08:48:14 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
08:48:29 <[exa]> analoq: it is trying to find a monad that would match your return type there, [] is one choice
08:49:11 <[exa]> as a quick fix, just add the returns: `Nothing -> return []` and `Just x -> return x`
08:49:53 <[exa]> return takes a plain value and makes an IO action of it, allowing you to use that value in a larger IO computation
08:51:05 × nilradical quits (~nilradica@user/naso) (Remote host closed the connection)
08:51:47 nilradical joins (~nilradica@user/naso)
08:52:31 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
08:53:28 poscat joins (~poscat@114.245.109.13)
08:56:54 × nilradical quits (~nilradica@user/naso) (Ping timeout: 244 seconds)
08:58:01 <[exa]> analoq: btw if you are unsure about types, you can always place a _ to any part in the program to see what Haskell thinks should be the type there
09:01:07 <analoq> [exa]: as in replace the 'variable' with a '_'?
09:01:23 <analoq> at least that seems to print some helpful information
09:02:37 × poscat quits (~poscat@114.245.109.13) (Quit: Bye)
09:03:10 <[exa]> yes like that... replacing the first guess with _ kinda avoids confusing the typesystem with possible mistakes in my first guess
09:04:10 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
09:04:23 <analoq> nice feature. I also realized i have no idea what 'return' actually does :D
09:04:35 <[exa]> you can see it as a counterpart to <-
09:05:23 poscat joins (~poscat@2408:8206:4823:d0a:777d:33d3:a29b:a4b6)
09:06:49 <[exa]> very allegorically -- `x <- something` temporarily unwraps whatever impurity in `something` giving you a pure `x` to play with; and `return x` attaches some impurity annotation to a pure `x` so that it can be connected to the other "impure" stuff by the do notation
09:07:14 <[exa]> :t return
09:07:15 <lambdabot> Monad m => a -> m a
09:07:24 <[exa]> in our case it is `a -> IO a`
09:07:46 <[exa]> `<-` is a syntax sugar for something else though
09:07:52 <[exa]> :t (>>=)
09:07:53 <lambdabot> Monad m => m a -> (a -> m b) -> m b
09:07:53 <analoq> so return snatches the `m` from the -> IO [Task]?
09:08:37 <[exa]> yes, the type system infers which kind of "wrap" it needs there, so that it correctly uses IO
09:08:53 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
09:09:18 <analoq> i see. so of I were to manually cast the type I wouldnt have to use return?
09:09:29 <analoq> s/of/if
09:09:44 × barrucadu quits (~barrucadu@carcosa.barrucadu.co.uk) (Remote host closed the connection)
09:09:56 <[exa]> well if you could construct IO values manually, you could. there's no "casting" though.
09:10:53 nilradical joins (~nilradica@user/naso)
09:11:00 <analoq> it feels like learning haskell is a lifetime job :P
09:11:15 <[exa]> nah you're in like 50% of the initial shock, after that it's okay
09:11:17 <analoq> or im just handicapped who knows~
09:11:31 <[exa]> monads are mind-bending before you get kinda used to them
09:12:22 <analoq> i've stopped trying to understand them on a mathematical level. i just view them as Rusts option type
09:13:07 <[exa]> ah well, that is one example of monadic thing, yes
09:13:53 <[exa]> actually, let's try something
09:14:01 <analoq> i watched multiple videos on haskell monads, didnt understand it. Rusts options are self explaining and they seem to behave just like haskells monads idk :/
09:14:38 rockymarine joins (~rocky@user/rockymarine)
09:14:44 jakalx joins (~jakalx@base.jakalx.net)
09:15:15 × wonko_ quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 248 seconds)
09:15:28 <[exa]> > let myMonadicComputation a b = do { x <- a; y <- (+1) <$> b; return (x * y) } in myMonadicComputation (Just 3) (Just 4)
09:15:30 <lambdabot> Just 15
09:15:31 <[exa]> Just 15
09:15:55 barrucadu joins (~barrucadu@carcosa.barrucadu.co.uk)
09:15:57 acidjnk joins (~acidjnk@p200300d6e7137a2230878ffc93dd9ace.dip0.t-ipconnect.de)
09:15:58 <[exa]> this is how you use monads to work with option-like values ^
09:16:11 odnes joins (~odnes@5-203-166-239.pat.nym.cosmote.net)
09:18:09 <[exa]> you don't see any maybe-ing in `myMonadicComputation`, but the function will correctly short-circuit once some of the values get missing (None in rust, Nothing in haskell):
09:18:18 <analoq> whats the purpose of using 2 arguments?
09:18:30 <[exa]> > let myMonadicComputation a b = do { x <- a; y <- (+1) <$> b; return (x * y) } in myMonadicComputation (Just 3) (Nothing)
09:18:33 <lambdabot> Nothing
09:18:39 <[exa]> not much, just for demonstration
09:19:07 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 244 seconds)
09:19:22 <analoq> i see that one was better
09:19:31 <[exa]> and there are many different monads, with many different ways how the "extra information" in the wrapper gets connected together
09:19:41 <analoq> so it does the math, while maintaining the monad
09:20:03 <[exa]> yes. for example, Either does a slightly more complicated short-circuiting (Right values are "okay", Left values represent "errors")
09:20:12 <[exa]> > let myMonadicComputation a b = do { x <- a; y <- (+1) <$> b; return (x * y) } in myMonadicComputation (Right 3) (Right 4)
09:20:15 <lambdabot> Right 15
09:20:29 <[exa]> > let myMonadicComputation a b = do { x <- a; y <- (+1) <$> b; return (x * y) } in myMonadicComputation (Left "Whoops an error!") (Right 4)
09:20:31 <lambdabot> Left "Whoops an error!"
09:21:08 <[exa]> lists represent programs that can produce more than one solution (say non-determinism):
09:21:23 <[exa]> > let myMonadicComputation a b = do { x <- a; y <- (+1) <$> b; return (x * y) } in myMonadicComputation [1,2] [10,20]
09:21:25 <lambdabot> [11,21,22,42]
09:21:42 <[exa]> > let myMonadicComputation a b = do { x <- a; y <- (+1) <$> b; return (x * y) } in myMonadicComputation [3] [4]
09:21:44 <lambdabot> [15]
09:21:59 <[exa]> (no non-determinism in that example ^)
09:22:08 <[exa]> > let myMonadicComputation a b = do { x <- a; y <- (+1) <$> b; return (x * y) } in myMonadicComputation [1,2,3] []
09:22:09 <lambdabot> []
09:22:19 <[exa]> (empty list means "no choices" ^)
09:22:48 neceve joins (~quassel@2.26.93.14)
09:23:53 <analoq> that was helpful. ty
09:24:10 <[exa]> IO is not different -- the actual IO value stores a function of type that looks a bit like `RealWorld -> (RealWorld, someresult)` -- it gets some state of a computer, possibly changes it a bit, and may also produce a pure value in the process as a side output (e.g., a string that was read)
09:24:45 <[exa]> and the IO monad literally just allows you to chain this thing reasonably without shooting yourself into the foot by forgetting the RealWorld somewhere (or cloning it!)
09:25:06 <[exa]> it won't work with lambdabot but you can try `myMonadicComputation readLn readLn`
09:26:01 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
09:26:54 <[exa]> (technically, if you had access to the internals, you could reconstruct the IO return very roughly as: `return a = \realworld -> (realworld,a)` )
09:27:47 × _xor quits (~xor@74.215.182.83) (Quit: WeeChat 3.6)
09:28:00 <[exa]> and as always there is a monad that just doesn't do anything except for the wrapping and unwrapping, which may be useful for learning purposes:
09:28:11 <[exa]> > let myMonadicComputation a b = do { x <- a; y <- (+1) <$> b; return (x * y) } in myMonadicComputation (Identity 3) (Identity 4)
09:28:13 <lambdabot> Identity 15
09:28:53 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
09:28:55 <[exa]> and the whole purpose of `return` is that you don't need to remember what exact monad you're actually writing the code for -- you may notice that the `return` in myMonadicComputation actually created lots of different things without us changing a bit
09:29:18 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:29:56 <[exa]> which you can (thanks to inference) also use in outside code to simplify creating "trivial" wrapped values, for example:
09:30:10 <[exa]> > let myMonadicComputation a b = do { x <- a; y <- (+1) <$> b; return (x * y) } in myMonadicComputation [1,2,3] (return 10)
09:30:13 <lambdabot> [11,22,33]
09:30:37 <[exa]> here `return` correctly knows that it should create a single-possibility list
09:30:44 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
09:31:06 <analoq> it's amazing how seemingly everything works when you know what you are doing :D
09:31:47 <[exa]> like, I hope you have a bit of intuition now, once that is in place, chewing through the types and implementation details is much easier
09:32:06 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:32:18 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
09:32:35 <[exa]> try checking the types of everything in the demo code btw, that often helps (you can do (anything :: _) to get type info from ghc)
09:34:51 <[exa]> finally, a motivating compressed example:
09:34:54 <[exa]> > (*) <$> Just 3 <*> ((1+) <$> Just 4)
09:34:56 <lambdabot> Just 15
09:35:57 <[exa]> (you can replace the justs like we did with anything that is able to behave monadically)
09:36:14 <analoq> that one is easy to understand
09:36:28 <analoq> at least i believe so :D
09:37:03 <[exa]> (actually I should have say applicatively, the typeclass police is watching... :D )
09:37:49 <[exa]> you might wanna check State, that's a monad that literally keeps a stateful variable through the computation, which is helpful
09:39:24 × poscat quits (~poscat@2408:8206:4823:d0a:777d:33d3:a29b:a4b6) (Quit: Bye)
09:40:18 <[exa]> anyway, the magic of monads in haskell is that you can write high-level combinators completely unaware of what is going to be the actual execution logic. Typically, you can print many values using `mapM print`, and mapM prints just as well for the nondeterminism and/or "optional" short-circuiting
09:41:34 <[exa]> s/prints/works/
09:41:47 poscat joins (~poscat@114.245.110.14)
09:42:23 × nilradical quits (~nilradica@user/naso) (Ping timeout: 252 seconds)
09:43:52 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
09:44:16 _xor joins (~xor@74.215.182.83)
09:44:47 <[exa]> (...which eventually brings us to the main killer feature of haskell, which is monadic parsing)
09:47:20 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:48:36 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
09:48:42 × poscat quits (~poscat@114.245.110.14) (Quit: Bye)
09:50:12 jakalx joins (~jakalx@base.jakalx.net)
09:51:16 poscat joins (~poscat@2408:8206:4823:10b5:cd89:a947:c49f:4bc1)
09:51:34 Tuplanolla joins (~Tuplanoll@91-159-69-12.elisa-laajakaista.fi)
09:57:35 wonko_ joins (~wjc@2a0e:1c80:2::130)
10:00:37 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
10:13:14 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
10:13:14 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
10:13:14 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
10:13:14 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
10:13:46 ChaiTRex joins (~ChaiTRex@user/chaitrex)
10:13:53 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
10:14:00 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
10:14:36 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
10:19:35 nilradical joins (~nilradica@user/naso)
10:22:33 × acidjnk quits (~acidjnk@p200300d6e7137a2230878ffc93dd9ace.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
10:24:44 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
10:25:54 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
10:30:12 × coot quits (~coot@213.134.176.158) (Quit: coot)
10:32:36 VictorHugenay joins (~jh@user/VictorHugenay)
10:34:33 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 244 seconds)
10:35:15 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 248 seconds)
10:36:05 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
10:36:39 azimut joins (~azimut@gateway/tor-sasl/azimut)
10:37:18 × VictorHugenay quits (~jh@user/VictorHugenay) (Client Quit)
10:40:44 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
10:46:18 × wonko_ quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 264 seconds)
10:48:58 nate4 joins (~nate@98.45.169.16)
10:50:30 × nilradical quits (~nilradica@user/naso) ()
10:52:23 Successus joins (~Successus@user/Successus)
10:53:13 squiffs joins (~squiffs@2a00:23c7:bb7a:9701:bcd9:126:695:8182)
10:53:16 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
10:53:40 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 244 seconds)
10:55:02 × fhn quits (~fhn@2.58.185.24) (Ping timeout: 252 seconds)
10:55:12 × squiffs quits (~squiffs@2a00:23c7:bb7a:9701:bcd9:126:695:8182) (Remote host closed the connection)
10:57:17 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 244 seconds)
10:58:54 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
11:01:25 × odnes quits (~odnes@5-203-166-239.pat.nym.cosmote.net) (Ping timeout: 244 seconds)
11:16:24 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
11:40:20 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
11:40:21 wonko_ joins (~wjc@2a0e:1c80:2::130)
11:44:51 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
11:54:13 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
11:56:42 × wonko_ quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 244 seconds)
11:56:42 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
11:58:05 × fryguybob quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving)
12:02:34 matthewmosior joins (~matthewmo@173.170.253.91)
12:03:57 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 258 seconds)
12:05:00 fryguybob joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
12:05:09 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
12:11:44 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
12:11:58 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
12:12:04 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:14:02 mc47 joins (~mc47@xmonad/TheMC47)
12:14:17 off^ joins (~off@c-73-237-184-20.hsd1.ga.comcast.net)
12:17:42 × califax quits (~califax@user/califx) (Remote host closed the connection)
12:17:51 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 252 seconds)
12:19:10 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
12:19:29 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
12:27:01 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
12:27:26 ccntrq joins (~Thunderbi@exit-1.office.han.de.mhd.medondo.com)
12:27:45 × off^ quits (~off@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 252 seconds)
12:28:05 × euandreh quits (~euandreh@179.214.113.107) (Ping timeout: 255 seconds)
12:28:12 wonko_ joins (~wjc@2a0e:1c80:2::130)
12:29:15 califax joins (~califax@user/califx)
12:31:34 off^^ joins (~off@c-73-237-184-20.hsd1.ga.comcast.net)
12:32:57 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
12:33:49 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
12:34:25 × wonko_ quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 244 seconds)
12:35:28 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
12:39:19 × Vajb quits (~Vajb@2001:999:705:3c86:e7ea:442b:1e01:22d8) (Read error: Connection reset by peer)
12:40:36 Vajb joins (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
12:41:11 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
12:51:17 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
12:51:51 coot joins (~coot@213.134.176.158)
12:53:01 × fef quits (~thedawn@user/thedawn) (Ping timeout: 258 seconds)
12:54:26 × coot quits (~coot@213.134.176.158) (Client Quit)
12:54:56 coot joins (~coot@213.134.176.158)
13:03:24 off^ joins (~off@c-73-237-184-20.hsd1.ga.comcast.net)
13:05:02 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:05:04 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:05:05 × coot quits (~coot@213.134.176.158) (Quit: coot)
13:05:23 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Client Quit)
13:05:54 × off^^ quits (~off@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 268 seconds)
13:06:10 fef joins (~thedawn@user/thedawn)
13:06:34 × ccntrq quits (~Thunderbi@exit-1.office.han.de.mhd.medondo.com) (Remote host closed the connection)
13:10:02 wootehfoot joins (~wootehfoo@user/wootehfoot)
13:10:27 wonko_ joins (~wjc@2a0e:1c80:2::130)
13:10:36 [_] is now known as [itchyjunk]
13:11:59 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
13:12:15 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
13:14:26 ccntrq joins (~Thunderbi@exit-1.office.han.de.mhd.medondo.com)
13:15:10 × luffy quits (~chenqisu1@183.217.201.192) (Ping timeout: 268 seconds)
13:15:37 jakalx parts (~jakalx@base.jakalx.net) ()
13:15:45 × vglfr quits (~vglfr@145.224.94.248) (Ping timeout: 244 seconds)
13:15:57 vglfr joins (~vglfr@145.224.94.248)
13:16:23 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
13:16:43 jakalx joins (~jakalx@base.jakalx.net)
13:16:53 × off^ quits (~off@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 252 seconds)
13:21:24 bsima- is now known as bsima
13:23:31 × wonko_ quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 244 seconds)
13:24:04 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
13:25:20 euandreh joins (~euandreh@179.214.113.107)
13:30:49 off^ joins (~off@c-73-237-184-20.hsd1.ga.comcast.net)
13:31:43 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
13:34:54 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
13:37:06 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 258 seconds)
13:42:05 × califax quits (~califax@user/califx) (Ping timeout: 258 seconds)
13:48:19 califax joins (~califax@user/califx)
13:51:17 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
13:51:42 ChaiTRex joins (~ChaiTRex@user/chaitrex)
13:52:27 × kitty4 quits (~kitty@096-039-147-043.res.spectrum.com) (Ping timeout: 252 seconds)
13:52:31 kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
13:58:18 × ccntrq quits (~Thunderbi@exit-1.office.han.de.mhd.medondo.com) (Ping timeout: 240 seconds)
13:58:19 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
13:58:33 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
14:04:11 × off^ quits (~off@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 252 seconds)
14:07:43 ccntrq joins (~Thunderbi@exit-1.office.han.de.mhd.medondo.com)
14:14:14 razetime_ joins (~quassel@117.193.3.116)
14:14:21 × razetime quits (~quassel@117.254.34.180) (Ping timeout: 268 seconds)
14:17:14 × Kaiepi quits (~Kaiepi@142.68.249.28) (Ping timeout: 244 seconds)
14:18:47 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
14:19:35 × kuribas quits (~user@ptr-17d51emn3roko68gdk1.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
14:19:48 kuribas joins (~user@ptr-17d51emtyrhqrcgzxtn.18120a2.ip6.access.telenet.be)
14:20:13 Midjak joins (~Midjak@82.66.147.146)
14:21:23 × ccntrq quits (~Thunderbi@exit-1.office.han.de.mhd.medondo.com) (Remote host closed the connection)
14:21:25 off^ joins (~off@c-73-237-184-20.hsd1.ga.comcast.net)
14:24:58 × APic quits (apic@apic.name) (Remote host closed the connection)
14:27:18 APic joins (apic@apic.name)
14:36:57 off^^ joins (~off@c-73-237-184-20.hsd1.ga.comcast.net)
14:37:07 × off^^ quits (~off@c-73-237-184-20.hsd1.ga.comcast.net) (Remote host closed the connection)
14:38:56 × off^ quits (~off@c-73-237-184-20.hsd1.ga.comcast.net) (Ping timeout: 244 seconds)
14:43:52 rockymarine joins (~rocky@user/rockymarine)
14:50:30 nate4 joins (~nate@98.45.169.16)
14:55:09 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
14:55:49 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
15:01:06 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
15:02:44 coot joins (~coot@213.134.176.158)
15:07:04 × coot quits (~coot@213.134.176.158) (Client Quit)
15:16:55 Kaiepi joins (~Kaiepi@142.68.249.28)
15:24:32 cristianorocha joins (~cristiano@2804:108c:c9a9:cd01:9f82:aa32:57c:7335)
15:24:49 <cristianorocha> Hello there!
15:28:20 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
15:28:53 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
15:29:01 × kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
15:29:49 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
15:31:26 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:32:08 eikke joins (~NicolasT@user/NicolasT)
15:32:20 <[exa]> h e l l o !
15:43:07 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
15:47:57 jinsun joins (~jinsun@user/jinsun)
15:50:53 × APic quits (apic@apic.name) (Quit: [TLS] Client upgrade)
15:51:05 APic joins (apic@apic.name)
15:52:44 hgolden joins (~Howard@cpe-172-251-233-141.socal.res.rr.com)
15:54:41 squiffs joins (~squiffs@host86-184-142-169.range86-184.btcentralplus.com)
15:58:13 wonko_ joins (~wjc@2a0e:1c80:2::130)
15:58:14 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:00:26 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
16:00:47 jmdaemon joins (~jmdaemon@user/jmdaemon)
16:01:25 × titibandit quits (~titibandi@xdsl-84-44-227-248.nc.de) (Remote host closed the connection)
16:01:39 causal joins (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0e)
16:02:56 titibandit joins (~titibandi@xdsl-84-44-227-248.nc.de)
16:03:55 nate4 joins (~nate@98.45.169.16)
16:05:55 Capn_Pic joins (apic@brezn3.muc.ccc.de)
16:06:35 × m1dnight quits (~christoph@78-22-0-121.access.telenet.be) (Ping timeout: 268 seconds)
16:06:38 × CAT_S quits (apic@brezn3.muc.ccc.de) (Ping timeout: 240 seconds)
16:07:58 <squiffs> Hello, I'm trying to write a Category instance for (categorical) spans in Haskell. This is what I have so far: https://paste.tomsmeding.com/lCeyyyrf. Is it possible to write a category instance for Span? With some help from aspiwack I know that it may have to be a constrained category instance, but don't know what the constraint might be (see https://paste.tomsmeding.com/K1arMRLe for some ideas). Would I wri
16:07:58 <squiffs> te down an instance for Span directly, or for functions between Spans somehow? Thanks!
16:08:57 × Capn_Pic quits (apic@brezn3.muc.ccc.de) (Client Quit)
16:12:16 CAT_S joins (apic@brezn3.muc.ccc.de)
16:15:30 × Vajb quits (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer)
16:15:30 × eikke quits (~NicolasT@user/NicolasT) (Read error: Connection reset by peer)
16:15:38 Vajb joins (~Vajb@2001:999:705:3c86:e7ea:442b:1e01:22d8)
16:20:09 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
16:20:35 × stefan-_ quits (~cri@42dots.de) (Ping timeout: 252 seconds)
16:25:09 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
16:26:17 <[exa]> squiffs: you can literally discard the "middle" 2 items of (x->b) right?
16:27:02 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
16:27:53 kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
16:31:29 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
16:33:54 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
16:34:18 × razetime_ quits (~quassel@117.193.3.116) (Ping timeout: 240 seconds)
16:34:53 razetime joins (~quassel@117.254.35.42)
16:35:16 <squiffs> [exa]: Yes that's true, you can delete the middle if the "right" projection of s1 matches the "left" projection of s2 and keep the left/right projections of s1/s2 respectively. Is that all that's possible? Is there any way to keep the middle bits around? It would be interesting to inspect the resulting structure. Maybe it's just not possible since we've quantified it away?
16:37:52 × titibandit quits (~titibandi@xdsl-84-44-227-248.nc.de) (Quit: Leaving.)
16:37:56 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
16:40:04 matthewmosior joins (~matthewmo@173.170.253.91)
16:40:20 m1dnight joins (~christoph@78-22-0-121.access.telenet.be)
16:41:10 __monty__ joins (~toonn@user/toonn)
16:41:52 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:42:25 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 244 seconds)
16:44:17 <[exa]> squiffs: if you kept it around you would somehow need to leave the `b` (and many other middles) in the type right?
16:45:59 <[exa]> anyway afaik you are pretty sure that both sides match (that's the assumption you can use from the type of (.) )
16:46:02 stefan-_ joins (~cri@42dots.de)
16:47:57 <squiffs> [exa]: Yeah that's it - we need the 'b' around but also don't want it around in the resulting composed type. So it would seem impossible.
16:49:02 <squiffs> [exa]: I guess it's similar to composing functions (a -> b), (b -> c) - you don't get to keep the intermediate b value.
16:49:10 razetime_ joins (~quassel@117.193.0.45)
16:49:18 × razetime quits (~quassel@117.254.35.42) (Ping timeout: 264 seconds)
16:49:23 <[exa]> likely.
16:50:23 instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net)
16:50:52 <squiffs> [exa]: Thanks for your help.
16:51:34 <[exa]> as a slight counter-example, the arrows need to be associative
16:51:56 <[exa]> so if you just took a log of what the middle b's were, you might end up with something that is not a category
16:53:06 <squiffs> [exa]: Yes indeed, I've read (https://ncatlab.org/nlab/show/span#categories_of_spans) that it's a 2-category rather than a category, complicating matters. I don't know if there's any literature about 2-categories in Haskell.
16:53:20 × kayvank quits (~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection)
16:55:31 rockymarine joins (~rocky@user/rockymarine)
16:55:37 <[exa]> yap it has a "simple" solution of making a ton of new spans that have linear pieces of history in them, but you'd need a particularly funky MkSpan
16:55:58 zebrag joins (~chris@user/zebrag)
16:57:19 pi2 joins (~pi@173.209.64.74)
16:57:35 <pi2> hmm, i have questions about cabal but i don't know how to ask them
16:57:59 <[exa]> you can reimagine your span objects as arrows and try generate a monoid categry from them, not sure if that will be a category but it might be worth a shot
16:58:02 <[exa]> squiffs: ^
16:58:05 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:58:18 <[exa]> pi2: describe your expectations and disappointment? :D
16:58:20 razetime joins (~quassel@117.193.1.7)
16:58:21 × razetime_ quits (~quassel@117.193.0.45) (Ping timeout: 252 seconds)
16:58:42 <pi2> [exa]: well i have a project i downloaded and want to make the examples. it's the plfa agda book
16:58:54 <squiffs> [exa]: oh interesting, I'll have a think about that. Thanks again!
16:58:57 <pi2> but the makefile demands i have cabal. but i have ghc already. so i'm not sure if i'm doing it right
16:59:09 <pi2> does cabal have to be same version as ghc or linked to it?
16:59:19 <[exa]> not really.. how did you get your ghc?
16:59:21 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
16:59:26 <pi2> package manager
16:59:30 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
16:59:39 <[exa]> cabal should have a package too, normally on most distros
16:59:41 <pi2> so i have /usr/bin/ghc and now i have /usr/bin/cabal as well
16:59:45 <[exa]> in debians it is cabal-install
16:59:50 <[exa]> afaik
16:59:53 <pi2> ok. i had a vague idea cabal depended on an exact verison of ghc
17:00:01 <pi2> yes i'm on debian
17:00:06 <[exa]> luckily not
17:00:15 <[exa]> I've had cabal 3.2 for ages
17:00:18 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
17:00:23 <pi2> there's some ghcup script which i used before. but i thought that installed cabal to a local dir
17:00:24 <[exa]> kinda seeing I should finally upgrade it
17:00:44 <pi2> it says 3.0 here
17:01:05 <[exa]> yeah ghcup is slightly better if you need funky versions of packages -- for systemwide debian stuff, you get the versions that debian folks use to VERY RELIABLY package their things, mostly pandoc
17:01:14 <[exa]> but I'd give it a shot
17:01:45 <[exa]> if you get a bad message about completely messed up dependencies and/or versions too old, you might need the super-new versions from ghcup
17:01:55 <sclv> ghc's typically have a minimum version of cabal they are specced to work with (and earlier versions _may_ work but there may be issues) but newer cabals almost always work with older ghcs
17:02:22 jakalx joins (~jakalx@base.jakalx.net)
17:02:26 <[exa]> (as another possibility, you can just download binary ghc and cabal from web, unpack them and run... I'm doing that)
17:02:45 × razetime quits (~quassel@117.193.1.7) (Ping timeout: 252 seconds)
17:03:01 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
17:03:18 razetime joins (~quassel@117.254.34.51)
17:03:24 img joins (~img@user/img)
17:03:48 <pi2> hrm. so after installing cabal the makefile does proceed. it creates .cabal/config and then complains my version of cabal is too old
17:04:01 rockymarine joins (~rocky@user/rockymarine)
17:04:12 <pi2> then it cite a github issue about cabal 1.10 vs 2.0 vs 1.12 compatibility which seems irrelevant to this? i have cabal 3.0
17:04:59 <[exa]> yeah that's hopefully faaaar behind us now
17:05:35 <[exa]> can you link the project repo, just to see what we're talking about?
17:06:10 <pi2> github.com/plfa/plfa.github.io
17:06:15 <pi2> i'm trying the make file in the root dir
17:06:15 <c_wraith> is it possible it's complaining about the cabal-version field in the cabal file?
17:06:57 <c_wraith> Oh, well, sort of. You need cabal 3.6 or newer
17:07:02 <c_wraith> 3.0 won't do
17:07:15 <c_wraith> Look at the first line of https://github.com/plfa/plfa.github.io/blob/dev/plfa.cabal
17:07:51 <[exa]> oooooh that is veeeery new.
17:07:57 <pi2> i have no idea how you found that so fast. but good
17:08:07 <geekosaur> hrm? 3.8 is out
17:08:20 rustisafungus joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
17:08:24 <c_wraith> I ran into issues with that field (in the opposite direction) just a couple days ago on one of my projects, so it was fresh on my mind
17:09:12 <pi2> c_wraith: did you know to look for that already or was it mentioned in the main Makefile lol
17:09:41 <c_wraith> I knew to look for it as it's the main place version expectations are set.
17:09:56 <pi2> well regardless...what are my options
17:10:09 <pi2> can i get this to work somehow with my setup or do i need to reinstall cabal and ghc completely with ghcup
17:10:45 <c_wraith> you could change the version number there to 3.0 and see if it still works. You might need to make some other changes to that file to go along with, but I really don't know.
17:11:21 × razetime quits (~quassel@117.254.34.51) (Ping timeout: 244 seconds)
17:11:37 <c_wraith> though... that cabal file looks like it's intended to build with stack
17:11:54 <c_wraith> There are almost no version bounds on the dependencies
17:11:56 razetime joins (~quassel@117.193.5.96)
17:12:05 <pi2> hmm i got an eror about plfa-22.6 and ImportQualifiedPost
17:12:37 <pi2> stack uses the same data as cabal? i know they're alternatives
17:12:50 <c_wraith> stack still generates a .cabal file
17:13:00 <sclv> its not designed for stack in this case, ignore that. the readme makes this clear
17:13:03 <c_wraith> because it still uses the underlying Cabal library
17:13:14 <c_wraith> ah, does it have versions pinned down elsewhere?
17:13:18 <pi2> somehow this feels like the worst of all worlds with dependencies.
17:13:27 <sclv> the reason the newer cabal is necessary is because there are new ghc extensions in the cabal file
17:13:39 <geekosaur> check for cabal.freeze?
17:13:40 <pi2> like. your project initially relies on libraries so new nobody has them. then eventually your project is old and depends on libraries so old nobody has them.
17:13:41 <sclv> like importqualifiedpost
17:13:49 <c_wraith> anyway... If the code is written to require ImportQualifiedPost, older versions of ghc just won't work
17:14:08 <monochrom> stack pins versions by a clause specifying stack resolver version
17:14:15 <pi2> older than what, 8.10?
17:14:43 <monochrom> ImportQualifiedPost is like 9.2
17:14:54 <pi2> hrm. the readme said it was tested with ghc versions 8.x
17:15:03 <pi2> i guess the only safe way to proceed is to totally reinstall everything
17:15:15 <c_wraith> why does that extension even exist?
17:15:19 <monochrom> But if you know Haskell, you can easily remove it and change all "import" lines back to old syntax.
17:15:51 <geekosaur> ImportQualifiedPost is 8.10.1 according to the manual
17:15:55 <sclv> the readme describes pretty comprehensively what you need and how to install it. i personally would just believe it and follow it
17:16:11 <monochrom> Err oops, don't listen to me. :)
17:16:23 <pi2> ok running ghc script now
17:16:31 <c_wraith> Like.. I feel like MultiwayIf was bad enough in terms of trivial syntax changes. ImportQualifiedPost is way more trivial.
17:16:58 <sclv> the desire to change import syntax is one of those things thats minor but it made people insanely mad they couldn't get consensus to get it chained
17:17:08 <geekosaur> even better, you get an annoying warning if you use old style imports with it enabled
17:17:23 <sclv> the entire ghc proposals process partly grew out of people frustrated that they couldn't change the import syntax
17:17:37 <pi2> well. i don't care too too much if this plfa author is being reasonable or not with the version requirements
17:17:45 <pi2> as ghcup is not that difficult, i think i used it on mac
17:17:53 <monochrom> I like ImportQualifiedPost actually.
17:18:11 <pi2> it sounds like some kind of battle i have no stake in
17:18:49 <monochrom> Nicer vertical alignments for import lines.
17:19:28 <monochrom> If you want to fight against trivial syntax changes, you are fighting in the wrong theatre.
17:19:41 <monochrom> Fight the whole notion of plain text files instead.
17:20:01 <c_wraith> I also hate RecordDotSyntax, yes
17:20:28 <monochrom> Plain text file is why people spend time on surface syntax.
17:20:30 Panahifar joins (~Panahifar@93.119.209.136)
17:20:33 <pi2> idk. i feel like if you want your book/project/thing to get as much exposure it should build with the most minimal requirements
17:20:34 <monochrom> The only reason.
17:21:11 <c_wraith> I'm not particular happy with mandatory IDEs, either
17:21:18 <geekosaur> pi2, sadly you're in the minority these days. "move fast, break stuff" rules these days
17:21:22 <c_wraith> Fortunately, Haskell doesn't have those.
17:21:35 <pi2> ah i see. T_T
17:21:46 <geekosaur> and not only in Haskell
17:21:55 <geekosaur> (it's been the rule in webdev for years)
17:22:01 × rustisafungus quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
17:22:13 <pi2> ah i guess that's true. always seems like some new web framework with nonsense name is trendy
17:22:18 <monochrom> Oh you can have people agreeing on a binary interchange format. And then everyone can code up their own favourite ways of rendering code.
17:22:36 <c_wraith> I'm a huge fan of new features. I just want them to actually be new features.
17:22:52 <pi2> someone was telling me c gets a new standard every 5 years. lol
17:22:58 <c_wraith> (ok, I also want them to not break stuff)
17:23:10 <pi2> at some point i'd think you'd lose track of which year you're even on. is this c2015,c2010,c2020, etc
17:23:18 <sclv> i mean import syntax is simple, but percentagewise it can be a huge proportion of the lines in many modules, so improvements to it, proportionally, have a reasonable impact
17:23:47 <geekosaur> more like every 3 years
17:23:55 <geekosaur> c11 c14 c17 c20
17:24:37 <pi2> everyone talks about the y2k crisis or the 2038 crisis. nobody talks about the c standard crisis of 2089
17:24:51 <monochrom> Take for example how many spaces to use for indentation, and even whether tabs are allowed.
17:24:55 <c_wraith> nobody talks about because it's supposed to still be a secret!
17:25:20 <monochrom> The only reason such an issue could be disagreed upon at all is because plain text files.
17:25:45 <monochrom> But imagine a binary format that marks the inner-vs-outer block structure.
17:26:11 <c_wraith> I think you missed my point about editors. I don't want to have to have special code for every language in editors.
17:26:27 <monochrom> Then one renderer can show it as indented by 4 spaces, another can show it as indented by 1.5cm, and a third one that draws a nested diagram, what is indentation?
17:26:32 <geekosaur> you do anyway
17:26:49 <c_wraith> I assure you, I edit a lot of code my editors know *nothing* about
17:27:32 <c_wraith> I could teach them, but I like that I don't have to
17:27:52 <pi2> you mean like LSP and the hls?
17:28:02 <c_wraith> I don't even use those
17:28:03 × neceve quits (~quassel@2.26.93.14) (Ping timeout: 268 seconds)
17:28:10 <geekosaur> even syntax coloring because it has to know how to parse the fle to color it
17:28:48 <c_wraith> yeah, syntax coloring is something I'm happy to do without in exchange for... not having to worry about it.
17:28:59 <monochrom> There are also people who prefer import lines to be like "import (length, size, tomato, potato) qualified from Data.Vector". And there are 3 variations of where to put that "qualified".
17:29:12 <pi2> fun fact, you can get rid of syntax coloring in vim with -C which forces vi mode
17:29:18 <monochrom> Are we going to make one more GHC proposal and extension for that?
17:29:28 <c_wraith> monochrom: ugh, I've used python. all that verbosity makes code really hard to write.
17:30:02 <geekosaur> hls really really badly wants me to import everything explicitly 😞
17:30:29 <c_wraith> Though it's not as bad as AppleScript. Now there's a read-only language.
17:30:34 <monochrom> I am your friend, not your enemy, in eliminating trivial syntax feature proposal by proposing that there should be personal code renderers that show your favourite syntax.
17:30:37 <geekosaur> always fun when I pop open my xmonad config and it wants me to import 94 things from XMonad
17:30:47 <monochrom> s/personal/personalized/
17:30:49 <geekosaur> I am not exaggerating. 94.
17:31:14 <pi2> why would a config file need new imports, isn't it just a static config
17:31:50 <c_wraith> no, xmonad's "config" is actually haskell code.
17:31:55 <pi2> ah
17:31:57 <c_wraith> It's confusingly named
17:32:08 <c_wraith> but it's kinda nice in practice.
17:32:21 <c_wraith> xmonad is a library that you build haskell programs to use.
17:32:21 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
17:32:31 <pi2> gnu grub does something similar. it has a main .conf file which is actually a script it runs
17:32:59 × wonko_ quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 268 seconds)
17:33:07 gmg joins (~user@user/gehmehgeh)
17:33:26 <pi2> well this script is install ghc 8.10.7 for aarch64 and may take awhile. thanks for the help
17:33:31 <pi2> if i continue to have problems i may return
17:33:32 <monochrom> "(length, size, tomato, potato) qualified comesfrom Data.Vector" if you prefer it shorter.
17:34:18 <monochrom> Note that it has no more tokens than standard Haskell's equiv.
17:34:37 <monochrom> My point is that some people want that order of information.
17:35:23 × razetime quits (~quassel@117.193.5.96) (Ping timeout: 268 seconds)
17:35:42 <monochrom> I might even be subconsciously one of them.
17:36:58 <c_wraith> huh. sometime in the last few years, GHC sped up template-haskell a lot. It no longer pauses compilation for multiple seconds to start up an interpreter.
17:37:18 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:37:28 <c_wraith> Maybe it's time to revisit my bias towards never using template-haskell for things that are one-liners without.
17:37:34 <monochrom> I might even justify "(length, size, tomato, potato) qualified import Data.Vector" by appealing to Japanese grammar.
17:37:37 rustisafungus joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
17:37:50 × fef quits (~thedawn@user/thedawn) (Ping timeout: 258 seconds)
17:37:52 <c_wraith> Japanese grammar would put "import" at the end
17:38:07 <monochrom> Heh yeah.
17:38:23 <monochrom> {-# LANGUAGE JapanGrammar #-}
17:38:41 <hpc> wouldn't it just be {-# LANGUAGE Japanese #-} at that point? :D
17:38:52 <c_wraith> does that require putting the = at the end of the line in declarations?
17:39:02 <darkling> Sounds reasonable to me.
17:39:15 <hpc> automatically enables UnicodeSyntax too :D
17:39:18 <darkling> RPN everywhere. :)
17:40:58 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
17:43:30 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:44:25 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 244 seconds)
17:48:47 × squiffs quits (~squiffs@host86-184-142-169.range86-184.btcentralplus.com) (Remote host closed the connection)
17:49:06 neceve joins (~quassel@2.26.93.14)
17:50:01 × Panahifar quits (~Panahifar@93.119.209.136) (Quit: Leaving)
17:50:08 Andreas joins (~andreas@2603-8000-cc01-3e3b-f45d-d05d-dc2d-c51a.res6.spectrum.com)
17:50:19 <rustisafungus> are there any other pure functional nonstrict/lazy languages aside from haskell?
17:50:32 Andreas is now known as Guest1564
17:50:38 × califax quits (~califax@user/califx) (Remote host closed the connection)
17:51:41 <c_wraith> Haskell was created by a committee to standardize development of pure functional non-strict languages, consolidating several development efforts that had been ongoing with languages like Miranda
17:52:08 <rustisafungus> so this is the only game in town then?
17:52:11 Panahifar joins (~Panahifar@93.119.209.136)
17:52:49 <c_wraith> Well, you can still dig up Miranda. Sort of. (Did it get open-sourced recently, or am I misremembering?)
17:53:06 <c_wraith> But Haskell is certainly the largest ongoing effort
17:53:08 califax joins (~califax@user/califx)
17:53:45 <geekosaur> It did
17:53:54 <geekosaur> I think Gofer's dead though
17:54:31 <c_wraith> Depending on how you interpret things, the nix language could be called pure, functional, and non-strict
17:55:43 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
17:56:09 <Guest1564> Can you post code here? I have a question on a small program (it uses alot of memory)
17:56:34 <c_wraith> You should use a pastebin. there's one in the topic that's good if you don't have a preference
17:58:13 coot joins (~coot@213.134.176.158)
18:00:31 × rustisafungus quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
18:01:01 <Guest1564> Thanks. It's here https://paste.tomsmeding.com/0cy1qPr3. It was for advent of code day 15. When run on a big input like from https://the-tk.com/project/aoc2021-bigboys.html it never finished and the memory just keeps growing
18:01:14 rustisafungus joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
18:01:33 <Guest1564> Is this whats called a space leak?
18:02:22 <geekosaur> looks like it, yes
18:03:19 <Guest1564> I tried bang patterns but doesnt work. Sets are strict anyway
18:03:55 <geekosaur> the way that's written it's going to hold the whole file in memory. twice, I think
18:04:47 × Panahifar quits (~Panahifar@93.119.209.136) (Quit: Leaving)
18:05:27 <Guest1564> But the file is not that big. The memory of the program becomes 4GB
18:05:37 <davean> It looks to actually need that memory not so much leak it?
18:05:46 × rustisafungus quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
18:06:34 econo joins (uid147250@user/econo)
18:06:52 <Guest1564> "Same" program in python uses about 1.5GB but finished in about 10 seconds on my laptop
18:07:04 <davean> Guest1564: Lists expand storage space a lot
18:07:09 <c_wraith> I'm not seeing anywhere in the loop that actually uses the heap you're creating.
18:07:14 <c_wraith> so that's leaking space, at least
18:08:01 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
18:08:13 <davean> Guest1564: A list is a single element, and a pointer
18:08:16 <c_wraith> in fact, I'm not seeing anywhere in the code that uses the heap at all...
18:08:43 <c_wraith> oh, there it is. line 31
18:08:49 <Guest1564> It uses the heap to find next direction (line 27)
18:09:13 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 244 seconds)
18:09:37 <c_wraith> if line 27 was the only place using it, it'd be equivalent to not using it. But 31 exists.
18:09:57 <davean> Guest1564: you really need to move off lists if you don't want the storage size to be huge
18:09:59 <c_wraith> anyway, yeah. your foldl' is leaking the heap
18:10:04 <davean> Guest1564: python uses arrays, not lists
18:10:37 <c_wraith> If you want to solve it with a bang pattern, `maybeSeen (!heap, set) (x, y) =` on line 37
18:11:07 <Guest1564> davean, the program is using an arrays and sets not listss
18:11:28 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:11:28 <c_wraith> davean: what list are you seeing, other than the list of directions?
18:11:48 <davean> c_wraith: when he's reading it in. He holds it twice first.
18:11:59 <Guest1564> c_wraith, I tried that it doesnt change anything
18:12:00 <davean> Its kinda minor, thats not his main problem but it will seriously slow down import
18:12:19 <c_wraith> Huh, I guess that foldl' isn't very relevant, as it's not folding over a very big set
18:13:10 <Guest1564> Is there a more idiomatic way to do graph search?
18:13:41 <davean> Guest1564: it doesn't seem terrible. There are certainly other approaches.
18:13:56 <c_wraith> this looks wrong, for Dijkstra's algorithm
18:14:20 <c_wraith> You're not allowing for the possibility of finding a new shorter path to something already in the seen set
18:15:47 <Guest1564> c_wraith: I don't need to when I've already seen that node. I think the algo is fine and it gives the right answer for different inputs
18:16:12 <Guest1564> Is it because it is copying the Set and the Heap on every iteration
18:16:12 <Guest1564> ?
18:16:39 <c_wraith> what heap library are you using?
18:19:49 <Guest1564> https://hackage.haskell.org/package/heaps-0.4/docs/Data-Heap.html
18:22:52 <c_wraith> I see. Your implementation of Dijkstra will give correct answers, but it will put a lot of duplicate elements in the heap that don't get discarded until later.
18:23:23 <c_wraith> It's possible with a sufficiently large graph that that waste is enough to explain the memory use
18:24:40 <Guest1564> Oh, that might be it. But the python program https://paste.tomsmeding.com/7bXw9PyJ does the same and runs very fast
18:25:31 <c_wraith> the only space leak I see in there is the heap during the foldl'
18:25:44 <c_wraith> and it's very minor, as the foldl' is over a small set
18:27:21 Guest|81 joins (~Guest|81@189.181.7.165)
18:27:23 <Guest|81> heya
18:28:16 <c_wraith> I'd suspect the problem is either an algorithmic mistake causing it to solve the wrong problem, or just memory use of the data structures involved.
18:28:32 <c_wraith> this doesn't look like it's laziness-related
18:29:39 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
18:29:39 × Guest|81 quits (~Guest|81@189.181.7.165) (Client Quit)
18:30:12 Guest|81 joins (~Guest|81@189.181.7.165)
18:30:35 × califax quits (~califax@user/califx) (Remote host closed the connection)
18:31:25 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
18:32:48 acidjnk joins (~acidjnk@p200300d6e7137a072978330082d08561.dip0.t-ipconnect.de)
18:33:06 × neceve quits (~quassel@2.26.93.14) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
18:33:34 neceve joins (~quassel@2.26.93.14)
18:35:09 rockymarine joins (~rocky@user/rockymarine)
18:35:18 × Guest|81 quits (~Guest|81@189.181.7.165) (Quit: Connection closed)
18:35:20 <dolio> Using 3x as much memory would be a pretty tame space leak, usually.
18:35:43 <dolio> People usually use the term for programs that use asymptotically more memory than expected.
18:35:57 Topsi joins (~Topsi@dyndsl-095-033-090-077.ewe-ip-backbone.de)
18:36:22 <c_wraith> I specifically use it for the case when nested thunks build up that all need to be evaluated together when the value is finally demanded.
18:36:29 <dolio> I guess 3x could be an extra log factor. :)
18:36:38 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
18:36:38 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
18:36:38 wroathe joins (~wroathe@user/wroathe)
18:36:51 <c_wraith> everything else is space *use*, not a space *leak*
18:38:42 × Guest1564 quits (~andreas@2603-8000-cc01-3e3b-f45d-d05d-dc2d-c51a.res6.spectrum.com) (Remote host closed the connection)
18:38:57 × neceve quits (~quassel@2.26.93.14) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
18:38:58 Andreas joins (~andreas@2603-8000-cc01-3e3b-f45d-d05d-dc2d-c51a.res6.spectrum.com)
18:39:18 neceve joins (~quassel@2.26.93.14)
18:39:22 Andreas is now known as Guest6976
18:40:06 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
18:40:13 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds)
18:41:43 califax joins (~califax@user/califx)
18:42:48 Lord_of_Life_ is now known as Lord_of_Life
18:44:02 × neceve quits (~quassel@2.26.93.14) (Client Quit)
18:44:23 neceve joins (~neceve@2.26.93.14)
18:44:34 <Guest6976> But if it's not a space leak then haskell is just inefficient in this case? The program never finishes...
18:45:11 <c_wraith> not a space leak doesn't mean not a memory use problem.
18:45:25 × instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
18:47:25 titibandit joins (~titibandi@xdsl-84-44-227-248.nc.de)
18:51:56 × neceve quits (~neceve@2.26.93.14) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
18:52:20 neceve joins (~neceve@2.26.93.14)
18:52:41 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
18:52:47 <c_wraith> I expect the big difference is the heap libraries. I'm betting the python one is array-based. The haskell one is tree-based
18:53:03 <c_wraith> that means a *lot* more pointer chasing
18:57:09 Sgeo joins (~Sgeo@user/sgeo)
18:57:42 instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net)
18:59:39 × Guest6976 quits (~andreas@2603-8000-cc01-3e3b-f45d-d05d-dc2d-c51a.res6.spectrum.com) (Remote host closed the connection)
19:00:41 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:01:55 × instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
19:02:43 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:08:31 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
19:08:50 <monochrom> See this is the problem with choosing the wording "space leak".
19:09:08 zer0bitz joins (~zer0bitz@2001:2003:f748:2000:d9e7:117d:c6bf:ca57)
19:09:19 <Rembane> The final fronteer
19:10:20 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
19:10:20 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
19:10:20 wroathe joins (~wroathe@user/wroathe)
19:24:19 mmhat joins (~mmh@p200300f1c728cc1bee086bfffe095315.dip0.t-ipconnect.de)
19:26:14 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
19:28:37 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
19:30:23 × kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
19:33:06 × coot quits (~coot@213.134.176.158) (Quit: coot)
19:40:28 nahcetan joins (~nate@98.45.169.16)
19:40:50 nate4 joins (~nate@98.45.169.16)
19:41:11 × n8chan quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
19:41:43 <qrpnxz> [exa]: Monads are straight up boring in how simple they are. The interface is either viewed as "callback" from a control view or "flatmap" from a data view. Every Monad I ever saw looks like: 1) algebraic data type (flatmap), 2) ((->) r (Algebraic datatype)) (callback+flatmap), or 3) church encoding of the former two, which is continuation based, which is just callbacks. Nothing out of left field
19:41:45 <qrpnxz> so far. Mysterious `IO` as you mention is just `RealWorld -> (RealWorld, a)`. All the instance does is mappend `Endo RealWorld` while we mess around with an extra output. That's Applicative, too, just a spicier version of Monoid. And Functor of course is just `map`. Where is the mass confusion in other languages about a type having `flatmap`, or passing a callback, or just doing a mappend on part
19:41:47 <qrpnxz> of a datatype? I think most of the confusion around Monad has got to be simply the name "Monad" and the name ">>=". Perhaps it's that in other languages the `((->) r)` sort of class of monads are more rare. But is that really such a leap? Perhaps it's that Haskell uses it more often for control flow. I don't know. Maybe I'm crazy and Monad is complicated than that, but how? It's a two method class
19:41:49 <qrpnxz> with a couple of laws. It can't be that complicated.
19:42:52 <monochrom> S -> (a, S) doesn't look algebraic or continuationic to me.
19:43:17 <monochrom> Instead, it looks... functional :)
19:44:14 <monochrom> But yeah the definition is pretty simple.
19:44:20 <monochrom> the definition of monad
19:45:14 <monochrom> But people can't work with definitions, axioms, and logical deductions. They can only work with metaphors.
19:45:15 Panahifar joins (~Panahifar@93.119.209.136)
19:45:33 <monochrom> Consider how FIFO queues are taught.
19:46:04 <qrpnxz> how are they taught
19:46:19 <monochrom> By appealing to metaphors.
19:46:26 <monochrom> By showing implementations.
19:46:45 <monochrom> No one teaches the axiomatic definition free of implementation concerns.
19:46:47 <qrpnxz> yeah, i was gonna bring that up about showing implementations. Maybe that's what we need more of?
19:47:18 <monochrom> Well here is a difficulty that monads suffer but queues don't.
19:47:50 <monochrom> Different implementations of queues look like doing the same thing and it doesn't matter which you choose.
19:48:02 <monochrom> Different implementations of monads look completely unrelated.
19:48:55 <monochrom> Queue has a unifying metaphor, just think of daily life lining up. Monads don't have a unifying metaphor.
19:49:14 <monochrom> Or it does but useless.
19:51:16 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:52:09 × Panahifar quits (~Panahifar@93.119.209.136) (Quit: Leaving)
19:54:02 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:57:00 <qrpnxz> I think the essence of Monad is basically callbacks and monoid. I agree it's not as neat as queue, but I still am confused by what appears to be a double standard wrt monad instances in other languages. Perahps the difficulty of even writing `class Monad` in other languages makes it difficult to grok the abstraction in Haskell? I think you are right just studying a bunch of instances and
19:57:02 <qrpnxz> implementations and then pointing out "hey, see how this is the same thing?" is probably the best way.
19:57:12 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
19:57:42 × texasmynsted quits (~texasmyns@99.96.221.112) (Remote host closed the connection)
19:58:09 <qrpnxz> I just remembered that pointers are "hard" as well. I never got that one either.
19:58:15 <johnw> Monad is monoid at the (endo-)functor level; it's bizarrely difficult to intuit this
19:58:41 <hpc> a more approachable "every instance is different" might be just algebra?
19:58:43 <dolio> monochrom: It is algebraic, though.
19:58:57 <hpc> use that to ease people into the idea
19:59:21 <hpc> the algebras of sets and linear transformations don't really have anything in common, for example
19:59:30 <c_wraith> pointers in C *are* hard. memory addresses aren't, but C adds a ton of additional semantics to the things they call "pointers", and modern compilers promise to silently break your code if you don't obey the rules.
19:59:42 <hpc> but the laws are much more approachable
19:59:57 <johnw> c_wraith: so true, I was reading a discussion about the semantic model for C++ pointers recently, and I was shocked at the layers of abstraction involved
20:00:03 <dolio> It's the free algebra generated by get, put, and the 3 natural equations on get and put.
20:00:25 <qrpnxz> c_wraith: example?
20:01:02 <c_wraith> no examples are small enough to fit in an irc message.
20:01:07 <qrpnxz> When i see someone confused about pointers it's never something so nuanced. Even just understanding what it is on a basic level seems to be the barrier.
20:01:20 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 244 seconds)
20:01:32 <qrpnxz> "additional semantics" aside
20:01:54 <[Leary]> qrpnxz: "It's the abstraction" should be correct. The abstract is the simplest possible thing when you already know how to deal with it, but learning that requires years of formal training or longer years of practice.
20:02:31 <[Leary]> Monad is too abstract for most programmers.
20:03:38 <c_wraith> qrpnxz: https://blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html is part of a series on what's going on. though if I remember right, it leaves a lot out too
20:04:59 <qrpnxz> the start of that blog is insane. That optimization sequence seems like a bug.
20:05:26 <monochrom> qrpnxz: Yes, other languages lack polymorphism for the *->* kind, our Monad class is inexpressible in them.
20:05:40 <monochrom> The only solution is butchering.
20:06:35 <monochrom> hpc, programmers flunked algebra, it's the whole point why they chose programming in the first place.
20:07:23 <monochrom> And here we follow Backus's advice and advise them to understand programs by doing algebra!
20:07:52 <qrpnxz> lol mono
20:08:01 <monochrom> dolio: Ah, that kind of algebra, rather than ADT.
20:08:55 <monochrom> The axiomatic definition of queue I alluded to does that kind of algebra too. There are equations constraining enqueue and dequeue.
20:09:02 <dolio> We'll have them once programming adopts quotient inductive types.
20:09:06 <dolio> Or higher inductive types.
20:09:09 <hpc> monochrom: my required computer ethics course had a bunch of art students that used it as a technical credit, and they were shocked when the midterm project was send a pgp email to the TA
20:09:19 <hpc> but their bad choice of class doesn't invalidate the lesson :P
20:09:43 <c_wraith> yeah, most of that post is about other issues with C. but there are a lot of additional rules on pointers in C. like a pointer into an array is fine, but moving that pointer to anything outside the array is UB. or casting a pointer to do type coercions is UB. or aliasing pointers in a function call can lead to all kinds of UB.
20:10:06 <qrpnxz> hpc: for a computer ethics course, that is really weird
20:10:47 matthewmosior joins (~matthewmo@173.170.253.91)
20:11:24 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
20:11:47 <dolio> monochrom: https://hub.darcs.net/dolio/omega-sigma/browse/Omega.agda#29
20:11:59 <qrpnxz> c_wraith: pointers outside of valid memory being bad makes perfect logical sense to me. The aliasing ones are pretty straight forward, too, but I wouldn't say that was evident. That one would definitely need to be pointed out :P
20:12:40 <qrpnxz> dolio: did you type this?
20:12:40 <c_wraith> the thing is, all of those operations are perfectly valid and well-defined if all you're thinking of is memory addresses
20:12:55 <c_wraith> Pointers are more complex.
20:13:03 <dolio> Yes, of course.
20:13:22 <qrpnxz> sure, but no beginner ever comes to me with "ah why is this program failing when i try to access memory i didn't allocate?!?!" no they are confused about how pointers work at all.
20:14:08 Andreas joins (~andreas@cpe-76-90-84-251.socal.res.rr.com)
20:14:32 Andreas is now known as Guest6336
20:15:00 geekosaur has encountered what qrpnxz is talking about (and been completely flummoxed; pointers made sense to him immediately)
20:15:00 <qrpnxz> c_wraith: btw, do you know if gcc has a flag or something so it tells you "found UB here, gonna exploit it"
20:15:21 <geekosaur> read to the end of that article
20:15:24 <qrpnxz> thx
20:15:37 <geekosaur> tl;dr: no, nor does clang, nor any other compiler
20:16:12 <geekosaur> UB is difficult to spot, because it gets explouted in nonobvious ways by interacting optimizations
20:16:17 <geekosaur> *exploited
20:16:39 <monochrom> -O2 implies "found UB here, gonna exploit it".
20:16:50 <monochrom> -O1 a bit less so, -O3 very more so.
20:16:52 <qrpnxz> well, there's some helpful flags there that i didn't know about, so that's nice. Understandable if gcc can't 100% tell me everything, but more than zero pretty good.
20:17:48 <qrpnxz> monochrom: i mean that it tells you what exactly UB it found and where
20:17:49 × titibandit quits (~titibandi@xdsl-84-44-227-248.nc.de) (Quit: Leaving.)
20:18:37 <monochrom> I once wrote "unsigned n = 1; int c = 0; while (n != 0) { n <<= 1 c++; }". -O3 compiled it into an infinite loop.
20:19:23 <monochrom> -O2 compiled it to "for (i=0; i<32; i++) {} c = 32;"
20:19:34 <qrpnxz> there a semicolon missing there?
20:19:48 <monochrom> Yeah
20:19:53 <monochrom> n<<=1; c++;
20:19:59 <qrpnxz> ah yeah, well it makes sense if you know math is UB in C :D
20:20:11 <hpc> kinda funny that it still keeps the loop
20:20:46 <qrpnxz> i think if you just incremented `n` it would be an infinite loop too
20:20:57 <qrpnxz> ah but it's unsigned, i forget in that case
20:21:36 <monochrom> Pretty sure if n is int the compiler can still find just cause to multilate my code.
20:21:37 <qrpnxz> wraith would know
20:21:58 <monochrom> Recently I discovered students' doofus buffer-overflowing code by just turning on -O2.
20:22:20 <monochrom> There was run time "buffer overflow detected" all over the place.
20:23:20 <qrpnxz> I wonder if there are companies out there that just run C with -O0 to avoid this kind of things. C with -O0, or -O0 with a few optimizations, is probably still pretty fast i bet.
20:23:59 <monochrom> There were also students writing "char *p; if (...) { p = something legit } else { char s[10] = "xxx"; p = s; } now deference p"
20:24:14 <qrpnxz> lol
20:24:14 <monochrom> -O2 ruined that one too.
20:24:32 <qrpnxz> i'm surprised -O0 didn't have that broken actually
20:25:07 <monochrom> If those companies don't already exist, I'm sure my students will go on to create some.
20:25:13 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:25:25 <qrpnxz> lol
20:29:12 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
20:29:45 × Guest6336 quits (~andreas@cpe-76-90-84-251.socal.res.rr.com) (Remote host closed the connection)
20:29:57 Andreas joins (~andreas@2603-8000-cc01-3e3b-f45d-d05d-dc2d-c51a.res6.spectrum.com)
20:30:21 Andreas is now known as Guest7071
20:31:01 × Guest7071 quits (~andreas@2603-8000-cc01-3e3b-f45d-d05d-dc2d-c51a.res6.spectrum.com) (Client Quit)
20:32:44 Hayek joins (~andreas@2603-8000-cc01-3e3b-f45d-d05d-dc2d-c51a.res6.spectrum.com)
20:34:29 × Midjak quits (~Midjak@82.66.147.146) (Read error: Connection reset by peer)
20:35:16 fhn joins (~fhn@2.58.185.24)
20:37:35 nate4 joins (~nate@98.45.169.16)
20:38:12 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:42:25 × toeffel quits (~toeffel@user/toeffel) (Quit: quit)
20:43:38 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
20:44:37 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
20:55:40 kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
20:59:05 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
21:02:40 wonko_ joins (~wjc@2a0e:1c80:2::130)
21:02:55 × rockymarine quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
21:09:55 × wonko_ quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 248 seconds)
21:09:56 Pickchea joins (~private@user/pickchea)
21:13:18 × acidjnk quits (~acidjnk@p200300d6e7137a072978330082d08561.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
21:14:19 × zer0bitz quits (~zer0bitz@2001:2003:f748:2000:d9e7:117d:c6bf:ca57) (Read error: Connection reset by peer)
21:15:44 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
21:17:38 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:18:43 × rburkholder quits (~blurb@96.45.2.121) (Remote host closed the connection)
21:23:37 <Franciman> monochrom: how is it possible that it compiled it into an infinite loop?
21:23:43 <Franciman> it's because of UB?
21:28:44 nate4 joins (~nate@98.45.169.16)
21:31:53 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
21:32:31 <monochrom> Yes.
21:33:07 <monochrom> It legit became "LABAL: jmp LABEL"
21:33:22 <monochrom> err I misspelled label heh
21:34:07 <Franciman> ahah
21:34:10 <Franciman> awesome
21:35:42 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
21:36:19 <qrpnxz> good ol C standard https://a.tmp.ninja/Dyhbjrmm.png
21:38:01 <qrpnxz> seems like for unsigned it shouldn't be infinite
21:38:27 <qrpnxz> but for signed it could be
21:38:50 <Franciman> lelling hard, tbqf
21:41:26 jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
21:43:41 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:55:22 × goldstein quits (~goldstein@goldstein.rs) (Quit: ZNC 1.8.2 - https://znc.in)
21:56:23 GoldsteinQ joins (~goldstein@goldstein.rs)
22:05:55 × mmhat quits (~mmh@p200300f1c728cc1bee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
22:07:48 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
22:10:24 Feuermagier joins (~Feuermagi@user/feuermagier)
22:12:35 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
22:16:11 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 244 seconds)
22:16:45 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:19:17 mmhat joins (~mmh@p200300f1c728cc50ee086bfffe095315.dip0.t-ipconnect.de)
22:25:50 × Luj quits (~Luj@2a01:e0a:5f9:9681:4627:643b:8710:eef1) (Quit: Ping timeout (120 seconds))
22:26:07 Luj joins (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb)
22:27:38 × califax quits (~califax@user/califx) (Ping timeout: 258 seconds)
22:27:59 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
22:28:28 califax joins (~califax@user/califx)
22:29:20 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
22:29:20 × califax quits (~califax@user/califx) (Remote host closed the connection)
22:29:20 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
22:29:37 biberu\ joins (~biberu@user/biberu)
22:29:45 califax joins (~califax@user/califx)
22:29:57 × kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Remote host closed the connection)
22:30:15 kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
22:30:32 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
22:30:42 ChaiTRex joins (~ChaiTRex@user/chaitrex)
22:32:37 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
22:32:46 cheater joins (~Username@user/cheater)
22:33:51 × biberu quits (~biberu@user/biberu) (Ping timeout: 268 seconds)
22:33:52 biberu\ is now known as biberu
22:36:42 × Guest4963 quits (florian@gabilgathol.bandrate.org) (Changing host)
22:36:42 Guest4963 joins (florian@sourcemage/mage/beowulf)
22:36:54 Guest4963 is now known as |beowulf|
22:41:54 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
22:48:01 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
22:49:27 cyanide3dinner joins (~cyanide4d@103.195.203.97)
22:51:02 kayvank joins (~user@52-119-115-185.PUBLIC.monkeybrains.net)
23:05:47 × Pickchea quits (~private@user/pickchea) (Ping timeout: 244 seconds)
23:08:33 jinreal2014 joins (~jinreal@23.83.225.85.16clouds.com)
23:08:36 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
23:12:04 × Topsi quits (~Topsi@dyndsl-095-033-090-077.ewe-ip-backbone.de) (Quit: Leaving.)
23:12:27 luffy joins (~chenqisu1@183.217.201.192)
23:18:20 × matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
23:24:51 × mmhat quits (~mmh@p200300f1c728cc50ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.6)
23:28:35 × kayvank quits (~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection)
23:28:40 × Successus quits (~Successus@user/Successus) ()
23:31:18 × Tuplanolla quits (~Tuplanoll@91-159-69-12.elisa-laajakaista.fi) (Ping timeout: 264 seconds)
23:31:38 matthewmosior joins (~matthewmo@173.170.253.91)
23:32:30 × jinreal2014 quits (~jinreal@23.83.225.85.16clouds.com) (Ping timeout: 264 seconds)
23:34:52 × zeenk quits (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!)
23:42:28 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 244 seconds)
23:51:52 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
23:56:25 × vglfr quits (~vglfr@145.224.94.248) (Ping timeout: 244 seconds)

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