Logs: freenode/#haskell
| 2020-10-28 19:51:04 | × | alp quits (~alp@2a01:e0a:58b:4920:d435:c55a:9994:ea6) (Ping timeout: 240 seconds) |
| 2020-10-28 19:51:05 | <hyperisco> | the only one I can argue had utility was the EXCEPTION effect, which is caused by throw and could be discharged with a catch |
| 2020-10-28 19:51:34 | <hyperisco> | what is the use of a type… it is found through the ways it is introduced and the ways in which it is eliminated |
| 2020-10-28 19:51:39 | <dolio> | Yeah. Just tracking whether or not you use getNow in particular is not useful. |
| 2020-10-28 19:51:57 | → | nek0 joins (~nek0@mail.nek0.eu) |
| 2020-10-28 19:52:18 | <hyperisco> | the effect rows in PS were almost all with introductions and without eliminations, and so that is how I'd argue they had no use |
| 2020-10-28 19:52:39 | <dolio> | Yeah, but exceptions can be caught. |
| 2020-10-28 19:52:44 | × | thir quits (~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 2020-10-28 19:52:46 | <hyperisco> | they let you look at a definition and say "oh that uses XmlHttpRequest somewhere" and then not do anything about it, seemingly |
| 2020-10-28 19:52:56 | <dolio> | So they are unlike that kind of useless tracking. |
| 2020-10-28 19:53:15 | <hyperisco> | yes, _when_ they can be sensibly caught |
| 2020-10-28 19:53:39 | <hyperisco> | and why would you catch them? because you know what they mean and you can decide something based on that meaning |
| 2020-10-28 19:54:03 | <hyperisco> | and it seems to be that, many times, that just isn't the case |
| 2020-10-28 19:54:11 | → | conal joins (~conal@64.71.133.70) |
| 2020-10-28 19:55:01 | <hyperisco> | so a solution should account for the reality that, much of the time, it is an unneeded facility |
| 2020-10-28 19:55:26 | <geekosaur> | that seems to depend on what you're using it for. service? you probably want to catch a lot of stuff for resource management reasons if nothing else. simple client? probably just let it abort |
| 2020-10-28 19:56:26 | → | crestfallen joins (~john@128.32.176.159) |
| 2020-10-28 19:58:35 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 2020-10-28 19:59:05 | → | u0_a298 joins (~user@47.206.148.226) |
| 2020-10-28 20:00:04 | × | ystael quits (~ystael@209.6.50.55) (Ping timeout: 240 seconds) |
| 2020-10-28 20:01:08 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 2020-10-28 20:01:54 | × | bartemius quits (~bartemius@109-252-20-20.nat.spd-mgts.ru) (Remote host closed the connection) |
| 2020-10-28 20:02:04 | <hyperisco> | so I said I hated Haskell exceptions just a while ago… why… well lets ignore the conclusion that all exceptions are a SomeException and can be caught that way |
| 2020-10-28 20:02:19 | <hyperisco> | lets say to catch a thrown exception you had to name the type of that exception exactly |
| 2020-10-28 20:02:46 | × | dopplerg- quits (~dop@titan.pathogen.is) (Ping timeout: 256 seconds) |
| 2020-10-28 20:02:51 | <geekosaur> | the ergonomics of that are also something of a problem imo |
| 2020-10-28 20:02:58 | × | ixlun quits (~matthew@213.205.241.94) (Read error: Connection reset by peer) |
| 2020-10-28 20:03:02 | <hyperisco> | then there is a documentation problem of knowing how to catch an exception, because you know not which exception type is thrown or where it is thrown |
| 2020-10-28 20:03:29 | <hyperisco> | and that is something checked exceptions would fix, yes, but so does catching SomeException |
| 2020-10-28 20:03:32 | × | u0_a298 quits (~user@47.206.148.226) (Ping timeout: 260 seconds) |
| 2020-10-28 20:03:35 | → | dopplergange joins (~dop@titan.pathogen.is) |
| 2020-10-28 20:03:37 | → | nineonine joins (~textual@216.81.48.202) |
| 2020-10-28 20:03:46 | <dminuoso> | A particularly fancy bit about Haskell and checked exceptions is async exceptions. |
| 2020-10-28 20:04:19 | <dminuoso> | That alone should thwart an attempt at a complete, type-driven, way of checked exceptions. |
| 2020-10-28 20:04:31 | → | hiroaki joins (~hiroaki@ip4d176049.dynamic.kabel-deutschland.de) |
| 2020-10-28 20:04:32 | <dminuoso> | I just realized. |
| 2020-10-28 20:04:40 | <hyperisco> | so then we can either assume all IO throws or we could talk about adding the one bit of information to determine if it throws |
| 2020-10-28 20:05:00 | <dminuoso> | hyperisco: It throws. at any time, that means catching doesnt ever remove exceptions |
| 2020-10-28 20:05:06 | <dminuoso> | because after its caught, it could be thrown to you again. |
| 2020-10-28 20:05:21 | <hyperisco> | sure |
| 2020-10-28 20:06:53 | <hyperisco> | just sussing out that there are different facets to what we might consider the problem to be, and it would be smart to not immediately conflate them to necessitate a unified solution |
| 2020-10-28 20:08:12 | × | dopplergange quits (~dop@titan.pathogen.is) (Ping timeout: 260 seconds) |
| 2020-10-28 20:08:58 | → | Deide joins (~Deide@217.155.19.23) |
| 2020-10-28 20:11:27 | hackage | uuagc 0.9.53.1 - Attribute Grammar System of Universiteit Utrecht https://hackage.haskell.org/package/uuagc-0.9.53.1 (JeroenBransen) |
| 2020-10-28 20:11:34 | → | ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
| 2020-10-28 20:11:48 | <dminuoso> | I guess the above again recognizes, that async exceptions shouldn't share code with regular exceptions. They should be borderline uncatchable. |
| 2020-10-28 20:12:49 | <dolio> | Yeah, it doesn't make much sense for async exceptions to be checked. |
| 2020-10-28 20:12:59 | → | onealmond joins (~onealmond@cpc72411-sotn15-2-0-cust577.15-1.cable.virginm.net) |
| 2020-10-28 20:13:07 | geekosaur | still thinks most non-async exceptions should be ExceptT |
| 2020-10-28 20:13:13 | <geekosaur> | or similar |
| 2020-10-28 20:13:25 | → | rprije joins (~rprije@194-193-168-77.tpgi.com.au) |
| 2020-10-28 20:14:03 | → | nuxdie_ joins (uid343142@gateway/web/irccloud.com/x-ctcwkmqltziojobr) |
| 2020-10-28 20:14:06 | <geekosaur> | except there's a bootstrapping problem between base and mtl if we do that |
| 2020-10-28 20:14:27 | <hyperisco> | indeed that was the term implementation of the checked exceptions I did use |
| 2020-10-28 20:14:47 | × | nuxdie_ quits (uid343142@gateway/web/irccloud.com/x-ctcwkmqltziojobr) (Client Quit) |
| 2020-10-28 20:14:52 | <hyperisco> | is as simple as ExceptT and the error type is a variant type, using whatever fancy type features for polymorphic unions |
| 2020-10-28 20:16:08 | → | ystael joins (~ystael@209.6.50.55) |
| 2020-10-28 20:16:27 | × | ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds) |
| 2020-10-28 20:17:10 | <hyperisco> | and as complicated as not all monads work as transformers |
| 2020-10-28 20:17:20 | → | nuxdie joins (uid343142@gateway/web/irccloud.com/x-eubxksbuxauhuttg) |
| 2020-10-28 20:18:19 | → | nyaomi joins (~naomi@2604:6000:1509:c86e:c878:29ff:fedf:ce89) |
| 2020-10-28 20:19:35 | <hyperisco> | well what do I mean… I mean that stacking ExceptT on another monad does not necessarily give you the semantics you want, which was the case with PureScript's Aff |
| 2020-10-28 20:19:55 | × | Reiser quits (~0a2a0001@static.210.242.216.95.clients.your-server.de) (Changing host) |
| 2020-10-28 20:19:55 | → | Reiser joins (~0a2a0001@unaffiliated/reisen) |
| 2020-10-28 20:21:28 | <hyperisco> | why? because if you have an M a you can lift it to ExceptT e M a , but if you take an ExceptT e M a you cannot necessarily lower it to M a |
| 2020-10-28 20:21:55 | <hyperisco> | and you would need to do that if definitions on M a themselves took an M a |
| 2020-10-28 20:22:09 | <hyperisco> | such as… bracketing |
| 2020-10-28 20:22:10 | → | thir joins (~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) |
| 2020-10-28 20:24:37 | → | dopplergange joins (~dop@titan.pathogen.is) |
| 2020-10-28 20:25:19 | → | blissful joins (~azuline@unaffiliated/azuline) |
| 2020-10-28 20:25:57 | × | dopplergange quits (~dop@titan.pathogen.is) (Read error: Connection reset by peer) |
| 2020-10-28 20:26:10 | → | dopplergange joins (~dop@titan.pathogen.is) |
| 2020-10-28 20:29:32 | → | acidjnk_new2 joins (~acidjnk@p200300d0c7226033a9f8e60d1c4e3d2a.dip0.t-ipconnect.de) |
| 2020-10-28 20:29:43 | × | notnatebtw quits (~nate@125.161.130.165) (Quit: WeeChat 2.9) |
| 2020-10-28 20:29:47 | × | thir quits (~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 2020-10-28 20:30:25 | → | ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
| 2020-10-28 20:30:36 | × | ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
| 2020-10-28 20:30:44 | × | acidjnk_new quits (~acidjnk@p200300d0c7237897ad6a1cb47299ad15.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 2020-10-28 20:31:07 | <hyperisco> | how can I touch a file with Haskell IO? I am on Windows |
| 2020-10-28 20:31:18 | <hyperisco> | I have tried appendFile path "" and this seems to leave the file untouched |
| 2020-10-28 20:32:02 | × | _vaibhavingale_ quits (~Adium@203.188.228.9) (Quit: Leaving.) |
| 2020-10-28 20:32:06 | × | rinwa quits (~rinwa@5.102.238.236) (Quit: WeeChat 1.9.1) |
| 2020-10-28 20:32:43 | <hyperisco> | I also tried opening the file in append mode, writing the empty string, and closing the handle, and also that left the file untouched |
| 2020-10-28 20:33:16 | → | jakob_ joins (~textual@p200300f49f1622000181680b896afdc3.dip0.t-ipconnect.de) |
| 2020-10-28 20:33:31 | <geekosaur> | afaik you need to use system-specific stuff,e.g. there's a touchFile in the unix package and I don't know off the top of my head what the win32 equivalent is |
| 2020-10-28 20:34:00 | <hyperisco> | what if, like a madman, I rename the file |
| 2020-10-28 20:35:44 | × | knupfer quits (~Thunderbi@200116b82c889000d491c85aad532716.dip.versatel-1u1.de) (Quit: knupfer) |
| 2020-10-28 20:35:45 | → | knupfer1 joins (~Thunderbi@200116b82c88900028a87937fa2fda7d.dip.versatel-1u1.de) |
| 2020-10-28 20:36:03 | <geekosaur> | no idea, sorry |
| 2020-10-28 20:36:10 | → | wretchswollen joins (~jvw@135-180-15-188.fiber.dynamic.sonic.net) |
| 2020-10-28 20:36:24 | × | thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds) |
| 2020-10-28 20:37:19 | → | aarvar joins (~foewfoiew@50.35.43.33) |
| 2020-10-28 20:37:20 | × | GyroW quits (~GyroW@unaffiliated/gyrow) (Remote host closed the connection) |
| 2020-10-28 20:37:39 | → | GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) |
| 2020-10-28 20:37:39 | × | GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host) |
| 2020-10-28 20:37:39 | → | GyroW joins (~GyroW@unaffiliated/gyrow) |
| 2020-10-28 20:38:10 | × | knupfer1 quits (~Thunderbi@200116b82c88900028a87937fa2fda7d.dip.versatel-1u1.de) (Client Quit) |
| 2020-10-28 20:38:12 | → | knupfer joins (~Thunderbi@200116b82c88900065f627a2dcebe201.dip.versatel-1u1.de) |
| 2020-10-28 20:38:45 | × | mananamenos quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Ping timeout: 240 seconds) |
| 2020-10-28 20:39:04 | × | p8m quits (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 258 seconds) |
All times are in UTC.