Logs: liberachat/#haskell
| 2021-08-06 15:02:07 | <janus> | and they have CI to rebuild hackage |
| 2021-08-06 15:03:41 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 2021-08-06 15:06:04 | <viluon> | janus: interesting, could you please point me to some resources? I'm sceptical about using Nix, but it may be a viable option |
| 2021-08-06 15:07:59 | <janus> | viluon: gabriella has some docs. havn't tried them, but always loved all that she did : https://github.com/Gabriel439/haskell-nix |
| 2021-08-06 15:12:10 | <janus> | hmm now i don't know if that is their name any more, thought i saw it somewhere. |
| 2021-08-06 15:13:02 | × | azeem quits (~azeem@176.201.8.137) (Ping timeout: 245 seconds) |
| 2021-08-06 15:14:28 | <viluon> | janus: thanks for the link, I'm reading it now |
| 2021-08-06 15:15:28 | × | enoq quits (~enoq@194-208-179-35.lampert.tv) (Read error: Connection reset by peer) |
| 2021-08-06 15:15:28 | → | timex joins (~timex@202.14.120.238) |
| 2021-08-06 15:16:06 | → | azeem joins (~azeem@176.201.8.137) |
| 2021-08-06 15:16:07 | × | timex quits (~timex@202.14.120.238) (Client Quit) |
| 2021-08-06 15:16:08 | → | enoq joins (~enoq@194-208-179-35.lampert.tv) |
| 2021-08-06 15:16:58 | → | notzmv joins (~zmv@user/notzmv) |
| 2021-08-06 15:17:06 | × | dispater quits (~dispater@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in) |
| 2021-08-06 15:17:51 | <absence> | is it possible to implement something like (MonadIO m1, MonadIO m2) => m1 a -> ExceptT e m2 a? |
| 2021-08-06 15:18:54 | → | dispater joins (~dispater@user/brprice) |
| 2021-08-06 15:20:20 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 2021-08-06 15:21:01 | <davean> | of course not |
| 2021-08-06 15:21:22 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds) |
| 2021-08-06 15:21:33 | <Rembane> | absence: Do you need it for something in particular? |
| 2021-08-06 15:23:08 | → | zebrag joins (~chris@user/zebrag) |
| 2021-08-06 15:24:01 | <absence> | davean: why "of course"? i realise that m1 is not the same as m2, but at the same time m1 "needs" IO, which m2 "has"... |
| 2021-08-06 15:24:47 | <davean> | absence: So? I have something you need, can I be you? |
| 2021-08-06 15:24:55 | × | dajoer quits (~david@user/gvx) (Quit: leaving) |
| 2021-08-06 15:25:32 | <davean> | Its that level of absurdity |
| 2021-08-06 15:25:55 | <davean> | I have lungs, you need lungs - what does this mean for us being the same person? |
| 2021-08-06 15:26:27 | → | Core8888 joins (~agua_pesa@191.177.175.57) |
| 2021-08-06 15:26:37 | <davean> | We also know you have lungs |
| 2021-08-06 15:26:52 | <absence> | davean: right, so i guess what i want would have to be expressed in a different way? |
| 2021-08-06 15:27:03 | <davean> | You haven't given any indication of what you want |
| 2021-08-06 15:27:08 | <geekosaur> | more to the point, m1 would just be IO if that were enough; the fact that it has a MonbadIo constraint means it needs more. what guarantee is there that m2 provides that more? |
| 2021-08-06 15:27:12 | × | neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 258 seconds) |
| 2021-08-06 15:28:25 | <absence> | geekosaur: ah, so it's about the "unused" parts of the transformer stacks |
| 2021-08-06 15:28:26 | <maerwald[m]> | I want your lungs |
| 2021-08-06 15:28:26 | <maerwald[m]> | xD |
| 2021-08-06 15:28:47 | <geekosaur> | nor can you "extract" the IO from a MonadIO m => m and use it elsewhere, for the same reason you can't extract the a from an IO a |
| 2021-08-06 15:28:55 | <davean> | absence: you've given us no idea how to dissasseble an m1 and look at its parts for example |
| 2021-08-06 15:29:02 | <davean> | or to build an m2 for that matter |
| 2021-08-06 15:29:05 | <davean> | other than liftIO |
| 2021-08-06 15:29:44 | <davean> | Some things allow you to extract the IO, for example ReaderT r IO a does, just runReaderT |
| 2021-08-06 15:31:03 | × | agua_pesada quits (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 276 seconds) |
| 2021-08-06 15:35:20 | <absence> | hmm, i think i expected mtl style stacks to magically sort that out, but that only works when they're related |
| 2021-08-06 15:35:30 | × | rmoe quits (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) (Ping timeout: 265 seconds) |
| 2021-08-06 15:36:27 | <geekosaur> | in general stuff like this works only because you can build a chain of related monadic expressions. otherwise you couldn't for example have conditionals |
| 2021-08-06 15:36:36 | <davean> | absence: I mean even if that could work - you haven't given any constraints that give such a knowlege! |
| 2021-08-06 15:36:42 | <davean> | absence: ALL you have given is MonadIO |
| 2021-08-06 15:37:35 | <davean> | And you didn't say something like "m1 is some abstract monad that is allowed to do up to X things" and then have m2 have said capabilities |
| 2021-08-06 15:37:43 | <davean> | you just said "MonadIO" |
| 2021-08-06 15:37:50 | <davean> | if you'd said "forall m1" that might be different |
| 2021-08-06 15:38:27 | <davean> | Perhaps you were thinking something like (forall m1 . MonadIO m1 => m1 a) -> ExceptT e m2 a? |
| 2021-08-06 15:38:42 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 258 seconds) |
| 2021-08-06 15:40:06 | <davean> | absence: I want to make the point you didn't say m1 was abstract, you said it was exactly something. So theres really nothing for MTL to sort out |
| 2021-08-06 15:40:16 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 2021-08-06 15:40:21 | <davean> | the forall case though might leave some sorting to happen, under the right conditions |
| 2021-08-06 15:42:38 | <absence> | davean: i knew that my signature as written doesn't work, the compiler already told me that ;) i wanted to explore related ideas, so the forall m1 one looks interesting. thanks! |
| 2021-08-06 15:43:49 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 2021-08-06 15:45:14 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 2021-08-06 15:46:22 | × | charukiewicz quits (~quassel@irouteinc255.i.subnet.rcn.com) (Ping timeout: 258 seconds) |
| 2021-08-06 15:46:31 | → | charukiewicz_ joins (~quassel@irouteince04.i.subnet.rcn.com) |
| 2021-08-06 15:46:56 | → | zmt00 joins (~zmt00@user/zmt00) |
| 2021-08-06 15:48:11 | <janus> | absence: did you see that mtl already has lift for ExceptT? |
| 2021-08-06 15:49:36 | → | jeetelongname joins (~jeet@host-89-241-98-229.as13285.net) |
| 2021-08-06 15:49:39 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 2021-08-06 15:49:57 | → | zebrag joins (~chris@user/zebrag) |
| 2021-08-06 15:50:13 | <janus> | you have lift, you have "except" (in transformers for taking an Either to ExceptT). it's hard for me to imagine other functions that put things in ExceptT |
| 2021-08-06 15:50:13 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 2021-08-06 15:50:18 | <janus> | but maybe my imagination is limited :P |
| 2021-08-06 15:50:42 | <jeetelongname> | :t (***) |
| 2021-08-06 15:50:43 | <lambdabot> | Arrow a => a b c -> a b' c' -> a (b, b') (c, c') |
| 2021-08-06 15:52:07 | <janus> | ok , throwError, may need that also if you have an unconditional failure |
| 2021-08-06 15:52:30 | × | charukiewicz_ quits (~quassel@irouteince04.i.subnet.rcn.com) (Ping timeout: 258 seconds) |
| 2021-08-06 15:52:41 | → | charukiewicz joins (~quassel@irouteinc02.i.subnet.rcn.com) |
| 2021-08-06 15:53:27 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 2021-08-06 15:53:45 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 2021-08-06 15:54:53 | → | pschorf joins (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
| 2021-08-06 15:55:05 | → | shapr joins (~user@pool-108-28-144-11.washdc.fios.verizon.net) |
| 2021-08-06 15:55:54 | × | curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 268 seconds) |
| 2021-08-06 15:56:08 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 2021-08-06 15:56:26 | × | oso quits (~oso@2601:58c:c080:a950:f275:2530:b398:680b) (Quit: Client closed) |
| 2021-08-06 15:57:40 | → | berberman joins (~berberman@user/berberman) |
| 2021-08-06 15:58:15 | × | berberman_ quits (~berberman@user/berberman) (Ping timeout: 258 seconds) |
| 2021-08-06 15:58:48 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 2021-08-06 15:58:54 | × | ukari quits (~ukari@user/ukari) (Remote host closed the connection) |
| 2021-08-06 15:59:38 | → | ukari joins (~ukari@user/ukari) |
| 2021-08-06 16:00:16 | <absence> | janus: thanks, but the problem was the mismatch between m1 and m2 |
| 2021-08-06 16:00:48 | <janus> | aah right , ok. so actually not really related to ExceptT |
| 2021-08-06 16:01:44 | → | euandreh joins (~euandreh@2804:14c:33:9fe5:4cf:cdfb:eec8:75c0) |
| 2021-08-06 16:02:55 | → | neceve joins (~quassel@2a02:c7f:607e:d600:d2c9:6317:8847:51b6) |
| 2021-08-06 16:05:09 | × | azeem quits (~azeem@176.201.8.137) (Ping timeout: 258 seconds) |
| 2021-08-06 16:06:47 | → | azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
| 2021-08-06 16:09:32 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 2021-08-06 16:11:00 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 2021-08-06 16:12:29 | → | rmoe joins (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) |
| 2021-08-06 16:14:21 | <lechner> | Hi, why does connectPostgreSQL in postgresql-simple expect a ByteString and not a String, please? |
| 2021-08-06 16:15:12 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds) |
| 2021-08-06 16:15:18 | <dsal> | String is bad in general. They'd have to pack it in to a bytestring to send it over the wire anyway, so might as well take it. |
| 2021-08-06 16:15:45 | <dsal> | With overloaded strings and optparse-applicative or similar for taking parameters, you might generally not notice the difference. |
| 2021-08-06 16:16:37 | <maerwald[m]> | with optparse-applicative you will notice something: https://github.com/pcapriotti/optparse-applicative/issues/368 |
| 2021-08-06 16:17:19 | <maerwald[m]> | and https://github.com/haskell/bytestring/issues/140 |
| 2021-08-06 16:17:42 | <maerwald[m]> | (which is used by OverloadedStrings) |
All times are in UTC.