Logs: freenode/#haskell
| 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.