Logs: liberachat/#haskell
| 2021-08-27 07:44:07 | → | tsmc joins (~tsmc@159.196.170.5) |
| 2021-08-27 07:44:40 | × | azeem quits (~azeem@176.201.20.14) (Ping timeout: 240 seconds) |
| 2021-08-27 07:45:23 | → | azeem joins (~azeem@176.201.20.14) |
| 2021-08-27 07:45:49 | → | arjun joins (~Srain@user/arjun) |
| 2021-08-27 07:46:58 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 2021-08-27 07:47:43 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 2021-08-27 07:48:27 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 2021-08-27 07:49:08 | → | nattiestnate joins (~nate@103.2.146.186) |
| 2021-08-27 07:50:27 | × | mjs2600_ quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 240 seconds) |
| 2021-08-27 07:56:34 | → | sjb0 joins (~stephen@2001:8004:2738:35de:a1a3:a1c1:6e62:ba62) |
| 2021-08-27 07:58:44 | → | Ananta-shesha joins (~pjetcetal@128-71-152-79.broadband.corbina.ru) |
| 2021-08-27 08:00:26 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2021-08-27 08:01:44 | × | nattiestnate quits (~nate@103.2.146.186) (Quit: WeeChat 3.2) |
| 2021-08-27 08:02:08 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 2021-08-27 08:05:28 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 2021-08-27 08:09:12 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 2021-08-27 08:09:21 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
| 2021-08-27 08:09:56 | → | aman joins (~aman@user/aman) |
| 2021-08-27 08:11:45 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c1b3:f9cf:5870:faa7) (Remote host closed the connection) |
| 2021-08-27 08:13:56 | × | aegon quits (~mike@174.127.249.180) (Remote host closed the connection) |
| 2021-08-27 08:17:39 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 2021-08-27 08:17:39 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 2021-08-27 08:17:42 | allbery_b | is now known as geekosaur |
| 2021-08-27 08:18:22 | → | kayprish joins (~kayprish@77.243.29.13) |
| 2021-08-27 08:18:40 | × | xff0x quits (~xff0x@2001:1a81:53dc:be00:b65c:39d2:8f04:a6df) (Ping timeout: 240 seconds) |
| 2021-08-27 08:19:30 | → | xff0x joins (~xff0x@2001:1a81:53dc:be00:da3f:ef74:f6f8:c86d) |
| 2021-08-27 08:19:38 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 2021-08-27 08:23:56 | → | enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
| 2021-08-27 08:31:22 | → | burnside_ joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 2021-08-27 08:31:22 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 2021-08-27 08:32:38 | → | mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
| 2021-08-27 08:34:50 | <mastarija> | What does this warning about extraneous version range for a dependency on "internal" library mean exactly, and how do I get rid of it? |
| 2021-08-27 08:34:53 | <mastarija> | https://paste.tomsmeding.com/Q9wfbZUl |
| 2021-08-27 08:35:16 | <mastarija> | My cabal file: https://paste.tomsmeding.com/6n6fShRZ |
| 2021-08-27 08:38:40 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 240 seconds) |
| 2021-08-27 08:39:46 | <fendor> | mastarija, I think that is a cabal bug and depending on your cabal version, I think not at all |
| 2021-08-27 08:40:39 | × | tsmc quits (~tsmc@159.196.170.5) (Quit: Client closed) |
| 2021-08-27 08:40:41 | <mastarija> | fendor, cool. I suspected it might be, since it showed that same message when I fixed internal library version and it still showed. |
| 2021-08-27 08:41:20 | → | nschoe joins (~quassel@178.251.84.79) |
| 2021-08-27 08:43:10 | × | amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 240 seconds) |
| 2021-08-27 08:43:48 | → | jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
| 2021-08-27 08:44:28 | × | juhp quits (~juhp@128.106.188.220) (Quit: juhp) |
| 2021-08-27 08:44:42 | → | juhp joins (~juhp@128.106.188.220) |
| 2021-08-27 08:44:59 | → | Guest|7 joins (~Guest|7@138.229.117.11) |
| 2021-08-27 08:45:21 | × | Guest|7 quits (~Guest|7@138.229.117.11) (Client Quit) |
| 2021-08-27 08:47:25 | → | vpan joins (~vilius@212.117.1.172) |
| 2021-08-27 08:48:02 | <jtomas> | Hi, is there a way to write this `f (a, b, c) = W a b c` in a shorter way, without repeating all the parameters one by one? |
| 2021-08-27 08:50:30 | → | ubert joins (~Thunderbi@91.141.37.164.wireless.dyn.drei.com) |
| 2021-08-27 08:51:50 | <Rembane_> | jtomas: You need to write a curry3 function first. You could also use lenses, but I doubt it will be any shorter. |
| 2021-08-27 08:52:10 | × | mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 240 seconds) |
| 2021-08-27 08:53:07 | <jtomas> | thank Rembane_ |
| 2021-08-27 08:53:12 | <jtomas> | *thanks |
| 2021-08-27 08:53:53 | <Rembane_> | jtomas: No problem! |
| 2021-08-27 08:54:07 | × | juhp quits (~juhp@128.106.188.220) (Ping timeout: 240 seconds) |
| 2021-08-27 08:56:07 | → | timCF joins (~timCF@m91-129-108-244.cust.tele2.ee) |
| 2021-08-27 08:56:19 | <dminuoso> | unsafeCoerce! |
| 2021-08-27 08:56:37 | dminuoso | smiles |
| 2021-08-27 08:56:38 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 2021-08-27 08:56:39 | <Rembane_> | dminuoso: What?! Show us! :D |
| 2021-08-27 08:56:46 | → | pfurla_ joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 2021-08-27 08:56:47 | <dminuoso> | f = unsafeCoerce |
| 2021-08-27 08:56:47 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 2021-08-27 08:56:58 | <Rembane_> | That is shorter. |
| 2021-08-27 08:57:19 | <dminuoso> | Should I include some warranty or liability notice? |
| 2021-08-27 08:57:41 | <Rembane_> | Isn't it included in the function name? |
| 2021-08-27 08:57:46 | <dminuoso> | I take no responsiblity if, as a result of random crashes, people or kittens die. |
| 2021-08-27 08:58:13 | <dminuoso> | I used to think unsafe was just a boring prefix and I knew better. |
| 2021-08-27 08:58:24 | <dminuoso> | And then unsafePerformIO did things I did not expect it to |
| 2021-08-27 08:58:40 | <dminuoso> | It's quite interesting how wrong ones intuition can be |
| 2021-08-27 08:59:03 | <Rembane_> | That's the thing about intuition right? |
| 2021-08-27 08:59:37 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 2021-08-27 09:00:54 | × | Guest55 quits (~Guest55@182.64.179.3) (Quit: Client closed) |
| 2021-08-27 09:01:49 | × | ubert quits (~Thunderbi@91.141.37.164.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
| 2021-08-27 09:01:51 | × | idf quits (~idf@198.23.223.146) (Quit: ZNC 1.8.2 - https://znc.in) |
| 2021-08-27 09:01:52 | → | ubert1 joins (~Thunderbi@91.141.37.164.wireless.dyn.drei.com) |
| 2021-08-27 09:01:52 | <dminuoso> | I reckon, you might be able to `coerce` from (,,) to W though |
| 2021-08-27 09:01:56 | <dminuoso> | jtomas: ^- |
| 2021-08-27 09:02:00 | → | idf joins (~idf@198.23.223.146) |
| 2021-08-27 09:02:09 | <dminuoso> | Assuming that `W` takes only 3 arguments at most, of course. |
| 2021-08-27 09:02:23 | <dminuoso> | data W = W Int Char String |
| 2021-08-27 09:02:25 | <dminuoso> | % data W = W Int Char String |
| 2021-08-27 09:02:25 | <yahb> | dminuoso: |
| 2021-08-27 09:02:36 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 2021-08-27 09:02:37 | <dminuoso> | % f :: (Int, Char, String) -> W; f = coerce |
| 2021-08-27 09:02:37 | <yahb> | dminuoso: ; <interactive>:16:36: error:; * Couldn't match representation of type `(Int, Char, String)' with that of `W' arising from a use of `coerce'; * In the expression: coerce; In an equation for `f': f = coerce |
| 2021-08-27 09:02:40 | <dminuoso> | Mmm |
| 2021-08-27 09:02:50 | <Taneb> | It has to be an unsafeCoerce |
| 2021-08-27 09:02:54 | <dminuoso> | Why is that? |
| 2021-08-27 09:02:55 | × | hueso quits (~root@user/hueso) (Ping timeout: 252 seconds) |
| 2021-08-27 09:03:11 | <Taneb> | coerce only works for newtype wrappers, basically |
| 2021-08-27 09:03:28 | × | Megant quits (megant@user/megant) (Ping timeout: 252 seconds) |
| 2021-08-27 09:03:29 | <dminuoso> | Ohh, because W and (,,) have a different representation. Of cours. |
| 2021-08-27 09:03:51 | → | hueso joins (~root@user/hueso) |
| 2021-08-27 09:03:58 | <int-e> | Once upon a time, when intuitions worked and accursedUnutterablePerformIO was still called inlinePerformIO... |
| 2021-08-27 09:04:10 | ubert1 | is now known as ubert |
| 2021-08-27 09:04:11 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 2021-08-27 09:04:12 | <timCF> | Hello! I have a question about organization of enterprise Haskell codebase. Once I've learned finally tagless, I always used this as a development pattern in my projects. In most apps there is some implicit environment `Env` used inside of `ReaderT` where stored techincal things like postgres connection pool, which are accessed through different classes for example `Storage`, `ServiceRpc` which are using |
| 2021-08-27 09:04:18 | <timCF> | `Env`, and main application monad `AppM` implements these classes. This way for example it's very easy to "mock" things in tests, just have `TestAppM` and implement these classes differently. This all works fine until some stuff inside `Env` needs to be mutable. At the moment I'm using `MVar` field as a workaround, but thinking maybe `StateT` instead of `ReaderT` will be better and more "pure" solution? |
| 2021-08-27 09:04:24 | <timCF> | But for some reason I have not seen much use of `StateT` in enterprise codebase. What do you think? |
| 2021-08-27 09:04:59 | → | Megant joins (megant@user/megant) |
All times are in UTC.