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.