Home liberachat/#haskell: Logs Calendar

Logs on 2023-01-05 (liberachat/#haskell)

00:00:03 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
00:01:25 chexum joins (~quassel@gateway/tor-sasl/chexum)
00:05:31 koolazer joins (~koo@user/koolazer)
00:11:09 nasrudin__ joins (~nasrudin_@174.78.11.128)
00:12:33 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:12:33 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:12:33 wroathe joins (~wroathe@user/wroathe)
00:13:16 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
00:14:24 gmg joins (~user@user/gehmehgeh)
00:15:25 Blightmain joins (~Blightmai@203.29.154.219)
00:15:27 Blightmain_ joins (~Blightmai@203.29.154.219)
00:15:35 Blightmain_ parts (~Blightmai@203.29.154.219) ()
00:17:26 xff0x joins (~xff0x@p3326132-ipngn2103sapodori.hokkaido.ocn.ne.jp)
00:25:38 <jackdk> what if you ran all the FFI stuff in a subprocess? Use quickcheck to generate your test cases and then bad C code doesn't crash your whole program. I remember a conference talk where someone did this to wordpress, booting up and destroying either vms or containers
00:28:04 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
00:33:05 cheater_ joins (~Username@user/cheater)
00:35:29 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
00:35:30 cheater_ is now known as cheater
00:38:10 × freeside quits (~mengwong@103.252.202.159) (Ping timeout: 268 seconds)
00:38:12 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in)
00:40:09 <maerwald[m]> jean-paul.: oh, I misread 😄
00:41:57 jmdaemon joins (~jmdaemon@user/jmdaemon)
00:42:32 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
00:46:20 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
00:46:45 × acidjnk quits (~acidjnk@p200300d6e7137a34b1a3218fa39d995d.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
00:49:46 freeside joins (~mengwong@103.252.202.159)
00:54:37 × unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 252 seconds)
01:01:44 fizbin joins (~fizbin@user/fizbin)
01:03:52 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:09:11 king_gs joins (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60)
01:10:18 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:11:38 agumonkey joins (~user@2a01:e0a:8f9:d3e0:171e:d6c3:c5ae:d894)
01:12:23 cheater_ joins (~Username@user/cheater)
01:15:10 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
01:15:18 cheater_ is now known as cheater
01:15:47 × nasrudin__ quits (~nasrudin_@174.78.11.128) (Ping timeout: 268 seconds)
01:16:25 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:16:32 nasrudin__ joins (~nasrudin_@174.78.11.128)
01:18:18 × tremon quits (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
01:18:44 × Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
01:25:38 <dgpratt[m]> @undo do { s <- [1..10]; let t = s * s; return (s, t) }
01:25:38 <lambdabot> <unknown>.hs:1:49:Parse error: }
01:26:12 <dgpratt[m]> clearly doing something stupid, can someone point out what?
01:26:49 <jackdk> @undo do { s <- [1..10]; let t = s * s; return (s, t); }
01:26:49 <lambdabot> <unknown>.hs:1:48:Parse error: ;
01:27:30 <geekosaur> let introduces layout, so needs its own braces
01:27:52 <geekosaur> @undo do { s <- [1..10]; let {t = s * s}; return (s, t); }
01:27:52 <lambdabot> [1 .. 10] >>= \ s -> let { t = s * s} in return (s, t)
01:28:00 <jackdk> Neat, I did not know that.
01:28:46 <dgpratt[m]> geekosaur: I think you've been answering all my queries of late, thanks again :)
01:28:54 razetime joins (~Thunderbi@49.207.222.244)
01:30:02 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
01:36:00 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
01:43:28 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
01:48:16 alt-romes joins (~romes@192.22.63.94.rev.vodafone.pt)
01:50:56 × romesrf quits (~romes@192.22.63.94.rev.vodafone.pt) (Ping timeout: 268 seconds)
01:53:36 × alt-romes quits (~romes@192.22.63.94.rev.vodafone.pt) (Ping timeout: 272 seconds)
01:57:11 × Kaipei quits (~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 260 seconds)
01:57:32 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
02:03:09 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
02:04:39 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:11:20 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 272 seconds)
02:13:10 × king_gs quits (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60) (Remote host closed the connection)
02:13:29 king_gs joins (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60)
02:14:12 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
02:15:36 × nasrudin__ quits (~nasrudin_@174.78.11.128) (Ping timeout: 252 seconds)
02:16:17 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 256 seconds)
02:16:38 nasrudin__ joins (~nasrudin_@174.78.11.128)
02:16:50 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
02:17:42 cyphase joins (~cyphase@user/cyphase)
02:18:41 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
02:19:17 alt-romes joins (~romes@192.22.63.94.rev.vodafone.pt)
02:20:58 × agumonkey quits (~user@2a01:e0a:8f9:d3e0:171e:d6c3:c5ae:d894) (Ping timeout: 252 seconds)
02:28:38 × alt-romes quits (~romes@192.22.63.94.rev.vodafone.pt) (Ping timeout: 265 seconds)
02:32:53 dsrt^ joins (~dsrt@76.145.190.81)
02:42:00 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
02:43:17 × xff0x quits (~xff0x@p3326132-ipngn2103sapodori.hokkaido.ocn.ne.jp) (Ping timeout: 255 seconds)
02:46:16 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
02:46:40 justsomeguy joins (~justsomeg@user/justsomeguy)
02:47:42 alt-romes joins (~romes@192.22.63.94.rev.vodafone.pt)
02:47:58 masterbuilder joins (~master@user/masterbuilder)
02:52:30 × alt-romes quits (~romes@192.22.63.94.rev.vodafone.pt) (Ping timeout: 272 seconds)
02:52:44 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
02:54:40 werneta joins (~werneta@137.79.238.79)
03:02:55 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:02:55 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:02:55 finn_elija is now known as FinnElija
03:05:10 × freeside quits (~mengwong@103.252.202.159) (Ping timeout: 272 seconds)
03:06:48 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
03:12:48 × td_ quits (~td@83.135.9.7) (Ping timeout: 252 seconds)
03:14:07 instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net)
03:14:30 td_ joins (~td@83.135.9.50)
03:16:39 × nasrudin__ quits (~nasrudin_@174.78.11.128) (Ping timeout: 268 seconds)
03:16:45 freeside joins (~mengwong@103.252.202.159)
03:17:14 nasrudin__ joins (~nasrudin_@174.78.11.128)
03:19:04 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
03:19:06 × werneta quits (~werneta@137.79.238.79) (Ping timeout: 272 seconds)
03:20:17 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
03:24:32 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
03:33:18 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
03:47:31 × king_gs quits (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60) (Ping timeout: 256 seconds)
03:49:32 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 255 seconds)
03:50:08 chiselfuse joins (~chiselfus@user/chiselfuse)
03:54:47 × beefbambi quits (~beefbambi@183.82.24.253) (Read error: Connection reset by peer)
03:55:34 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
03:55:48 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
03:56:43 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
03:57:10 × nasrudin__ quits (~nasrudin_@174.78.11.128) (Ping timeout: 252 seconds)
03:57:16 beefbambi joins (~beefbambi@183.82.24.253)
04:04:58 <mizlan> with the way ghc builds, should i be able to copy the executable from dist-newstyle/ to say, /usr/local/bin and have it work from there?
04:06:30 <c_wraith> yes.
04:07:00 <glguy> mizlan: the place that would go wrong would be if the executable came with cabal-managed data files (which is uncommon)
04:07:32 <c_wraith> even then, it should still have the right paths - it just might not have the right permissions
04:07:55 Oranos joins (~Oranos@2603-8000-a343-c600-0000-0000-0000-0001.res6.spectrum.com)
04:07:56 <glguy> The paths would be pointing into dist-newstyle?
04:08:55 <glguy> instead of copying out of dist-newstyle, it seems like it'd be better to "cabal install --prefix..."
04:09:37 <mizlan> I am using zsh and it says 'zsh: killed'
04:09:47 <mizlan> i'll try cabal install with a prefix, thanks
04:10:00 <c_wraith> does your current user have permission to write to /usr/local/bin?
04:11:51 <mizlan> Yep, it has permission to write, but I think the problem might be permission to execute
04:12:02 <mizlan> I just tried `sudo my-cmd` and it worked
04:12:47 <mizlan> oh wait: nvm
04:13:18 cheater_ joins (~Username@user/cheater)
04:13:35 <mizlan> seems like cabal install is ignoring --prefix, but .cabal/bin is fine for me :]
04:16:14 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
04:16:24 cheater_ is now known as cheater
04:19:10 × caryhartline quits (~caryhartl@2600:1700:2d0:8d30:4c56:2515:e4a9:736c) (Quit: caryhartline)
04:19:49 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 256 seconds)
04:20:02 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 246 seconds)
04:20:35 × ddellacosta quits (~ddellacos@143.244.47.85) (Ping timeout: 260 seconds)
04:25:18 <sclv> patch in the next version of cabal will make new-install start ignoring prefix
04:26:40 v0id_ptr joins (~adrift@user/ptr-frac7al/x-0038398)
04:36:12 × ystael quits (~ystael@user/ystael) (Ping timeout: 268 seconds)
04:40:10 × beefbambi quits (~beefbambi@183.82.24.253) (Ping timeout: 272 seconds)
04:41:07 willbradley joins (~willbradl@71-211-142-215.hlrn.qwest.net)
04:42:15 willbradley is now known as wbbradley
04:42:54 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
04:54:55 mbuf joins (~Shakthi@49.204.130.110)
04:55:53 × Blightmain quits (~Blightmai@203.29.154.219) (Quit: Leaving)
04:56:05 × wbbradley quits (~willbradl@71-211-142-215.hlrn.qwest.net) ()
04:56:24 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
04:57:17 ChaiTRex joins (~ChaiTRex@user/chaitrex)
05:01:16 ephaptic joins (~ephaptic@user/ephaptic)
05:04:46 talismanick joins (~talismani@76.133.152.122)
05:05:22 myyo joins (~myyo@71-211-142-215.hlrn.qwest.net)
05:11:21 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
05:20:41 <sclv> stop ignoring i meant, lol
05:23:12 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
05:23:42 × instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
05:26:43 × Vajb quits (~Vajb@2001:999:405:5eb2:8d39:b832:a9ee:9bdf) (Read error: Connection reset by peer)
05:26:43 <sm> let's start ignoring troublesome features, that's the way :)
05:27:05 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
05:29:34 × freeside quits (~mengwong@103.252.202.159) (Ping timeout: 272 seconds)
05:31:23 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
05:33:18 Vajb joins (~Vajb@2001:999:405:5eb2:8d39:b832:a9ee:9bdf)
05:34:01 × Me-me quits (~me-me@user/me-me) (Remote host closed the connection)
05:35:07 × ephaptic quits (~ephaptic@user/ephaptic) (Quit: WeeChat 3.7.1)
05:37:38 Me-me joins (~me-me@2602:ff16:3:0:1:dc:beef:d00d)
05:37:42 × Me-me quits (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Changing host)
05:37:42 Me-me joins (~me-me@user/me-me)
05:39:05 kuttenbrunzer joins (~kuttenbru@2a02:8108:8b80:1d48:b9dc:1d8d:8491:7136)
05:39:48 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
05:42:34 freeside joins (~mengwong@103.252.202.159)
05:50:42 × Oranos quits (~Oranos@2603-8000-a343-c600-0000-0000-0000-0001.res6.spectrum.com) (Quit: Oranos)
05:56:50 alt-romes joins (~romes@192.22.63.94.rev.vodafone.pt)
06:04:31 × alt-romes quits (~romes@192.22.63.94.rev.vodafone.pt) (Ping timeout: 260 seconds)
06:07:35 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
06:13:18 × hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
06:13:37 hrberg joins (~quassel@171.79-160-161.customer.lyse.net)
06:19:36 thongpv joins (~thongpv87@123.31.184.215)
06:21:05 × thongpv87 quits (~thongpv87@2402:9d80:3ba:1697:bf26:42c7:945d:2a94) (Ping timeout: 255 seconds)
06:35:06 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
06:35:34 ChaiTRex joins (~ChaiTRex@user/chaitrex)
06:44:58 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
06:50:43 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
06:50:46 alt-romes joins (~romes@192.22.63.94.rev.vodafone.pt)
06:55:58 × alt-romes quits (~romes@192.22.63.94.rev.vodafone.pt) (Ping timeout: 252 seconds)
06:57:09 titibandit joins (7efad7d72e@2a00:c70:1:178:170:40:189:1)
07:00:13 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
07:04:24 × kuttenbrunzer quits (~kuttenbru@2a02:8108:8b80:1d48:b9dc:1d8d:8491:7136) (Quit: Leaving)
07:04:49 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
07:13:49 trev joins (~trev@user/trev)
07:15:17 × thegeekinside quits (~thegeekin@189.217.82.244) (Read error: Connection reset by peer)
07:25:10 takuan joins (~takuan@178-116-218-225.access.telenet.be)
07:26:44 pragma- joins (~chaos@user/pragmatic-chaos)
07:27:22 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 272 seconds)
07:29:51 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
07:30:34 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
07:37:30 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
07:44:54 × myme quits (~myme@40.51-175-185.customer.lyse.net) (Ping timeout: 268 seconds)
07:52:49 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
08:00:50 lortabac joins (~lortabac@2a01:e0a:541:b8f0:fabd:1d4c:3d9a:76e1)
08:04:14 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
08:07:14 kuttenbrunzer joins (~kuttenbru@2a02:8108:8b80:1d48:e097:e52d:638e:1121)
08:07:58 mc47 joins (~mc47@xmonad/TheMC47)
08:14:21 chele joins (~chele@user/chele)
08:19:01 zeenk joins (~zeenk@2a02:2f04:a110:ac00::7fe)
08:23:48 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
08:26:13 cheater_ joins (~Username@user/cheater)
08:28:41 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
08:28:49 cheater_ is now known as cheater
08:29:50 nschoe joins (~q@141.101.51.197)
08:36:24 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
08:39:59 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
08:40:39 × Teacup quits (~teacup@user/teacup) (Remote host closed the connection)
08:40:48 Teacup joins (~teacup@user/teacup)
08:40:59 nut joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
08:43:46 acidjnk joins (~acidjnk@p200300d6e7137a34b1a3218fa39d995d.dip0.t-ipconnect.de)
08:48:21 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:50:20 alt-romes joins (~romes@192.22.63.94.rev.vodafone.pt)
09:00:11 × kadoban quits (~kadoban@user/kadoban) (Quit: You have been kicked for being idle)
09:05:37 avicenzi joins (~avicenzi@2a00:ca8:a1f:b004::c32)
09:06:11 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
09:07:57 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
09:10:43 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
09:11:44 × shriekingnoise quits (~shrieking@186.137.175.87) (Quit: Quit)
09:12:06 ChaiTRex joins (~ChaiTRex@user/chaitrex)
09:14:30 × trev quits (~trev@user/trev) (Remote host closed the connection)
09:21:33 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765) (Remote host closed the connection)
09:23:29 × alt-romes quits (~romes@192.22.63.94.rev.vodafone.pt) (Ping timeout: 246 seconds)
09:24:13 <Inst> i'm curious, are there any tutorials on how to do things in IO, i.e, what idioms, how to manage the monad stacks (when they appear), and so on?
09:27:02 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
09:27:46 gmg joins (~user@user/gehmehgeh)
09:28:12 boxscape_ joins (~boxscape_@213.52.37.155)
09:33:25 titibandit2 joins (~titibandi@2001-4dd1-5719-1-8737-c319-efc8-cbf0.ipv6dyn.netcologne.de)
09:35:35 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds)
09:36:38 elevenkb joins (~elevenkb@105.226.98.103)
09:38:06 ChaiTRex joins (~ChaiTRex@user/chaitrex)
09:39:18 Kaipei joins (~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net)
09:41:48 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
09:45:11 mechap1 joins (~mechap@user/mechap)
09:45:56 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
09:48:33 <boxscape_> does hackage support RST READMEs? Or only markdown?
09:48:33 × elevenkb quits (~elevenkb@105.226.98.103) (Quit: Client closed)
09:48:39 × mechap quits (~mechap@user/mechap) (Ping timeout: 260 seconds)
09:48:51 × hueso quits (~root@user/hueso) (Read error: Connection reset by peer)
09:49:20 hueso joins (~root@user/hueso)
09:49:45 × titibandit2 quits (~titibandi@2001-4dd1-5719-1-8737-c319-efc8-cbf0.ipv6dyn.netcologne.de) (Quit: Leaving.)
09:49:59 <boxscape_> (trying to figure out if there's any advantage to me writing my README in RST, but I can save myself from figuring that out if it's not supported to begin with)
09:53:15 <boxscape_> ...actually not sure if this is a haddock question or a hackage question
09:55:17 alt-romes joins (~romes@192.22.63.94.rev.vodafone.pt)
09:58:07 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
09:59:35 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
10:00:52 cheater_ joins (~Username@user/cheater)
10:02:25 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
10:03:33 <jackdk> boxscape_: https://github.com/haskell/hackage-server/blob/6c8689a779b688b3e6b927614c90318936d5bb3f/src/Distribution/Server/Packages/Readme.hs#L8-L14 I suspect not
10:03:47 <boxscape_> jackdk ah, thanks!
10:04:17 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
10:04:19 cheater_ is now known as cheater
10:04:26 × razetime quits (~Thunderbi@49.207.222.244) (Ping timeout: 272 seconds)
10:04:50 <jackdk> https://github.com/haskell/hackage-server/blob/0a2ffe8e5c5e0293a5bd5b0840f6ece80357926d/src/Distribution/Server/Pages/PackageFromTemplate.hs#L490-L494 I'm really confident that it's markdown only now
10:05:04 <jackdk> unless you like your RST unrendered
10:05:38 <boxscape_> or HTML I guess? judging by your first link
10:06:33 <jackdk> I guess that will determine that there is a readme and probably stuff the contents of the html inside that <pre>, which is not very nice to look at =/
10:06:34 teo joins (~teo@user/teo)
10:07:05 <boxscape_> ah right. Yeah, that wouldn't be pretty
10:07:37 __monty__ joins (~toonn@user/toonn)
10:09:26 azimut joins (~azimut@gateway/tor-sasl/azimut)
10:09:28 random-jellyfish joins (~random-je@user/random-jellyfish)
10:16:18 thongpv87 joins (~thongpv87@2001:ee0:54a5:98a0:cf79:600e:5b28:fb67)
10:16:26 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
10:16:37 shriekingnoise joins (~shrieking@186.137.175.87)
10:17:29 × paulpaul1076 quits (~textual@95-29-5-111.broadband.corbina.ru) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:19:41 × thongpv quits (~thongpv87@123.31.184.215) (Ping timeout: 268 seconds)
10:21:59 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765)
10:24:39 cheater_ joins (~Username@user/cheater)
10:25:54 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:26:47 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765) (Ping timeout: 260 seconds)
10:27:45 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
10:27:46 cheater_ is now known as cheater
10:28:21 mechap joins (~mechap@user/mechap)
10:29:08 × mechap quits (~mechap@user/mechap) (Client Quit)
10:34:24 <jackdk> Lens question: I'm aware of `instance Eq e => Ixed (e -> a)` in package `lens`. Is there a more general version of this that lets me run a function `a -> a` when `e` satisfies some predicate? I'm looking at service overrides in Amazonka, and wondering if there's something easier to work with than the `Dual (Endo Service)` monoid that's currently there.
10:35:04 × cheater quits (~Username@user/cheater) (Read error: Connection reset by peer)
10:35:45 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:35:47 <jackdk> Context: `Service` is a record which contains (among other things) an `abbrev :: Text` which is something like `"s3"`, `"iam"`, `"ec2"`, etc. So adding an override for EC2 calls a helper function which checks the abbrev and applies your override only if it matches.
10:36:04 × kuttenbrunzer quits (~kuttenbru@2a02:8108:8b80:1d48:e097:e52d:638e:1121) (Quit: Leaving)
10:36:50 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
10:37:16 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
10:38:20 × panovia quits (~user@user/siracusa) (Quit: Bye!)
10:38:31 Lord_of_Life_ is now known as Lord_of_Life
10:39:23 cheater joins (~Username@user/cheater)
10:43:22 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
10:46:28 paulpaul1076 joins (~textual@95-29-5-111.broadband.corbina.ru)
10:49:10 <[exa]> jackdk: that sounds a bit more like filter (the function doesn't need the index right?)
10:49:53 <jackdk> yeah it's not really lensy, more like `applyP :: (a -> Bool) -> (a -> a) -> (a -> a)`
10:53:29 elevenkb joins (~elevenkb@105.226.98.103)
10:54:23 <[exa]> hm let's conjure the type, it would be something like `ixs :: Ixed m => (Index m -> Bool) -> Traversal' m (IxValue m)`, right?
10:56:15 king_gs joins (~Thunderbi@187.201.110.169)
10:56:31 <jackdk> I think the use of Ixed may be a red herring actually
10:57:12 <[exa]> hm yeah this form requires a bit stronger property than Ixed gives (like, a materialized finite index domain)
11:00:15 jumper149 joins (~jumper149@base.felixspringer.xyz)
11:01:20 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
11:02:27 <[exa]> but you can probably go with iix (or withIndex or so) and filter on _1
11:05:44 <[exa]> actually, `filteredBy` might be just that
11:06:59 <[exa]> and yeah well, after crawling sufficient hoogle, `ifiltered` appears.
11:09:58 × boxscape_ quits (~boxscape_@213.52.37.155) (Ping timeout: 260 seconds)
11:18:32 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
11:18:34 gensyst joins (gensyst@user/gensyst)
11:19:20 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 265 seconds)
11:19:23 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
11:20:16 <gensyst> At one place I have a toggle :: Bool that someone else can choose. Elsewhere I currently have both trueCollections :: TrueDataStructure and falseCollections :: FalseDataStructure. Currently if they chose False, the TrueDataStructure just stays empty while I only accumulate the FalseDataStructure. And vice versa.
11:20:22 <gensyst> This is painful if/case code.
11:21:04 <gensyst> Is there no way to... offload some of this pain to compiler?
11:21:42 <gensyst> TemplateHaskell or something? Dependent types? What is this thing? Hmmmmmmm.
11:22:03 <Rembane> gensyst: partition perhaps?
11:22:03 sylvo joins (~sylvo@203.29.154.219)
11:22:05 <Rembane> :t partition
11:22:06 <lambdabot> (a -> Bool) -> [a] -> ([a], [a])
11:23:05 sylvo_ joins (~sylvo@2001:8004:5170:2af5:830a:1332:d7d4:ebde)
11:23:07 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
11:23:26 merijn joins (~merijn@86.86.29.250)
11:25:07 × king_gs quits (~Thunderbi@187.201.110.169) (Read error: Connection reset by peer)
11:25:45 king_gs joins (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60)
11:26:49 <gensyst> The issue is that I'm bothering with both if only one was wanted
11:26:53 × sylvo quits (~sylvo@203.29.154.219) (Ping timeout: 260 seconds)
11:27:09 <gensyst> but which was wanted it known at runtime hmmmmmm.
11:28:09 <Rembane> gensyst: You can have a function that takes what is wanted as an argument
11:28:11 <gensyst> what I'm trying to say: Of course I need to code the logic for both. However, I want to guard against (at compile time) I'm messing with the FalseDataStructure when the guy chose True.
11:29:13 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
11:29:18 <mauke> I don't get it
11:30:22 <Rembane> gensyst: Do you have a concrete example of this? Like some code where you can point to the place where things go bad?
11:32:43 × merijn quits (~merijn@86.86.29.250) (Ping timeout: 260 seconds)
11:35:00 mmhat joins (~mmh@p200300f1c7123c9eee086bfffe095315.dip0.t-ipconnect.de)
11:36:06 cheater joins (~Username@user/cheater)
11:40:10 <ncf> what you're saying looks like the type of your data structure depends on the value of toggle
11:40:23 <ncf> so i guess dependent types is the thing to look for? maybe singletons?
11:40:50 <Rembane> Or a sum type with the data needed in two different branches of the sum type.
11:42:40 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
11:43:36 <gensyst> mauke, Rembane https://paste.tomsmeding.com/DxI2ZTj6
11:43:36 <gensyst> Which path (case/if) gets taken depends on the runtime choice.
11:43:36 <gensyst> This is not ideal because why am I bothering with Cats&Dogs if the guy chose horses? If my code is correct, I'm leaving Cats&Dogs alone (empty) at runtime, but it would be cool if I could just know this at compile time by somehow "connecting" the settings type and the state types.
11:43:48 × mmhat quits (~mmh@p200300f1c7123c9eee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1)
11:45:04 <chreekat> Sum type is the answer :) don't carry around all data, just carry around the data you need
11:46:33 <chreekat> Make your State be `State = DogState DogData | CatState CatData | ...`
11:47:03 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
11:48:31 random-jellyfish joins (~random-je@user/random-jellyfish)
11:48:41 xff0x joins (~xff0x@p3326132-ipngn2103sapodori.hokkaido.ocn.ne.jp)
11:50:38 × random-jellyfish quits (~random-je@user/random-jellyfish) (Client Quit)
11:51:45 × alt-romes quits (~romes@192.22.63.94.rev.vodafone.pt) (Quit: WeeChat 3.7.1)
11:51:53 <gensyst> chreekat, hmmmmm ok!
11:51:55 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
11:51:59 <gensyst> that might work.....
11:52:15 random-jellyfish joins (~random-je@user/random-jellyfish)
11:53:06 <gensyst> chreekat, but can we do better? Can we end up with something like processData @Cat which will check at compile time I'm not messing with Dogs&Horses at all (even in certain case branches)?
11:53:29 <gensyst> Maybe I'm way off base in my thinking
11:54:51 <chreekat> It's possible in a few ways, but only go that route if you're more interested in Fun Math Puzzles than you are in writing useful software :)
11:55:39 <gensyst> hmm ok
11:55:53 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
11:58:48 <chreekat> (switching away from a product type that has lots of "undefined" entries improves the clarity and safety of the code a ton. Moving beyond that to GADTs or type classes or phantom types or .... requires more justification because it's no longer helping clarity)
11:59:45 <[Leary]> gensyst: You may want your separate `Settings` and `State` types to be in sync, in which case you could make them GADTs and have them share a DataKind type parameter specifying the case you're in. That would also support what you're asking about, and it's relatively straightforward.
12:00:26 <jackdk> That seems promising; I've cooked up something hairy with dependent-sum, but I think a simple GADT would do
12:00:32 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
12:00:56 <jackdk> https://www.irccloud.com/pastebin/OmivBcRe/PetsDependentSum.hs
12:03:38 <gensyst> jackdk, how would processData look?
12:04:33 rburkholder joins (~blurb@96.45.2.121)
12:05:06 <jackdk> `processData :: DSum Pets PetData -> IO (DSum Pets PetData)` I guess; `processData (pet :=> state) = case pet of Cats -> ...;` etc. In each alternative of the case, GHC will know what type you actually have.
12:06:11 <gensyst> [Leary], is jackdk's solution what you had in mind?
12:06:27 <jackdk> Probably not, because it's rather hairy
12:08:52 <jackdk> Don't trust me, I'm going to bed. https://www.irccloud.com/pastebin/KL6njlbt/PetGADTs.hs
12:11:26 <gensyst> lol
12:11:34 <[Leary]> Mine would use jackdk's `Pet`, `Pets` and `PetState` without `Some` or `DSum`, with `processData :: Setting p -> PetState p -> IO (PetState p)`.
12:12:08 <jackdk> Yeah you don't need `Some`, that's true.
12:12:44 <gensyst> Is this stuff possible in other langs like Rust? (keep two separate things in sync like this)
12:15:20 cheater joins (~Username@user/cheater)
12:15:21 mestre joins (~mestre@191.177.185.178)
12:32:43 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
12:35:39 thongpv joins (~thongpv87@2402:9d80:3ca:5321:90ac:c773:b44c:7ddf)
12:37:21 × thongpv87 quits (~thongpv87@2001:ee0:54a5:98a0:cf79:600e:5b28:fb67) (Ping timeout: 256 seconds)
12:48:40 gaff joins (~gaff@49.207.203.30)
12:48:58 myme joins (~myme@40.51-175-185.customer.lyse.net)
12:49:40 <gaff> is there a way to test (quickcheck) interior modules of a library without exposing those modules to users of that library?
12:49:47 boxscape_ joins (~boxscape_@213.52.37.155)
12:50:13 <boxscape_> Does anyone happen to know about a good real-world use of mutable array code I can find on hackage or github?
12:50:14 <gaff> interior = internal, by the way
12:50:29 <merijn> gaff: No and yes
12:50:48 <merijn> gaff: No in the sense that you can't really access internal from quickcheck without exporting them
12:50:59 <gaff> i see
12:51:00 <merijn> gaff: Yes in the sense that cabal now supports internal libraries!
12:51:12 <gaff> which cabal version is that?
12:51:29 <gaff> i use cabal 3.4
12:51:31 <merijn> gaff: So if you *really* care, you can make an internal library that exports everything and then have tests use that and a public library that re-exports a safe subset of the internal library
12:51:45 <merijn> I think since 3.0?
12:51:45 <boxscape_> actually probably any reasonably complex use-case of ST would do, whether it involves arrays or not
12:51:56 <boxscape_> real-world use case, that is
12:52:20 <gaff> merijn: but that wouldn't work if the tests are in a seperate directory
12:52:53 <merijn> gaff: oh, 2.0 even
12:52:55 <merijn> gaff: https://cabal.readthedocs.io/en/stable/cabal-package.html#sublibs
12:53:02 <gaff> ah you mean have 2 libraries?
12:53:36 <merijn> gaff: Yes, "internal" which has all the code then "public" (re-exporting the public bits of internal) and quickcheck depending on the internal one
12:55:30 <gaff> ok, thanks. this `Internal` & `Public` -- are these required keywords for cabal?
12:57:42 CiaoSen joins (~Jura@p200300c9572e35002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
12:58:30 <merijn> no, cabal can actually handle multiple public libraries in one package now
12:58:38 <merijn> However, Hackage can not (yet, at least)
12:58:57 <gaff> i ask because in your link, Foo.Internal is an exposed module, yet users of the package can not see it. how is that possible?
13:00:14 <gaff> because `foo-internal` is not the main library?
13:02:19 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
13:02:22 <merijn> gaff: exposed-module says which modules of a library are visible, but visibility controls which *libraries* are visible outside a package: https://cabal.readthedocs.io/en/stable/cabal-package.html#pkg-field-library-visibility
13:06:31 <gaff> merijn: ok, thanks. so in the first link you gave, visibility field (which is missing) should be private for `foo-internal`?
13:06:38 <eldritchcookie[4> can i mix unicode syntax with non unicode? or would i need to add formater to replace the normal ascii text with the unicode version?
13:06:49 <merijn> gaff: Yeah
13:06:54 <gaff> ah got it
13:07:03 <merijn> eldritchcookie[4: I think you can always use non-unicode syntax
13:07:18 <merijn> eldritchcookie[4: You mean stuff like using ∀ instead of forall, yeah?
13:07:26 <gaff> cabal documentation can certainly be improved!
13:07:57 <gaff> merijn: thanks a bunch
13:07:59 × CiaoSen quits (~Jura@p200300c9572e35002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
13:08:52 <eldritchcookie[4> yes merijin
13:09:32 <merijn> eldritchcookie[4: Pretty sure (but haven't check) that you can always use non-unicode syntax, it's just unicode syntax that needs an opt in, but should be trivial to check
13:09:47 × gaff quits (~gaff@49.207.203.30) ()
13:10:01 <boxscape_> > let f :: a → a -> a; f a b = b in f 1 2
13:10:03 <lambdabot> 2
13:10:05 <boxscape_> works
13:15:05 <boxscape_> if anyone happens to have a concrete example where they were annoyed about how monadic Haskell code was more verbose than code in an imperative language would be, hit me up
13:16:51 × sylvo_ quits (~sylvo@2001:8004:5170:2af5:830a:1332:d7d4:ebde) (Quit: Leaving)
13:16:51 <eldritchcookie[4> i find that hard i was only annoyed by verbosity only once and it was with haskell gi-gtk but have you seen the c code equivalent?
13:17:22 <boxscape_> hm I have not
13:18:22 <eldritchcookie[4> just calling one function is like 10 lines
13:18:43 <boxscape_> I see :/
13:18:45 <merijn> eldritchcookie[4: pretty sure that's indeed a gtk problem :p
13:19:11 <boxscape_> low-level bindings in general *are* probably something where Haskell code using them is unusually verbose
13:19:59 <merijn> but you can usually build higher level abstractions fairly easily
13:20:02 <boxscape_> right
13:21:23 <Inst> text based browsers aren't a hard project, right?
13:21:32 <eldritchcookie[4> i have to say i had difficulty making higher level bindings to gi-gtk and given that the one higher level binding is still only for gtk 3 instead of gtk 4 i assume other people think the same
13:21:35 <Inst> actually, forget it
13:21:52 <merijn> Inst: Famous last words xD
13:22:16 <geekosaur> you had be when you said "browser"
13:22:21 <geekosaur> *me
13:22:41 <Inst> i'm currently trying to write a shitty Haskell book inspired by The C Programming Language
13:22:45 <Inst> I introduce IO first, then traverse
13:23:14 <Inst> it goes way further, because most of the text is just commented code
13:23:43 <boxscape_> eldritchcookie[4 I know nothing about it but have you seen https://github.com/owickstrom/gi-gtk-declarative ?
13:23:44 razetime joins (~Thunderbi@49.207.222.244)
13:24:19 × Profpatsch quits (~Profpatsc@static.88-198-193-255.clients.your-server.de) (Quit: WeeChat 3.7.1)
13:24:24 <Inst> it works because for the first 3 sections, it's refactoring of the same program multiple times
13:24:30 <Inst> under different idioms, with different concepts
13:25:06 <Inst> for the 4th section, it's trying to TyDD a journal keeper, then add encryption
13:25:52 <Inst> will want to illustrate typeclasses via a pretty printer, or at least that's what I'm told, and once that's done, teach MTL
13:25:57 <Inst> via perhaps a browser
13:26:17 ub joins (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de)
13:26:55 <geekosaur> a very simple browser that probably won't be able to render real websites is easy-ish
13:27:02 <merijn> or run the JS :p
13:27:16 <geekosaur> real sites have javascri[t and an incomprehensible mess trying to pass itself off as htkml
13:27:27 <merijn> Inst: That doesn't sound like you need a browser?
13:27:34 <merijn> That sounds like you just want a terminal UI
13:27:55 <Inst> i sort of want an excuse to introduce FTP
13:28:03 <Inst> bleh, thanks for humoring me, I probably won't finish this project either
13:28:27 <Inst> erm, not FTP, but HTTP requests via library
13:30:06 <Inst> (and yes, this is all in the first chapter. Trying to remedy the "we have no idea how to do effects in haskell!" problem)
13:33:12 <boxscape_> hmm I don't know if it's a good idea but have you considered going with a more modern effect-handling library than mtl
13:33:53 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
13:34:03 × troydm quits (~troydm@user/troydm) (Ping timeout: 260 seconds)
13:34:07 <merijn> I'm not sure there's any effect-handling library I'd recommend :p
13:34:33 × xff0x quits (~xff0x@p3326132-ipngn2103sapodori.hokkaido.ocn.ne.jp) (Ping timeout: 268 seconds)
13:34:42 × v0id_ptr quits (~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 272 seconds)
13:35:11 <boxscape_> that's fair. I recently tried out fused-effects because of its low dependency footprint and found it fairly nice to use
13:35:34 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 260 seconds)
13:35:48 × king_gs quits (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60) (Ping timeout: 260 seconds)
13:36:11 × mei quits (~mei@user/mei) (Quit: mei)
13:38:57 <boxscape_> especially because I have differently type Writers that become active at different points, which I think would be quite a bit harder to achieve with mtl
13:41:04 <merijn> mtl classes are bad anyway
13:41:28 <merijn> Main use for it is "slightly reduced boilerplate over using transformers directly"
13:42:13 <Inst> also, question, are there any texts on how to design a custom effects system over IO?
13:42:15 <boxscape_> isn't the main idea that you can put in different implementations for testing and production? Or is that what you're referring to?
13:42:27 <Inst> monad trans is over any monad, but here I just want a monad transformer over IO only
13:42:52 <Inst> so i can, somehow, limit the ability to do disk writs, network access, etc
13:44:01 <geekosaur> sounds like you want RIO
13:44:03 <merijn> boxscape_: the mtl-style classes idea is good. But the actual mtl classes are bad in that they're overly generic which means they're bad in external APIs
13:44:19 <boxscape_> ah, I see
13:44:40 <merijn> since you can only have one Writer/Reader/State/whatever
13:44:44 <boxscape_> right
13:45:19 <merijn> So exposing the actual classes is bad, meaning the main use is using the classes inside your own code to avoid tedious lifting and exposing some custom class that's more tightly scoped
13:48:01 crazazy joins (~user@130.89.171.62)
13:48:02 mei joins (~mei@user/mei)
13:48:05 <Inst> looking up RIO now, thanks
13:48:41 <Inst> also, why isn't default overloaded, or at least modified so it works for all 3 classes of literals (list, string, number)?
13:48:53 <boxscape_> geekosaur Inst isn't RIO kind of the opposite though? I.e. the explicitly don't limit what you can do, you're always in Reader + IO
13:49:17 <Inst> i was thinking it was that way, i.e, ReaderT pattern
13:49:29 <geekosaur> think you may have the wrong RIO in mind, it's not Reader, it's a restricted IO context
13:49:36 <boxscape_> oh
13:49:47 <boxscape_> I was thinking of https://hackage.haskell.org/package/rio
13:50:06 <geekosaur> no, I think this is part of MonadBaseControl and friends
13:50:11 <boxscape_> I see
13:51:00 <geekosaur> and the RIP level controls what I/O higher levels of the stack are allowed to perform
13:51:03 <Inst> hmmm
13:51:04 <Inst> https://www.reddit.com/r/haskell/comments/hqdjem/can_you_restrict_the_range_of_side_effects_that/
13:51:05 <geekosaur> *RIO
13:51:45 <boxscape_> Inst: with something like fused-effects you would define a Network effect and then an IO Carrier for that effect, not sure how exactly that would be done with mtl though
13:52:37 <Inst> effect systems are almost ready, or at least, no longer purely alpha, since, and honestly I don't fully understand it, lexilambda / alexisking fixed the performance problem by enabling first-class support for delimited continuation-based effects
13:53:31 × cods quits (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 265 seconds)
13:53:44 cods joins (~fred@82-65-232-44.subs.proxad.net)
13:53:46 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
13:55:48 cheater_ joins (~Username@user/cheater)
13:58:40 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
13:58:43 cheater_ is now known as cheater
14:00:14 Kuttenbrunzer joins (~Kuttenbru@2a02:8108:8b80:1d48::c0f7)
14:04:37 festive_kurbus joins (~festive_k@user/kurbus)
14:05:11 × acidjnk quits (~acidjnk@p200300d6e7137a34b1a3218fa39d995d.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
14:06:04 acidjnk joins (~acidjnk@p200300d6e7137a8505fc654aa94777dc.dip0.t-ipconnect.de)
14:11:33 jakalx parts (~jakalx@base.jakalx.net) ()
14:12:38 fizbin joins (~fizbin@user/fizbin)
14:17:35 thegeekinside joins (~thegeekin@189.217.82.244)
14:18:42 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
14:23:09 jakalx joins (~jakalx@base.jakalx.net)
14:27:38 ystael joins (~ystael@user/ystael)
14:28:10 <Guest5476> Current del.conts inplementation isn't fast and ofc it can be slower, that freemonads if you use continuations too much. The most benefit you will get of them of you will use stack capture rarely. Basically, they are needed only for a complex effects like NonDet/Coroutine, all other stuff should be implemented as "ReaderT Handlers IO" to be fast (like in "cleff"/"effectful").
14:29:35 <Guest5476> You can read about why it is not fast here: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7942
14:33:27 × gensyst quits (gensyst@user/gensyst) (Quit: Leaving)
14:37:30 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
14:37:44 <boxscape_> oh, hadn't heard about cleff yet
14:39:07 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
14:40:40 cheater_ joins (~Username@user/cheater)
14:41:40 beefbambi joins (~beefbambi@183.82.26.190)
14:43:27 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
14:43:35 cheater_ is now known as cheater
14:46:15 jinsun joins (~jinsun@user/jinsun)
14:48:36 × pie_ quits (~pie_bnc@user/pie/x-2818909) ()
14:51:18 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
14:51:19 × beefbambi quits (~beefbambi@183.82.26.190) (Read error: Connection reset by peer)
14:51:34 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
14:51:50 king_gs joins (~Thunderbi@187.201.110.169)
14:52:00 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
14:52:04 pie_ joins (~pie_bnc@user/pie/x-2818909)
14:52:15 × pie_ quits (~pie_bnc@user/pie/x-2818909) (Client Quit)
14:52:19 beefbambi joins (~beefbambi@183.82.26.190)
14:52:54 cheater_ joins (~Username@user/cheater)
14:53:01 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
14:53:05 festive_kurbus joins (~festive_k@user/kurbus)
14:53:16 jinsun joins (~jinsun@user/jinsun)
14:56:20 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
14:56:31 cheater_ is now known as cheater
14:57:58 Lycurgus joins (~juan@user/Lycurgus)
15:00:50 × beefbambi quits (~beefbambi@183.82.26.190) (Ping timeout: 246 seconds)
15:01:12 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
15:03:47 × mestre quits (~mestre@191.177.185.178) (Quit: Lost terminal)
15:06:27 pie_ joins (~pie_bnc@user/pie/x-2818909)
15:09:29 mikoto-chan joins (~mikoto-ch@85-76-38-223-nat.elisa-mobile.fi)
15:11:09 <Inst> thinking, quickly, are there HOF useful for IO code?
15:11:16 <Inst> well, i mean, there's traverse
15:11:27 <Rembane> Yes!
15:11:30 igghibu joins (~igghibu@91.193.5.10)
15:12:24 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
15:12:39 <Inst> one of the formulations i have that are probably wrong right now
15:12:46 <Inst> functional programming is for manipulating data
15:12:51 <Inst> transforming data, etc
15:13:17 <Rembane> Or creating a series of instructions that are then executed.
15:13:19 <Inst> imperative programming is for control flow, i.e, getting data from the outside world and pushing data into the outside world
15:13:27 <Inst> yup, which is the essence of the IO monad, no, Rembane?
15:13:38 <Rembane> Inst: Indeed
15:13:50 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
15:13:53 MajorBiscuit joins (~MajorBisc@83.22.42.172.ipv4.supernova.orange.pl)
15:14:02 <Inst> but does it have to be that way? I.e, are there more aggressive transformations I can do to create IO actions with FP?
15:15:15 <Rembane> You can usually move many things away from the IO-monad and have them evaluated in pure functions, but that usually means that your programs get more of a batch-feeling.
15:15:21 <Rembane> *batch-processing-feeling
15:16:42 <Inst> is that a bad thing?
15:18:25 <Rembane> Not really IMO.
15:18:56 <Inst> and afaik FRP, I don't really understand it, but FRP should be able to combine IO code together elegantly
15:18:58 <Rembane> But that means that when you make a monad transformer stack, you put Identity at the bottom instead of IO and you need a bit more code to handle that.
15:19:23 × mikoto-chan quits (~mikoto-ch@85-76-38-223-nat.elisa-mobile.fi) (Ping timeout: 268 seconds)
15:19:45 <Inst> well monads / monad transformers aren't pure by some definition of pure
15:19:49 <Rembane> I haven't understood how FRP works, so someone else here can probably talk more about that.
15:19:55 <Rembane> Which definition?
15:20:19 <Inst> if monads are considered to have the property of defining some effect, code working within monads are all impure
15:20:36 <Inst> of course, by other definitions, even IO is pure
15:20:41 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
15:20:44 <Inst> since it just creates a script, as opposed to actually being a script
15:21:33 <Rembane> I'm of the opinion that IO isn't pure regardless of where it shows up, while the other monads are pure.
15:23:35 × king_gs quits (~Thunderbi@187.201.110.169) (Ping timeout: 246 seconds)
15:23:55 <c_wraith> I'm of the opinion that IO isn't green, too.
15:24:42 <Rembane> It's a sweet moon though
15:24:52 <c_wraith> purity is a property of functions. IO values aren't functions
15:25:14 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
15:25:54 <Guest5476> @type IO
15:25:55 <lambdabot> error: Data constructor not in scope: IO
15:26:20 <Guest5476> sadly :(
15:26:21 <boxscape_> %:kind IO
15:26:24 <boxscape_> % :kind IO
15:26:24 <yahb2> IO :: * -> *
15:26:38 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765)
15:26:40 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:fabd:1d4c:3d9a:76e1) (Quit: WeeChat 2.8)
15:27:21 <mauke> IO is pure because it always returns the same type for the same argument
15:27:26 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
15:27:37 <boxscape_> good point
15:27:44 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
15:27:48 <merijn> Rembane: Your opinion is objectively wrong, so there's that
15:27:52 <merijn> :p
15:27:59 <c_wraith> you mean functions that return IO values always return the same IO value for given arguments?
15:28:04 <Rembane> merijn: That IO is a sweet moon or the other one? :)
15:28:10 <Guest5476> Ok, answer to the "@type IO" should be something like "(State# RealWorld# -> (# a, State# RealWorld# #)) -> IO a"
15:28:10 Sgeo joins (~Sgeo@user/sgeo)
15:28:12 <boxscape_> c_wraith no the type constructor is pure
15:28:12 <c_wraith> Functions and IO are just different things.
15:28:20 <c_wraith> boxscape_: ah, good point
15:29:04 <mauke> @src IO
15:29:04 <lambdabot> Source not found. And you call yourself a Rocket Scientist!
15:29:04 <merijn> Guest5476: The constructor for IO is generally never in scope
15:29:06 <c_wraith> Guest5476: that's sort of an answer to the wrong question. It's not what IO is, it's how one particular compiler chooses to represent it internally
15:29:35 <Inst> have you met morrow, btw?
15:30:22 <Inst> looking at state# realwolrd# -> (# a, state# realworld# #), I can't help but thing about some meme he posted about how ST, IO, STM, and a bunch of other thing have the same underlying representation
15:30:31 <Guest5476> the definition of purity isn't clear for me. I prefer the term "referential transparency`, which is well defined
15:30:55 <merijn> Inst: The implementation of IO and ST are both implemented using the same ST#, yeah
15:30:59 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765) (Ping timeout: 255 seconds)
15:31:24 <merijn> Inst: The (very readable) paper "Lazy Functional State Threads" covers that as well as the trick that makes ST safe
15:31:59 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds)
15:32:27 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
15:33:47 <Inst> taken from morrow
15:33:48 <Inst> https://cdn.discordapp.com/attachments/505367988166197268/1057249769745035314/image.png
15:34:50 <Inst> https://www.microsoft.com/en-us/research/wp-content/uploads/1994/06/lazy-functional-state-threads.pdf
15:36:18 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
15:36:27 ChaiTRex joins (~ChaiTRex@user/chaitrex)
15:37:54 <Guest5476> c_wraith: yes, but IO monad is not a source of impurity in ghc/haskell, the source are rts builtins and ffi functions. IO monad in fact makes them reference transparent by this hack with World -> (a, World). I.e. task of IO monad is to make impure actions reference transparent in the type interface layer.
15:38:18 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
15:38:45 <Inst> so, curious, is IORef impure?
15:38:53 <c_wraith> Guest5476: yes, but that's implementation. Semantics are totally different.
15:39:00 <c_wraith> Inst: IORefs aren't functions
15:39:11 <Inst> IORef are values
15:39:19 <c_wraith> Is the number 5 pure?
15:39:40 <Inst> is newIORef impure?
15:39:46 <merijn> Inst: No
15:39:51 <c_wraith> no, it returns the same IO value every time
15:40:43 <merijn> Inst: Purity is a property of functions and IO (and it's effects) are not directly observable inside pure functions, so the fact that effects happen at runtime is irrelevant to purity
15:41:01 king_gs joins (~Thunderbi@187.201.110.169)
15:41:16 <Inst> that's the "everything in Haskell is pure" argument
15:41:30 <byorgey> Also, 'purity' is not an absolute concept, it depends on your frame of reference.
15:41:36 <c_wraith> not everything in Haskell is pure. unsafePerformIO is very not pure.
15:41:39 <Inst> ah, i see what you mean, the RTS is actually the element creating effects, so it's impure
15:42:52 <oak-> <Rembane> "I haven't understood how FRP..." <- My recommendation is, take reflex-frp and start building something. The learning curve might be steep, but then suddenly there might be a moment of enlightenment
15:43:53 <Inst> i was under the impression that reflex is basically arcana, and that newbies are better off with threepenny-gui?
15:44:05 mikoto-chan joins (~mikoto-ch@2001:999:784:1eb1:d8d9:bc17:d29e:4a68)
15:44:26 <merijn> tbh, I think all the FRP frameworks are bad for understanding FRP
15:44:36 <merijn> although there's also some confusion in the question of "how FRP works"
15:44:52 <c_wraith> Notably, unsafePerformIO is a function. (Or at least its type claims it is. Mathematicians might disagree.) As such, the question "is this pure?" actually is answerable.
15:44:55 × acidjnk quits (~acidjnk@p200300d6e7137a8505fc654aa94777dc.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
15:45:01 <merijn> FRP is an idea/model on how to describe semantics of something. The implementation is, mostly, irrelevant to that
15:45:11 <Guest5476> Does reflex-frp better than reactive-banana? For example, if I want to use it with sdl2
15:45:28 × elevenkb quits (~elevenkb@105.226.98.103) (Quit: Client closed)
15:45:29 <merijn> I think it helps to understand FRP first before you worry about understanding the implementations people have made
15:46:18 <Guest5476> all real-world frp implementations are very painful
15:46:20 <merijn> Else you get these weird confusions like all the javascript "FRP" libraries that are really just "event loops" and have nothing remotely resembling FRP
15:46:41 <merijn> Guest5476: Mostly, yes, because we haven't quite figured out how to make a nice *and* efficient implementation of the idea
15:47:46 <Inst> what happened with Elm, anyways?
15:48:10 <Inst> the language creator supposedly started as an FRP maker, then Elm did event handlers instead
15:48:11 <geekosaur> apparently reflex-frp will become a lot nicer if Arrow is gutted and rewritten
15:49:06 <Guest5476> elm uses TEA (The Elm Archtecture), which is simpler that FRP, but a little cringe
15:49:16 <Guest5476> *than
15:51:40 × razetime quits (~Thunderbi@49.207.222.244) (Ping timeout: 252 seconds)
15:54:16 cheater_ joins (~Username@user/cheater)
15:54:18 <Guest5476> I am one of "telegram-bot-simple" contributors and you can see TEA in that library. Basic idea is that you define input parser, that will return some Action (user-defined ADT) and handler, that will produce some action for each constructor of ADT. Handler can return new action and in this way you can create complex action sequences.
15:54:55 <merijn> Right, but that's just an event loop and nothing remotely resembling FRP :p
15:58:00 <Guest5476> Yes, and it's not as flexible as FRP and you need to write boilerplate to use it.
15:58:13 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
15:58:23 cheater_ is now known as cheater
15:59:00 jmdaemon joins (~jmdaemon@user/jmdaemon)
16:00:05 × unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: You have been kicked for being idle)
16:00:07 × king_gs quits (~Thunderbi@187.201.110.169) (Read error: Connection reset by peer)
16:01:08 random-jellyfish joins (~random-je@user/random-jellyfish)
16:01:20 king_gs joins (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60)
16:07:21 × boxscape_ quits (~boxscape_@213.52.37.155) (Quit: Client closed)
16:07:53 × king_gs quits (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60) (Ping timeout: 265 seconds)
16:11:37 × mikoto-chan quits (~mikoto-ch@2001:999:784:1eb1:d8d9:bc17:d29e:4a68) (Quit: WeeChat 3.6)
16:18:10 ddellacosta joins (~ddellacos@143.244.47.100)
16:20:40 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
16:21:22 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765)
16:24:50 × igghibu quits (~igghibu@91.193.5.10) (Quit: igghibu)
16:25:05 × jumper149 quits (~jumper149@base.felixspringer.xyz) (Quit: WeeChat 3.7.1)
16:25:13 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
16:32:30 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
16:33:36 tremon joins (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl)
16:35:08 × Luj3 quits (~Luj@2a01:e0a:5f9:9681:b50a:fe5:ba94:4ae) (Quit: The Lounge - https://thelounge.chat)
16:36:16 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765) (Remote host closed the connection)
16:37:08 Luj3 joins (~Luj@2a01:e0a:5f9:9681:df7f:d915:e87b:faad)
16:37:18 <Guest5476> @run [1.0, 3.0 .. 6.0]
16:37:21 <lambdabot> [1.0,3.0,5.0,7.0]
16:37:30 mikoto-chan joins (~mikoto-ch@2001:999:584:6e91:67d8:6456:f9ef:4fd5)
16:37:37 <Guest5476> @run [1, 3 .. 6]
16:37:39 <lambdabot> [1,3,5]
16:38:57 <Guest5476> "base" is broken at all, let's rename it into "cringe"
16:39:05 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
16:41:02 Nixkernal joins (~Nixkernal@2a02:1210:2e5f:d500:2909:4436:bf83:e030)
16:41:06 <[exa]> > [1.0, 1.1 .. 2.1] -- <-- Guest5476
16:41:06 <geekosaur> that, sadly, is specced by the Report. they give some justification or other for it
16:41:08 <lambdabot> [1.0,1.1,1.2000000000000002,1.3000000000000003,1.4000000000000004,1.50000000...
16:41:24 <[exa]> Guest5476: floats are broken, not base.
16:41:57 <[exa]> (unfortunately the actual reason didn't display...)
16:42:08 <[exa]> > [1.0, 1.1 .. 1.4]
16:42:11 <lambdabot> [1.0,1.1,1.2000000000000002,1.3000000000000003,1.4000000000000004]
16:42:14 <[exa]> here we go
16:42:46 festive_kurbus joins (~festive_k@user/kurbus)
16:42:51 <[exa]> main takeaway: never use floats for anything that should be precise
16:44:13 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765)
16:45:04 <Guest5476> geekosaur: where is it in the Report? I don't see here nothing about floats: https://www.haskell.org/definition/haskell2010.pdf
16:46:34 slack1256 joins (~slack1256@186.11.41.156)
16:46:34 troydm joins (~troydm@user/troydm)
16:46:56 <int-e> Guest5476: look for the Enum class?
16:47:15 × johnjaye quits (~pi@173.209.64.74) (Ping timeout: 256 seconds)
16:47:41 <int-e> Guest5476: page 80, end of section 6.3.4
16:47:44 <geekosaur> For Float and Double, the semantics of the enumFrom family is given by the rules for Int above, except that the list terminates when the elements become greater than e3 + i∕2 for positive increment i, or when they become less than e3 + i∕2 for negative i. https://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1270006.3
16:49:13 <geekosaur> I guess it doesn't give the justification, but [exa] demonstrated it
16:49:49 <[exa]> like, it might be better
16:49:56 <int-e> > last $ [1, 1.1 .. 2.1]
16:49:58 <lambdabot> 2.100000000000001
16:50:13 gaff joins (~gaff@49.207.203.30)
16:50:42 <[exa]> but people would need to carefully compute the epsilons and epsilon accumulation, which brings in more dark magic for patching a use that's wrong in the first place
16:50:50 × cheater quits (~Username@user/cheater) (Read error: Connection reset by peer)
16:50:54 <Guest5476> ok, thanks for the explanation.
16:51:20 <int-e> You could argue that the enum instance for floats is bogus. And the Num instance too... and the Eq instance... but at that point you'll make floats useless in Haskell.
16:51:21 <[exa]> yw :] this surfaces quite often tbh, it's not intuitive at all at the first sight :D
16:51:35 cheater joins (~Username@user/cheater)
16:52:24 johnjaye joins (~pi@173.209.64.74)
16:52:40 <eldritchcookie[4> is there something like template haskell but interactive?
16:52:45 <int-e> > toEnum (fromEnum pi) :: Double
16:52:47 <lambdabot> 3.0
16:53:00 <int-e> toEnum . fromEnum is the identity, so pi is 3... ;-)
16:53:30 <[exa]> eldritchcookie[4: I wish. :]
16:53:31 <int-e> eldritchcookie[4: emacs?
16:54:41 <int-e> (I'm not sure what kind of interaction you want here)
16:55:56 trev joins (~trev@user/trev)
16:56:54 × phma quits (~phma@host-67-44-208-58.hnremote.net) (Read error: Connection reset by peer)
16:58:11 phma joins (phma@2001:5b0:2143:df48:fe85:bab7:d4d6:2e21)
16:58:20 <eldritchcookie[4> you know that vim has commands like delete line or repeat last command? i wanted something similar but that operates on a AST and is aware of code information like a statement's type
16:58:57 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
17:01:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765) (Remote host closed the connection)
17:03:30 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765)
17:03:34 <ddellacosta> eldritchcookie[4: maybe possible with HLS somehow, but no idea specifically what you'd need to get that working
17:05:33 <Inst> curious, how powerful is implicit parameters?
17:05:47 <Inst> i was asking a while back about being able to use hSpec etc to test into closures
17:06:03 <Inst> implicit parameters isn't powerful enough to do that, right?
17:06:43 acidjnk joins (~acidjnk@p200300d6e7137a857c27d2eace8e6a0b.dip0.t-ipconnect.de)
17:07:21 <eldritchcookie[4> about as powerful as the reader monad
17:08:00 × Kuttenbrunzer quits (~Kuttenbru@2a02:8108:8b80:1d48::c0f7) (Quit: Where is it)
17:09:18 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
17:10:29 × kee quits (~~kee@user/wizzwizz4) (Read error: Connection reset by peer)
17:11:11 kee joins (~~kee@user/wizzwizz4)
17:13:36 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765) (Remote host closed the connection)
17:14:05 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
17:14:10 × freeside quits (~mengwong@103.252.202.159) (Ping timeout: 252 seconds)
17:14:13 king_gs joins (~Thunderbi@187.201.110.169)
17:16:04 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
17:16:22 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 272 seconds)
17:17:37 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:20:20 <Inst> apparently tons of people hate implicit parameters because it screws with semantics in instancing
17:20:48 <Inst> and my question a while back about default declarations for overloaded strings is that we actually do support that
17:20:56 <Inst> we only don't support default declarations for overloadedlists
17:24:18 marinelli joins (~marinelli@gateway/tor-sasl/marinelli)
17:24:34 × teo quits (~teo@user/teo) (Ping timeout: 268 seconds)
17:26:43 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
17:27:01 × marinelli quits (~marinelli@gateway/tor-sasl/marinelli) (Client Quit)
17:27:05 jmdaemon joins (~jmdaemon@user/jmdaemon)
17:28:03 freeside joins (~mengwong@103.252.202.159)
17:28:16 × johnjaye quits (~pi@173.209.64.74) (Ping timeout: 268 seconds)
17:31:04 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765)
17:32:34 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
17:33:02 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
17:33:16 jero98772 joins (~jero98772@190.158.28.44)
17:33:25 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
17:34:33 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
17:36:06 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:36:40 johnjaye joins (~pi@173.209.64.74)
17:41:59 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9552:b93e:dc75:3765) (Remote host closed the connection)
17:43:30 × nschoe quits (~q@141.101.51.197) (Quit: Switching off)
17:45:00 × freeside quits (~mengwong@103.252.202.159) (Ping timeout: 260 seconds)
17:46:13 sibnull[m] joins (~sibnullma@2001:470:69fc:105::1:1291)
17:49:20 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
17:49:40 festive_kurbus joins (~festive_k@user/kurbus)
17:49:49 × Luj3 quits (~Luj@2a01:e0a:5f9:9681:df7f:d915:e87b:faad) (Quit: The Lounge - https://thelounge.chat)
17:50:41 Luj3 joins (~Luj@2a01:e0a:5f9:9681:df7f:d915:e87b:faad)
17:51:56 × myyo quits (~myyo@71-211-142-215.hlrn.qwest.net) ()
17:54:07 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 256 seconds)
17:54:24 caryhartline joins (~caryhartl@2600:1700:2d0:8d30:54e9:67d:a342:e67)
18:00:58 freeside joins (~mengwong@103.252.202.159)
18:02:22 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
18:02:59 jmdaemon joins (~jmdaemon@user/jmdaemon)
18:03:10 <eldritchcookie[4> how can i make a program like vim that can both be used graphically and from the terminal?
18:05:43 <Guest5476> you have to provide two different interfaces, like haskell library with all logic and two executables: graphic one and brick tui one. Haskell library can be public, so anyone will have access to it
18:05:50 <geekosaur> I don't know how you do this from Wayland but for X11 you can check for `"DISPLAY"` in the environment and switch to graphical mode
18:06:21 <geekosaur> and yes, you have to include the logic for both, or use internal subbprograms one of which is text only and the other GUI
18:06:39 <mauke> isn't vim the console version and gvim the graphical version?
18:07:36 <geekosaur> vim is even trickier as it can use `"WINDOWID"` to detect it's running in a terminal emulator and switch on things like smart paste
18:07:44 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
18:07:58 crazazy` joins (~user@130.89.173.127)
18:08:00 <geekosaur> and mouse awareness
18:10:07 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
18:10:12 × crazazy quits (~user@130.89.171.62) (Ping timeout: 272 seconds)
18:12:46 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
18:14:38 × king_gs quits (~Thunderbi@187.201.110.169) (Ping timeout: 272 seconds)
18:15:46 × MajorBiscuit quits (~MajorBisc@83.22.42.172.ipv4.supernova.orange.pl) (Ping timeout: 268 seconds)
18:17:42 × asivitz quits (uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity)
18:21:01 × gaff quits (~gaff@49.207.203.30) (Remote host closed the connection)
18:21:21 king_gs joins (~Thunderbi@187.201.110.169)
18:26:15 × thongpv quits (~thongpv87@2402:9d80:3ca:5321:90ac:c773:b44c:7ddf) (Ping timeout: 252 seconds)
18:27:52 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
18:31:09 crazazy`` joins (~user@130.89.171.62)
18:32:33 × mbuf quits (~Shakthi@49.204.130.110) (Quit: Leaving)
18:33:11 × crazazy` quits (~user@130.89.173.127) (Ping timeout: 264 seconds)
18:34:21 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 256 seconds)
18:37:57 econo joins (uid147250@user/econo)
18:40:04 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
18:41:00 × mikoto-chan quits (~mikoto-ch@2001:999:584:6e91:67d8:6456:f9ef:4fd5) (Ping timeout: 260 seconds)
18:41:47 mikoto-chan joins (~mikoto-ch@2001:999:600:eb36:4d7:2a51:6d5f:b1e5)
18:42:10 × mizlan quits (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
18:43:55 mizlan joins (~mizlan@c-67-169-7-31.hsd1.ca.comcast.net)
18:49:58 × trev quits (~trev@user/trev) (Remote host closed the connection)
18:52:07 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
18:52:34 elevenkb joins (~elevenkb@105.226.98.103)
18:55:16 slac47838 joins (~slack1256@186.11.41.156)
18:57:32 × slack1256 quits (~slack1256@186.11.41.156) (Ping timeout: 255 seconds)
18:58:30 × slac47838 quits (~slack1256@186.11.41.156) (Remote host closed the connection)
18:59:31 <monochrom> My evil hypothetical solution is to just write for the graphics version then use mplayer's ascii-art driver for the "text" version >:D
19:00:21 × king_gs quits (~Thunderbi@187.201.110.169) (Read error: Connection reset by peer)
19:00:46 <monochrom> But otherwise yeah you are writing two applications, not one application that works both ways.
19:01:22 <c_wraith> hopefully you can share most of the logic between them
19:01:28 <c_wraith> ... hopefully
19:01:51 king_gs joins (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60)
19:02:03 <monochrom> We know how abstraction boundaries become extremely leaky and messy in practice :)
19:02:26 <geekosaur> with great care you can get it so much (but not all) of the event loop and the display logic are the differences
19:02:53 <geekosaur> but there are tradeoffs there and it'll feel clunky in one or the other or even both
19:03:59 <monochrom> Netscape and/or Mozilla devs spent a lot of effort over a long time figuring out their abstraction layers for decoupling from Windows vs X vs Mac etc.
19:04:48 <monochrom> I mean, they were successful eventually, but it was not obvious at all and there were failures and lessons and trying again.
19:05:47 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
19:06:13 <monochrom> OTOH given that everyone expected a web browser project to be a long-term project, it was worth the effort.
19:08:06 × kenaryn quits (~aurele@89-88-44-27.abo.bbox.fr) (Client Quit)
19:08:17 <monochrom> Whereas for a smaller or shorter-term project, you are not actually certain that one logic over two backends is really less effort than two logics, considering the effort in discovering where to even draw the boundaries.
19:08:24 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
19:08:36 × kenaryn quits (~aurele@89-88-44-27.abo.bbox.fr) (Client Quit)
19:11:00 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
19:11:33 × king_gs quits (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60) (Ping timeout: 265 seconds)
19:12:46 beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
19:14:44 <monochrom> OK on second thought, use reactive functional programming or tangible values, then it is very clear cut. :D
19:17:09 jmdaemon joins (~jmdaemon@user/jmdaemon)
19:18:02 × freeside quits (~mengwong@103.252.202.159) (Ping timeout: 268 seconds)
19:19:49 king_gs joins (~Thunderbi@187.201.110.169)
19:23:10 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
19:23:25 × mikoto-chan quits (~mikoto-ch@2001:999:600:eb36:4d7:2a51:6d5f:b1e5) (Ping timeout: 252 seconds)
19:28:53 nasrudin__ joins (~nasrudin_@wsip-174-64-239-10.sd.sd.cox.net)
19:29:30 × nasrudin__ quits (~nasrudin_@wsip-174-64-239-10.sd.sd.cox.net) (Client Quit)
19:30:18 freeside joins (~mengwong@103.252.202.159)
19:32:39 × king_gs quits (~Thunderbi@187.201.110.169) (Ping timeout: 255 seconds)
19:34:25 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds)
19:36:29 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
19:40:56 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving)
19:41:41 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:45:03 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
19:45:35 festive_kurbus joins (~festive_k@user/kurbus)
19:50:49 <[exa]> honestly, ssh ssh.chat >>>>> reactive web apps
19:53:26 jmdaemon joins (~jmdaemon@user/jmdaemon)
19:54:30 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
19:56:11 waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
19:56:21 MajorBiscuit joins (~MajorBisc@83.22.42.172.ipv4.supernova.orange.pl)
20:03:45 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
20:04:07 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
20:05:23 <monochrom> Interesting. Heh.
20:11:31 × paulpaul1076 quits (~textual@95-29-5-111.broadband.corbina.ru) (Remote host closed the connection)
20:11:41 × crazazy`` quits (~user@130.89.171.62) (Ping timeout: 268 seconds)
20:12:41 crazazy`` joins (~user@2001:67c:2564:331:99e0:8a41:5e7b:7545)
20:13:50 panovia joins (~user@user/siracusa)
20:15:42 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6169:588f:5c00:bfd8)
20:18:39 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
20:19:07 Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
20:20:25 jmdaemon joins (~jmdaemon@user/jmdaemon)
20:23:22 <[exa]> y we no brick apps over ssh
20:25:22 <monochrom> I have a hunch that the kind of people who like ssh are also the kind of people who like line-wise interactions.
20:27:19 <[exa]> more like, dislike https and CAs. :D
20:31:55 <Inst> hmmm, wondering, is there an active discipline of declarative Haskell?
20:33:59 ralu1 joins (~ralu@static.211.245.203.116.clients.your-server.de)
20:36:30 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
20:36:40 × festive_kurbus quits (~festive_k@user/kurbus) (Quit: Client closed)
20:37:59 × avicenzi quits (~avicenzi@2a00:ca8:a1f:b004::c32) (Ping timeout: 264 seconds)
20:38:01 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
20:39:47 beefbambi joins (~beefbambi@183.82.178.13)
20:41:45 × beefbambi quits (~beefbambi@183.82.178.13) (Read error: Connection reset by peer)
20:41:56 beefbambi joins (~beefbambi@183.82.178.13)
20:43:13 <[exa]> Inst: "discipline"?
20:43:13 × beefbambi quits (~beefbambi@183.82.178.13) (Read error: Connection reset by peer)
20:43:22 beefbambi joins (~beefbambi@183.82.178.13)
20:43:34 <Inst> one of my fascinations with Haskell is the ability to define arbitrary sentences as correct code
20:43:44 <Inst> specify, then define, is sort of a Haskell superpower
20:48:15 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6169:588f:5c00:bfd8) (Remote host closed the connection)
20:48:18 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
20:49:19 <monochrom> In this case, discipline = area of research
20:50:02 <monochrom> or perhaps area of study, or perhaps area of practice, area of work, etc.
20:50:10 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
20:50:38 <monochrom> But I have my question that has been bothering me forever. But it's English, not Haskell. and : etc :: or : ???
20:51:10 × beefbambi quits (~beefbambi@183.82.178.13) (Read error: Connection reset by peer)
20:51:27 beefbambi joins (~beefbambi@183.82.178.13)
20:52:59 <mauke> yada yada yada
20:53:12 unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36)
20:54:04 <darkling> Not sure I get the question.
20:54:37 <mauke> what is to "or" as "etc" is to "and"?
20:55:15 <darkling> I kind of got that, but it doesn't make sense. What kind of relationship between "etc" and "and" do you mean?
20:55:22 <darkling> (Well, it doesn't make sense to me)
20:55:51 × MajorBiscuit quits (~MajorBisc@83.22.42.172.ipv4.supernova.orange.pl) (Ping timeout: 260 seconds)
20:55:57 <monochrom> etc is Latin for "and so on"
20:56:16 <mauke> et cetera = "and [the] other/remaining [things]"
20:57:15 <darkling> Yes, I know that too.
20:57:20 <monochrom> Perhaps I'm pompous, because "or something" is an existing solution, just not in Latin. :)
20:57:37 <geekosaur> I don't think "vel cetera" was a construct
20:57:39 MajorBiscuit joins (~MajorBisc@c-001-005-049.client.tudelft.eduvpn.nl)
20:58:12 <darkling> If I wanted a disjunctive list by example, I think I'd probably write "A or B or ..."
20:58:22 <darkling> (Literal ellipsis)
20:58:27 <geekosaur> tbh I'd just abuse "etc." there
20:58:34 <geekosaur> not like we're actually speaking Latin
20:59:06 <darkling> Not sure that "A or B etc" or "A or B or etc" would sit well with me.
20:59:08 <geekosaur> ("or etc.")
20:59:10 <mauke> I'd just use "velc." Who's going to stop me?
20:59:20 <darkling> mauke: Your copy editors. ;)
20:59:29 <geekosaur> everyone who has no idea what you're on about 🙂
20:59:33 <monochrom> vlc :)
21:00:23 <mauke> pfft, anyone who had Latin in school should know what I mean
21:01:00 <geekosaur> I am quite certain I was the only one in my school who learned any Latin, and I had to dig for someone to teach it to me
21:01:42 <darkling> I had it for 3 years. The only reason I did the third year was because it was a choice between Latin and history, and history lost.
21:01:50 <mauke> obviously you went to the wrong school. my first foreign language was Latin (followed by English two years later) :-)
21:02:00 <geekosaur> (and ended up dropping it as I couldn't handle that, half day at CWRU, and getting ready for graduation all at the same time)
21:02:26 <geekosaur> our only options at that level were Spanish and French, sadly
21:02:27 <monochrom> I didn't have Latin in school, but I sought out Latin for "or" and found "vel" (and one other). I did this because in LaTeX I didn't know that \land and \lor existed, so I made my own \et = \wedge and \vel = \vee.
21:03:57 <monochrom> Eh Spanish or French would be "close enough" >:D
21:04:41 <mauke> I'd prefer Spanish *or* French
21:04:44 <monochrom> I mean, which language does "Latin" America speak?! >:D
21:05:19 × ralu1 quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
21:05:28 <geekosaur> IMy French is a bit rusty but I can still read it okay. Sadly I should probably have gone with Spanish, it'd have been more practically useful
21:05:56 <monochrom> "I want to learn Haskell but my school only offers Purescript." "That will have to do." >:)
21:06:16 ralu1 joins (~ralu@static.211.245.203.116.clients.your-server.de)
21:06:24 <monochrom> Or maybe I mean Typescript. Whichever one is worse.
21:06:53 <geekosaur> typescript is havascript with types. purescript is the one that tries to be haskell
21:06:59 <mauke> which one was the one with malicious scoping? coffeescript?
21:07:00 <geekosaur> *javascript
21:08:29 <geekosaur> https://gist.github.com/showell/1512100 ?
21:08:54 <ggVGc> confusing... there's a monokrome in #vim
21:09:08 <geekosaur> anyway I thought it was lisp (and to some extent python) that had malicious scoping 😈
21:09:29 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
21:10:32 × ralu1 quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
21:10:56 <mauke> python is merely broken. coffeescript is actively malicious
21:11:21 ralu1 joins (~ralu@static.211.245.203.116.clients.your-server.de)
21:11:23 × MajorBiscuit quits (~MajorBisc@c-001-005-049.client.tudelft.eduvpn.nl) (Ping timeout: 260 seconds)
21:11:46 <mauke> heh, I like how the rules 1-6 are partial (in that they don't cover all possibilities)
21:14:30 × beefbambi quits (~beefbambi@183.82.178.13) (Read error: Connection reset by peer)
21:15:08 beefbambi joins (~beefbambi@183.82.178.13)
21:16:41 kris7t joins (~kris7t@marussy.com)
21:18:12 MajorBiscuit joins (~MajorBisc@83.22.42.172.ipv4.supernova.orange.pl)
21:19:31 × beefbambi quits (~beefbambi@183.82.178.13) (Ping timeout: 268 seconds)
21:19:43 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
21:20:45 × iteratee quits (~kyle@162.218.222.107) (Read error: Connection reset by peer)
21:21:16 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
21:25:23 iteratee joins (~kyle@162.218.222.107)
21:28:09 × zeenk quits (~zeenk@2a02:2f04:a110:ac00::7fe) (Quit: Konversation terminated!)
21:28:16 × crazazy`` quits (~user@2001:67c:2564:331:99e0:8a41:5e7b:7545) (Ping timeout: 252 seconds)
21:28:29 crazazy`` joins (~user@130.89.171.62)
21:30:00 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
21:30:49 jakalx parts (~jakalx@base.jakalx.net) ()
21:33:09 <unit73e> geekosaur, no contest. the javascript with types pisses me off more than javascript because it's just as poorly designed.
21:33:36 <unit73e> optionals that can be undefined is enough for me
21:34:46 beefbambi joins (~beefbambi@183.82.178.13)
21:35:17 <unit73e> fake haskell any day
21:37:02 × freeside quits (~mengwong@103.252.202.159) (Ping timeout: 265 seconds)
21:37:23 jakalx joins (~jakalx@base.jakalx.net)
21:48:45 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6169:588f:5c00:bfd8)
21:49:37 freeside joins (~mengwong@103.252.202.159)
21:52:11 × Kaipei quits (~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
21:52:35 Kaipei joins (~Kaiepi@nwcsnbsc03w-47-55-159-86.dhcp-dynamic.fibreop.nb.bellaliant.net)
21:54:40 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6169:588f:5c00:bfd8) (Ping timeout: 260 seconds)
22:01:05 Guest43 joins (~Guest43@185-182-71-15.net.techloq.com)
22:01:18 <Guest43> hi
22:02:32 <geekosaur> hello
22:03:00 <Guest43> what up
22:03:27 <Jadesheit[m]> hello
22:04:02 <Guest43> hi
22:04:12 <Guest43> what do you enjoy
22:05:02 × Guest43 quits (~Guest43@185-182-71-15.net.techloq.com) (Quit: Client closed)
22:05:16 <eldritchcookie[4> metaprogramming
22:05:16 <monochrom> Don't answer to answer, just don't answer. :)
22:09:43 × elevenkb quits (~elevenkb@105.226.98.103) (Ping timeout: 260 seconds)
22:12:45 × Nixkernal quits (~Nixkernal@2a02:1210:2e5f:d500:2909:4436:bf83:e030) (Quit: Leaving)
22:13:15 wootehfoot joins (~wootehfoo@user/wootehfoot)
22:13:27 king_gs joins (~Thunderbi@187.201.110.169)
22:19:00 <monochrom> Oh! I should try symlinking $HOME/.ghcup/tmp to /tmp :)
22:22:18 cheater_ joins (~Username@user/cheater)
22:24:37 × cheater_ quits (~Username@user/cheater) (Read error: Connection reset by peer)
22:24:58 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
22:25:19 cheater_ joins (~Username@user/cheater)
22:25:26 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
22:25:35 cheater_ is now known as cheater
22:26:45 × nut quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
22:27:40 × MajorBiscuit quits (~MajorBisc@83.22.42.172.ipv4.supernova.orange.pl) (Ping timeout: 252 seconds)
22:30:19 × waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Quit: WeeChat 3.7.1)
22:31:57 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
22:32:46 nut joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
22:32:47 × king_gs quits (~Thunderbi@187.201.110.169) (Read error: Connection reset by peer)
22:32:54 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
22:34:17 king_gs joins (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60)
22:44:38 MajorBiscuit joins (~MajorBisc@83.22.42.172.ipv4.supernova.orange.pl)
22:48:07 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
22:48:30 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
22:50:52 × unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Remote host closed the connection)
22:54:16 <maerwald> monochrom: too many bug reports about users running out of space on a 2GB /tmp dir
22:54:37 × ubert quits (~Thunderbi@p200300ecdf264e0ec4eebb70ae26d25f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
22:54:37 ub is now known as ubert
22:54:41 ubert1 joins (~Thunderbi@p200300ecdf264e37a5f7a1f818911c73.dip0.t-ipconnect.de)
22:55:32 <monochrom> Yeah I understand.
22:56:23 <monochrom> But then I go on to run out of space on my home directory. (Or more honestly, since you know I'm doing it in /usr/local, my /usr/local directory.)
22:58:03 <monochrom> In my case I have 3 partitions: /, /home, /usr/local. So if tmp and final destination are on different partitions, I am doing better. If they are on the same partition, I am doing worse.
22:58:25 <monochrom> But I reckon that this is highly unusual.
22:59:04 × MajorBiscuit quits (~MajorBisc@83.22.42.172.ipv4.supernova.orange.pl) (Ping timeout: 260 seconds)
22:59:28 <maerwald> monochrom: I hope `ghcup nuke` does not misbehave when you do wild symlinks, but not following symlinks on destructive operations is the standard, so it should be fine
23:00:10 mechap2 joins (~mechap@user/mechap)
23:00:33 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
23:00:37 <monochrom> No worries, I discovered that my / (therefore /tmp) isn't all that spacious either. I'm keeping the default behaviour.
23:01:13 <maerwald> you can get more control with the XDG dirs thing
23:01:24 <monochrom> Ah thanks.
23:01:55 <monochrom> Wait XDG has its notion of tmpdir and it is not TMPDIR?!
23:02:01 <maerwald> then you set the XDG dir variables only for ghcup invocations
23:02:41 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
23:03:00 <maerwald> monochrom: no
23:03:05 <maerwald> it uses: $XDG_CACHE_HOME/ghcup/tmp
23:03:26 × mechap1 quits (~mechap@user/mechap) (Ping timeout: 272 seconds)
23:03:34 <maerwald> cache is where bindists also get placed
23:04:35 <maerwald> https://www.haskell.org/ghcup/guide/#xdg-support
23:05:16 <monochrom> On the bright side, I also use LVM, so in the worst case I just move free space from one partition to another.
23:05:36 <maerwald> you can also use bind mounts, hehe
23:05:49 <monochrom> haha
23:06:15 <jackdk> This is one of the reasons I want to set up a machine with /nix on zfs. Never GC again
23:06:38 <maerwald> jackdk: can you tell nix to run on S3 bucket instead?
23:07:26 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
23:07:28 <jackdk> maerwald: you can, yeah. There are some caveats because nix isn't linked with the "identity management" part of the AWS SDK
23:07:57 <jackdk> So you can't do certain things involving assumed roles and other more exotic STS kinda stuff
23:08:32 <jackdk> Or at least, not as easily - you have to do that out-of-band and then pass the access key, secret key, and session token to Nix yourself and arrange for it to refresh properly.
23:08:47 <monochrom> "If you don't have FUSE, a classical trick is to NFS but localhost" -_-
23:10:03 × king_gs quits (~Thunderbi@2806:103e:29:45ac:af0:afaf:29e7:dd60) (Ping timeout: 248 seconds)
23:11:35 <maerwald> this reminds me of the time when the i3 wm maintainer told users to buy more RAM, when they asked for a RAM usage widget feature in i3bar
23:16:41 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 268 seconds)
23:16:47 <monochrom> haha
23:17:06 <jackdk> These days it seems like no amount of RAM is enough
23:17:47 <monochrom> It's like the author of uptime suggest users to buy newer CPUs instead.
23:18:13 <hpc> jackdk: tell me about it, as soon as i have 8 gigs to run firefox i need 16 gigs to run stable diffusion, then 32 gigs to run chrome :P
23:18:23 <hpc> and then 64 to build ghc :D
23:18:36 <monochrom> The authors of MLton did suggest buying more RAM. Whole-program static analysis and optimization is expensive.
23:18:45 <maerwald> monochrom: yeah, apparently he argued there's no way to get the EXACT Ram in use from the OS and went on to rant about some technicalities
23:18:52 <maerwald> users just wanted to avoid running into OOM
23:18:55 <maerwald> not doing science
23:19:11 <monochrom> Well actually they suggested "forget PC, use the beefy servers at your school"
23:19:37 <maerwald> obviously, the guy is a german
23:19:42 <monochrom> haha
23:20:08 <monochrom> To a large extent, on Linux, RSS is the metric to watch for, no?
23:20:18 × inversed quits (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 260 seconds)
23:21:00 <monochrom> My impression is that other unixes (Solaris, BSD) are even simpler.
23:21:00 <geekosaur> and swap in use, because linux will use available ram for caching and such
23:21:18 <hpc> i just use whatever "available" is in /bin/free
23:21:24 <monochrom> Oh wait, right, sorry, RSS is for one process, not system-wide.
23:21:43 <monochrom> OK I admit that system-wide is very tricky.
23:22:39 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
23:22:49 <monochrom> Although, yeah, users just want to estimate chance of OOM, not asking for exact science. A dumb heuristic will do.
23:23:14 <maerwald> yes, this does not go well with OCD
23:23:38 <maerwald> Windows is even worse... everything is a wiggle API
23:23:53 inversed joins (~inversed@bcdcac82.skybroadband.com)
23:24:14 <jackdk> "wiggle API"?
23:24:31 <maerwald> like... it evolved over decades... but at the same time they don't wanna break anything
23:24:37 <maerwald> so legacy decisions stay in
23:25:02 <maerwald> and they add new stuff on top to fix/workaround
23:25:36 <jackdk> Every few years, someone trips over `CON` being a special file, but I think that's been finally fixed.
23:26:25 <dolio> Since when?
23:27:10 × nut quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 268 seconds)
23:27:33 <dolio> 10 or 11?
23:29:17 × mechap2 quits (~mechap@user/mechap) (Quit: WeeChat 3.7.1)
23:29:37 mechap joins (~mechap@user/mechap)
23:30:18 elevenkb joins (~elevenkb@105.226.98.103)
23:30:41 × ft quits (~ft@p4fc2a257.dip0.t-ipconnect.de) (Remote host closed the connection)
23:32:18 <geekosaur> I thought those names were still reserved? as of the last time I looked at the KB
23:32:35 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Remote host closed the connection)
23:32:48 <jackdk> Hm, can't find it now; maybe I was too optimistic. Too many scripts using `> NUL` in scripts, etc. Maybe it was made easier to use UNC paths or something
23:37:37 fizbin joins (~fizbin@user/fizbin)
23:42:08 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
23:42:56 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
23:43:04 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
23:43:12 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 268 seconds)
23:47:07 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
23:48:03 ft joins (~ft@p4fc2a257.dip0.t-ipconnect.de)
23:48:12 CoolMa7 joins (~CoolMa7@31.6.21.153)
23:55:29 × poljar1 quits (~poljar@93-139-83-160.adsl.net.t-com.hr) (Remote host closed the connection)
23:55:53 poljar1 joins (~poljar@93-139-83-160.adsl.net.t-com.hr)
23:58:20 × freeside quits (~mengwong@103.252.202.159) (Ping timeout: 260 seconds)

All times are in UTC on 2023-01-05.