Home freenode/#haskell: Logs Calendar

Logs: freenode/#haskell

←Prev  Next→
Page 1 .. 914 915 916 917 918 919 920 921 922 923 924 .. 5022
502,152 events total
2020-10-28 14:55:39 <Ariakenom> dminuoso: would you prefer if they didnt exist in haskell
2020-10-28 14:55:58 conal joins (~conal@64.71.133.70)
2020-10-28 14:56:01 <dminuoso> Hard to say, they're quite convenient for killing threads.
2020-10-28 14:56:03 <merijn> Ariakenom: I wish we had more control of what/where/when you could throw them
2020-10-28 14:56:13 <merijn> But I wish we had first class concurrency too
2020-10-28 14:56:28 <dminuoso> Without it, killing threads would require yield points and cooperatoin
2020-10-28 14:56:42 <merijn> dminuoso: It still does :p
2020-10-28 14:56:45 <dminuoso> heh
2020-10-28 14:56:56 <dminuoso> merijn: except GHC takes care of the yield points for me.
2020-10-28 14:57:02 <dminuoso> It does a mostly good job
2020-10-28 14:57:07 <merijn> Sure, but still!
2020-10-28 14:57:15 <dminuoso> okay fine
2020-10-28 14:57:29 <dminuoso> Without it, killing threads would require manual yield points and manual cooperation.
2020-10-28 14:57:29 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-10-28 14:57:41 <dminuoso> Which is hard to get right
2020-10-28 14:57:51 <Ariakenom> I once wrote some concurrent code in python where I added yield points and timeouts everywhere. that would have been much easier in haskell, I tihnk
2020-10-28 14:57:57 <dminuoso> I think, a notable fraction of async exception pain is because Control.Exception is messed up
2020-10-28 14:58:02 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-10-28 14:58:08 <dminuoso> But if you use UnliftIO.Exception for example, most of that is gone
2020-10-28 14:58:43 <Ariakenom> I like asyncs but I havent run into much trouble
2020-10-28 14:58:44 × idhugo quits (~idhugo@eduroam06.au.dk) (Ping timeout: 240 seconds)
2020-10-28 14:59:00 <merijn> Ariakenom: That's because there's no trouble, right up until the point everything is broken :p
2020-10-28 14:59:10 <merijn> And then it's impossible to debug :p
2020-10-28 14:59:34 <dminuoso> Ariakenom: To be exact, Control.Exception doesn't make a clear distinction between async and sync exceptions. That's sadly an antipattern
2020-10-28 14:59:43 <Ariakenom> agreed
2020-10-28 14:59:55 <dminuoso> We shouldnt hand you tools you can use to accidentally recover from an async exceptoin
2020-10-28 15:00:02 × WhereIsMySpoon quits (~WhereIsMy@178.239.168.171) ()
2020-10-28 15:00:04 <merijn> Naah
2020-10-28 15:00:06 <dminuoso> (If you want to shoot yourself in the foot, make your own shotgun)
2020-10-28 15:00:17 <merijn> The problem with Control.Exception is that it messed up masking stuff
2020-10-28 15:00:25 <dminuoso> merijn: no it *is* a problem
2020-10-28 15:00:41 <Ariakenom> veryUninterruptibleIAmBusyMask
2020-10-28 15:01:07 Saukk joins (~Saukk@2001:998:f9:2914:1fa4:7678:3395:bc0)
2020-10-28 15:01:12 <dminuoso> merijn: Oh you mean how mask doesn't actually mask?
2020-10-28 15:01:18 <dminuoso> or not completely, anyhow
2020-10-28 15:01:38 <Ariakenom> funny thing. in python, Ctrl-C aka SIGINT aka KeyboardInterrupt is basically an async exception. but because asyncs arent a thing in python it can break most anything
2020-10-28 15:01:49 <merijn> I meant that catch and co should use uninterruptibleMask for cleanup, but don't
2020-10-28 15:01:53 <dminuoso> Perhaps we should rename mask/uninterruptableMask to mask/interruptableMask
2020-10-28 15:02:06 <dminuoso> (oh well, they should be flipped on one side)
2020-10-28 15:02:07 <merijn> There's a mailing list thread by me from 2013
2020-10-28 15:02:18 × Sanchayan quits (~Sanchayan@122.167.95.166) (Quit: leaving)
2020-10-28 15:02:19 <dminuoso> merijn: And I propose that catch shouldn't even catch async exceptions.
2020-10-28 15:02:42 <merijn> dminuoso: That's a user decision, tbh
2020-10-28 15:02:54 <dminuoso> I personally avoid all of that pain since all my apps use unliftio anyway, so I just use UnliftIO.Exception instead of Control.Exceptoin
2020-10-28 15:03:01 <dminuoso> which has the "fixed semantics"
2020-10-28 15:03:14 <Ariakenom> I at least prefer haskell embracing asyncs to python having it as a broken special case. half way isnt great
2020-10-28 15:03:39 <dminuoso> (it takes just a single `f catch (\(e :: SomeExceptoin) -> ...)` and your thread becomes unkillable
2020-10-28 15:03:51 <dminuoso> These catch-all points do exist
2020-10-28 15:04:05 <merijn> dminuoso: Well, then we should *instead* ban SomeException :p
2020-10-28 15:04:12 × polyrain quits (~polyrain@2001:8003:e501:6901:e039:127e:3f21:3e4c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-28 15:04:15 <merijn> I'm much more on-board for that
2020-10-28 15:04:43 <dminuoso> merijn: I dont care about the how really, in the current state of things, it's easier to tweak the combinators to selectively ignore async exceptions if they provide recovery
2020-10-28 15:04:58 <merijn> dminuoso: The current state of unchecked exceptions is a stupid mess too
2020-10-28 15:04:59 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-10-28 15:05:03 <dminuoso> such that async exceptions are just for acts of violence
2020-10-28 15:05:33 <dminuoso> (because if you wanted to use them for communication, just use stm instead...)
2020-10-28 15:05:34 <merijn> I should start a patreon to fund me working on a GHC fork full of "non fancy type" breaking extensions :p
2020-10-28 15:05:35 GyroW_ joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-28 15:05:35 × GyroW_ quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-28 15:05:35 GyroW_ joins (~GyroW@unaffiliated/gyrow)
2020-10-28 15:06:11 <dminuoso> merijn: If only you could *sell* all your grand ideas but one, then you'd have enough money to fund yourself working on the remaining one.
2020-10-28 15:06:15 <Ariakenom> merijn's ghc cleaning fund
2020-10-28 15:06:25 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 240 seconds)
2020-10-28 15:07:03 <merijn> dminuoso: My grand ideas are *good* and as you know, you can't get people to listen to good ideas even if you pay them :p
2020-10-28 15:07:36 <dminuoso> Of course, everyone thinks their ideas are good.
2020-10-28 15:07:51 <dminuoso> It makes you wonder why nobody will listen to them!
2020-10-28 15:07:51 <merijn> Mine actualy, that's why no one listens to them!
2020-10-28 15:08:52 polyrain joins (~polyrain@2001:8003:e501:6901:e039:127e:3f21:3e4c)
2020-10-28 15:09:20 × Saukk quits (~Saukk@2001:998:f9:2914:1fa4:7678:3395:bc0) (Remote host closed the connection)
2020-10-28 15:09:48 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Ping timeout: 260 seconds)
2020-10-28 15:11:17 vacm joins (~vacwm@70.23.92.191)
2020-10-28 15:12:13 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-10-28 15:12:33 × vacm quits (~vacwm@70.23.92.191) (Client Quit)
2020-10-28 15:13:57 <__monty__> Interesting use of moduse tollens.
2020-10-28 15:15:27 hackage happstack-clientsession 7.3.2 - client-side session data https://hackage.haskell.org/package/happstack-clientsession-7.3.2 (JeremyShaw)
2020-10-28 15:17:42 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
2020-10-28 15:18:01 nitrix is now known as nitrix-or-treat
2020-10-28 15:18:36 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-10-28 15:20:44 × son0p quits (~son0p@181.136.122.143) (Ping timeout: 240 seconds)
2020-10-28 15:21:57 hackage ukrainian-phonetics-basic 0.1.7.0 - A library to work with the basic Ukrainian phonetics and syllable segmentation. https://hackage.haskell.org/package/ukrainian-phonetics-basic-0.1.7.0 (OleksandrZhabenko)
2020-10-28 15:22:31 × toorevitimirp quits (~tooreviti@117.182.180.36) (Remote host closed the connection)
2020-10-28 15:22:38 son0p joins (~son0p@181.136.122.143)
2020-10-28 15:22:58 hackage keycloak-hs 2.0.1 - https://hackage.haskell.org/package/keycloak-hs-2.0.1 (CorentinDupont)
2020-10-28 15:24:24 × acidjnk_new quits (~acidjnk@p200300d0c72378970dcefe485f10de31.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-10-28 15:24:59 Ariakenom_ joins (~Ariakenom@h-155-4-221-164.NA.cust.bahnhof.se)
2020-10-28 15:27:34 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-10-28 15:27:44 ggole joins (~ggole@2001:8003:8119:7200:517f:9804:f25b:eb42)
2020-10-28 15:28:14 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-28 15:28:34 invaser joins (~Thunderbi@31.148.23.125)
2020-10-28 15:29:10 × Ariakenom quits (~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se) (Ping timeout: 272 seconds)
2020-10-28 15:32:13 helpmeguys joins (676c5f93@103.108.95.147)
2020-10-28 15:32:52 <helpmeguys> Is it possible to write a Haskell program that generates the list of all the subsets of the set [1..n] that have as many elements as their complements. Note: the complement of a set contains all the elements in [1..n] that are not members of the given set. Show the outputs for n=6.
2020-10-28 15:34:17 <dminuoso> helpmeguys: When you say complement, do you mean that as relative complement with respect to [1..n]?
2020-10-28 15:34:37 <helpmeguys> Yes, under that assumption.
2020-10-28 15:34:55 <dminuoso> helpmeguys: The answer is yes.
2020-10-28 15:35:28 <helpmeguys> Can I get an example of such a program?
2020-10-28 15:36:08 <dminuoso> You mean a solution to your homework assignment?
2020-10-28 15:36:16 <Uniaika> (shots fired)
2020-10-28 15:36:17 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-10-28 15:36:18 <helpmeguys> No

All times are in UTC.