2021-08-11 00:00:38 +0200 | <dsal> | > read (cycle "1") :: Integer |
2021-08-11 00:00:44 +0200 | <lambdabot> | mueval-core: Time limit exceeded |
2021-08-11 00:00:54 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 00:01:15 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 00:04:02 +0200 | mei | (~mei@user/mei) (Read error: Connection reset by peer) |
2021-08-11 00:05:24 +0200 | ubert | (~Thunderbi@91.141.46.44.wireless.dyn.drei.com) (Ping timeout: 272 seconds) |
2021-08-11 00:06:28 +0200 | chomwitt | (~chomwitt@ppp-2-85-147-24.home.otenet.gr) (Remote host closed the connection) |
2021-08-11 00:08:47 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 00:08:56 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2021-08-11 00:13:53 +0200 | dextaa | (~DV@user/dextaa) (Ping timeout: 248 seconds) |
2021-08-11 00:14:51 +0200 | dextaa | (~DV@user/dextaa) |
2021-08-11 00:15:30 +0200 | oso | (~oso@2601:58c:c080:a950:f275:2530:b398:680b) (Quit: Client closed) |
2021-08-11 00:16:36 +0200 | <janus> | > read (cycle "1") :: Int |
2021-08-11 00:16:42 +0200 | <lambdabot> | mueval-core: Time limit exceeded |
2021-08-11 00:16:49 +0200 | <glguy> | Aww, I thought it might work that time |
2021-08-11 00:16:56 +0200 | <janus> | ah right, thanks dsal! |
2021-08-11 00:16:58 +0200 | <glguy> | >_> |
2021-08-11 00:17:38 +0200 | <janus> | glguy: sarcastic? i tried it because Integer allows for infinite size, i thought. so it would make more sense to show for Int |
2021-08-11 00:17:58 +0200 | <glguy> | janus: yeah, </s> ; of course it can't work for either |
2021-08-11 00:18:40 +0200 | <janus> | what is the "obvious" reason you're referring to here? because it isn't readMaybe? or because everybody is presumed to know how it works internally? |
2021-08-11 00:18:52 +0200 | <glguy> | the only thing it can do is fail |
2021-08-11 00:19:33 +0200 | <glguy> | It certainly can't produce an Int |
2021-08-11 00:19:36 +0200 | <janus> | but a granular exception would be better than time limit exceeded. there are many ways of failing even in haskell |
2021-08-11 00:22:36 +0200 | <monochrom> | "integer allows for infinite size" is a misconception. Subtle, yes, but it will bite you one day. |
2021-08-11 00:23:21 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-08-11 00:23:35 +0200 | <monochrom> | There is a difference between "infinitely many possibilities" and "one such possibility is infinite in any sense at all" |
2021-08-11 00:24:12 +0200 | <monochrom> | Every integer has finite size. We just don't have one single upper bound that caps over all integers. |
2021-08-11 00:24:44 +0200 | michalz | (~michalz@185.246.204.61) (Remote host closed the connection) |
2021-08-11 00:24:51 +0200 | <glguy> | even if Integer had a value called "Infinity", read couldn't know to return it given (cycle "1") |
2021-08-11 00:25:15 +0200 | <dsal> | > read (cycle "0") :: Integer |
2021-08-11 00:25:21 +0200 | <lambdabot> | mueval-core: Time limit exceeded |
2021-08-11 00:25:22 +0200 | <dsal> | Be smarter, Haskell! |
2021-08-11 00:25:26 +0200 | <glguy> | > read "100000000000000000000" :: Int |
2021-08-11 00:25:27 +0200 | <lambdabot> | 7766279631452241920 |
2021-08-11 00:25:29 +0200 | <monochrom> | For the same reason I prefer to describe the Turing machine tape size as "as much as you actually use, on demand" rather than "infinite". You will never actually use infinitely many cells. Never. |
2021-08-11 00:25:53 +0200 | <glguy> | and as long as modular behavior is allowed there the behavior of read (cycle "1") :: Int could never sanely be anything other than a timeout |
2021-08-11 00:26:18 +0200 | <janus> | can i say "unbounded" instead of "as much as you can actually use, on demand" ? |
2021-08-11 00:26:23 +0200 | <oak-> | > read "1000000000000000000000000000000000000000000000000" :: Integer |
2021-08-11 00:26:25 +0200 | <lambdabot> | 1000000000000000000000000000000000000000000000000 |
2021-08-11 00:26:44 +0200 | <monochrom> | Yes "unbounded" is right. |
2021-08-11 00:27:14 +0200 | <dsal> | Bounded only by your computer's imagination. |
2021-08-11 00:27:55 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 00:30:10 +0200 | <monochrom> | Statically determining semantic properties of "read (cycle "1")" is a very involved static analysis problem. |
2021-08-11 00:31:21 +0200 | <monochrom> | Or rather, the real question hiding behind the proxy question "I just need the computer to be just smart enough for that one single example" is. |
2021-08-11 00:31:35 +0200 | <monochrom> | No one really ever just means wanting just one example solved. |
2021-08-11 00:32:07 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-11 00:32:07 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-11 00:32:10 +0200 | allbery_b | geekosaur |
2021-08-11 00:32:19 +0200 | <monochrom> | It is a long-running meme. |
2021-08-11 00:32:55 +0200 | <monochrom> | When programmer has just a specific, special-case problem in mind, they must ask the generalized question. |
2021-08-11 00:32:59 +0200 | <janus> | i am really more worried about DoS attacks if i use 'read' on something i got from the network |
2021-08-11 00:33:14 +0200 | <monochrom> | And when they have a general problem in mind, they must just ask one example. |
2021-08-11 00:33:33 +0200 | <monochrom> | It is like their brain actually knows the right question, then pass it through a not-gate. |
2021-08-11 00:33:56 +0200 | <hpc> | or like they can only consciously think in terms of examples? |
2021-08-11 00:34:01 +0200 | <geekosaur> | janus, that's only an issue if you got something infinite from the network |
2021-08-11 00:34:10 +0200 | <geekosaur> | which would be difficult |
2021-08-11 00:34:26 +0200 | xcmw | (~textual@2603-6011-2200-f103-402c-0cc9-e9a3-e4f0.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-08-11 00:34:32 +0200 | <geekosaur> | how would you store it to feed it to read? |
2021-08-11 00:34:39 +0200 | <monochrom> | You are actively inviting DoS in the first place the moment you say you accept as many bytes as the other side sends you. |
2021-08-11 00:34:53 +0200 | <deejaytee> | monochrom: this is what blows me away with GHC, sometimes you turn on the right language extensions and it just solves a specific case, and I'm sitting there knowing that that must mean it solves it in the general case (for some loose definition of general), while I struggle to formulate & solve even a specific example |
2021-08-11 00:35:42 +0200 | <deejaytee> | I'm half-convinced that GHC might just end up being the first program to spontaneously gain sentience |
2021-08-11 00:35:42 +0200 | Atum_ | (~IRC@user/atum/x-2392232) (Remote host closed the connection) |
2021-08-11 00:35:48 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-11 00:35:59 +0200 | Atum_ | (~IRC@user/atum/x-2392232) |
2021-08-11 00:36:01 +0200 | <deejaytee> | {-# LANGUAGE GeneralArtificialIntelligence #-} |
2021-08-11 00:36:05 +0200 | <janus> | geekosaur: ok, let's say i have a receive limit of 100 kibibytes. is it safe to use Read? i am not trying to determine anything about infinities. i am trying to determine whether Read is a problem for non-streaming applications with normal message sizes and parsing untrusted data |
2021-08-11 00:36:26 +0200 | <monochrom> | hpc, I refuse to believe that programmers only think in terms of examples. Last time I checked they spoke like "hi how do I debug type errors?" in its most generality when they already had one single example, "f x = x ++ [x]" |
2021-08-11 00:37:00 +0200 | <deejaytee> | ah, shoot, I forgot to include {-# LANGUAGE SelfAwareAndSentient #-} |
2021-08-11 00:37:40 +0200 | <monochrom> | If you paid me 1 cent every time an asker here doesn't put their actual code on a paste bin, I would be rich and could retire now. |
2021-08-11 00:37:53 +0200 | <hpc> | when that happens to me at work i link them to https://youtu.be/ZKxr0wyIic4?t=10 :D |
2021-08-11 00:37:55 +0200 | <deejaytee> | (admittedly I have limited experience with proof systems, I'm sure there are stronger candidates for "smart programs that infer things I cannot") |
2021-08-11 00:38:14 +0200 | <monochrom> | Heh |
2021-08-11 00:38:23 +0200 | <monochrom> | We need to say that more to askers. |
2021-08-11 00:38:23 +0200 | <deejaytee> | hpc: hehe |
2021-08-11 00:38:25 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9574c56a490b8c03a837.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2021-08-11 00:39:16 +0200 | <monochrom> | As it happens, I am giving a network socket assignment to my students in a unix-and-C course. |
2021-08-11 00:39:43 +0200 | <monochrom> | And I provide the exes of some good and bad the-other-side's for them to test against. |
2021-08-11 00:40:15 +0200 | <monochrom> | One of the bad ones guarantees to send you a message of "many, many bytes". |
2021-08-11 00:40:23 +0200 | <hpc> | hah, awesome |
2021-08-11 00:40:25 +0200 | <geekosaur> | janus, I think read is safe there. that said, I wouldn't use it because it's not very good at what it does |
2021-08-11 00:40:39 +0200 | <monochrom> | And by that I mean it simply doesn't end, it keeps sending more and more packets. |
2021-08-11 00:41:15 +0200 | <monochrom> | You know, just in case a student deludes themselves into thinking that "640GB ought to be enough for everyone". |
2021-08-11 00:41:57 +0200 | <monochrom> | Oh even the good ones are juicy. |
2021-08-11 00:43:05 +0200 | <monochrom> | To drive home the point that stream sockets lose packet boundaries, the good ones fragment one message into randomly many write()'s, and even merge two messages into one single write(). |
2021-08-11 00:43:47 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 00:43:55 +0200 | <glguy> | monochrom: What's the actual assignment (roughly)? |
2021-08-11 00:44:49 +0200 | <monochrom> | I'll tell the tldr after this URL to the whole thing: http://www.cs.utoronto.ca/~trebla/CSCB09-2021-Summer/a4/ |
2021-08-11 00:45:09 +0200 | <geekosaur> | janus, it's convenient but slow and wasteful, and you almost certainly don't need its full generality. and haskell makes it almost trivial to write parsers that work better |
2021-08-11 00:45:11 +0200 | <monochrom> | The student is to write one server and one client for the same protocol. |
2021-08-11 00:45:16 +0200 | bitmapper | (uid464869@id-464869.tooting.irccloud.com) |
2021-08-11 00:45:44 +0200 | <monochrom> | The protocol is newline-delimited messages, with known upper bounds on legal messages. |
2021-08-11 00:46:02 +0200 | forell_ | (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Changing host) |
2021-08-11 00:46:02 +0200 | forell_ | (~forell@user/forell) |
2021-08-11 00:46:07 +0200 | forell_ | forell |
2021-08-11 00:47:03 +0200 | <monochrom> | The server side is to receive a name, look up a phone number from a file it can access, then send the phone number. |
2021-08-11 00:48:05 +0200 | <hpc> | random thought: a good follow-up assignment would be to have them implement all the test case clients |
2021-08-11 00:48:08 +0200 | <hpc> | including the bad ones |
2021-08-11 00:48:46 +0200 | <janus> | geekosaur: all right , thanks! |
2021-08-11 00:51:38 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 00:54:25 +0200 | finsternis | (~X@23.226.237.192) (Remote host closed the connection) |
2021-08-11 00:57:24 +0200 | Meowmancer | Neuromancer |
2021-08-11 01:00:11 +0200 | <dsal> | > product (cycle 0) -- I actually do think this one should work |
2021-08-11 01:00:13 +0200 | <lambdabot> | error: |
2021-08-11 01:00:13 +0200 | <lambdabot> | • No instance for (Num [Integer]) arising from a use of ‘e_10’ |
2021-08-11 01:00:13 +0200 | <lambdabot> | • In the expression: e_10 |
2021-08-11 01:00:25 +0200 | <dsal> | Well, something like that. |
2021-08-11 01:00:56 +0200 | <monochrom> | product (repeat 0) |
2021-08-11 01:01:02 +0200 | <dsal> | oh. I just woke up. heh |
2021-08-11 01:01:33 +0200 | <dsal> | But yeah. I don't quite understand why product doesn't short circuit. That one exact simple case I'm thinking of. |
2021-08-11 01:01:42 +0200 | <monochrom> | Our standard (*) is defined to be very strict. To be sure, it is just someone's decision, not the only good one. |
2021-08-11 01:02:48 +0200 | <dsal> | I don't know that it's ever affected me. I just feel smarter than my computer when I see that and I don't like speaking so poorly of computers. |
2021-08-11 01:02:52 +0200 | Atum_ | (~IRC@user/atum/x-2392232) (Remote host closed the connection) |
2021-08-11 01:03:01 +0200 | <monochrom> | @quote monochrom 389238493 |
2021-08-11 01:03:01 +0200 | <lambdabot> | monochrom says: some kind of lazy evaluation is already known to highschool kids. teachers tell you that in a*(b+c), "evaluate b+c first", right? well, I challenge you to take 0*(389238493+97283748) |
2021-08-11 01:03:01 +0200 | <lambdabot> | and find one single student who faithfully evaluate 389238493+97283748 first. |
2021-08-11 01:03:28 +0200 | Natch | (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection) |
2021-08-11 01:04:46 +0200 | MoC | (~moc@user/moc) (Quit: Konversation terminated!) |
2021-08-11 01:09:28 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-11 01:09:30 +0200 | dermato | (~dermatobr@154.21.23.75) (Ping timeout: 268 seconds) |
2021-08-11 01:09:37 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-9150-e432-def8-8add.res6.spectrum.com) |
2021-08-11 01:12:42 +0200 | dermato | (~dermatobr@154.21.23.75) |
2021-08-11 01:15:40 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-08-11 01:19:54 +0200 | cladur | (~cladur@user-5-173-146-83.play-internet.pl) |
2021-08-11 01:22:15 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-08-11 01:27:23 +0200 | shapr | (~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
2021-08-11 01:28:13 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 01:29:13 +0200 | cladur | (~cladur@user-5-173-146-83.play-internet.pl) (Ping timeout: 268 seconds) |
2021-08-11 01:31:02 +0200 | Guest366 | (~Guest3@221.124.9.182) |
2021-08-11 01:32:05 +0200 | dermato | (~dermatobr@154.21.23.75) (Ping timeout: 258 seconds) |
2021-08-11 01:32:36 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 01:33:00 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 01:33:55 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-11 01:34:18 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2) |
2021-08-11 01:35:02 +0200 | dermato | (~dermatobr@154.21.23.75) |
2021-08-11 01:40:29 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-11 01:41:32 +0200 | PinealGl1ndOptic | (~PinealGla@37.115.210.35) (Quit: leaving) |
2021-08-11 01:44:53 +0200 | deejaytee | (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Quit: Leaving) |
2021-08-11 01:44:53 +0200 | bontaq | (~user@ool-18e47f8d.dyn.optonline.net) (Remote host closed the connection) |
2021-08-11 01:46:10 +0200 | wrengr | (~wrengr@56.4.82.34.bc.googleusercontent.com) (Quit: leaving) |
2021-08-11 01:51:04 +0200 | derelict | (~derelict@user/derelict) (Quit: WeeChat 3.2) |
2021-08-11 01:51:15 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 258 seconds) |
2021-08-11 01:51:41 +0200 | wrengr | (~wrengr@56.4.82.34.bc.googleusercontent.com) |
2021-08-11 01:55:45 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 268 seconds) |
2021-08-11 01:56:55 +0200 | <lechner> | Hi, what's a popular, simple but validating HTTPS request library please? |
2021-08-11 02:00:08 +0200 | potato_dev | (~potato_to@elara.whatbox.ca) (Quit: ZNC - https://znc.in) |
2021-08-11 02:00:38 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-08-11 02:01:05 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 248 seconds) |
2021-08-11 02:01:38 +0200 | <lechner> | Also, is there an XML library, please, that can parse known data similar to the way aeson or yaml do (and does not use a generic DOM data model)? |
2021-08-11 02:03:27 +0200 | pe200012 | (~pe200012@113.105.10.33) (Ping timeout: 245 seconds) |
2021-08-11 02:03:35 +0200 | pe200012_ | (~pe200012@218.107.49.28) |
2021-08-11 02:04:58 +0200 | Cajun | (~Cajun@user/cajun) |
2021-08-11 02:04:58 +0200 | cladur | (~cladur@user-5-173-146-9.play-internet.pl) |
2021-08-11 02:05:01 +0200 | cladur | (~cladur@user-5-173-146-9.play-internet.pl) (Remote host closed the connection) |
2021-08-11 02:05:50 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Quit: ec) |
2021-08-11 02:11:16 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 02:11:29 +0200 | <dsal> | I use wreq for simple http stuff. I don't do all that much xml. I've integrated some junk in the past, but I used SAX-like stuff. |
2021-08-11 02:11:54 +0200 | <dsal> | Looks like I used xeno for that. |
2021-08-11 02:12:54 +0200 | Guest9632 | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-11 02:14:56 +0200 | <lechner> | dsal: thanks! |
2021-08-11 02:15:29 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 248 seconds) |
2021-08-11 02:17:47 +0200 | chris | (~chris@81.96.113.213) |
2021-08-11 02:17:51 +0200 | chris | Guest2402 |
2021-08-11 02:18:20 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-08-11 02:18:51 +0200 | skykanin | (~skykanin@115.81-166-221.customer.lyse.net) (Quit: WeeChat 3.2) |
2021-08-11 02:21:01 +0200 | shailangsa | (~shailangs@host86-185-58-139.range86-185.btcentralplus.com) (Ping timeout: 268 seconds) |
2021-08-11 02:21:53 +0200 | eltonpinto | (~eltonpint@169.109.136.34.bc.googleusercontent.com) (Quit: WeeChat 2.3) |
2021-08-11 02:22:50 +0200 | Guest2402 | (~chris@81.96.113.213) (Ping timeout: 272 seconds) |
2021-08-11 02:23:08 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 02:23:29 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 268 seconds) |
2021-08-11 02:23:49 +0200 | derelict | (~derelict@user/derelict) |
2021-08-11 02:23:55 +0200 | <davean> | janus: I did |
2021-08-11 02:30:29 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:90c7:da5b:b845:b6e9) (Ping timeout: 268 seconds) |
2021-08-11 02:30:48 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-11 02:30:48 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-11 02:30:52 +0200 | allbery_b | geekosaur |
2021-08-11 02:31:53 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 02:34:21 +0200 | chris | (~chris@81.96.113.213) |
2021-08-11 02:34:25 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 02:34:25 +0200 | chris | Guest6722 |
2021-08-11 02:34:26 +0200 | Guest366 | (~Guest3@221.124.9.182) (Quit: Client closed) |
2021-08-11 02:35:24 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:cc2:35ba:cbc2:b281) |
2021-08-11 02:38:25 +0200 | Matthias_ | (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) |
2021-08-11 02:38:43 +0200 | Matthias_ | (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) (Remote host closed the connection) |
2021-08-11 02:38:47 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2021-08-11 02:38:47 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 258 seconds) |
2021-08-11 02:38:54 +0200 | Matthias_ | (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) |
2021-08-11 02:40:39 +0200 | Matthias_ | (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) (Remote host closed the connection) |
2021-08-11 02:41:01 +0200 | Matthias_ | (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) |
2021-08-11 02:41:05 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-9150-e432-def8-8add.res6.spectrum.com) (Ping timeout: 258 seconds) |
2021-08-11 02:43:55 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
2021-08-11 02:44:22 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
2021-08-11 02:46:43 +0200 | <lechner> | Hi, is it possible to import just the operator ^. from Control.Lens, please? |
2021-08-11 02:46:55 +0200 | <Axman6> | import Control.Lens ((^.)) |
2021-08-11 02:47:29 +0200 | euouae | (~euouae@user/euouae) |
2021-08-11 02:47:33 +0200 | slack1256 | (~slack1256@181.203.126.41) (Ping timeout: 268 seconds) |
2021-08-11 02:47:42 +0200 | <euouae> | Hello, how can I read base's docs offline? |
2021-08-11 02:48:01 +0200 | <euouae> | I looked under ~/.cabal/share/doc, etc but nothing was found there other than license files |
2021-08-11 02:48:21 +0200 | <euouae> | and `cabal haddock base` said `Up to date`, but I can't find where they're stored |
2021-08-11 02:48:32 +0200 | slack1256 | (~slack1256@191.126.23.98) |
2021-08-11 02:50:35 +0200 | norias | (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
2021-08-11 02:50:57 +0200 | <lechner> | Axman6: Thanks! |
2021-08-11 02:51:39 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2021-08-11 02:58:14 +0200 | <Axman6> | has anyone ever had an issue where compiling using cabal on macOS just stops? I have two clang processes which are just sitting there doing nothing |
2021-08-11 03:01:14 +0200 | <lechner> | Axman6: are they detached? |
2021-08-11 03:02:39 +0200 | <monochrom> | euouae: If you know where you have installed GHC, all docs that come with GHC are somewhere along the line of <prefix>/share/doc/ghc-<version>/html/index.html |
2021-08-11 03:03:29 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-08-11 03:04:29 +0200 | <euouae> | monochrom: Great, thanks. I actually tried reading the man page of ghc but it wasn't listed there I believe |
2021-08-11 03:04:38 +0200 | <Axman6> | lechner: detached how? |
2021-08-11 03:04:49 +0200 | <monochrom> | Right, I think the man page doesn't talk about it. |
2021-08-11 03:04:50 +0200 | Matthias_ | (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) (Remote host closed the connection) |
2021-08-11 03:05:19 +0200 | <lechner> | Axman6: is cabal blocking your terminal? |
2021-08-11 03:05:34 +0200 | <Axman6> | what do you mean by blocking my terminal |
2021-08-11 03:05:45 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) |
2021-08-11 03:05:57 +0200 | <lechner> | are they otherwise done doing? |
2021-08-11 03:06:00 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-08-11 03:06:20 +0200 | <lechner> | runaway or blocked? |
2021-08-11 03:06:38 +0200 | <lechner> | what are they doing? |
2021-08-11 03:08:02 +0200 | <lechner> | Hi, what is a good way to parse this sitemap, please (except a lot longer)? Ideally, I would like to end up with a list of urls (strings alone are okay, or the record). Thanks! https://dpaste.org/WROr |
2021-08-11 03:08:11 +0200 | <sm> | not using cpu ? not using enough memory to cause swapping ? |
2021-08-11 03:08:40 +0200 | <lechner> | or just zombies? |
2021-08-11 03:08:48 +0200 | <geekosaur> | actually I'd be interested in knowing why clang is involved. I think that's normally used only for embedded C code in a package, or to run ld |
2021-08-11 03:09:08 +0200 | Matthias_ | (~Matthias1@2603-8001-b545-4900-090b-633c-a15a-3f3b.res6.spectrum.com) |
2021-08-11 03:09:22 +0200 | <euouae> | lechner, with an xml parser? |
2021-08-11 03:09:31 +0200 | <sm> | any network or usb drives involved ? |
2021-08-11 03:10:05 +0200 | emliunix | (~emliunix@2a09:bac0:23::815:bca) (Remote host closed the connection) |
2021-08-11 03:10:20 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) (Ping timeout: 272 seconds) |
2021-08-11 03:10:23 +0200 | emliunix | (~emliunix@103.138.75.119) |
2021-08-11 03:13:00 +0200 | <monochrom> | FD_SET(read_fdset, fd_for_downloading_RAM); for (;;) { select(read_fdset, NULL, NULL, NULL); ... |
2021-08-11 03:13:02 +0200 | <monochrom> | >:) |
2021-08-11 03:14:57 +0200 | euouae | (~euouae@user/euouae) () |
2021-08-11 03:15:19 +0200 | xsperry | (~as@user/xsperry) () |
2021-08-11 03:18:28 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 03:18:48 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-11 03:21:54 +0200 | Matthias_ | (~Matthias1@2603-8001-b545-4900-090b-633c-a15a-3f3b.res6.spectrum.com) (Remote host closed the connection) |
2021-08-11 03:22:48 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-090b-633c-a15a-3f3b.res6.spectrum.com) |
2021-08-11 03:24:32 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-08-11 03:27:28 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-090b-633c-a15a-3f3b.res6.spectrum.com) (Ping timeout: 258 seconds) |
2021-08-11 03:27:46 +0200 | _________ | (~nobody@user/noodly) (Ping timeout: 240 seconds) |
2021-08-11 03:27:55 +0200 | <Axman6> | Sorry, needed to get some #work do. cabal is just stopped, and the last lines in the cabal build log are: configure: WARNING: unrecognized options: --with-compiler |
2021-08-11 03:27:56 +0200 | <Axman6> | Preprocessing library for network-3.1.2.2.. |
2021-08-11 03:28:12 +0200 | <Axman6> | clang is involved because "gcc" on macos is clang |
2021-08-11 03:28:19 +0200 | <lechner> | yes |
2021-08-11 03:28:32 +0200 | <Axman6> | no swapping happening, I've got 64GB and plenty free |
2021-08-11 03:29:24 +0200 | _________ | (~nobody@user/noodly) |
2021-08-11 03:29:31 +0200 | <geekosaur> | yes, but it still shouldn't be used directly for anything but embedded C code or linking |
2021-08-11 03:29:37 +0200 | <geekosaur> | or possibly -XCPP |
2021-08-11 03:29:38 +0200 | <Axman6> | geekosaur: it is the network package which is being compiled, so compiling C is almost certainly involved right? |
2021-08-11 03:30:32 +0200 | berberman | (~berberman@user/berberman) (Ping timeout: 258 seconds) |
2021-08-11 03:30:51 +0200 | berberman | (~berberman@user/berberman) |
2021-08-11 03:31:09 +0200 | Jonno_FTW | (~come@api.carswap.me) (Quit: Reconnecting) |
2021-08-11 03:31:17 +0200 | Jonno_FTW | (~come@api.carswap.me) |
2021-08-11 03:31:31 +0200 | Jonno_FTW | (~come@api.carswap.me) (Changing host) |
2021-08-11 03:31:31 +0200 | Jonno_FTW | (~come@user/jonno-ftw/x-0835346) |
2021-08-11 03:31:49 +0200 | <geekosaur> | there are 5 small C files in the network package; mostly it binds to libc network functions |
2021-08-11 03:31:53 +0200 | <Axman6> | https://paste.tomsmeding.com/FzQv35dp is the contents of the log |
2021-08-11 03:31:54 +0200 | <lechner> | Axman6: The warning may not be what tripped them up https://github.com/commercialhaskell/stack/issues/1121 |
2021-08-11 03:32:03 +0200 | <Axman6> | after hitting ^C to stop the build |
2021-08-11 03:32:13 +0200 | <Axman6> | the last bit about the failure only happens after the ^C |
2021-08-11 03:32:45 +0200 | <geekosaur> | hm, that's hhsc2hs freezing |
2021-08-11 03:32:54 +0200 | <geekosaur> | I think that might be known |
2021-08-11 03:33:00 +0200 | <lechner> | Failed to remove file dist/build/Network/Socket/ByteString/hsc2hscall8328-0.rsp; error= dist/build/Network/Socket/ByteString/hsc2hscall8328-0.rsp: removeLink: does not exist (No such file or directory) |
2021-08-11 03:34:33 +0200 | <lechner> | is that a test suite looking for the network? |
2021-08-11 03:34:59 +0200 | <Axman6> | it's "Building network-3.1.2.2 (all, legacy fallback)" |
2021-08-11 03:35:05 +0200 | <geekosaur> | https://github.com/haskell/hsc2hs/issues/62 |
2021-08-11 03:36:05 +0200 | euouae | (~euouae@user/euouae) |
2021-08-11 03:36:15 +0200 | <euouae> | So here's the thing about reading types that doesn't always elucidate behavior |
2021-08-11 03:36:16 +0200 | <Axman6> | yep that looks like the one |
2021-08-11 03:36:30 +0200 | <euouae> | I'm looking at Control.Monad.sequence :: (Traversable t, Monad m) => t (m a) -> m (t a) |
2021-08-11 03:36:50 +0200 | <euouae> | There's no way to know that `>>` is being used between monadic actions. It may very well had been without `>>` |
2021-08-11 03:37:56 +0200 | <euouae> | and, looking at the source code is not very helpful, I don't understand, sequence needs sequenceA, which needs traverse, which is implemented using sequenceA? |
2021-08-11 03:37:57 +0200 | <Axman6> | well, there's an infinite number of implementations of that type, so yes, there's no way to know |
2021-08-11 03:38:20 +0200 | <Axman6> | yes, to impolemente the Traversable class, you need to implement one of those functions and you get the others for free |
2021-08-11 03:38:24 +0200 | <Axman6> | implement* |
2021-08-11 03:38:29 +0200 | <euouae> | Axman6: "Evaluate each monadic action in the structure from left to right, and collect the results. For a version that ignores the results see sequence_." |
2021-08-11 03:38:45 +0200 | <euouae> | Axman6: That docstring also does not hint at `>>` :P |
2021-08-11 03:38:57 +0200 | <Axman6> | why do you think it even uses >>? |
2021-08-11 03:39:12 +0200 | euouae | (~euouae@user/euouae) (Quit: Client closed) |
2021-08-11 03:39:17 +0200 | <Axman6> | I would guess 90% of all Traversable implementation don't use that at all |
2021-08-11 03:39:42 +0200 | euouae | (~euouae@user/euouae) |
2021-08-11 03:40:17 +0200 | <Axman6> | most (all?) implementation of Traversable only need Applicative |
2021-08-11 03:41:30 +0200 | <euouae> | Axman6: I mean that a reference implementation could use >> |
2021-08-11 03:41:42 +0200 | <euouae> | It must use something akin to >>, it feeds the results of one action into another e.g. `sequence [Nothing, Just 1] == Nothing` |
2021-08-11 03:42:10 +0200 | <Axman6> | I'm not sure I agree |
2021-08-11 03:42:26 +0200 | pe200012 | (~pe200012@113.105.10.33) |
2021-08-11 03:42:33 +0200 | cladur | (~cladur@user-5-173-146-9.play-internet.pl) |
2021-08-11 03:43:01 +0200 | <euouae> | Ok I'm not taking a hard line here |
2021-08-11 03:43:02 +0200 | <Axman6> | > (:) <$> Nothing <*> ((:) <$> Just 1 <*> pure [])) |
2021-08-11 03:43:03 +0200 | pe200012_ | (~pe200012@218.107.49.28) (Ping timeout: 268 seconds) |
2021-08-11 03:43:04 +0200 | <lambdabot> | <hint>:1:49: error: parse error on input ‘)’ |
2021-08-11 03:43:06 +0200 | <Axman6> | > (:) <$> Nothing <*> ((:) <$> Just 1 <*> pure []) |
2021-08-11 03:43:07 +0200 | <lambdabot> | Nothing |
2021-08-11 03:43:39 +0200 | <euouae> | Ok you're arguing between Monad and Applicative |
2021-08-11 03:43:53 +0200 | <euouae> | That's fine, but I'm talking about the lack of documentation for `sequence` :P |
2021-08-11 03:45:05 +0200 | <Axman6> | I still don't see what your point is, there's no >> in sequence for most types |
2021-08-11 03:45:43 +0200 | <euouae> | My point is, if you note the documentation of sequence, it is only illustrated in the last example that sequence has 'short-circuit behavior' as they call it |
2021-08-11 03:46:52 +0200 | <Axman6> | what does that have to do with >>? |
2021-08-11 03:46:54 +0200 | <euouae> | I'm looking at `evalState (sequence $ repeat $ do { n <- get; put (n*2); return n }) 1` which as I understand feeds the previous state into the next computation |
2021-08-11 03:47:36 +0200 | <euouae> | from Control.Monad.Trans.State.Lazy |
2021-08-11 03:47:45 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 248 seconds) |
2021-08-11 03:48:17 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Remote host closed the connection) |
2021-08-11 03:48:23 +0200 | <Axman6> | what does short circuit behaviour have to do with >>? |
2021-08-11 03:48:45 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-08-11 03:48:45 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-11 03:49:04 +0200 | adam1 | (~adam@220-136-101-108.dynamic-ip.hinet.net) |
2021-08-11 03:49:07 +0200 | <euouae> | Well, `Nothing >> Just 1` gives `Nothing` |
2021-08-11 03:49:41 +0200 | alx741 | (~alx741@181.196.68.193) (Quit: alx741) |
2021-08-11 03:49:43 +0200 | <Axman6> | yes, but it's not the only thing which does |
2021-08-11 03:50:00 +0200 | <Axman6> | importantly, (<*>) does too |
2021-08-11 03:50:41 +0200 | <Axman6> | so the behaviour of traverse matches the behaviour of the applicative instance for m and the traversal ordering of t |
2021-08-11 03:51:05 +0200 | <euouae> | m and t being? |
2021-08-11 03:51:10 +0200 | <euouae> | Maybe and [] ? |
2021-08-11 03:51:15 +0200 | <Axman6> | yes |
2021-08-11 03:51:27 +0200 | <euouae> | But sequence takes a monad |
2021-08-11 03:51:30 +0200 | <euouae> | Not an applicative |
2021-08-11 03:52:10 +0200 | <Axman6> | it days that, but almost always it's only using the Applicative instance, since all Monads are Applicatives |
2021-08-11 03:52:25 +0200 | <Axman6> | and the type is mostly a historical artefact |
2021-08-11 03:52:31 +0200 | <euouae> | It may be, but why is that important? |
2021-08-11 03:52:44 +0200 | <euouae> | Why are you protesting about my mention of `>>`? |
2021-08-11 03:52:44 +0200 | <dsal> | :t sequenceA |
2021-08-11 03:52:45 +0200 | <lambdabot> | (Traversable t, Applicative f) => t (f a) -> f (t a) |
2021-08-11 03:52:51 +0200 | <Axman6> | you tell me, I still don't know what your point is |
2021-08-11 03:53:04 +0200 | <dsal> | I don't understand what >> has to do with traverse. They seem unrelated. |
2021-08-11 03:53:15 +0200 | <euouae> | Ok look, a while ago you admitted sequence can have many implementations |
2021-08-11 03:53:24 +0200 | <Axman6> | because you will almost certainly never see any use of >> in any implementation of Traversable |
2021-08-11 03:53:24 +0200 | <euouae> | I'm saying that the one implementation the sequence has is not well-documented to distinguish it from all others |
2021-08-11 03:53:49 +0200 | <dsal> | @src sequenceA |
2021-08-11 03:53:49 +0200 | <lambdabot> | Source not found. :( |
2021-08-11 03:53:51 +0200 | <dsal> | @src sequence |
2021-08-11 03:53:51 +0200 | <lambdabot> | sequence [] = return [] |
2021-08-11 03:53:51 +0200 | <lambdabot> | sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs) |
2021-08-11 03:53:51 +0200 | <lambdabot> | --OR |
2021-08-11 03:53:51 +0200 | <lambdabot> | sequence xs = foldr (liftM2 (:)) (return []) xs |
2021-08-11 03:54:13 +0200 | <euouae> | There you go, it uses `do` which uses `>>` right? |
2021-08-11 03:54:18 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds) |
2021-08-11 03:54:24 +0200 | <dsal> | @undo do v <- x; vs <- sequence xs; return (v:vs) |
2021-08-11 03:54:24 +0200 | <lambdabot> | x >>= \ v -> sequence xs >>= \ vs -> return (v : vs) |
2021-08-11 03:54:27 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-11 03:54:34 +0200 | <Axman6> | I don't think there are many law abiding implementations of sequence which don't do what we've talked about |
2021-08-11 03:55:07 +0200 | <euouae> | To be law abiding you need laws written down |
2021-08-11 03:55:14 +0200 | <Axman6> | like, traverse pure = pure ensures the structure is kept intact and the order of elements can't change |
2021-08-11 03:55:15 +0200 | <euouae> | Where's the laws for sequence documented? |
2021-08-11 03:55:27 +0200 | xff0x | (~xff0x@2001:1a81:53d2:1c00:df20:e0ed:5860:3ed0) (Ping timeout: 258 seconds) |
2021-08-11 03:55:30 +0200 | <dsal> | https://en.wikibooks.org/wiki/Haskell/Traversable#The_Traversable_laws |
2021-08-11 03:55:54 +0200 | <euouae> | but can't sequence have many different implementations? |
2021-08-11 03:56:02 +0200 | <davean> | also https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Traversable.html#g:10 |
2021-08-11 03:56:12 +0200 | <euouae> | couldn't you throw away the result of the action of v <- x; and just collect v instead? |
2021-08-11 03:56:16 +0200 | <davean> | euouae: all that follow those laws |
2021-08-11 03:56:43 +0200 | <dsal> | You could try, but if you're implementing Traversable, you should run your implementation against checkers and see if you've made any mistakes. |
2021-08-11 03:57:07 +0200 | <euouae> | so you're saying that the above example of `evalState (sequence $ repeat $ do { n <- get; put (n*2); return n }) 1` |
2021-08-11 03:57:17 +0200 | <euouae> | is forced to produce [1,2,4,8,...] because of Traversable? |
2021-08-11 03:57:18 +0200 | xff0x | (~xff0x@2001:1a81:53fa:2600:8056:588e:c971:d9df) |
2021-08-11 03:57:28 +0200 | <euouae> | Could it not had been [1,1,1,...] ? |
2021-08-11 03:57:57 +0200 | <Axman6> | yes |
2021-08-11 03:58:06 +0200 | <euouae> | got it |
2021-08-11 03:58:45 +0200 | euouae | needs to think about this more |
2021-08-11 04:01:23 +0200 | <dsal> | One easy way to think about it is to try to make the thing that you think is bad and then verify it's lawful. |
2021-08-11 04:01:55 +0200 | <euouae> | unlawful? |
2021-08-11 04:03:11 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-08-11 04:03:25 +0200 | <dsal> | Well, if you make a lawful type that does something you think is bad, then it's a concrete discussion point. |
2021-08-11 04:03:48 +0200 | <euouae> | Ok |
2021-08-11 04:05:29 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-aca4-b81a-fb11-e9da.res6.spectrum.com) |
2021-08-11 04:05:51 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds) |
2021-08-11 04:06:09 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-aca4-b81a-fb11-e9da.res6.spectrum.com) (Remote host closed the connection) |
2021-08-11 04:07:20 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-11 04:07:35 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 04:07:42 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-11 04:12:23 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 04:14:30 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 268 seconds) |
2021-08-11 04:16:00 +0200 | zebrag | (~chris@user/zebrag) |
2021-08-11 04:16:58 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
2021-08-11 04:17:17 +0200 | <Axman6> | hat's the type whose Applicative instance is something like (Foo mf) <*> (Foo ma) = Foo ((\x f -> f a) <$> ma <*> mf)? |
2021-08-11 04:18:06 +0200 | <Axman6> | What's* |
2021-08-11 04:18:59 +0200 | <pavonia> | Is that supposed to be (\a f -> f a)? |
2021-08-11 04:19:11 +0200 | <Axman6> | uh yes |
2021-08-11 04:19:13 +0200 | td_ | (~td@muedsl-82-207-238-245.citykom.de) (Ping timeout: 248 seconds) |
2021-08-11 04:19:50 +0200 | <Axman6> | the Applicative with the order of effects reversed basically |
2021-08-11 04:20:16 +0200 | <pavonia> | Hhm, no idea |
2021-08-11 04:21:06 +0200 | td_ | (~td@muedsl-82-207-238-098.citykom.de) |
2021-08-11 04:21:51 +0200 | <geekosaur> | https://downloads.haskell.org/ghc/latest/docs/html/libraries/transformers-0.5.6.2/Control-Applicat… |
2021-08-11 04:22:06 +0200 | <Axman6> | <3 |
2021-08-11 04:27:41 +0200 | shailangsa | (~shailangs@host86-145-14-24.range86-145.btcentralplus.com) |
2021-08-11 04:28:02 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2021-08-11 04:28:02 +0200 | FinnElija | Guest2839 |
2021-08-11 04:28:02 +0200 | finn_elija | FinnElija |
2021-08-11 04:31:46 +0200 | Guest2839 | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds) |
2021-08-11 04:32:23 +0200 | <dibblego> | @type flip (<**>) |
2021-08-11 04:32:24 +0200 | <lambdabot> | Applicative f => f (a -> b) -> f a -> f b |
2021-08-11 04:33:47 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 258 seconds) |
2021-08-11 04:36:54 +0200 | remexre | (~nathan@user/remexre) (Ping timeout: 250 seconds) |
2021-08-11 04:38:28 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 04:40:56 +0200 | pe200012_ | (~pe200012@113.105.10.33) |
2021-08-11 04:41:01 +0200 | pe200012 | (~pe200012@113.105.10.33) (Ping timeout: 268 seconds) |
2021-08-11 04:43:26 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 272 seconds) |
2021-08-11 04:46:47 +0200 | epolanski | (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-11 04:49:16 +0200 | polyphem | (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756) |
2021-08-11 04:49:53 +0200 | Guest6722 | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-11 04:56:32 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-08-11 04:59:27 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-08-11 05:00:04 +0200 | VoidNoir0 | (~VoidNoir0@72.80.203.52) |
2021-08-11 05:02:25 +0200 | remexre | (~nathan@user/remexre) |
2021-08-11 05:02:33 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 05:05:59 +0200 | hiruji | (~hiruji@user/hiruji) (Ping timeout: 258 seconds) |
2021-08-11 05:06:45 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 258 seconds) |
2021-08-11 05:06:47 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 05:09:06 +0200 | dermato | (~dermatobr@154.21.23.75) (Remote host closed the connection) |
2021-08-11 05:09:30 +0200 | wrengr | wrengr_away |
2021-08-11 05:09:31 +0200 | MidAutumnHotaru5 | (~MidAutumn@user/midautumnmoon) |
2021-08-11 05:09:48 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) (Read error: Connection reset by peer) |
2021-08-11 05:09:49 +0200 | MidAutumnHotaru5 | MidAutumnHotaru |
2021-08-11 05:11:21 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2021-08-11 05:18:28 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-08-11 05:19:57 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
2021-08-11 05:30:23 +0200 | xsperry | (~as@user/xsperry) |
2021-08-11 05:30:47 +0200 | dermato | (~dermatobr@154.21.23.75) |
2021-08-11 05:33:16 +0200 | euouae | (~euouae@user/euouae) (Quit: Ping timeout (120 seconds)) |
2021-08-11 05:33:36 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 05:37:07 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-08-11 05:38:11 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2021-08-11 05:39:16 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) |
2021-08-11 05:43:29 +0200 | slack1256 | (~slack1256@191.126.23.98) (Ping timeout: 248 seconds) |
2021-08-11 05:53:13 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-c172-9f24-99f4-d24a.res6.spectrum.com) |
2021-08-11 05:54:31 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-11 05:54:31 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-11 05:54:36 +0200 | allbery_b | geekosaur |
2021-08-11 05:56:00 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving) |
2021-08-11 05:59:29 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds) |
2021-08-11 06:00:30 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-08-11 06:03:32 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 06:04:07 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-08-11 06:06:47 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-11 06:07:37 +0200 | adam1 | (~adam@220-136-101-108.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
2021-08-11 06:08:01 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds) |
2021-08-11 06:13:08 +0200 | dmwit | (~dmwit@pool-108-28-26-143.washdc.fios.verizon.net) |
2021-08-11 06:15:05 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 06:16:08 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 258 seconds) |
2021-08-11 06:19:08 +0200 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-08-11 06:19:35 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 258 seconds) |
2021-08-11 06:20:15 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-08-11 06:27:37 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
2021-08-11 06:31:36 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 06:35:45 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds) |
2021-08-11 06:41:24 +0200 | pe200012_ | (~pe200012@113.105.10.33) (Remote host closed the connection) |
2021-08-11 06:41:49 +0200 | pe200012_ | (~pe200012@113.105.10.33) |
2021-08-11 06:48:33 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-08-11 06:49:08 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-08-11 06:49:43 +0200 | euouae | (~euouae@user/euouae) |
2021-08-11 06:51:50 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 06:55:06 +0200 | thaumavorio | (~thaumavor@thaumavor.io) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-08-11 06:56:01 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds) |
2021-08-11 06:56:52 +0200 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2021-08-11 06:57:26 +0200 | thaumavorio | (~thaumavor@thaumavor.io) |
2021-08-11 06:59:50 +0200 | amanr | (~therojjha@20.204.87.0) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
2021-08-11 07:01:49 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-c172-9f24-99f4-d24a.res6.spectrum.com) (Read error: Connection reset by peer) |
2021-08-11 07:02:24 +0200 | Matthias1 | (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
2021-08-11 07:07:24 +0200 | euouae | (~euouae@user/euouae) (Quit: Ping timeout (120 seconds)) |
2021-08-11 07:08:28 +0200 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 272 seconds) |
2021-08-11 07:21:37 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 248 seconds) |
2021-08-11 07:22:50 +0200 | <siraben> | How do I load .o files from GHCi? |
2021-08-11 07:23:53 +0200 | adam1 | (~adam@2001-b011-4007-2ff3-652c-fd1e-24cd-c39c.dynamic-ip6.hinet.net) |
2021-08-11 07:24:29 +0200 | <janus> | siraben: .o files typically need linking before you can 'load' them. do you mean a .so file? |
2021-08-11 07:24:45 +0200 | <siraben> | I have a `.o` file created by `clang -c stub.c` |
2021-08-11 07:24:53 +0200 | <siraben> | I want this command `ghci -ghci-script compat.ghci party.hs ../stub.o` |
2021-08-11 07:24:55 +0200 | <siraben> | https://crypto.stanford.edu/~blynn/compiler/module.html |
2021-08-11 07:25:03 +0200 | <siraben> | but I can't seem to load stub.o while in GHCi |
2021-08-11 07:25:58 +0200 | <siraben> | I'm using haskell-mode in Emacs so ideally I want to do it without breaking out to the terminal |
2021-08-11 07:26:59 +0200 | <janus> | oh, i didn't even know you could provide objects to link to ghci |
2021-08-11 07:27:15 +0200 | pottsy | (~pottsy@2400:4050:b560:3700:38eb:29ba:72bf:9791) (Quit: Leaving) |
2021-08-11 07:27:56 +0200 | <janus> | i would use capi with cbits and c2hs, but i realize that is totally different approach. sorry |
2021-08-11 07:29:02 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2021-08-11 07:31:58 +0200 | <siraben> | I see. This is for debugging and development purposes only because the Haskell files would get compiled by blynn's Haskell compiler. |
2021-08-11 07:32:06 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-08-11 07:33:08 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 07:37:02 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-08-11 07:38:36 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 268 seconds) |
2021-08-11 07:38:45 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-11 07:43:56 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
2021-08-11 07:45:20 +0200 | michalz | (~michalz@185.246.204.37) |
2021-08-11 07:53:03 +0200 | Guest71 | (~Guest71@46.97.169.79) |
2021-08-11 07:54:32 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-08-11 07:57:58 +0200 | ubert | (~Thunderbi@91.141.49.166.wireless.dyn.drei.com) |
2021-08-11 08:02:42 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 258 seconds) |
2021-08-11 08:03:17 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-11 08:05:38 +0200 | Matthias1 | (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection) |
2021-08-11 08:07:36 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-08-11 08:09:24 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-c870-813e-66c7-5f1f.res6.spectrum.com) |
2021-08-11 08:15:01 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-08-11 08:16:07 +0200 | adam1 | (~adam@2001-b011-4007-2ff3-652c-fd1e-24cd-c39c.dynamic-ip6.hinet.net) (Ping timeout: 258 seconds) |
2021-08-11 08:27:33 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2021-08-11 08:28:46 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds) |
2021-08-11 08:28:48 +0200 | Lord_of_Life_ | Lord_of_Life |
2021-08-11 08:32:36 +0200 | ubert | (~Thunderbi@91.141.49.166.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
2021-08-11 08:33:11 +0200 | <[exa]> | siraben: if you just want to have the object loaded, you may have luck with compiling to `.so` and supplying LD_PRELOAD or something |
2021-08-11 08:33:23 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 08:33:44 +0200 | <[exa]> | siraben: but that's quite crude. why would you need that linked? |
2021-08-11 08:37:12 +0200 | mei | (~mei@user/mei) |
2021-08-11 08:37:22 +0200 | pe200012_ | (~pe200012@113.105.10.33) (Quit: Konversation terminated!) |
2021-08-11 08:37:26 +0200 | <siraben> | [exa]: so I can run main, because it calls out to the custom RTS |
2021-08-11 08:37:53 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 248 seconds) |
2021-08-11 08:38:24 +0200 | <[exa]> | ok you need .so for sure |
2021-08-11 08:38:33 +0200 | <[exa]> | after that just use unix dlopen |
2021-08-11 08:38:48 +0200 | <[exa]> | https://hackage.haskell.org/package/unix-2.7.2.2/docs/System-Posix.html#v:dlopen |
2021-08-11 08:38:51 +0200 | <[exa]> | and all it with FFI |
2021-08-11 08:39:34 +0200 | <[exa]> | `man 3 dlsym` should have the details |
2021-08-11 08:39:40 +0200 | <[exa]> | *call |
2021-08-11 08:39:52 +0200 | <siraben> | Heh, I'm on macOS |
2021-08-11 08:39:56 +0200 | <siraben> | Should be the same with dylib I tihnk |
2021-08-11 08:40:02 +0200 | akronymus | (~akronymus@85.31.8.181) |
2021-08-11 08:40:14 +0200 | <[exa]> | even macos should have dl |
2021-08-11 08:40:54 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 268 seconds) |
2021-08-11 08:42:14 +0200 | Cajun9 | (~Cajun@user/cajun) |
2021-08-11 08:44:31 +0200 | Cajun | (~Cajun@user/cajun) (Ping timeout: 246 seconds) |
2021-08-11 08:44:37 +0200 | Cajun9 | Cajun |
2021-08-11 08:45:45 +0200 | lep- | lep |
2021-08-11 08:46:10 +0200 | jneira | (~jneira@212.8.115.226) |
2021-08-11 08:53:20 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 08:54:40 +0200 | vysn | (~vysn@user/vysn) |
2021-08-11 08:58:10 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
2021-08-11 08:58:51 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-11 09:00:38 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:fe6f:ef7e:c421:8ab8) |
2021-08-11 09:01:22 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9574c56a490b8c03a837.dip0.t-ipconnect.de) |
2021-08-11 09:03:51 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2021-08-11 09:13:04 +0200 | epolanski | (uid312403@id-312403.brockwell.irccloud.com) |
2021-08-11 09:14:18 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-11 09:14:24 +0200 | MorrowM | (~Morrow@176.12.208.59) |
2021-08-11 09:17:10 +0200 | thyriaen | (~thyriaen@dynamic-078-054-169-242.78.54.pool.telefonica.de) |
2021-08-11 09:18:14 +0200 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-08-11 09:28:01 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-11 09:30:11 +0200 | adam1 | (~adam@2001-b011-4007-0cae-c534-472f-0009-0a8c.dynamic-ip6.hinet.net) |
2021-08-11 09:34:40 +0200 | Boomerang | (~Boomerang@xd520f68c.cust.hiper.dk) |
2021-08-11 09:34:47 +0200 | bitmapper | (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-11 09:37:27 +0200 | Matthias_ | (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
2021-08-11 09:37:41 +0200 | <Axman6> | macos might have other tools, like otool or something |
2021-08-11 09:38:57 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 09:39:45 +0200 | azeem | (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Ping timeout: 248 seconds) |
2021-08-11 09:40:16 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2021-08-11 09:40:50 +0200 | Matthias1 | (~Matthias1@2603-8001-b545-4900-c870-813e-66c7-5f1f.res6.spectrum.com) (Ping timeout: 258 seconds) |
2021-08-11 09:42:22 +0200 | azeem | (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) |
2021-08-11 09:42:57 +0200 | MorrowM | (~Morrow@176.12.208.59) (Ping timeout: 248 seconds) |
2021-08-11 09:49:58 +0200 | Guest71 | (~Guest71@46.97.169.79) (Ping timeout: 246 seconds) |
2021-08-11 09:54:16 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-08-11 09:54:41 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 248 seconds) |
2021-08-11 09:54:50 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 09:59:50 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
2021-08-11 10:02:09 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-08-11 10:04:17 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-08-11 10:05:27 +0200 | hendursa1 | (~weechat@user/hendursaga) |
2021-08-11 10:06:29 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 10:08:30 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
2021-08-11 10:10:41 +0200 | yoctocell | (~user@h87-96-130-155.cust.a3fiber.se) |
2021-08-11 10:11:32 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
2021-08-11 10:17:37 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-11 10:17:37 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-11 10:17:40 +0200 | allbery_b | geekosaur |
2021-08-11 10:19:05 +0200 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2021-08-11 10:19:32 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
2021-08-11 10:19:43 +0200 | <kuribas> | Is it bad to write a function memoize :: (a -> IO b) -> IO (a -> b)? |
2021-08-11 10:19:57 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-08-11 10:20:24 +0200 | <Taneb> | A little |
2021-08-11 10:20:30 +0200 | <kuribas> | as opposed to (a -> IO b) -> IO (a -> IO b)? |
2021-08-11 10:20:50 +0200 | <Taneb> | It pretty much forces you to have effects happen in pure code |
2021-08-11 10:21:22 +0200 | <merijn> | kuribas: You can't write that function |
2021-08-11 10:21:29 +0200 | <merijn> | kuribas: I know, because I have tried |
2021-08-11 10:21:36 +0200 | <kuribas> | hmm |
2021-08-11 10:21:37 +0200 | <merijn> | Over and over and over and over and over and over and over |
2021-08-11 10:21:51 +0200 | <kuribas> | hehe |
2021-08-11 10:21:53 +0200 | <merijn> | Which makes sense |
2021-08-11 10:22:03 +0200 | <merijn> | because the IO can depend on the value of the input 'a' |
2021-08-11 10:22:12 +0200 | <merijn> | So you can't "do the IO first" and get back a function |
2021-08-11 10:22:25 +0200 | <merijn> | That requires proving the IO in "a -> IO b" doesn't depend on 'a' |
2021-08-11 10:22:34 +0200 | <merijn> | And I dunno the abstraction for that |
2021-08-11 10:22:36 +0200 | <kuribas> | I can use unsafePerformIO? |
2021-08-11 10:22:41 +0200 | <merijn> | How? |
2021-08-11 10:22:53 +0200 | <merijn> | I mean, sure |
2021-08-11 10:23:00 +0200 | <kuribas> | ah wait... |
2021-08-11 10:23:14 +0200 | <merijn> | You can do "\f -> return (\x -> unsafePerformIO (f x))" but that's not what you meant, right? |
2021-08-11 10:23:35 +0200 | <merijn> | Might as well skip the return if you do that :p |
2021-08-11 10:24:08 +0200 | thyriaen | (~thyriaen@dynamic-078-054-169-242.78.54.pool.telefonica.de) (Remote host closed the connection) |
2021-08-11 10:24:37 +0200 | <kuribas> | that's what I meant... |
2021-08-11 10:25:30 +0200 | spirit_ | (~spirit@122.164.113.81) |
2021-08-11 10:26:11 +0200 | jneira | (~jneira@212.8.115.226) (Quit: Client closed) |
2021-08-11 10:26:12 +0200 | <kuribas> | like this? https://gist.github.com/kuribas/6d63a4b9be2ac210162b4c9ee2ab10ca |
2021-08-11 10:27:48 +0200 | jneira | (~jneira@212.8.115.226) |
2021-08-11 10:29:04 +0200 | jneira | (~jneira@212.8.115.226) (Client Quit) |
2021-08-11 10:29:24 +0200 | jneira | (~jneira@212.8.115.226) |
2021-08-11 10:29:28 +0200 | <merijn> | kuribas: Why even bother with the wrapping code returning IO at that point |
2021-08-11 10:29:39 +0200 | <merijn> | Just, like, unsafePerformIO the whole thing and call it a day |
2021-08-11 10:29:55 +0200 | <kuribas> | merijn: because it is still somewhat morally acceptable... |
2021-08-11 10:30:26 +0200 | <Taneb> | kuribas: I don't think it's that morally acceptable |
2021-08-11 10:30:45 +0200 | <kuribas> | Because IO is returning a function whos value depends on future IO. But there is no contract that says IO cannot do this right? |
2021-08-11 10:31:04 +0200 | <kuribas> | The contract is that a pure function should be pure, that is, return the same value for the same inputs. |
2021-08-11 10:31:05 +0200 | <merijn> | kuribas: Eh, yes there is |
2021-08-11 10:31:18 +0200 | <merijn> | kuribas: Like, this violates literally *every* part of purity in *many* horrific ways |
2021-08-11 10:31:26 +0200 | <kuribas> | No it doesn't? |
2021-08-11 10:31:28 +0200 | <Taneb> | If I use that I can now pass a pure function as an argument to another function, such that when I call the supposedly pure function IO effects might mysteriousl happen |
2021-08-11 10:31:28 +0200 | <kuribas> | IO isn't pure... |
2021-08-11 10:31:33 +0200 | <merijn> | kuribas: Yes it is |
2021-08-11 10:31:39 +0200 | <merijn> | kuribas: That's the entire freaking point of having IO |
2021-08-11 10:32:00 +0200 | <kuribas> | I mean, executing an IO action isn't pure... |
2021-08-11 10:32:21 +0200 | <merijn> | kuribas: executing IO is guaranteed to be ordered with respect to other |
2021-08-11 10:32:24 +0200 | <merijn> | *IO* |
2021-08-11 10:32:42 +0200 | <merijn> | You have completely ripped any sense of ordering out of the execution model |
2021-08-11 10:32:48 +0200 | <kuribas> | execpt if you have threads? |
2021-08-11 10:32:51 +0200 | <kuribas> | except for lazy IO? |
2021-08-11 10:32:58 +0200 | <merijn> | And made it so that a pure function "a -> b" can execute IO |
2021-08-11 10:33:08 +0200 | <kuribas> | I mean, IO code can call C that has a timer and does an action at a random time... |
2021-08-11 10:33:11 +0200 | <Taneb> | kuribas: memoize2 (\x -> putStrLn x >> length x) >>= \f -> print (f "hello" == f "hello"); what does this print |
2021-08-11 10:33:14 +0200 | <merijn> | kuribas: Lazy IO violates purity and there's a reason why it's called* *unsafe*InterleaveIO |
2021-08-11 10:33:20 +0200 | <merijn> | kuribas: Because lazy IO *is* unsafe |
2021-08-11 10:33:33 +0200 | <merijn> | kuribas: Threads are still well ordered with respect to IO in the same thread |
2021-08-11 10:33:34 +0200 | <Cajun> | isnt IO the way of purely (in the language representation) dealing with impure concepts? |
2021-08-11 10:34:04 +0200 | <kuribas> | yes |
2021-08-11 10:34:05 +0200 | <merijn> | Like, I don't mind people doing *wildly* unsafe things |
2021-08-11 10:34:15 +0200 | <merijn> | but don't kid yourself that this code is not *wildly* unsafe |
2021-08-11 10:34:18 +0200 | <kuribas> | There is no garantee of safety in IO, which is why IO exists. |
2021-08-11 10:34:29 +0200 | <merijn> | kuribas: IO guarantees lots of safety |
2021-08-11 10:34:36 +0200 | <Taneb> | kuribas: this makes there no guarantee of safety in some later not-IO |
2021-08-11 10:34:38 +0200 | <Cajun> | i would say as a rule of thumb avoid unsafePerformIO unless its provably pure |
2021-08-11 10:34:38 +0200 | <merijn> | There is no guarantee of safety in code using/doing unsafe things |
2021-08-11 10:34:44 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-08-11 10:34:53 +0200 | <kuribas> | Taneb: yes it does. The resulting function is pure. |
2021-08-11 10:35:50 +0200 | <Taneb> | No it isn;t |
2021-08-11 10:35:56 +0200 | <kuribas> | yes it is. |
2021-08-11 10:35:58 +0200 | <Taneb> | It can randomly do side effects |
2021-08-11 10:36:01 +0200 | <Taneb> | It just pretends to be pure |
2021-08-11 10:36:32 +0200 | <kuribas> | Taneb: It's the IO which does the side-effects. |
2021-08-11 10:36:49 +0200 | <merijn> | kuribas: That resulting function is not pure |
2021-08-11 10:36:56 +0200 | <merijn> | kuribas: For any sensible or common definition of pure |
2021-08-11 10:37:04 +0200 | <Cajun> | youre *always* doing IO when you use unsafePerformIO correct? |
2021-08-11 10:37:13 +0200 | <Taneb> | kuribas: the IO tag is long gone when the side effects can happen |
2021-08-11 10:37:18 +0200 | <merijn> | Cajun: "maybe" |
2021-08-11 10:37:24 +0200 | <kuribas> | Taneb: true |
2021-08-11 10:37:30 +0200 | cawfee | (~root@2406:3003:2077:2758::babe) (Ping timeout: 240 seconds) |
2021-08-11 10:37:38 +0200 | <merijn> | Cajun: You should consider "unsafePerformIO" to mean "I'm ok with this happening 0, 1, or more times" |
2021-08-11 10:37:55 +0200 | <Cajun> | does linearTypes not solve that? |
2021-08-11 10:38:03 +0200 | <merijn> | Cajun: Since it might end up getting completely optimised away :p |
2021-08-11 10:38:03 +0200 | <kuribas> | Taneb: but that can be true of any IO action. |
2021-08-11 10:38:03 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2021-08-11 10:38:06 +0200 | <Cajun> | or whatever the new thing was called that means it can only be used once |
2021-08-11 10:38:10 +0200 | <merijn> | kuribas: No |
2021-08-11 10:38:21 +0200 | <merijn> | kuribas: That is true of any *code* (IO or no) that uses unsafeX |
2021-08-11 10:38:42 +0200 | <merijn> | kuribas: Which is why you should not use unsafeX unless you know what you're doing, since it completely invalidates all safety |
2021-08-11 10:38:53 +0200 | <Cajun> | ST monad uses unsafePerformIO and is entirely type safe |
2021-08-11 10:39:04 +0200 | <merijn> | Cajun: It does not |
2021-08-11 10:39:25 +0200 | <merijn> | Cajun: At least, not last time I looked at all the implementation |
2021-08-11 10:39:30 +0200 | <merijn> | Cajun: It would make no sense, anyway |
2021-08-11 10:39:57 +0200 | <merijn> | Cajun: Both ST and IO are implemented using the same ST# (i.e. primitive ST) monad inside GHC |
2021-08-11 10:40:12 +0200 | <Cajun> | ah yeah it doesnt, it does use unsafe functions but not that specific one |
2021-08-11 10:40:15 +0200 | pilyn | (~pilyn@user/pilyn) |
2021-08-11 10:40:23 +0200 | <merijn> | Cajun: It doesn't use unsafe functions, afaik |
2021-08-11 10:40:31 +0200 | <merijn> | Cajun: It doesn't have to, because it's not unsafe |
2021-08-11 10:40:43 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-11 10:40:45 +0200 | <merijn> | ST is perfectly fine and cromulent |
2021-08-11 10:40:49 +0200 | <kuribas> | merijn: we can debate this, but "memoize2 :: (Eq a, Hashable a) => (a -> IO b) -> (a -> b)" is far, far worse. |
2021-08-11 10:41:09 +0200 | <merijn> | kuribas: Not really |
2021-08-11 10:41:11 +0200 | <kuribas> | and far less predictable. |
2021-08-11 10:41:16 +0200 | <merijn> | kuribas: No |
2021-08-11 10:41:19 +0200 | <merijn> | It's really not |
2021-08-11 10:41:40 +0200 | <merijn> | It superficially looks less safe than your current version |
2021-08-11 10:41:50 +0200 | <merijn> | But practically speaking it's exactly as bad as what you have now |
2021-08-11 10:42:25 +0200 | <Cajun> | merijn: it does define some unsafe functions but thats for lazy deference of the monad well i know you can implement a typesafe version of the ST monad in normal haskell (not GHC nonsense :P ) using unsafePerformIO |
2021-08-11 10:42:55 +0200 | <Cajun> | those two sentences didnt meld together well but i hope you get the idea lol |
2021-08-11 10:46:04 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2021-08-11 10:46:44 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-11 10:47:04 +0200 | fendor | (~fendor@213162073240.public.t-mobile.at) |
2021-08-11 10:49:16 +0200 | img | (~img@user/img) |
2021-08-11 10:50:12 +0200 | burnsidesLlama | (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
2021-08-11 10:53:39 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-08-11 10:55:37 +0200 | <kuribas> | merijn: I don't disagree that it's unsafe, I disagree that IO has to be safe, or that its effects have to be momentarily. |
2021-08-11 10:56:20 +0200 | <kuribas> | For example, and IO action returns a value, and no side effects will happen after returning that value. |
2021-08-11 10:56:36 +0200 | <kuribas> | It's a good property to have, but it's not a property that IO is garanteed to have. |
2021-08-11 10:56:42 +0200 | <merijn> | That's 100% in the absence of threading |
2021-08-11 10:56:58 +0200 | ubert | (~Thunderbi@91.141.49.166.wireless.dyn.drei.com) |
2021-08-11 10:57:17 +0200 | <kuribas> | what about interupts, timers? |
2021-08-11 10:57:42 +0200 | <merijn> | Can't set interrupt or timers that (visibly) affect non-IO code |
2021-08-11 10:57:59 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-08-11 10:57:59 +0200 | cheater | (~Username@user/cheater) |
2021-08-11 10:57:59 +0200 | <merijn> | Timers, interrupts, and async exceptions are only visible within IO |
2021-08-11 10:58:10 +0200 | <merijn> | Pure code can't notice them |
2021-08-11 10:58:27 +0200 | chomwitt | (~chomwitt@2a02:587:dc02:6400:12c3:7bff:fe6d:d374) |
2021-08-11 11:00:11 +0200 | <kuribas> | merijn: you cannot "see" the effects of the IO in my signature above. From IO, yes, but not from pure code. |
2021-08-11 11:01:29 +0200 | <kuribas> | hmm, well maybe you can |
2021-08-11 11:01:34 +0200 | <kuribas> | with lazyIO... |
2021-08-11 11:01:40 +0200 | <merijn> | Anyway, I'm bored of this discussion |
2021-08-11 11:01:46 +0200 | burnsidesLlama | (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection) |
2021-08-11 11:02:21 +0200 | burnsidesLlama | (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
2021-08-11 11:02:24 +0200 | <merijn> | I'll pre-emptively give you my "I told you so", feel free to cash it in at any later point when things blow up :p |
2021-08-11 11:02:26 +0200 | <kuribas> | yeah, I am not sure I'll use it anyway... |
2021-08-11 11:02:43 +0200 | <kuribas> | merijn: sure :)à |
2021-08-11 11:05:07 +0200 | montxero | (~user@149.167.149.74) |
2021-08-11 11:06:41 +0200 | burnsidesLlama | (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 248 seconds) |
2021-08-11 11:08:31 +0200 | cawfee | (~root@2406:3003:2077:2758::babe) |
2021-08-11 11:10:44 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
2021-08-11 11:11:51 +0200 | silasfox | (~silasfox@62.159.27.1) |
2021-08-11 11:12:03 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-08-11 11:13:59 +0200 | adam1 | gfunk |
2021-08-11 11:15:30 +0200 | gfunk | adam1 |
2021-08-11 11:20:44 +0200 | adam1 | (~adam@2001-b011-4007-0cae-c534-472f-0009-0a8c.dynamic-ip6.hinet.net) (Quit: WeeChat 3.2) |
2021-08-11 11:22:31 +0200 | adam1 | (~adam@2001-b011-4007-0cae-c534-472f-0009-0a8c.dynamic-ip6.hinet.net) |
2021-08-11 11:26:05 +0200 | silasfox | (~silasfox@62.159.27.1) (Quit: Connection closed) |
2021-08-11 11:28:32 +0200 | silasfox | (~silasfox@62.159.27.1) |
2021-08-11 11:30:24 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:fe6f:ef7e:c421:8ab8) (Quit: WeeChat 2.8) |
2021-08-11 11:34:32 +0200 | silasfox | (~silasfox@62.159.27.1) (Quit: Connection closed) |
2021-08-11 11:36:23 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-11 11:37:16 +0200 | silasfox | (~silasfox@62.159.27.1) |
2021-08-11 11:40:16 +0200 | cods | (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 250 seconds) |
2021-08-11 11:40:26 +0200 | montxero | (~user@149.167.149.74) (Read error: No route to host) |
2021-08-11 11:40:37 +0200 | cods | (~fred@82-65-232-44.subs.proxad.net) |
2021-08-11 11:40:57 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
2021-08-11 11:43:07 +0200 | chomwitt | (~chomwitt@2a02:587:dc02:6400:12c3:7bff:fe6d:d374) (Ping timeout: 258 seconds) |
2021-08-11 11:44:13 +0200 | adam1 | (~adam@2001-b011-4007-0cae-c534-472f-0009-0a8c.dynamic-ip6.hinet.net) (Quit: WeeChat 3.2) |
2021-08-11 11:47:03 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
2021-08-11 11:56:31 +0200 | <Gurkenglas> | Is there a library that wraps all the reasonable uses of unsafePerformIO, or is there folk knowledge to the effect that you could never cover exactly the reasonable usecases? |
2021-08-11 11:57:00 +0200 | cods | (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 276 seconds) |
2021-08-11 11:57:26 +0200 | cods | (~fred@82-65-232-44.subs.proxad.net) |
2021-08-11 11:57:36 +0200 | chomwitt | (~chomwitt@2a02:587:dc02:6400:12c3:7bff:fe6d:d374) |
2021-08-11 11:57:37 +0200 | MorrowM | (~Morrow@176.12.208.59) |
2021-08-11 11:57:55 +0200 | <Gurkenglas> | (but even so - is there a library that wraps many reasonable usecases but not all, and perhaps another module that wraps all the reasonable usecases and then some, to find a tighter upper bound on the unattainable?) |
2021-08-11 11:58:58 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-11 11:59:35 +0200 | <Gurkenglas> | (Same for unsafeCoerce, of course, where Gödel says we can at most do the latter nested interval sequence) |
2021-08-11 12:02:17 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-08-11 12:02:26 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 12:03:14 +0200 | fendor_ | (~fendor@212095005136.public.telering.at) |
2021-08-11 12:04:24 +0200 | fendor | (~fendor@213162073240.public.t-mobile.at) (Ping timeout: 268 seconds) |
2021-08-11 12:05:43 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:3164:2b89:620b:cb12) |
2021-08-11 12:07:29 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds) |
2021-08-11 12:07:33 +0200 | montxero | (~user@149.167.149.74) |
2021-08-11 12:07:48 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 12:08:24 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 12:12:28 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
2021-08-11 12:15:47 +0200 | davros | (~davros@host86-184-180-96.range86-184.btcentralplus.com) (Remote host closed the connection) |
2021-08-11 12:16:16 +0200 | akronymus | (~akronymus@85.31.8.181) (Ping timeout: 246 seconds) |
2021-08-11 12:18:48 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-11 12:19:58 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 12:21:04 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9574c56a490b8c03a837.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2021-08-11 12:25:17 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-08-11 12:25:37 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 248 seconds) |
2021-08-11 12:25:43 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 12:30:57 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds) |
2021-08-11 12:30:58 +0200 | fendor_ | (~fendor@212095005136.public.telering.at) (Read error: Connection reset by peer) |
2021-08-11 12:31:05 +0200 | akronymus | (~akronymus@85.31.8.181) |
2021-08-11 12:31:30 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 12:32:08 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-08-11 12:32:15 +0200 | oxide | (~lambda@user/oxide) |
2021-08-11 12:35:01 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 12:35:17 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-11 12:35:43 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-11 12:37:04 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-08-11 12:37:13 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 12:39:29 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 248 seconds) |
2021-08-11 12:43:13 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 248 seconds) |
2021-08-11 12:43:45 +0200 | bin_ | (~bin@user/bin/x-1583188) |
2021-08-11 12:43:52 +0200 | _bin | (~bin@user/bin/x-1583188) (Ping timeout: 268 seconds) |
2021-08-11 12:45:15 +0200 | OscarH_ | (~OscarH@97e48a81.skybroadband.com) |
2021-08-11 12:45:58 +0200 | OscarH | (~OscarH@97e48a81.skybroadband.com) (Ping timeout: 272 seconds) |
2021-08-11 12:47:21 +0200 | jneira | (~jneira@212.8.115.226) (Quit: Client closed) |
2021-08-11 12:47:54 +0200 | jneira | (~jneira@212.8.115.226) |
2021-08-11 12:48:01 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds) |
2021-08-11 12:48:31 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 12:52:21 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-11 12:53:43 +0200 | norias | (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 268 seconds) |
2021-08-11 12:56:27 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-11 12:56:57 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-11 12:57:37 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 248 seconds) |
2021-08-11 12:58:39 +0200 | Guest46 | (~Guest46@2a01:4b00:8099:2b00:a808:2632:c145:d901) |
2021-08-11 12:58:39 +0200 | <Guest46> | hi |
2021-08-11 12:59:17 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-08-11 12:59:28 +0200 | <Guest46> | how nice is purescript frontend + haskell backend as a development experience? |
2021-08-11 13:00:08 +0200 | <Guest46> | i was thinking of making a website that lets you run code online but ties into the compiler for integration/tips or maybe language server |
2021-08-11 13:00:20 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 13:00:24 +0200 | <Guest46> | is it better to do everything on the backend and have a very dumb front end? |
2021-08-11 13:01:01 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-11 13:01:44 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
2021-08-11 13:03:42 +0200 | <maerwald[m]> | Guest46: typescript + haskell is better |
2021-08-11 13:03:55 +0200 | <Guest46> | could you explain please? |
2021-08-11 13:04:17 +0200 | akronymus | (~akronymus@85.31.8.181) () |
2021-08-11 13:04:33 +0200 | MorrowM | (~Morrow@176.12.208.59) (Ping timeout: 248 seconds) |
2021-08-11 13:04:50 +0200 | <maerwald[m]> | purescript isn't popular, lacks documentation, requires effort to integrate with certain js libraries, etc etc |
2021-08-11 13:04:56 +0200 | <maerwald[m]> | doesn't bring much to the table compared to typescript |
2021-08-11 13:05:14 +0200 | <Guest46> | is elm better? |
2021-08-11 13:05:43 +0200 | <Guest46> | i tried Rust with Seed (web assembly frontend) and found a bunch of strange runtime problems |
2021-08-11 13:06:06 +0200 | <maerwald[m]> | have never used elm... not sure why I would choose that over typescript either |
2021-08-11 13:06:35 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-08-11 13:06:44 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
2021-08-11 13:06:44 +0200 | <maerwald[m]> | the language isn't even exciting (unlike purescript) |
2021-08-11 13:08:02 +0200 | Guest46 | (~Guest46@2a01:4b00:8099:2b00:a808:2632:c145:d901) (Quit: Client closed) |
2021-08-11 13:08:15 +0200 | Guest46 | (~Guest46@2a01:4b00:8099:2b00:a808:2632:c145:d901) |
2021-08-11 13:09:50 +0200 | <Guest46> | hmm maybe typescript is best |
2021-08-11 13:09:56 +0200 | <Guest46> | i'm guessing that asterius is still not usable?? |
2021-08-11 13:10:04 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-08-11 13:10:54 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Ping timeout: 258 seconds) |
2021-08-11 13:15:42 +0200 | Vajb | (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583) |
2021-08-11 13:15:49 +0200 | <nf> | int-e: hi! would you consider releasing a new lambdabot version please? |
2021-08-11 13:18:48 +0200 | <int-e> | oh wow, has it been a year already? |
2021-08-11 13:21:01 +0200 | jneira | (~jneira@212.8.115.226) (Ping timeout: 246 seconds) |
2021-08-11 13:22:41 +0200 | azeem | (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Remote host closed the connection) |
2021-08-11 13:22:51 +0200 | azeem | (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) |
2021-08-11 13:23:19 +0200 | Arsen | (~arsen@managarm/dev/Arsen) (Quit: Quit.) |
2021-08-11 13:24:12 +0200 | Arsen | (~arsen@managarm/dev/Arsen) |
2021-08-11 13:29:12 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-11 13:30:01 +0200 | <Guest46> | int-e sorry if this is a dumb question but how does lambda bot ensure it is secure? like running random bits of code off the internet |
2021-08-11 13:30:09 +0200 | <Guest46> | not that the expressions are complicated |
2021-08-11 13:31:57 +0200 | <int-e> | Guest46: well, it leverages SafeHaskell and the type system to avoid running arbitrary IO. But I've also sandboxed mueval (which is what compiles and runs the Haskell code for lambdabot)... |
2021-08-11 13:33:25 +0200 | <merijn> | Guest46: Yahb doesn't bother with safe haskell at all and relies on just sandboxing |
2021-08-11 13:33:39 +0200 | <merijn> | % readFile "/etc/passwd" >>= putStrLn |
2021-08-11 13:33:40 +0200 | <yahb> | merijn: *** Exception: /etc/passwd: openFile: does not exist (No such file or directory) |
2021-08-11 13:33:50 +0200 | <Guest46> | huh interesting so like a linux container |
2021-08-11 13:33:53 +0200 | <Guest46> | or virtual machine? |
2021-08-11 13:34:07 +0200 | <merijn> | That or something like a BSD jail, yeah |
2021-08-11 13:34:10 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 272 seconds) |
2021-08-11 13:34:16 +0200 | <merijn> | With limited network access, presumably |
2021-08-11 13:34:25 +0200 | <merijn> | > print True |
2021-08-11 13:34:26 +0200 | <lambdabot> | <IO ()> |
2021-08-11 13:34:32 +0200 | <merijn> | Lambdabot refuses to run IO |
2021-08-11 13:34:34 +0200 | <merijn> | % print True |
2021-08-11 13:34:34 +0200 | <yahb> | merijn: True |
2021-08-11 13:34:38 +0200 | Cajun | (~Cajun@user/cajun) (Quit: Client closed) |
2021-08-11 13:35:26 +0200 | <Guest46> | that's very intriguing two different approaches. i suppose i'd always need a sandbox because of memory leaks |
2021-08-11 13:35:53 +0200 | <merijn> | And possible bugs :p |
2021-08-11 13:36:03 +0200 | <Guest46> | 'possible' is optimistic haha |
2021-08-11 13:36:09 +0200 | <Guest46> | at least for me |
2021-08-11 13:36:16 +0200 | <merijn> | lambdabot certainly had issues in the past |
2021-08-11 13:36:41 +0200 | <merijn> | But it's also been around for a *long* ass time and most obvious (and obscure) exploits have been tried already :p |
2021-08-11 13:37:02 +0200 | <Guest46> | i don't really know what i'm doing so i guess i'll just run my code in as strict a sandbox that runs the code without internet |
2021-08-11 13:37:03 +0200 | <merijn> | For sure lambdabot was already around when I started somewhere around 2007-2009, I think |
2021-08-11 13:37:19 +0200 | <merijn> | Guest46: In general the best approach is "don't run untrusted code" :p |
2021-08-11 13:37:25 +0200 | <Guest46> | ahh |
2021-08-11 13:37:30 +0200 | <Guest46> | well the idea is an educational haskell site |
2021-08-11 13:37:34 +0200 | <Guest46> | it is pretty much part of the premise |
2021-08-11 13:39:22 +0200 | <Guest46> | i also think it would be pretty fun to figure out how to do it, thanks i'll look into mueval :) have a nice day |
2021-08-11 13:39:28 +0200 | markpythonicbitc | (~markpytho@2601:647:5a00:35:9c61:394:eb0f:e1ed) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-08-11 13:39:37 +0200 | <merijn> | Guest46: RIP your sanity, then ;) |
2021-08-11 13:40:00 +0200 | <merijn> | Guest46: Well, one thing to ask yourself is whether you need/want to, support using IO for one thing |
2021-08-11 13:40:08 +0200 | norias | (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
2021-08-11 13:40:51 +0200 | <Guest46> | i'll err on the side of caution and avoid running arbitrary IO until I have to |
2021-08-11 13:41:53 +0200 | oxide | (~lambda@user/oxide) (Ping timeout: 248 seconds) |
2021-08-11 13:42:24 +0200 | futty | (~futty@c83-252-75-55.bredband.tele2.se) |
2021-08-11 13:43:03 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 268 seconds) |
2021-08-11 13:44:46 +0200 | favonia | (~favonia@user/favonia) |
2021-08-11 13:45:01 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2021-08-11 13:45:32 +0200 | Guest8443 | (~Guest84@2406:3003:2006:447e:71a7:e07d:4b0e:e66e) |
2021-08-11 13:47:51 +0200 | lep | lep- |
2021-08-11 13:48:26 +0200 | <futty> | The use of the words "variant" and "invariant" is of importance in defining/designing recursion in my Haskell course and I have an understanding of them. But I cant quite define what they are, can anyone help me out? |
2021-08-11 13:48:46 +0200 | oxide | (~lambda@user/oxide) |
2021-08-11 13:49:25 +0200 | <Guest46> | do you have a specific example that you are confused about? |
2021-08-11 13:49:34 +0200 | <Guest46> | that may help narrow down any confusions |
2021-08-11 13:49:50 +0200 | <merijn> | futty: An "invariant" doesn't, well, vary. i.e. it's a property that is true for all possible executions |
2021-08-11 13:50:58 +0200 | chomwitt | (~chomwitt@2a02:587:dc02:6400:12c3:7bff:fe6d:d374) (Ping timeout: 240 seconds) |
2021-08-11 13:51:02 +0200 | <merijn> | futty: I'm not sure I see "variant" very often in Haskell, tbh |
2021-08-11 13:51:13 +0200 | <merijn> | futty: Other than it's normal English usage |
2021-08-11 13:51:20 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge) |
2021-08-11 13:51:23 +0200 | <merijn> | But yeah, context would be useful |
2021-08-11 13:53:17 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) |
2021-08-11 13:53:54 +0200 | <futty> | myReplicate :: Integer -> a -> [a] |
2021-08-11 13:53:54 +0200 | <futty> | --variant: n |
2021-08-11 13:53:55 +0200 | <futty> | myReplicate 0 toRep = [] |
2021-08-11 13:53:55 +0200 | <futty> | myReplicate n toRep = toRep : myReplicate (n-1) toRep |
2021-08-11 13:54:31 +0200 | <futty> | I have a better understanding of a variant, it is literally varying and eventually pattern matching aganst a base case. That ensures function termination. |
2021-08-11 13:55:13 +0200 | <futty> | I cant really understand invariant, it is for example found in the algorithm book when describing a sorting algorithm. |
2021-08-11 13:56:21 +0200 | <unrooted> | Can I still somehow continue 'Stack install' even if I get 'warning: - Wdeprecations'? |
2021-08-11 13:56:34 +0200 | <futty> | https://imgur.com/PeJvwvc |
2021-08-11 13:56:35 +0200 | Vajb | (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583) (Read error: Connection reset by peer) |
2021-08-11 13:56:50 +0200 | kor1 | (~kor1@user/kor1) |
2021-08-11 13:56:53 +0200 | Guest46 | (~Guest46@2a01:4b00:8099:2b00:a808:2632:c145:d901) (Quit: Client closed) |
2021-08-11 13:56:58 +0200 | <futty> | The example of invariant. It is described in such formal language that I cant quite grasp what it is. |
2021-08-11 13:57:10 +0200 | <merijn> | futty: A loop invariant is a property that is true for every iteration of the loop |
2021-08-11 13:57:29 +0200 | <merijn> | futty: A property whose truth doesn't change, regardless of which iteration we're in |
2021-08-11 13:57:40 +0200 | <futty> | If I say this: |
2021-08-11 13:58:04 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
2021-08-11 13:58:18 +0200 | <futty> | A variant ensures termination in a recursive function and an invariant ensures the correctness? of the algorithm in a function, would that be a correct description? |
2021-08-11 13:59:30 +0200 | <merijn> | futty: An invariant doesn't ensure anything, it just is |
2021-08-11 13:59:45 +0200 | <merijn> | Proving that a property is invariant my simplify other proofs |
2021-08-11 14:00:11 +0200 | <futty> | alright, thank you guys |
2021-08-11 14:00:14 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-08-11 14:00:27 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
2021-08-11 14:01:18 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-11 14:01:58 +0200 | ubert | (~Thunderbi@91.141.49.166.wireless.dyn.drei.com) (Quit: ubert) |
2021-08-11 14:02:16 +0200 | spirit_ | (~spirit@122.164.113.81) (Remote host closed the connection) |
2021-08-11 14:02:22 +0200 | ubert | (~Thunderbi@91.141.49.166.wireless.dyn.drei.com) |
2021-08-11 14:02:41 +0200 | jneira | (~jneira@212.8.115.226) |
2021-08-11 14:05:13 +0200 | Guest8443 | (~Guest84@2406:3003:2006:447e:71a7:e07d:4b0e:e66e) (Quit: Client closed) |
2021-08-11 14:05:35 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-11 14:06:29 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 268 seconds) |
2021-08-11 14:07:18 +0200 | markpythonicbitc | (~markpytho@50.228.44.6) |
2021-08-11 14:08:20 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 268 seconds) |
2021-08-11 14:09:16 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 14:09:17 +0200 | tomd99 | (~a@p200300ef97023872a00237f9722b67dc.dip0.t-ipconnect.de) |
2021-08-11 14:10:23 +0200 | <tomd99> | Is a lambda function more strict than a normal function? |
2021-08-11 14:10:29 +0200 | <tomd99> | > x = id True |
2021-08-11 14:10:31 +0200 | <tomd99> | > y = (\a -> a) True |
2021-08-11 14:10:31 +0200 | <lambdabot> | <hint>:1:3: error: parse error on input ‘=’ |
2021-08-11 14:10:32 +0200 | <lambdabot> | <hint>:1:3: error: parse error on input ‘=’ |
2021-08-11 14:10:33 +0200 | <tomd99> | > :sprint x y |
2021-08-11 14:10:34 +0200 | <lambdabot> | <hint>:1:1: error: parse error on input ‘:’ |
2021-08-11 14:10:35 +0200 | <tomd99> | x = _ |
2021-08-11 14:10:37 +0200 | <tomd99> | y = True |
2021-08-11 14:13:08 +0200 | <lortabac> | tomd99: "normal" function declarations are just syntactic sugar for lambdas |
2021-08-11 14:13:10 +0200 | Guest71 | (~Guest71@46.97.169.79) |
2021-08-11 14:13:46 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2021-08-11 14:15:07 +0200 | <lortabac> | tomd99: you can try `id' = \x -> x; z = id' True` and then :sprint z |
2021-08-11 14:15:11 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Read error: Connection reset by peer) |
2021-08-11 14:15:50 +0200 | viluon | (uid453725@id-453725.brockwell.irccloud.com) |
2021-08-11 14:17:01 +0200 | <tomd99> | lortabac: So naming a function adds additional indirection? |
2021-08-11 14:17:56 +0200 | <hpc> | it's actually top-level definitions in ghci that are odd |
2021-08-11 14:18:51 +0200 | <hpc> | when you do something like "a = True", a starts fully evaluated |
2021-08-11 14:18:52 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-08-11 14:19:08 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds) |
2021-08-11 14:19:20 +0200 | <hpc> | and you need that additional layer of id to get back to what you would normally see in a program (minus optimizations) |
2021-08-11 14:20:34 +0200 | tlaxkit | (~hexchat@170.253.40.255) |
2021-08-11 14:20:58 +0200 | <hpc> | how far it goes with that evaluation seems to stop at free variables? |
2021-08-11 14:21:50 +0200 | _73 | (~user@pool-96-233-64-53.bstnma.fios.verizon.net) |
2021-08-11 14:22:00 +0200 | <hpc> | y = (\z x -> x z) True (\x -> x) |
2021-08-11 14:22:04 +0200 | <hpc> | y = True |
2021-08-11 14:22:07 +0200 | <hpc> | y = (\z x -> x $ z) True (\x -> x) |
2021-08-11 14:22:11 +0200 | <hpc> | y = _ |
2021-08-11 14:22:57 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge) |
2021-08-11 14:23:07 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) |
2021-08-11 14:23:08 +0200 | qwedfg | (~qwedfg@user/qwedfg) |
2021-08-11 14:23:56 +0200 | <hpc> | yeah, it still does "x = _" even if you define "id' = \x -> x" |
2021-08-11 14:24:03 +0200 | <hpc> | so that's what's happening i suspect |
2021-08-11 14:24:03 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) (Client Quit) |
2021-08-11 14:24:13 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) |
2021-08-11 14:25:23 +0200 | _73 | (~user@pool-96-233-64-53.bstnma.fios.verizon.net) () |
2021-08-11 14:25:42 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) (Client Quit) |
2021-08-11 14:25:53 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) |
2021-08-11 14:26:28 +0200 | Guest71 | (~Guest71@46.97.169.79) (Ping timeout: 246 seconds) |
2021-08-11 14:27:42 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) (Client Quit) |
2021-08-11 14:27:56 +0200 | <viluon> | hi, is it possible to `stack clean` build artifacts for a package my project depends on? |
2021-08-11 14:28:09 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) |
2021-08-11 14:29:40 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) (Client Quit) |
2021-08-11 14:32:24 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds) |
2021-08-11 14:32:57 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) |
2021-08-11 14:33:15 +0200 | MidAutumnHotaru | MidAutumnMoon |
2021-08-11 14:35:47 +0200 | kmein | (~weechat@user/kmein) (Quit: ciao kakao) |
2021-08-11 14:36:05 +0200 | kmein | (~weechat@user/kmein) |
2021-08-11 14:36:21 +0200 | <viluon> | I believe I may have run into a Cabal or Stack bug (suggested here https://stackoverflow.com/questions/54156236/how-to-resolve-however-the-given-installed-package-in…) after a failed compilation in an ASCII locale. I switched to UTF-8 and regenerated the locales and am stuck with "dependencies were requested... however the given installed package instance does not exist" errors. |
2021-08-11 14:36:26 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 14:36:30 +0200 | <viluon> | Stack config and logs are here (https://paste.tomsmeding.com/deuH2dqX), this is being compiled with a fork of GHC but it's believed to work |
2021-08-11 14:38:33 +0200 | <viluon> | repo is here (https://github.com/viluon/ghc-wpc-sample-programs). I'd like to retain the compilation artifacts for anything that did build successfully since it's a large project. Hence my query about `stack clean`. |
2021-08-11 14:41:12 +0200 | <nf> | int-e: time flies |
2021-08-11 14:42:07 +0200 | lep- | lep |
2021-08-11 14:42:16 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 268 seconds) |
2021-08-11 14:43:26 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-11 14:43:52 +0200 | <kuribas> | ugh, I wish I could turn of shadowing warnings locally... |
2021-08-11 14:43:58 +0200 | burnsidesLlama | (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
2021-08-11 14:47:11 +0200 | yoctocell | (~user@h87-96-130-155.cust.a3fiber.se) (Remote host closed the connection) |
2021-08-11 14:47:42 +0200 | chomwitt | (~chomwitt@ppp-2-85-147-24.home.otenet.gr) |
2021-08-11 14:48:16 +0200 | burnsidesLlama | (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 258 seconds) |
2021-08-11 14:49:53 +0200 | bitmapper | (uid464869@id-464869.tooting.irccloud.com) |
2021-08-11 14:50:01 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-11 14:50:09 +0200 | cladur | (~cladur@user-5-173-146-9.play-internet.pl) (Ping timeout: 248 seconds) |
2021-08-11 14:52:34 +0200 | barrucadu | (~barrucadu@carcosa.barrucadu.co.uk) (Quit: leaving) |
2021-08-11 14:53:59 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 268 seconds) |
2021-08-11 14:57:02 +0200 | yourname_ | (~barrucadu@carcosa.barrucadu.co.uk) |
2021-08-11 14:57:50 +0200 | fendor | (~fendor@213162073059.public.t-mobile.at) |
2021-08-11 14:57:51 +0200 | yourname_ | barrucadu |
2021-08-11 14:58:56 +0200 | hendursa1 | (~weechat@user/hendursaga) (Quit: hendursa1) |
2021-08-11 14:58:59 +0200 | jneira | (~jneira@212.8.115.226) (Quit: Client closed) |
2021-08-11 14:59:37 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-08-11 14:59:39 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 276 seconds) |
2021-08-11 15:00:40 +0200 | fendor | (~fendor@213162073059.public.t-mobile.at) (Remote host closed the connection) |
2021-08-11 15:00:51 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) |
2021-08-11 15:01:06 +0200 | alx741 | (~alx741@181.196.68.193) |
2021-08-11 15:03:28 +0200 | lep | lep- |
2021-08-11 15:08:13 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-11 15:08:28 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Client Quit) |
2021-08-11 15:08:51 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-11 15:09:42 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-08-11 15:09:49 +0200 | emliunix | (~emliunix@103.138.75.119) (Remote host closed the connection) |
2021-08-11 15:12:07 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-08-11 15:15:27 +0200 | <int-e> | Oh sigh, bit rot... ghc-9.0.1 broke knob, which lambdabot depends on via misfortune... Okay, no 9.0.1 support today. |
2021-08-11 15:15:39 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-11 15:16:07 +0200 | <int-e> | nf: anyway: working on it, see https://github.com/lambdabot/lambdabot/pull/200 |
2021-08-11 15:16:35 +0200 | <nf> | cool, thanks |
2021-08-11 15:18:54 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-11 15:18:58 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-08-11 15:19:25 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-11 15:22:20 +0200 | oxide | (~lambda@user/oxide) (Ping timeout: 268 seconds) |
2021-08-11 15:23:00 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-11 15:26:57 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-11 15:27:22 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-08-11 15:27:37 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-11 15:30:21 +0200 | pilyn | (~pilyn@user/pilyn) (Quit: Leaving) |
2021-08-11 15:30:39 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-11 15:34:51 +0200 | slack1256 | (~slack1256@181.203.38.2) |
2021-08-11 15:39:34 +0200 | tomd99 | (~a@p200300ef97023872a00237f9722b67dc.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2021-08-11 15:40:40 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-08-11 15:41:01 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection) |
2021-08-11 15:42:03 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-08-11 15:42:28 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection) |
2021-08-11 15:43:00 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-11 15:43:26 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-08-11 15:45:24 +0200 | chris | (~chris@81.96.113.213) |
2021-08-11 15:45:28 +0200 | chris | Guest4990 |
2021-08-11 15:47:05 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:3164:2b89:620b:cb12) (Quit: WeeChat 2.8) |
2021-08-11 15:48:57 +0200 | simon1 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2021-08-11 15:50:07 +0200 | timCF | (~timCF@200-149-20-81.sta.estpak.ee) |
2021-08-11 15:53:54 +0200 | <timCF> | Hello guys! I have a problem with `thread blocked indefinitely in an MVar operation` error. In my case at some point there is possibility that all threads which can write to the MVar are dead, and in this case Haskell runtime raises this async exception. To protect my program from this, I'm using `tryTakeMVar :: MVar a -> IO (Maybe a)` function instead of `takeMVar` to handle deadlock situations. But async |
2021-08-11 15:54:00 +0200 | <timCF> | exception still happens from time to time. What I'm doing wrong? |
2021-08-11 15:55:47 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-08-11 15:56:07 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 258 seconds) |
2021-08-11 15:56:15 +0200 | silasfox | (~silasfox@62.159.27.1) (Quit: Connection closed) |
2021-08-11 15:56:39 +0200 | <int-e> | timCF: Hard to say, but note that the exception can arise from putMVar as well |
2021-08-11 15:57:25 +0200 | <timCF> | int-e: I'm using `tryPutMVar` to avoid this error case. |
2021-08-11 15:57:58 +0200 | <int-e> | "Hard to say"--we'll need more details to narrow things down. |
2021-08-11 15:59:14 +0200 | <merijn> | timCF: If at some point all threads who can write are dead, then how would you ever recover? |
2021-08-11 16:00:05 +0200 | <merijn> | timCF: What are you using the MVar for? |
2021-08-11 16:00:09 +0200 | <timCF> | int-e: I can send a link to source code, maybe code explains itself better than me |
2021-08-11 16:00:12 +0200 | <timCF> | https://github.com/coingaming/lnd-client/blob/1a45d5fa731f39f73243a8a624d583a5858729b3/src/LndClie… |
2021-08-11 16:01:01 +0200 | <merijn> | timCF: Why not use an actual channel? |
2021-08-11 16:01:19 +0200 | <timCF> | merijn: Just to detect that something happened in spawned thread. In case where all processes are dead, tryTakeMVar will be always nothing and retry counter will run into zero |
2021-08-11 16:02:16 +0200 | <timCF> | merijn: you mean TChan instead of MVar? |
2021-08-11 16:03:10 +0200 | <timCF> | Is there any advantage in TChan vs MVar for case where it's needed just to detect once that something happened? |
2021-08-11 16:03:12 +0200 | <merijn> | That means wrapping with extra STM to check if it's closed, though |
2021-08-11 16:03:25 +0200 | <merijn> | timCF: hm |
2021-08-11 16:03:35 +0200 | <merijn> | timCF: You just have N workers and wanna know if they're all dead, yeah? |
2021-08-11 16:03:46 +0200 | <merijn> | timCF: Don't you just want QSemN? |
2021-08-11 16:06:45 +0200 | <timCF> | merijn: No, I have an gRPC subscription procedure which should return something from a server stream in case of success. So I'm providing to stream handler link to MVar to fill in. And then spawning subscription processes, trying to read this MVar in main process and hope for the best |
2021-08-11 16:07:38 +0200 | <timCF> | In case this "stream callback MVar" was not filled in 10 attempts - all procedure fails. |
2021-08-11 16:08:12 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-08-11 16:09:51 +0200 | <kuribas> | Is there a validation transformer? |
2021-08-11 16:09:56 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-08-11 16:10:39 +0200 | <timCF> | Spawned gRPC procedure might die before calling stream callback, which results in no active MVar references, but it should be fine because I'm using `tryPutMVar` and `tryTakeMVar` to avoid deadlock detection of Haskell runtime. |
2021-08-11 16:10:56 +0200 | <justsomeguy> | When installing stack manually, using the staic binary, as listed here https://docs.haskellstack.org/en/stable/install_and_upgrade/#manual-download_2, how do I check the gpg signature of the tar file? I don't see a signed checksum file anywhere. ... |
2021-08-11 16:12:29 +0200 | <kuribas> | hmm, I can just Compose Validation I guess... |
2021-08-11 16:13:53 +0200 | <merijn> | kuribas: Yeah, Applicatives don't need transformers due to Compose |
2021-08-11 16:14:19 +0200 | yoctocell | (~user@h87-96-130-155.cust.a3fiber.se) |
2021-08-11 16:14:58 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2021-08-11 16:16:00 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 268 seconds) |
2021-08-11 16:16:12 +0200 | mattil | (~mattilinn@62-113-178-139.bb.dnainternet.fi) |
2021-08-11 16:18:04 +0200 | mattil | (~mattilinn@62-113-178-139.bb.dnainternet.fi) (Max SendQ exceeded) |
2021-08-11 16:18:23 +0200 | <int-e> | timCF: how do you know which MVar is causing this? |
2021-08-11 16:18:58 +0200 | mattil | (~mattilinn@62-113-178-139.bb.dnainternet.fi) |
2021-08-11 16:20:07 +0200 | <kuribas> | ugh, validation depends on lens, and brings in the kitchen sink... |
2021-08-11 16:20:35 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-08-11 16:20:49 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 248 seconds) |
2021-08-11 16:21:07 +0200 | <timCF> | int-e: yes, this one https://github.com/coingaming/lnd-client/blob/1a45d5fa731f39f73243a8a624d583a5858729b3/src/LndClie… |
2021-08-11 16:24:42 +0200 | yoctocell | (~user@h87-96-130-155.cust.a3fiber.se) (Remote host closed the connection) |
2021-08-11 16:26:58 +0200 | <nf> | int-e: thanks for the release! |
2021-08-11 16:27:32 +0200 | yoctocell | (~user@h87-96-130-155.cust.a3fiber.se) |
2021-08-11 16:29:28 +0200 | <int-e> | nf: thanks for the prod! |
2021-08-11 16:31:08 +0200 | Vajb | (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583) |
2021-08-11 16:31:34 +0200 | <int-e> | timCF: that didn't answer my question, fwiw |
2021-08-11 16:32:13 +0200 | <int-e> | Then again I'm not sure I can help anyway. AFAIUI, try{Put,Take}MVar *can't* cause this exceptions because they can never block at all. |
2021-08-11 16:33:14 +0200 | <int-e> | Which strongly suggests that the actual MVar that's causing this is somewhere else, maybe in a dependency. |
2021-08-11 16:33:24 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 16:35:20 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:3164:2b89:620b:cb12) |
2021-08-11 16:35:46 +0200 | <timCF> | int-e: Hmm. Thanks for reply anyway! Maybe implementation of these functions was different before. I'm using not the latest version of Base, from lts-14.27 |
2021-08-11 16:36:30 +0200 | <int-e> | these have been dedicated primops for a very long time |
2021-08-11 16:37:23 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-08-11 16:38:06 +0200 | tomd99 | (~a@p200300ef97023872a00237f9722b67dc.dip0.t-ipconnect.de) |
2021-08-11 16:38:06 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-08-11 16:40:06 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-11 16:41:41 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 16:43:21 +0200 | <int-e> | Since early 2001, when tryPutMVar was added in the first place (tryTakeMVar already existed at that point) |
2021-08-11 16:46:53 +0200 | Skyfire | (~pyon@user/pyon) (Quit: WeeChat 3.2) |
2021-08-11 16:48:48 +0200 | tomd99 | (~a@p200300ef97023872a00237f9722b67dc.dip0.t-ipconnect.de) (Quit: WeeChat 3.0.1) |
2021-08-11 16:49:37 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 16:50:10 +0200 | rmoe | (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) (Ping timeout: 258 seconds) |
2021-08-11 16:51:15 +0200 | MorrowM | (~Morrow@176.12.208.59) |
2021-08-11 16:53:25 +0200 | Vajb | (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583) (Read error: Connection reset by peer) |
2021-08-11 16:53:45 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
2021-08-11 16:53:49 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
2021-08-11 16:58:54 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
2021-08-11 17:02:25 +0200 | chomwitt | (~chomwitt@ppp-2-85-147-24.home.otenet.gr) (Ping timeout: 248 seconds) |
2021-08-11 17:02:40 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2) |
2021-08-11 17:03:35 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-08-11 17:03:35 +0200 | Boomerang | (~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 258 seconds) |
2021-08-11 17:08:31 +0200 | Skyfire | (~pyon@user/pyon) |
2021-08-11 17:12:01 +0200 | MorrowM | (~Morrow@176.12.208.59) (Ping timeout: 258 seconds) |
2021-08-11 17:14:42 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 258 seconds) |
2021-08-11 17:15:07 +0200 | emliunix | (~emliunix@103.138.75.119) |
2021-08-11 17:17:17 +0200 | polyphem | (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756) (Remote host closed the connection) |
2021-08-11 17:17:24 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:3164:2b89:620b:cb12) (Quit: WeeChat 2.8) |
2021-08-11 17:17:43 +0200 | Sap | (~Sap@68.92-220-148.customer.lyse.net) |
2021-08-11 17:18:01 +0200 | Sap | (~Sap@68.92-220-148.customer.lyse.net) (Client Quit) |
2021-08-11 17:19:08 +0200 | Sap | (~Sap@68.92-220-148.customer.lyse.net) |
2021-08-11 17:20:34 +0200 | Sap | (~Sap@68.92-220-148.customer.lyse.net) (Client Quit) |
2021-08-11 17:20:46 +0200 | Sap | (~Sap@68.92-220-148.customer.lyse.net) |
2021-08-11 17:21:03 +0200 | Sap | (~Sap@68.92-220-148.customer.lyse.net) (Client Quit) |
2021-08-11 17:24:23 +0200 | <amesgen[m]> | kuribas: there is monad-validate: https://hackage.haskell.org/package/monad-validate-1.2.0.0/docs/Control-Monad-Validate.html |
2021-08-11 17:24:23 +0200 | <amesgen[m]> | It has a slightly unlawful Monad instance, which is documented in great detail |
2021-08-11 17:24:53 +0200 | <kuribas> | amesgen[m]: I wrote my own ValidateT, which is only an Applicative. |
2021-08-11 17:25:29 +0200 | <kuribas> | then I use "fromExceptT :: Functor m => ExceptT e m a -> ValidationT e m a" |
2021-08-11 17:25:42 +0200 | <kuribas> | So I can easily write functionality using mtl... |
2021-08-11 17:26:33 +0200 | <amesgen[m]> | yeah, monad-validate is an alternative where you don't have to convert from ExceptT all the time, at the cost that it is not a completely valid monad |
2021-08-11 17:26:59 +0200 | <amesgen[m]> | from the haddocks: "To put it another way, ValidateT provides “best effort” error reporting: it will never return fewer errors than an equivalent use of ExceptT, but it might return more." |
2021-08-11 17:27:09 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 17:32:08 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 17:33:59 +0200 | emliunix | (~emliunix@103.138.75.119) (Remote host closed the connection) |
2021-08-11 17:34:16 +0200 | emliunix | (~emliunix@103.138.75.119) |
2021-08-11 17:34:50 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 272 seconds) |
2021-08-11 17:35:52 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 17:36:59 +0200 | artem | (uid512590@highgate.irccloud.com) |
2021-08-11 17:37:06 +0200 | zmt00 | (~zmt00@user/zmt00) |
2021-08-11 17:40:44 +0200 | econo | (uid147250@user/econo) |
2021-08-11 17:40:57 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
2021-08-11 17:41:06 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2021-08-11 17:43:59 +0200 | oxide | (~lambda@user/oxide) |
2021-08-11 17:45:58 +0200 | emliunix | (~emliunix@103.138.75.119) (Remote host closed the connection) |
2021-08-11 17:45:59 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) |
2021-08-11 17:49:02 +0200 | polyphem | (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756) |
2021-08-11 17:49:35 +0200 | qrpnxz | (~qrpnxz@user/qrpnxz) (Ping timeout: 258 seconds) |
2021-08-11 17:50:49 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-11 17:56:26 +0200 | ubert | (~Thunderbi@91.141.49.166.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-08-11 17:58:33 +0200 | lbseale | (~lbseale@user/ep1ctetus) |
2021-08-11 18:01:18 +0200 | Natch | (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) |
2021-08-11 18:01:33 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-11 18:01:51 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2021-08-11 18:02:49 +0200 | qrpnxz | (abc4f95c31@user/qrpnxz) |
2021-08-11 18:06:14 +0200 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-08-11 18:07:39 +0200 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2021-08-11 18:11:35 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 18:11:57 +0200 | chomwitt | (~chomwitt@ppp-2-85-147-24.home.otenet.gr) |
2021-08-11 18:12:12 +0200 | xff0x | (~xff0x@2001:1a81:53fa:2600:8056:588e:c971:d9df) (Ping timeout: 258 seconds) |
2021-08-11 18:12:49 +0200 | tlaxkit | (~hexchat@170.253.40.255) (Ping timeout: 248 seconds) |
2021-08-11 18:13:03 +0200 | xff0x | (~xff0x@2001:1a81:53fa:2600:743d:308e:abb:126) |
2021-08-11 18:16:39 +0200 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
2021-08-11 18:19:21 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) (Quit: enoq) |
2021-08-11 18:19:24 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 18:19:45 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Ping timeout: 248 seconds) |
2021-08-11 18:22:27 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Read error: Connection reset by peer) |
2021-08-11 18:24:22 +0200 | emliunix | (~emliunix@8.38.148.66) |
2021-08-11 18:24:26 +0200 | oxide | (~lambda@user/oxide) (Ping timeout: 256 seconds) |
2021-08-11 18:26:07 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 18:26:19 +0200 | MorrowM | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
2021-08-11 18:26:53 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 18:30:01 +0200 | <tomsmeding> | maerwald: do you happen to know what ModTime is supposed to take in libarchive? https://hackage.haskell.org/package/libarchive-3.0.2.1/docs/Codec-Archive.html#t:ModTime |
2021-08-11 18:32:42 +0200 | <tomsmeding> | ah, looks like (POSIXTime, nanoseconds) |
2021-08-11 18:36:46 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-11 18:36:49 +0200 | kayprish | (~kayprish@cable-188-2-229-172.dynamic.sbb.rs) |
2021-08-11 18:37:25 +0200 | tlaxkit | (~hexchat@170.253.40.255) |
2021-08-11 18:38:43 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 18:38:52 +0200 | polyphem | (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756) (Ping timeout: 245 seconds) |
2021-08-11 18:39:29 +0200 | tlaxkit | (~hexchat@170.253.40.255) (Remote host closed the connection) |
2021-08-11 18:43:48 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 272 seconds) |
2021-08-11 18:50:19 +0200 | Matthias_ | (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection) |
2021-08-11 18:51:08 +0200 | Atum_ | (~IRC@user/atum/x-2392232) |
2021-08-11 18:54:22 +0200 | Matthias1 | (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
2021-08-11 18:54:28 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 18:56:15 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 18:56:34 +0200 | mnrmnaugh | awk |
2021-08-11 18:59:10 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
2021-08-11 19:00:45 +0200 | awk | mnrmnaugh |
2021-08-11 19:01:32 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-11 19:02:45 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 19:04:35 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-11 19:07:52 +0200 | <bbhoss> | is there a way to use record wildcards in a function header but also assign the entire record to a binding? |
2021-08-11 19:08:09 +0200 | <bbhoss> | like `hello foo=MyRecord{..}` |
2021-08-11 19:08:32 +0200 | <geekosaur> | hello foo@MyRecord{..} |
2021-08-11 19:09:20 +0200 | <bbhoss> | nice thanks |
2021-08-11 19:09:59 +0200 | <monochrom> | Generally the @-pattern allows naming the whole thing and prescribing a detailed pattern at the same time. f wholeList@(x:xs) = ... |
2021-08-11 19:10:27 +0200 | <bbhoss> | awesome, I'm surprised I made it this far without knowing |
2021-08-11 19:10:39 +0200 | <dsal> | I experience that regularly. |
2021-08-11 19:11:07 +0200 | <monochrom> | You can call it "as". "whole list as x:xs" actually sounds nice in English. In fact SML uses "as", "f (wholeList as (x:xs)) = ..." |
2021-08-11 19:11:36 +0200 | vicfred | (~vicfred@user/vicfred) |
2021-08-11 19:13:10 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-11 19:14:54 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-11 19:15:37 +0200 | <janus> | i'd expect the deconstructed form to come before "as", hmmm |
2021-08-11 19:16:06 +0200 | <janus> | usually, in english, when you use 'as', the 'new name' comes after, right? here it comes before |
2021-08-11 19:16:24 +0200 | <geekosaur> | same in SQL for that matter |
2021-08-11 19:16:39 +0200 | <geekosaur> | <expression> AS newName |
2021-08-11 19:19:11 +0200 | mr-red | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-08-11 19:19:12 +0200 | <geekosaur> | but that's not what SML chose, and Haskell probably followed SML there |
2021-08-11 19:21:52 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 272 seconds) |
2021-08-11 19:27:29 +0200 | azeem | (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Ping timeout: 248 seconds) |
2021-08-11 19:28:15 +0200 | azeem | (~azeem@176.200.246.189) |
2021-08-11 19:28:30 +0200 | <davean> | bbhoss: read the report :) |
2021-08-11 19:34:26 +0200 | polyphem | (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756) |
2021-08-11 19:36:32 +0200 | azeem | (~azeem@176.200.246.189) (Read error: Connection reset by peer) |
2021-08-11 19:36:50 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 19:37:03 +0200 | azeem | (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) |
2021-08-11 19:41:08 +0200 | Clint | (~Clint@user/clint) (Ping timeout: 258 seconds) |
2021-08-11 19:41:58 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) |
2021-08-11 19:42:37 +0200 | polyphem | (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756) (Quit: CoreIRC for Android - www.coreirc.com) |
2021-08-11 19:42:40 +0200 | Clint | (~Clint@user/clint) |
2021-08-11 19:42:49 +0200 | polyphem | (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756) |
2021-08-11 19:44:09 +0200 | MorrowM | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer) |
2021-08-11 19:45:02 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 19:45:56 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
2021-08-11 19:46:20 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-08-11 19:48:13 +0200 | ytg_ | (~ytg@89-139-118-202.bb.netvision.net.il) |
2021-08-11 19:50:32 +0200 | azeem | (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Read error: Connection reset by peer) |
2021-08-11 19:50:57 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 245 seconds) |
2021-08-11 19:51:40 +0200 | azeem | (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) |
2021-08-11 19:51:47 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 245 seconds) |
2021-08-11 19:52:11 +0200 | ytg_ | (~ytg@89-139-118-202.bb.netvision.net.il) (Client Quit) |
2021-08-11 19:52:27 +0200 | ytg_ | (~ytg@89-139-118-202.bb.netvision.net.il) |
2021-08-11 19:52:45 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-08-11 19:53:10 +0200 | ytg_ | (~ytg@89-139-118-202.bb.netvision.net.il) (Client Quit) |
2021-08-11 19:53:25 +0200 | ytg_ | (~ytg@89-139-118-202.bb.netvision.net.il) |
2021-08-11 19:53:41 +0200 | ytg_ | (~ytg@89-139-118-202.bb.netvision.net.il) (Client Quit) |
2021-08-11 19:56:32 +0200 | wanko | (~wanko@51.15.4.226) |
2021-08-11 20:01:02 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-08-11 20:01:37 +0200 | MoC | (~moc@user/moc) |
2021-08-11 20:06:15 +0200 | Guest84 | (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191) |
2021-08-11 20:07:14 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-08-11 20:07:14 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
2021-08-11 20:08:35 +0200 | pmk | (~user@2a02:587:941a:35d9:8f9c:6cb6:67dc:f5e3) |
2021-08-11 20:15:00 +0200 | mr-red | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 272 seconds) |
2021-08-11 20:21:04 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2021-08-11 20:21:19 +0200 | dyeplexer | (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
2021-08-11 20:21:20 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 272 seconds) |
2021-08-11 20:22:56 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-11 20:28:18 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
2021-08-11 20:29:26 +0200 | Matthias1 | (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) () |
2021-08-11 20:32:45 +0200 | <mastarija> | Can someone help me out with Neovim LSP and HLS? |
2021-08-11 20:32:57 +0200 | <mastarija> | I'm having trouble getting the Hover functionality to work |
2021-08-11 20:33:46 +0200 | <mastarija> | Basically, when ever I try to activate it I get "man.vim: no manual entry for SomeSymbol" |
2021-08-11 20:34:02 +0200 | <mastarija> | SomeSymbol being what ever I'm hovering over at the moment |
2021-08-11 20:34:32 +0200 | <mastarija> | It worked once for a short period of time, but then it stopped :D |
2021-08-11 20:34:52 +0200 | <mastarija> | I have very minimal Lua init script: https://pastebin.com/i7RNs5BG |
2021-08-11 20:35:11 +0200 | kayprish | (~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Read error: Connection reset by peer) |
2021-08-11 20:35:44 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 20:40:35 +0200 | Guest84 | (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191) (Quit: Client closed) |
2021-08-11 20:42:58 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 20:45:37 +0200 | viluon | (uid453725@id-453725.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-11 20:49:08 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-11 20:49:08 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-11 20:49:11 +0200 | allbery_b | geekosaur |
2021-08-11 20:49:33 +0200 | <tomsmeding> | mastarija: are you passing the on_active function to the .setup{} call for hls correctly? |
2021-08-11 20:50:40 +0200 | <tomsmeding> | o wait I'm blind |
2021-08-11 20:53:23 +0200 | __monty__ | (~toonn@user/toonn) |
2021-08-11 20:53:27 +0200 | <tomsmeding> | mastarija: try moving the setup{} call _below_ the definition of the on_attach function |
2021-08-11 20:53:36 +0200 | <tomsmeding> | that seems to make a difference for me |
2021-08-11 20:53:55 +0200 | <tomsmeding> | lua isn't insensitive to declaration order like haskell is :) |
2021-08-11 20:54:08 +0200 | <mastarija> | I think I tried it both ways |
2021-08-11 20:54:28 +0200 | <mastarija> | I mean, it is reacting to defined shortcuts |
2021-08-11 20:54:50 +0200 | <mastarija> | But someone from #neovim suggested I'v forgotten to setup haddock |
2021-08-11 20:54:57 +0200 | <mastarija> | I'm working on that now |
2021-08-11 20:55:36 +0200 | <mastarija> | https://haskell-language-server.readthedocs.io/en/latest/features.html?highlight=haddock#features |
2021-08-11 20:56:23 +0200 | <tomsmeding> | mastarija: I don't have that haddock in my cabal flags and hls hover info has worked for me always |
2021-08-11 20:56:52 +0200 | <mastarija> | Yes, it worked for me for one moment. |
2021-08-11 20:56:56 +0200 | <mastarija> | But then nothing |
2021-08-11 20:57:09 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2021-08-11 20:57:16 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-11 20:57:20 +0200 | <mastarija> | tomsmeding, do you maybe know where HLS stores its intermediate files? |
2021-08-11 20:57:30 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 20:57:39 +0200 | <tomsmeding> | no idea, but I would guess dist-newstyle |
2021-08-11 20:57:58 +0200 | <mastarija> | I've deleted dist-newstyle from my project, but now I see HLS is initializing happily without regenerating |
2021-08-11 20:58:03 +0200 | <tomsmeding> | mastarija: what happens if you replace your mapping of KK in that lua function with :echo "hi"<CR> |
2021-08-11 20:58:14 +0200 | <tomsmeding> | does that make KK print 'hi' |
2021-08-11 20:58:25 +0200 | Atum_ | (~IRC@user/atum/x-2392232) (Remote host closed the connection) |
2021-08-11 20:58:59 +0200 | <carter> | sup! |
2021-08-11 20:59:07 +0200 | <tomsmeding> | hls is up :) |
2021-08-11 20:59:29 +0200 | <carter> | i just like having a working text editor and cabal build invoked every time i save :) |
2021-08-11 20:59:43 +0200 | Atum_ | (~IRC@user/atum/x-2392232) |
2021-08-11 21:00:31 +0200 | <tomsmeding> | mastarija: for completeness, this is the lua fragment in my init script, very minorly modified from the current readme (I switched to nvim's native lsp today :) ) : https://paste.tomsmeding.com/6sYW5XOr |
2021-08-11 21:01:07 +0200 | <tomsmeding> | carter: having a working text editor is certainly a prerequisite :) |
2021-08-11 21:01:13 +0200 | mattil | (~mattilinn@62-113-178-139.bb.dnainternet.fi) (Quit: Leaving) |
2021-08-11 21:01:36 +0200 | <mastarija> | tomsmeding, yes, that looks like the config from readme |
2021-08-11 21:01:50 +0200 | <mastarija> | I've tried that, but I had same problem |
2021-08-11 21:01:53 +0200 | gethuen_ | (uid502979@id-502979.stonehaven.irccloud.com) |
2021-08-11 21:01:57 +0200 | <tomsmeding> | mastarija: this works for me, and K stops working if I put the loop above the function declaration |
2021-08-11 21:02:09 +0200 | <tomsmeding> | odd |
2021-08-11 21:02:37 +0200 | <mastarija> | tomsmeding, this might be because you assigned anonymous function to a variable name |
2021-08-11 21:02:47 +0200 | <mastarija> | I've changed that to function definition |
2021-08-11 21:03:01 +0200 | <tomsmeding> | ah right |
2021-08-11 21:03:10 +0200 | <tomsmeding> | mastarija: there is some stuff in ~/.cache/hie-bios |
2021-08-11 21:03:13 +0200 | <mastarija> | I'm switching back to that now, maybe it makes a difference :/ |
2021-08-11 21:03:31 +0200 | gethuen_ | (uid502979@id-502979.stonehaven.irccloud.com) (Client Quit) |
2021-08-11 21:04:01 +0200 | gethuen_ | (uid502979@id-502979.stonehaven.irccloud.com) |
2021-08-11 21:04:36 +0200 | gethuen_ | (uid502979@id-502979.stonehaven.irccloud.com) (Client Quit) |
2021-08-11 21:04:49 +0200 | <mastarija> | tomsmeding, thanks, I've deleted it, now it's regenerating |
2021-08-11 21:04:54 +0200 | <mastarija> | hopefully it'll be a success |
2021-08-11 21:05:02 +0200 | mei | (~mei@user/mei) (Read error: Connection reset by peer) |
2021-08-11 21:05:12 +0200 | Cajun | (~Cajun@user/cajun) |
2021-08-11 21:06:08 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-08-11 21:06:27 +0200 | Guest84 | (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191) |
2021-08-11 21:06:41 +0200 | emliunix | (~emliunix@8.38.148.66) (Remote host closed the connection) |
2021-08-11 21:07:04 +0200 | emliunix | (~emliunix@8.38.148.66) |
2021-08-11 21:12:25 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 21:13:19 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 21:13:20 +0200 | <mastarija> | tomsmeding, omg, I'm an idiot |
2021-08-11 21:13:32 +0200 | <mastarija> | instead of on_attach I've written on_active |
2021-08-11 21:13:47 +0200 | <monochrom> | :) |
2021-08-11 21:14:10 +0200 | <tomsmeding> | this makes me scared of lua |
2021-08-11 21:14:13 +0200 | <mastarija> | yes |
2021-08-11 21:14:17 +0200 | <tomsmeding> | seems to be even worse than javascript |
2021-08-11 21:14:17 +0200 | jneira_ | (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Ping timeout: 258 seconds) |
2021-08-11 21:14:23 +0200 | <mastarija> | Records ftw |
2021-08-11 21:14:45 +0200 | <tomsmeding> | not only that, referring to an undefined variable and getting no error |
2021-08-11 21:14:52 +0200 | endlesseditions | (~zane@205.220.252.162) |
2021-08-11 21:14:55 +0200 | <mastarija> | I'm not used to checking my self for misnamed vars |
2021-08-11 21:15:30 +0200 | montxero | (~user@149.167.149.74) (Read error: Connection reset by peer) |
2021-08-11 21:15:44 +0200 | <mastarija> | damn, I feel like an idiot now |
2021-08-11 21:15:45 +0200 | montxero | (~user@149.167.149.74) |
2021-08-11 21:15:48 +0200 | <mastarija> | so much wasted time |
2021-08-11 21:16:04 +0200 | <tomsmeding> | your mistake was assuming that lua is nice to haskell users |
2021-08-11 21:16:52 +0200 | <tomsmeding> | you know, what saves me in cases like this is that I have no idea how lua works, so I copy-paste everything |
2021-08-11 21:17:39 +0200 | <mastarija> | I've read the lua manual this morning so I was overconfident |
2021-08-11 21:20:35 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
2021-08-11 21:20:41 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 21:21:31 +0200 | ikex1 | (~ash@user/ikex) |
2021-08-11 21:23:33 +0200 | mcglk | (~mcglk@131.191.49.120) (Read error: Connection reset by peer) |
2021-08-11 21:23:45 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 248 seconds) |
2021-08-11 21:23:52 +0200 | ikex | (ash@user/ikex) (Ping timeout: 258 seconds) |
2021-08-11 21:23:53 +0200 | ikex1 | ikex |
2021-08-11 21:24:20 +0200 | mcglk | (~mcglk@131.191.49.120) |
2021-08-11 21:27:19 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9540687e52e56cad208d.dip0.t-ipconnect.de) |
2021-08-11 21:28:49 +0200 | <carter> | hrmmm, ComposeT in MMorph seems like something that'd be nice in base or transformers |
2021-08-11 21:28:56 +0200 | <carter> | or is there a good reason to not use it sometimes? |
2021-08-11 21:29:03 +0200 | <carter> | cc edwardk :) ? |
2021-08-11 21:30:39 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
2021-08-11 21:30:40 +0200 | markpythonicbitc | (~markpytho@50.228.44.6) (Read error: Connection reset by peer) |
2021-08-11 21:31:22 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
2021-08-11 21:32:06 +0200 | markpythonicbitc | (~markpytho@50.228.44.6) |
2021-08-11 21:34:42 +0200 | endlesseditions | (~zane@205.220.252.162) (Remote host closed the connection) |
2021-08-11 21:37:51 +0200 | <carter> | Hecate: https://gitlab.haskell.org/ghc/ghc/-/issues/20223 not sure if i found a bug in the docs for deriving via or deriving via |
2021-08-11 21:37:59 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 21:39:06 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-11 21:39:56 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-11 21:41:33 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-08-11 21:44:23 +0200 | phma_ | (phma@2001:5b0:211f:5fe8:78b1:ef72:430f:1b2b) (Read error: Connection reset by peer) |
2021-08-11 21:46:31 +0200 | azeem | (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Ping timeout: 268 seconds) |
2021-08-11 21:47:34 +0200 | azeem | (~azeem@176.200.246.189) |
2021-08-11 21:48:25 +0200 | favonia | (~favonia@user/favonia) |
2021-08-11 21:51:51 +0200 | norias | (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 258 seconds) |
2021-08-11 21:54:33 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-08-11 21:55:00 +0200 | phma_ | (phma@2001:5b0:212a:e878:afe7:6ceb:226:dcbd) |
2021-08-11 21:56:19 +0200 | Guest822 | (~Guest82@176.88.30.49) |
2021-08-11 21:56:50 +0200 | <Guest822> | @undo [x | Just x <- xs] |
2021-08-11 21:56:50 +0200 | <lambdabot> | concatMap (\ a -> case a of { Just x -> [x]; _ -> []}) xs |
2021-08-11 21:58:06 +0200 | <Guest822> | @undo picks (x:xs) = (x,xs):[(y,x:ys) | (y,ys) <- picks xs] |
2021-08-11 21:58:06 +0200 | <lambdabot> | picks (x : xs) = (x, xs) : concatMap (\ (y, ys) -> [(y, x : ys)]) (picks xs) |
2021-08-11 21:58:25 +0200 | azeem | (~azeem@176.200.246.189) (Ping timeout: 248 seconds) |
2021-08-11 21:58:49 +0200 | azeem | (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) |
2021-08-11 21:59:04 +0200 | MQ-17J | (~MQ-17J@8.6.144.209) |
2021-08-11 21:59:23 +0200 | phma_ | (phma@2001:5b0:212a:e878:afe7:6ceb:226:dcbd) (Read error: Connection reset by peer) |
2021-08-11 22:00:16 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 22:00:28 +0200 | jpds1 | jpds |
2021-08-11 22:03:27 +0200 | Skyfire | (~pyon@user/pyon) (Ping timeout: 245 seconds) |
2021-08-11 22:04:03 +0200 | Guest822 | (~Guest82@176.88.30.49) (Quit: Client closed) |
2021-08-11 22:04:05 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 22:05:16 +0200 | juhp | (~juhp@128.106.188.220) (Ping timeout: 258 seconds) |
2021-08-11 22:05:33 +0200 | Skyfire | (~pyon@user/pyon) |
2021-08-11 22:05:35 +0200 | phma_ | (phma@2001:5b0:211b:9608:8da1:6cde:bf81:5b9c) |
2021-08-11 22:07:23 +0200 | juhp | (~juhp@128.106.188.220) |
2021-08-11 22:09:38 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 272 seconds) |
2021-08-11 22:09:44 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-08-11 22:10:00 +0200 | emliunix | (~emliunix@8.38.148.66) (Remote host closed the connection) |
2021-08-11 22:10:09 +0200 | matijja | (~matijja@193.77.181.201) (Ping timeout: 248 seconds) |
2021-08-11 22:10:22 +0200 | emliunix | (~emliunix@8.38.148.66) |
2021-08-11 22:11:48 +0200 | benin036932 | (~benin@183.82.205.178) |
2021-08-11 22:12:19 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 22:12:28 +0200 | matijja | (~matijja@193.77.181.201) |
2021-08-11 22:15:14 +0200 | retro_ | (~retro@5ec19a54.skybroadband.com) (Ping timeout: 258 seconds) |
2021-08-11 22:21:36 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-11 22:28:14 +0200 | vysn | (~vysn@user/vysn) |
2021-08-11 22:28:53 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 22:30:45 +0200 | matijja | (~matijja@193.77.181.201) (Quit: ZNC 1.8.1 - https://znc.in) |
2021-08-11 22:31:08 +0200 | matijja | (~matijja@193.77.181.201) |
2021-08-11 22:32:51 +0200 | MoC | (~moc@user/moc) (Quit: Konversation terminated!) |
2021-08-11 22:36:37 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 22:44:29 +0200 | pavonia | (~user@user/siracusa) |
2021-08-11 22:47:47 +0200 | favonia | (~favonia@user/favonia) (Remote host closed the connection) |
2021-08-11 22:48:00 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 22:49:45 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-08-11 22:54:57 +0200 | markpythonicbitc | (~markpytho@50.228.44.6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-08-11 22:55:53 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 22:59:39 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8) |
2021-08-11 23:02:00 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-11 23:04:14 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 268 seconds) |
2021-08-11 23:04:17 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 245 seconds) |
2021-08-11 23:05:01 +0200 | <maralorn> | When I write `<(echo foo)` in shell it returns a file descriptor `/proc/self/fd/14` where now another process can read from. How can I achieve exactly that in Haskell? |
2021-08-11 23:05:58 +0200 | <dsal> | There are a lot of different things going on there. What are you trying to do? |
2021-08-11 23:06:06 +0200 | <geekosaur> | you want the file descriptor, or the pathname to it? |
2021-08-11 23:07:06 +0200 | bitmapper | (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-11 23:07:26 +0200 | <maralorn> | I want the pathname. |
2021-08-11 23:07:49 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b954045cad12a4be3b29e.dip0.t-ipconnect.de) |
2021-08-11 23:08:04 +0200 | <maralorn> | Concretely I have a program that I want to call in my shakefile that wants a filename pointing to a file containing a password. |
2021-08-11 23:08:37 +0200 | <monochrom> | The shell creates a pipe, then finds out the FD of the read end, let's say it happens to be 14, then generates the string "/proc/self/fd/14" and passes it down as a command line argument. |
2021-08-11 23:08:39 +0200 | <maralorn> | But I don‘t want to write my password to disk or even the tmpfs. |
2021-08-11 23:09:06 +0200 | <geekosaur> | ah, the old hold-in-in-a-pipe trick |
2021-08-11 23:09:21 +0200 | <maralorn> | Yeah |
2021-08-11 23:09:33 +0200 | acidjnk | (~acidjnk@p200300d0c72b954099fc00439288b01d.dip0.t-ipconnect.de) |
2021-08-11 23:09:44 +0200 | <geekosaur> | which kinda fails with /proc/self/fd anyway |
2021-08-11 23:09:56 +0200 | <geekosaur> | or at least lost being safe even from root |
2021-08-11 23:10:27 +0200 | <maralorn> | Well, good enough. Also I am root. |
2021-08-11 23:10:54 +0200 | jneira_ | (~jneira_@28.red-80-28-169.staticip.rima-tde.net) |
2021-08-11 23:11:13 +0200 | <maralorn> | I guess I can do something like `withPipe` and then convert the read end handle to an FD? |
2021-08-11 23:11:22 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9540687e52e56cad208d.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
2021-08-11 23:11:44 +0200 | <monochrom> | And the "echo foo" part is run under output redirection too, its stdout is the write end of the pipe, say FD 15. |
2021-08-11 23:12:37 +0200 | <monochrom> | Which package does withPipe come from? (Certainly not what comes with GHC.) |
2021-08-11 23:12:58 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b954045cad12a4be3b29e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2021-08-11 23:13:01 +0200 | <sm> | you could have your haskell program run a little bit of shell (bash), probably ? |
2021-08-11 23:13:27 +0200 | <maralorn> | monochrom: I can‘t find right now it tbh. |
2021-08-11 23:13:40 +0200 | <geekosaur> | @hoogle withPipe |
2021-08-11 23:13:40 +0200 | <lambdabot> | GI.GLib.Functions spawnAsyncWithPipes :: (HasCallStack, MonadIO m) => Maybe [Char] -> [[Char]] -> Maybe [[Char]] -> [SpawnFlags] -> Maybe SpawnChildSetupFunc -> m (Int32, Int32, Int32, Int32) |
2021-08-11 23:14:03 +0200 | <maralorn> | monochrom: https://hackage.haskell.org/package/shh-0.7.1.4/docs/Shh-Internal.html#v:withPipe |
2021-08-11 23:14:35 +0200 | <maralorn> | But I would feel a little bit stupid to get a dependency to shh just for doing that. |
2021-08-11 23:14:43 +0200 | <monochrom> | I have never heard of shh. I can't vouch for it. |
2021-08-11 23:14:57 +0200 | <maralorn> | Converting a handle to an fd is in base. |
2021-08-11 23:15:12 +0200 | <maralorn> | shh is more or less like shelly and it’s quite nice. |
2021-08-11 23:15:41 +0200 | <maralorn> | I guess I can have a look at the implementation there … |
2021-08-11 23:16:10 +0200 | <sm> | isn't there something suitable in https://hackage.haskell.org/package/process-1.6.13.2/docs/System-Process.html ? |
2021-08-11 23:16:10 +0200 | <monochrom> | Generally I would be super paranoid about detailed technical semantics of "converting" between Handle and FD. |
2021-08-11 23:16:41 +0200 | <maralorn> | sm: Yes |
2021-08-11 23:16:43 +0200 | <maralorn> | https://hackage.haskell.org/package/process-1.6.13.2/docs/System-Process.html#v:createPipe |
2021-08-11 23:16:48 +0200 | <maralorn> | Looks about right. |
2021-08-11 23:16:56 +0200 | <monochrom> | For example, after the Handle->FD "conversion", if you close that Handle, does that close the FD too? Is this consistent with what you want? |
2021-08-11 23:16:58 +0200 | <maralorn> | Or better https://hackage.haskell.org/package/process-1.6.13.2/docs/System-Process.html#v:createPipeFd |
2021-08-11 23:17:40 +0200 | <monochrom> | And do not sleep well if you don't write explicit code to close that Handle either. GC can close it behind your back. |
2021-08-11 23:19:31 +0200 | sm | confirms that `readCreateProcessWithExitCode (shell "ls <(echo test)") ""` does not work |
2021-08-11 23:19:56 +0200 | <maralorn> | It doesn‘t? Why not? |
2021-08-11 23:20:09 +0200 | <sm> | <() syntax is rejected by something |
2021-08-11 23:20:18 +0200 | <sm> | Prelude System.Process> readCreateProcessWithExitCode (shell "echo <(echo test)") "" |
2021-08-11 23:20:18 +0200 | <sm> | (ExitFailure 2,"","/bin/sh: -c: line 0: syntax error near unexpected token `('\n/bin/sh: -c: line 0: `echo <(echo test)'\n") |
2021-08-11 23:20:25 +0200 | <sm> | ah, it's not using bash |
2021-08-11 23:20:29 +0200 | <maralorn> | Might be a bashism? |
2021-08-11 23:20:32 +0200 | <maralorn> | yeah |
2021-08-11 23:20:49 +0200 | <maralorn> | Anyways, I believe I have my solution now. |
2021-08-11 23:21:07 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-08-11 23:21:21 +0200 | <monochrom> | Yes <(cmd) and >(cmd) are bashisms. |
2021-08-11 23:22:03 +0200 | <sm> | there was some discussion/doc about which shell `process` uses, I suspect it is POSIX sh only |
2021-08-11 23:22:51 +0200 | <sm> | aha! but there is a way |
2021-08-11 23:22:52 +0200 | <sm> | Prelude System.Process> readCreateProcessWithExitCode (shell "bash -c 'ls <(echo test)'") "" |
2021-08-11 23:22:52 +0200 | <sm> | (ExitSuccess,"/dev/fd/63\n","") |
2021-08-11 23:23:24 +0200 | Guest4990 | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-11 23:24:02 +0200 | <monochrom> | I painstakingly ban bashisms in my course because <(cmd) allows students to cargo-cult internet solutions and evade learning shell pipelines. |
2021-08-11 23:24:28 +0200 | <monochrom> | I have to remind them multiple times "if 'sh your_script' doesn't work then you are not done". |
2021-08-11 23:24:42 +0200 | <monochrom> | And then Mac defeats me because its "sh" is bash. |
2021-08-11 23:25:14 +0200 | <monochrom> | So now I also have to remind them "if it doesn't work on the school shell server then you are not done either, I don't care about what Mac says". |
2021-08-11 23:25:46 +0200 | <sm> | I think sh is too weak (with error checking eg), so I require bash |
2021-08-11 23:26:01 +0200 | <glguy> | I like using shellcheck to help me with that |
2021-08-11 23:26:49 +0200 | <sm> | I was reading yesterday that shellcheck helps you write valid sh, but doesn't help at all warning you about sh's many ambiguous cases. Not sure that's entirely true |
2021-08-11 23:27:26 +0200 | <sm> | shellcheck has made shell programming possible for me |
2021-08-11 23:27:38 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-11 23:27:40 +0200 | MQ-17J | (~MQ-17J@8.6.144.209) (Ping timeout: 268 seconds) |
2021-08-11 23:27:43 +0200 | <sm> | a haskell success story! |
2021-08-11 23:27:53 +0200 | <koala_man> | aww, I'm happy you've found it useful ^^ |
2021-08-11 23:28:09 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-11 23:28:10 +0200 | <sm> | is that your project koala_man ? |
2021-08-11 23:28:13 +0200 | <koala_man> | yes |
2021-08-11 23:28:35 +0200 | <monochrom> | Nice. |
2021-08-11 23:28:39 +0200 | <dsal> | I've done this type of thing with dup2 |
2021-08-11 23:28:49 +0200 | <sm> | let me thank you profusely on behalf of everyone. Thanks a lot, it is a fantastic tool. |
2021-08-11 23:29:11 +0200 | <koala_man> | aw shucks |
2021-08-11 23:30:10 +0200 | <koala_man> | monochrom: at least process substitutions are blocked in bash's sh mode |
2021-08-11 23:30:24 +0200 | <sm> | I don't know if you read your fan commentary online, but every time shell programming is mentioned anywhere on the the net someone quickly recommends shellcheck and several people say how great it is |
2021-08-11 23:31:23 +0200 | <koala_man> | I vanity search twitter now and then, the response has indeed been overwhelmingly positive |
2021-08-11 23:31:24 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
2021-08-11 23:31:37 +0200 | slack1256 | (~slack1256@181.203.38.2) (Remote host closed the connection) |
2021-08-11 23:31:48 +0200 | Guest84 | (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191) (Quit: Client closed) |
2021-08-11 23:32:13 +0200 | <sm> | the haskell checkers (hls and its various addons) could take some inspiration from shellcheck. I think one of the things we like about it is how good the advice is (link to wiki page with full details, etc.) |
2021-08-11 23:32:37 +0200 | <sm> | hlint gives great advice, but not the background explanation AFAIK |
2021-08-11 23:32:58 +0200 | chris | (~chris@81.96.113.213) |
2021-08-11 23:33:01 +0200 | chris | Guest8327 |
2021-08-11 23:33:30 +0200 | <maerwald[m]> | Hlint is 90% opinions |
2021-08-11 23:33:35 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 23:33:49 +0200 | <maerwald[m]> | Shellcheck helps you find actual bugs |
2021-08-11 23:34:33 +0200 | <sm> | koala_man: what's your thought on that comment about shellcheck not warning of all sh pitfalls ? (more so than bash) |
2021-08-11 23:34:48 +0200 | <koala_man> | do you have any examples? |
2021-08-11 23:35:11 +0200 | <sm> | unfortunately no, it was a HN comment yesterday. I'll share if I find it |
2021-08-11 23:36:03 +0200 | <monochrom> | Yeah shellcheck and clint are great. hlint is a dishonest name. |
2021-08-11 23:36:17 +0200 | <monochrom> | err of course s/clint/lint/ |
2021-08-11 23:36:39 +0200 | Clint | coughs. |
2021-08-11 23:36:41 +0200 | <koala_man> | it must be hard to statically find bugs in Haskell code that compiles |
2021-08-11 23:36:44 +0200 | <sm> | why is everyone so down on hlint :) |
2021-08-11 23:37:04 +0200 | <sm> | Its advice is more subjective/stylistic because there are less dangerous error-causing sitiations to find.. yes |
2021-08-11 23:38:48 +0200 | <monochrom> | Therefore if it didn't call itself "hlint" I would leave it alone. |
2021-08-11 23:38:48 +0200 | hexfive | (~eric@50.35.83.177) |
2021-08-11 23:39:40 +0200 | <sm> | what does "lint" mean to you ? |
2021-08-11 23:40:02 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-11 23:40:06 +0200 | <monochrom> | It means if I write "if (c = 1) { ... }" it reminds me. |
2021-08-11 23:40:22 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-08-11 23:41:04 +0200 | <monochrom> | It means if I write "if (c == 1) \n {...}" it doesn't become nagware and say "why not put '{' on the same line as 'if'" |
2021-08-11 23:41:14 +0200 | <monochrom> | See, hlint does the latter only. |
2021-08-11 23:41:24 +0200 | <monochrom> | It is pure nagware. |
2021-08-11 23:41:37 +0200 | <sm> | that's silly. It is a configurable tool. |
2021-08-11 23:42:15 +0200 | <sm> | you don't like the defaults, ok |
2021-08-11 23:42:27 +0200 | <monochrom> | No, you should be pointing out that it's an optional tool, I don't have to use it if it doesn't fit me. |
2021-08-11 23:42:27 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-08-11 23:42:31 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-11 23:42:34 +0200 | <sm> | but "nagware" is not fair |
2021-08-11 23:42:44 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-08-11 23:42:48 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-11 23:43:06 +0200 | <monochrom> | The problem is, it has a dishonest name, so other people are deceived to believe that it has lint's status and purpose. |
2021-08-11 23:43:25 +0200 | <monochrom> | And the derivative problem is, because of that, lpaste.net imposed it. |
2021-08-11 23:43:37 +0200 | <monochrom> | hpaste.net, even |
2021-08-11 23:43:55 +0200 | <sm> | dishonest, deceived, nagware.. all of these seem a bit exaggerated and emotional to me. But as you like :) |
2021-08-11 23:43:58 +0200 | <monochrom> | Dishonest names are not fair. |
2021-08-11 23:44:07 +0200 | mnrmnaugh | (~mnrmnaugh@68.162.206.56) (Remote host closed the connection) |
2021-08-11 23:44:30 +0200 | mnrmnaugh | (~mnrmnaugh@68.162.206.56) |
2021-08-11 23:44:32 +0200 | <monochrom> | It is very possible that if hpaste didn't inflict it, I would not complain at all. |
2021-08-11 23:44:52 +0200 | <sm> | hpaste.. what is that now.. still a thing ? |
2021-08-11 23:45:03 +0200 | <monochrom> | No. |
2021-08-11 23:45:54 +0200 | mnrmnaugh | (~mnrmnaugh@68.162.206.56) (Remote host closed the connection) |
2021-08-11 23:46:13 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-08-11 23:47:08 +0200 | mnrmnaugh | (~mnrmnaugh@68.162.206.56) |
2021-08-11 23:47:25 +0200 | <Clint> | hpaste is oppressing everyone from beyond the grave |
2021-08-11 23:48:34 +0200 | mnrmnaugh | (~mnrmnaugh@68.162.206.56) (Remote host closed the connection) |
2021-08-11 23:49:19 +0200 | <sm> | well, monochrom you have motivated me to try using hlint a bit and see if I can configure it to give a little bit of shellcheck-like feeling |
2021-08-11 23:49:21 +0200 | hexfive | (~eric@50.35.83.177) (Quit: WeeChat 3.0) |
2021-08-11 23:49:23 +0200 | mnrmnaugh | (~mnrmnaugh@68.162.206.56) |
2021-08-11 23:49:52 +0200 | sander | (~sander@user/sander) (Ping timeout: 268 seconds) |
2021-08-11 23:51:16 +0200 | <sm> | if not we should hire koala_man to build hscheck |
2021-08-11 23:51:19 +0200 | phma_ | phma |
2021-08-11 23:53:01 +0200 | <dsal> | main = putStrLn "If it compiles, it's probably fine." |
2021-08-11 23:53:20 +0200 | <koala_man> | the typechecker does most of that already, but I'd love to see a tool that suggests inefficient constructs, e.g. missed opportunities for list fusion |
2021-08-11 23:54:17 +0200 | sander | (~sander@user/sander) |
2021-08-11 23:57:30 +0200 | finsternis | (~X@23.226.237.192) |
2021-08-11 23:59:17 +0200 | <sm> | space leaks! |
2021-08-11 23:59:34 +0200 | <sm> | "inefficient code", generally |