2024-04-24 00:01:39 +0200 | acidjnk | (~acidjnk@p200300d6e714dc429de1f5b63f3ace20.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2024-04-24 00:07:48 +0200 | xstill_1 | (xstill@fimu/xstill) |
2024-04-24 00:07:50 +0200 | xstill_ | (xstill@fimu/xstill) (Ping timeout: 268 seconds) |
2024-04-24 00:07:50 +0200 | xsarnik | (xsarnik@lounge.fi.muni.cz) (Ping timeout: 268 seconds) |
2024-04-24 00:07:51 +0200 | xstill_1 | xstill_ |
2024-04-24 00:08:06 +0200 | xsarnik | (xsarnik@lounge.fi.muni.cz) |
2024-04-24 00:09:44 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2024-04-24 00:20:03 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2024-04-24 00:24:34 +0200 | xal | (~xal@mx1.xal.systems) () |
2024-04-24 00:26:12 +0200 | xal | (~xal@mx1.xal.systems) |
2024-04-24 00:29:55 +0200 | philopsos | (~caecilius@user/philopsos) |
2024-04-24 00:35:27 +0200 | causal | (~eric@50.35.88.207) |
2024-04-24 00:39:05 +0200 | zzz | (~yin@user/zero) (Ping timeout: 245 seconds) |
2024-04-24 00:39:30 +0200 | yin | (~yin@user/zero) (Ping timeout: 245 seconds) |
2024-04-24 00:41:13 +0200 | zzz | (~yin@user/zero) |
2024-04-24 00:41:18 +0200 | yin | (~yin@user/zero) |
2024-04-24 00:42:01 +0200 | docelalt^ | (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection) |
2024-04-24 00:45:30 +0200 | ph88 | (~ph88@ip5b403f30.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2024-04-24 00:47:58 +0200 | zzz | (~yin@user/zero) (Quit: leaving) |
2024-04-24 00:56:53 +0200 | oo_miguel | (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 240 seconds) |
2024-04-24 00:58:30 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2024-04-24 01:03:06 +0200 | zetef | (~quassel@5.2.182.98) (Remote host closed the connection) |
2024-04-24 01:05:51 +0200 | zetef | (~quassel@5.2.182.98) |
2024-04-24 01:15:05 +0200 | zetef | (~quassel@5.2.182.98) (Remote host closed the connection) |
2024-04-24 01:17:28 +0200 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
2024-04-24 01:19:55 +0200 | madeleine-sydney | (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!) |
2024-04-24 01:19:56 +0200 | yin | zwrv |
2024-04-24 01:32:53 +0200 | trev | (~trev@user/trev) (Ping timeout: 240 seconds) |
2024-04-24 01:35:20 +0200 | trev | (~trev@user/trev) |
2024-04-24 01:42:00 +0200 | zwrv | (~yin@user/zero) (Ping timeout: 245 seconds) |
2024-04-24 01:44:12 +0200 | zwrv | (~yin@user/zero) |
2024-04-24 01:55:26 +0200 | peterbecich | (~Thunderbi@47.229.123.186) |
2024-04-24 02:07:25 +0200 | tv | (~tv@user/tv) (Ping timeout: 245 seconds) |
2024-04-24 02:07:43 +0200 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 246 seconds) |
2024-04-24 02:07:48 +0200 | tv | (~tv@user/tv) |
2024-04-24 02:18:37 +0200 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 256 seconds) |
2024-04-24 02:21:29 +0200 | emmanuelux | (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
2024-04-24 02:24:15 +0200 | peterbecich | (~Thunderbi@47.229.123.186) (Ping timeout: 272 seconds) |
2024-04-24 02:34:55 +0200 | zwrv | (~yin@user/zero) (Ping timeout: 245 seconds) |
2024-04-24 02:36:57 +0200 | zwrv | (~yin@user/zero) |
2024-04-24 02:49:42 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2024-04-24 02:51:20 +0200 | <cheater> | i would like to make it impossible to export a type from my module and i would like to add some checking that will error out if that happens. how can i do this? |
2024-04-24 02:51:49 +0200 | <cheater> | it's a newtype |
2024-04-24 02:52:04 +0200 | <cheater> | i want it usable outside the module using only values i exported which are smart constructors |
2024-04-24 02:52:33 +0200 | <c_wraith> | You need some form of testing for "does not compile" |
2024-04-24 02:53:04 +0200 | <c_wraith> | I know of a package that tests for type errors using -fdefer-type-errors, but there's no equivalent for name errors. Which is what you're really looking for. |
2024-04-24 02:53:53 +0200 | <cheater> | it's mostly to make sure my coworkers don't do something stupid |
2024-04-24 02:54:08 +0200 | <cheater> | which, you know, given that this is an unusual way to use modules, is warranted |
2024-04-24 02:54:27 +0200 | <c_wraith> | not exporting constructors is a pretty common way to use modules... |
2024-04-24 02:54:46 +0200 | <cheater> | yes, but forbidding the exporting is a less common thing |
2024-04-24 02:55:01 +0200 | <cheater> | there isn't really a specific way to say in haskell "these things shall not be exported" |
2024-04-24 02:55:16 +0200 | <cheater> | there's only the negative statement of "these things have not been exported" |
2024-04-24 02:55:22 +0200 | <cheater> | but it's not like an active "do not export these" |
2024-04-24 02:56:16 +0200 | <c_wraith> | Oh! You can use template haskell. |
2024-04-24 02:56:26 +0200 | <cheater> | in what way |
2024-04-24 02:56:57 +0200 | <c_wraith> | > runQ [| Bin |] --> UnboundVarE Bin |
2024-04-24 02:56:58 +0200 | <lambdabot> | <hint>:1:7: error: parse error on input ‘|’ |
2024-04-24 02:57:06 +0200 | <c_wraith> | whoops, didn't mean to prefix that with > |
2024-04-24 02:57:07 +0200 | <c_wraith> | anyway |
2024-04-24 02:57:24 +0200 | <cheater> | i don't get it |
2024-04-24 02:57:29 +0200 | <cheater> | can you explain what it does? |
2024-04-24 02:57:42 +0200 | <c_wraith> | If you runQ a quote containing the name of the constructor, you will get UnboundVarE if the constructor isn't in scope |
2024-04-24 02:58:16 +0200 | ystael | (~ystael@user/ystael) (Ping timeout: 260 seconds) |
2024-04-24 02:58:17 +0200 | <cheater> | ok but how does that help me? i would have to do this in every *other* module |
2024-04-24 02:58:31 +0200 | madeleine-sydney | (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) |
2024-04-24 02:58:52 +0200 | <c_wraith> | Does every other module import a different version of the module containing the hidden constructors? |
2024-04-24 02:59:58 +0200 | <c_wraith> | Someone would have to work really hard to break such a test - moving the constructors to a different module, or renaming them |
2024-04-24 03:00:12 +0200 | <c_wraith> | At that point, they should get the point that they're doing something unapproved |
2024-04-24 03:01:29 +0200 | <cheater> | i don't understand. why are you talking about different versions of module exports? |
2024-04-24 03:01:42 +0200 | <c_wraith> | why are you talking about testing in every other module? |
2024-04-24 03:01:48 +0200 | <c_wraith> | Modules have exactly one export list |
2024-04-24 03:02:00 +0200 | <c_wraith> | You test the export list, not how it's imported in other modules |
2024-04-24 03:02:12 +0200 | <cheater> | well if i have module Foo where would i put that test? |
2024-04-24 03:02:18 +0200 | <c_wraith> | In a test |
2024-04-24 03:02:21 +0200 | <cheater> | if i put it in module Foo then obviously the constructors will be there |
2024-04-24 03:02:26 +0200 | <cheater> | so what, like another module? |
2024-04-24 03:02:27 +0200 | <c_wraith> | No, of course not |
2024-04-24 03:02:34 +0200 | <c_wraith> | Some other module, like all testts |
2024-04-24 03:02:53 +0200 | <cheater> | hmm... |
2024-04-24 03:03:07 +0200 | <cheater> | makes sense |
2024-04-24 03:03:24 +0200 | <geekosaur> | if you try to put your test in the module where you're trying to prevent exports, which might be possible with some evil TH, what would stop someone from deleting your test? |
2024-04-24 03:03:31 +0200 | <geekosaur> | it belongs in the test suite |
2024-04-24 03:03:35 +0200 | zwrv | (~yin@user/zero) (Ping timeout: 264 seconds) |
2024-04-24 03:03:53 +0200 | pointlessslippe1 | (~pointless@212.82.82.3) (Ping timeout: 268 seconds) |
2024-04-24 03:05:07 +0200 | mima | (~mmh@aftr-62-216-211-1.dynamic.mnet-online.de) (Ping timeout: 268 seconds) |
2024-04-24 03:05:32 +0200 | <monochrom> | It is a test case. I have such test cases in a C course. I teach students what not to put in a *.h file. So my test case is a C file that #include's it and tries to use what should be forbidden. If my file compiles, the student gets 0 marks. |
2024-04-24 03:05:56 +0200 | <monochrom> | Very simple to write a shell script "if ! gcc foo.c ; then ..." for that. |
2024-04-24 03:06:39 +0200 | <c_wraith> | Sadly, you can't use reify with runQ. I... don't know why not. |
2024-04-24 03:09:11 +0200 | pointlessslippe1 | (~pointless@212.82.82.3) |
2024-04-24 03:12:23 +0200 | <cheater> | geekosaur: it's not about stopping someone from deleting the test |
2024-04-24 03:12:31 +0200 | <cheater> | geekosaur: you misunderstood the thing i said earlier |
2024-04-24 03:12:40 +0200 | <cheater> | [02:53:31] <cheater> there isn't really a specific way to say in haskell "these things shall not be exported" |
2024-04-24 03:12:40 +0200 | <cheater> | [02:53:46] <cheater> there's only the negative statement of "these things have not been exported" |
2024-04-24 03:13:26 +0200 | <cheater> | if someone tries to export the constructors, and then finds out the thing doesn't build, and the error comes from a line with the comment "do not export these, blah blah blah see ticket FU-69420" then they'll know not to export it |
2024-04-24 03:13:34 +0200 | <cheater> | it's not about *preventing* someone from exporting the thing |
2024-04-24 03:13:49 +0200 | <cheater> | it's to prevent them from (exporting it because they didn't know better) |
2024-04-24 03:17:15 +0200 | <probie> | So the goal is to preventing some well-meaning agent of chaos from breaking everything? Very low effort, slightly messy, high success chance: Add the constructor the export list yourself, and then comment it out and stick a comment above it saying why it can't be exported |
2024-04-24 03:17:24 +0200 | <probie> | That way if they go to export it, they'll see it |
2024-04-24 03:20:32 +0200 | <jackdk> | can you put constraints on pattern synonyms? If so, you could stick a `TypeError (...) =>` on it and export that in place of the actual ctor |
2024-04-24 03:20:42 +0200 | <geekosaur> | yeh, you were making it sound like active maliciousness which requires something more clever |
2024-04-24 03:26:19 +0200 | xff0x | (~xff0x@ai082039.d.east.v6connect.net) (Ping timeout: 272 seconds) |
2024-04-24 03:27:43 +0200 | <cheater> | probie: that's practical... not the best solution but it might be the simplest useful solution |
2024-04-24 03:28:00 +0200 | <cheater> | jackdk: i want those types to actually be used. |
2024-04-24 03:28:34 +0200 | <cheater> | just via my own functions |
2024-04-24 03:28:38 +0200 | <cheater> | and not via the types being instantiated. |
2024-04-24 03:33:24 +0200 | tri | (~tri@ool-18bc2e74.dyn.optonline.net) |
2024-04-24 03:35:51 +0200 | random-jellyfish | (~developer@user/random-jellyfish) (Ping timeout: 260 seconds) |
2024-04-24 03:36:45 +0200 | otto_s | (~user@p5b044a05.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2024-04-24 03:37:56 +0200 | tri | (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds) |
2024-04-24 03:38:15 +0200 | otto_s | (~user@p5b0445f5.dip0.t-ipconnect.de) |
2024-04-24 03:38:15 +0200 | machinedgod | (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 245 seconds) |
2024-04-24 03:57:43 +0200 | <Axman6> | So do you want users to be able to pattern match on the type but not use the constructor for creating the type? |
2024-04-24 03:58:06 +0200 | trqt | (~trqt@user/trqt) |
2024-04-24 03:58:06 +0200 | <Axman6> | that feels doable with pattern synonyms |
2024-04-24 04:02:20 +0200 | cipherrot | (~znc-user@user/petrichor) (Read error: Connection reset by peer) |
2024-04-24 04:02:40 +0200 | petrichor | (~znc-user@user/petrichor) |
2024-04-24 04:04:57 +0200 | hueso | (~root@user/hueso) (Quit: hueso) |
2024-04-24 04:08:53 +0200 | hueso | (~root@user/hueso) |
2024-04-24 04:09:55 +0200 | nschoe | (~nschoe@2a01:e0a:8e:a190:f3a1:c501:e8bd:2571) (Ping timeout: 245 seconds) |
2024-04-24 04:09:59 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2024-04-24 04:10:10 +0200 | tt123109 | (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) |
2024-04-24 04:10:16 +0200 | tabemann_ | (~tabemann@2600:1700:7990:24e0:42f1:a891:a658:f99d) |
2024-04-24 04:10:17 +0200 | Luj3 | (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) |
2024-04-24 04:10:20 +0200 | FragByte | (~christian@user/fragbyte) (Ping timeout: 245 seconds) |
2024-04-24 04:10:23 +0200 | Benzi-Junior | (~BenziJuni@232-148-209-31.dynamic.hringdu.is) (Quit: ZNC 1.8.2 - https://znc.in) |
2024-04-24 04:10:31 +0200 | ubert1 | (~Thunderbi@2a02:8109:ab8a:5a00:a472:8995:2c6:603d) |
2024-04-24 04:10:38 +0200 | Natch | (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Read error: Connection reset by peer) |
2024-04-24 04:10:39 +0200 | Benzi-Junior | (~BenziJuni@232-148-209-31.dynamic.hringdu.is) |
2024-04-24 04:10:41 +0200 | ubert | (~Thunderbi@2a02:8109:ab8a:5a00:a472:8995:2c6:603d) (Remote host closed the connection) |
2024-04-24 04:10:41 +0200 | ubert1 | ubert |
2024-04-24 04:10:44 +0200 | tabemann | (~tabemann@2600:1700:7990:24e0:2a56:ddeb:a57a:6071) (Read error: Connection reset by peer) |
2024-04-24 04:10:51 +0200 | pavonia_ | (~user@user/siracusa) |
2024-04-24 04:10:58 +0200 | Luj | (~Luj@2a01:e0a:5f9:9681:1b36:b307:9c84:5d03) (Read error: Connection reset by peer) |
2024-04-24 04:10:58 +0200 | Luj3 | Luj |
2024-04-24 04:11:00 +0200 | tzh_ | (~tzh@c-73-164-206-160.hsd1.or.comcast.net) |
2024-04-24 04:11:07 +0200 | xal | (~xal@mx1.xal.systems) (Quit: No Ping reply in 180 seconds.) |
2024-04-24 04:11:07 +0200 | nschoe | (~nschoe@2a01:e0a:8e:a190:f3a1:c501:e8bd:2571) |
2024-04-24 04:11:12 +0200 | FragByte | (~christian@user/fragbyte) |
2024-04-24 04:11:19 +0200 | pointlessslippe1 | (~pointless@212.82.82.3) (Quit: ZNC - http://znc.in) |
2024-04-24 04:11:25 +0200 | tcard_ | (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
2024-04-24 04:11:35 +0200 | tt12310 | (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) (Ping timeout: 245 seconds) |
2024-04-24 04:11:35 +0200 | tcard | (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 245 seconds) |
2024-04-24 04:11:35 +0200 | tt123109 | tt12310 |
2024-04-24 04:11:46 +0200 | driib | (~driib@vmi931078.contaboserver.net) (Quit: Ping timeout (120 seconds)) |
2024-04-24 04:11:50 +0200 | JamesMowery | (~JamesMowe@ip98-171-80-211.ph.ph.cox.net) (Quit: Ping timeout (120 seconds)) |
2024-04-24 04:11:59 +0200 | pointlessslippe1 | (~pointless@212.82.82.3) |
2024-04-24 04:12:09 +0200 | JamesMowery | (~JamesMowe@ip98-171-80-211.ph.ph.cox.net) |
2024-04-24 04:12:17 +0200 | SteelBlueSilk | (~SteelBlue@user/SteelBlueSilk) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in) |
2024-04-24 04:12:18 +0200 | driib | (~driib@vmi931078.contaboserver.net) |
2024-04-24 04:12:18 +0200 | bcksl | (~bcksl@user/bcksl) (Quit: \) |
2024-04-24 04:12:22 +0200 | Ram-Z | (~Ram-Z@li1814-254.members.linode.com) (Remote host closed the connection) |
2024-04-24 04:12:22 +0200 | xal | (~xal@mx1.xal.systems) |
2024-04-24 04:12:24 +0200 | end | (~end@user/end/x-0094621) (Quit: end) |
2024-04-24 04:12:25 +0200 | son0p | (~ff@191.104.18.195) (Ping timeout: 245 seconds) |
2024-04-24 04:12:45 +0200 | Ram-Z | (~Ram-Z@li1814-254.members.linode.com) |
2024-04-24 04:13:05 +0200 | SteelBlueSilk | (~SteelBlue@c-98-42-249-36.hsd1.ca.comcast.net) |
2024-04-24 04:13:05 +0200 | SteelBlueSilk | (~SteelBlue@c-98-42-249-36.hsd1.ca.comcast.net) (Changing host) |
2024-04-24 04:13:05 +0200 | SteelBlueSilk | (~SteelBlue@user/SteelBlueSilk) |
2024-04-24 04:13:15 +0200 | td_ | (~td@i5387090C.versanet.de) (Ping timeout: 245 seconds) |
2024-04-24 04:13:18 +0200 | Catty | (~catties@user/meow/catties) (Quit: n_n) |
2024-04-24 04:13:38 +0200 | catties | (~catties@user/meow/catties) |
2024-04-24 04:13:40 +0200 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Ping timeout: 245 seconds) |
2024-04-24 04:14:05 +0200 | pavonia | (~user@user/siracusa) (Ping timeout: 245 seconds) |
2024-04-24 04:14:05 +0200 | tolt | (~weechat-h@li219-154.members.linode.com) (Ping timeout: 245 seconds) |
2024-04-24 04:14:05 +0200 | _________ | (~nobody@user/noodly) (Ping timeout: 245 seconds) |
2024-04-24 04:14:09 +0200 | td_ | (~td@i5387090C.versanet.de) |
2024-04-24 04:14:33 +0200 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) |
2024-04-24 04:14:34 +0200 | pavonia_ | pavonia |
2024-04-24 04:14:55 +0200 | tzh | (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Ping timeout: 245 seconds) |
2024-04-24 04:14:55 +0200 | Patternmaster | (~georg@user/Patternmaster) (Ping timeout: 245 seconds) |
2024-04-24 04:14:55 +0200 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) (Ping timeout: 245 seconds) |
2024-04-24 04:14:59 +0200 | _________ | (~nobody@user/noodly) |
2024-04-24 04:15:08 +0200 | tolt | (~weechat-h@li219-154.members.linode.com) |
2024-04-24 04:15:46 +0200 | Patternmaster | (~georg@user/Patternmaster) |
2024-04-24 04:15:56 +0200 | Natch | (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) |
2024-04-24 04:15:59 +0200 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) |
2024-04-24 04:18:03 +0200 | <glguy> | https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/pattern_synonyms.html search for "unidirectional" |
2024-04-24 04:18:06 +0200 | trqt | (~trqt@user/trqt) (Quit: Using Circe, the loveliest of all IRC clients) |
2024-04-24 04:20:28 +0200 | bcksl | (~bcksl@user/bcksl) |
2024-04-24 04:22:30 +0200 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
2024-04-24 04:23:01 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2024-04-24 04:23:27 +0200 | xdminsy | (~xdminsy@117.147.70.233) (Ping timeout: 260 seconds) |
2024-04-24 04:24:54 +0200 | end | (~end@user/end/x-0094621) |
2024-04-24 04:34:11 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds) |
2024-04-24 04:35:39 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2024-04-24 04:35:59 +0200 | td_ | (~td@i5387090C.versanet.de) (Ping timeout: 272 seconds) |
2024-04-24 04:37:28 +0200 | peterbecich | (~Thunderbi@47.229.123.186) |
2024-04-24 04:37:40 +0200 | td_ | (~td@i5387093D.versanet.de) |
2024-04-24 04:49:10 +0200 | <jackdk> | Or through the provision of `Traversal'`s |
2024-04-24 04:57:14 +0200 | <Inst> | is there any way to simplify this? |
2024-04-24 04:58:00 +0200 | <Inst> | uncurry (<$) . (id &&& tryPutMVar handle.discordHandleLibraryError) |
2024-04-24 04:58:39 +0200 | madeleine-sydney | (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!) |
2024-04-24 05:01:40 +0200 | <mauke> | add points? |
2024-04-24 05:03:17 +0200 | <Inst> | msg <$ tryPutMVar handle.DiscordHandleLibraryError msg |
2024-04-24 05:03:26 +0200 | <Inst> | I probably don't understand Control.Arrow well enough |
2024-04-24 05:05:08 +0200 | <Inst> | there has to be a combinator wherein you can run a monadic / applicative action on the target, but have the bind value be the target |
2024-04-24 05:08:02 +0200 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 252 seconds) |
2024-04-24 05:09:53 +0200 | <mauke> | @pl \msg -> msg <$ tryPutMVar handle.DiscordHandleLibraryError msg |
2024-04-24 05:09:53 +0200 | <lambdabot> | ap (<$) ((tryPutMVar handle .) . DiscordHandleLibraryError) |
2024-04-24 05:11:27 +0200 | <mauke> | @pl \msg -> msg <$ tryPutMVar handle_discordHandleLibraryError msg |
2024-04-24 05:11:27 +0200 | <lambdabot> | ap (<$) (tryPutMVar handle_discordHandleLibraryError) |
2024-04-24 05:11:29 +0200 | <jackdk> | Hoogling for `a -> (a -> m b) -> m a` gives two instances of this function |
2024-04-24 05:13:59 +0200 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 272 seconds) |
2024-04-24 05:15:13 +0200 | zmt00 | (~zmt00@user/zmt00) |
2024-04-24 05:16:17 +0200 | <jackdk> | If you strengthen the type signature from `IfElse`'s `Monad m => (a -> m b) -> (a -> m a)` to `Functor f => (a -> f b) -> a -> f a`, is it then the case that it has only one real implementation? Because the only way to get a `f anything` is to apply the function argument, then you have to `<$` the `a` back into it. Also, it makes it look like a `Lens a a a b`, which might be interesting |
2024-04-24 05:16:33 +0200 | ubert | (~Thunderbi@2a02:8109:ab8a:5a00:a472:8995:2c6:603d) (Ping timeout: 256 seconds) |
2024-04-24 05:19:13 +0200 | <Inst> | oof |
2024-04-24 05:19:16 +0200 | <Inst> | thanks mauke, so pointless |
2024-04-24 05:21:06 +0200 | <Inst> | (<$) <*> foo is the most toxic code ever, though |
2024-04-24 05:24:20 +0200 | tri | (~tri@ool-18bc2e74.dyn.optonline.net) |
2024-04-24 05:28:26 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds) |
2024-04-24 05:28:40 +0200 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
2024-04-24 05:31:01 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2024-04-24 05:31:58 +0200 | aforemny_ | (~aforemny@2001:9e8:6cea:cb00:f739:9bdb:c465:7132) |
2024-04-24 05:31:58 +0200 | aforemny | (~aforemny@2001:9e8:6cc5:7800:397f:89d3:8c7e:e3e5) (Ping timeout: 255 seconds) |
2024-04-24 05:51:10 +0200 | peterbecich | (~Thunderbi@47.229.123.186) (Ping timeout: 245 seconds) |
2024-04-24 05:54:16 +0200 | qqq | (~qqq@92.43.167.61) (Remote host closed the connection) |
2024-04-24 06:00:16 +0200 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 260 seconds) |
2024-04-24 06:02:35 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
2024-04-24 06:05:36 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2024-04-24 06:06:28 +0200 | sroso | (~sroso@user/SrOso) |
2024-04-24 06:06:55 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2024-04-24 06:22:04 +0200 | oneeyedalien | (~oneeyedal@user/oneeyedalien) |
2024-04-24 06:22:20 +0200 | madeleine-sydney | (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) |
2024-04-24 06:23:11 +0200 | son0p | (~ff@191.104.18.195) |
2024-04-24 06:24:26 +0200 | oneeyedalien | (~oneeyedal@user/oneeyedalien) (Remote host closed the connection) |
2024-04-24 06:27:28 +0200 | danza_ | (~francesco@151.57.237.5) |
2024-04-24 06:29:24 +0200 | average | (uid473595@user/average) |
2024-04-24 06:33:40 +0200 | danza_ | (~francesco@151.57.237.5) (Ping timeout: 245 seconds) |
2024-04-24 06:39:22 +0200 | michalz | (~michalz@185.246.207.203) |
2024-04-24 06:51:56 +0200 | rdcdr | (~rdcdr@user/rdcdr) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in) |
2024-04-24 06:53:48 +0200 | benkard | (~mulk@p5b112e4a.dip0.t-ipconnect.de) |
2024-04-24 06:54:13 +0200 | rdcdr | (~rdcdr@user/rdcdr) |
2024-04-24 06:54:31 +0200 | mulk | (~mulk@p5b2dc97e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2024-04-24 06:54:32 +0200 | benkard | mulk |
2024-04-24 07:01:36 +0200 | rosco | (~rosco@yp-146-6.tm.net.my) |
2024-04-24 07:13:53 +0200 | tri | (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
2024-04-24 07:17:20 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2024-04-24 07:30:07 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2024-04-24 07:31:03 +0200 | zetef | (~quassel@5.2.182.98) |
2024-04-24 07:31:44 +0200 | madeleine-sydney | (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!) |
2024-04-24 07:37:06 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2024-04-24 07:37:53 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2024-04-24 07:41:37 +0200 | peterbecich | (~Thunderbi@47.229.123.186) |
2024-04-24 07:43:14 +0200 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds) |
2024-04-24 07:43:30 +0200 | euleritian | (~euleritia@dynamic-176-001-023-202.176.1.pool.telefonica.de) |
2024-04-24 07:43:48 +0200 | zetef | (~quassel@5.2.182.98) (Ping timeout: 255 seconds) |
2024-04-24 07:46:45 +0200 | <energizer> | i guess cartesianProduct distributes over zipWith? |
2024-04-24 07:53:43 +0200 | peterbecich | (~Thunderbi@47.229.123.186) (Ping timeout: 268 seconds) |
2024-04-24 07:55:31 +0200 | jinsun_ | (~jinsun@user/jinsun) |
2024-04-24 07:55:31 +0200 | jinsun | Guest225 |
2024-04-24 07:55:31 +0200 | Guest225 | (~jinsun@user/jinsun) (Killed (cadmium.libera.chat (Nickname regained by services))) |
2024-04-24 07:55:31 +0200 | jinsun_ | jinsun |
2024-04-24 07:57:57 +0200 | acidjnk | (~acidjnk@p200300d6e714dc53c081e76fe6dc232d.dip0.t-ipconnect.de) |
2024-04-24 08:07:11 +0200 | trev | (~trev@user/trev) (Ping timeout: 264 seconds) |
2024-04-24 08:20:48 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-04-24 08:36:35 +0200 | mima | (~mmh@aftr-62-216-211-228.dynamic.mnet-online.de) |
2024-04-24 08:39:08 +0200 | average | (uid473595@user/average) (Quit: Connection closed for inactivity) |
2024-04-24 08:41:47 +0200 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2024-04-24 08:56:56 +0200 | euleritian | (~euleritia@dynamic-176-001-023-202.176.1.pool.telefonica.de) (Read error: Connection reset by peer) |
2024-04-24 08:57:20 +0200 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-04-24 09:04:15 +0200 | Guest95 | (~Guest95@217.7.130.9) |
2024-04-24 09:08:00 +0200 | danza_ | (~francesco@151.57.237.5) |
2024-04-24 09:18:51 +0200 | mima | (~mmh@aftr-62-216-211-228.dynamic.mnet-online.de) (Ping timeout: 252 seconds) |
2024-04-24 09:32:04 +0200 | oo_miguel | (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) |
2024-04-24 09:34:53 +0200 | gfundler | (~user@p5b0f39a4.dip0.t-ipconnect.de) |
2024-04-24 09:36:20 +0200 | ft | (~ft@p4fc2a20e.dip0.t-ipconnect.de) (Quit: leaving) |
2024-04-24 09:36:57 +0200 | Square | (~Square@user/square) |
2024-04-24 09:39:33 +0200 | <Inst> | wait |
2024-04-24 09:39:40 +0200 | <Inst> | https://hackage.haskell.org/package/base-4.19.1.0/docs/src/Control.Arrow.html#Kleisli |
2024-04-24 09:39:47 +0200 | <Inst> | This... is incorrectly documented isn't it? |
2024-04-24 09:39:53 +0200 | <Inst> | It's not a monad, it's simply a parameterized type |
2024-04-24 09:39:55 +0200 | <Inst> | there's no monad constraint here |
2024-04-24 09:41:15 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds) |
2024-04-24 09:41:53 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2024-04-24 09:42:01 +0200 | trev | (~trev@user/trev) |
2024-04-24 09:45:01 +0200 | <Inst> | the constraints are put in from instances, welp |
2024-04-24 09:45:28 +0200 | sawilagar | (~sawilagar@user/sawilagar) |
2024-04-24 09:48:08 +0200 | <Inst> | hmmm, could you treat the kleisli arrows as applicative? |
2024-04-24 09:49:28 +0200 | <Inst> | yeah, you only need pure and fmap to do it |
2024-04-24 09:55:59 +0200 | <Inst> | ah, i understand, applicative kleisli can't be categories, so they can't be arrows |
2024-04-24 09:57:51 +0200 | <probie> | Yeah, you need (sans the Kleisli new type) `(.) :: (b -> m c) -> (a -> m b) -> (a -> m c)`, which is going to require monad |
2024-04-24 09:58:22 +0200 | <probie> | with only `fmap` and `pure`, the best you can do is `(b -> m c) -> (a -> m b) -> (a -> m (m c))` |
2024-04-24 10:06:08 +0200 | machinedgod | (~machinedg@d173-183-246-216.abhsia.telus.net) |
2024-04-24 10:08:04 +0200 | tzh_ | (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz) |
2024-04-24 10:09:01 +0200 | danza_ | (~francesco@151.57.237.5) (Read error: Connection reset by peer) |
2024-04-24 10:18:15 +0200 | sroso | (~sroso@user/SrOso) (Read error: Connection reset by peer) |
2024-04-24 10:19:52 +0200 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
2024-04-24 10:20:28 +0200 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2024-04-24 10:22:29 +0200 | sroso | (~sroso@user/SrOso) |
2024-04-24 10:24:22 +0200 | lol_ | (~lol@2603:3016:1e01:b940:500c:2d35:d29f:521d) |
2024-04-24 10:25:44 +0200 | philopsos | (~caecilius@user/philopsos) (Ping timeout: 268 seconds) |
2024-04-24 10:28:30 +0200 | jcarpenter2 | (~lol@2603:3016:1e01:b940:bc60:e296:86fe:18c4) (Ping timeout: 268 seconds) |
2024-04-24 10:33:44 +0200 | philopsos | (~caecilius@user/philopsos) |
2024-04-24 10:36:34 +0200 | danse-nr3 | (~danse-nr3@151.43.249.70) |
2024-04-24 10:39:16 +0200 | <jackdk> | the constraint is on the instance |
2024-04-24 10:40:13 +0200 | philopsos | (~caecilius@user/philopsos) (Ping timeout: 255 seconds) |
2024-04-24 10:44:46 +0200 | __monty__ | (~toonn@user/toonn) |
2024-04-24 10:50:40 +0200 | Guest95 | (~Guest95@217.7.130.9) (Quit: Client closed) |
2024-04-24 10:54:07 +0200 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2024-04-24 10:54:53 +0200 | euleritian | (~euleritia@77.22.252.56) |
2024-04-24 11:00:46 +0200 | titibandit | (~titibandi@user/titibandit) |
2024-04-24 11:06:35 +0200 | gfundler | (~user@p5b0f39a4.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
2024-04-24 11:19:35 +0200 | zetef | (~quassel@5.2.182.98) |
2024-04-24 11:22:36 +0200 | zetef | (~quassel@5.2.182.98) (Remote host closed the connection) |
2024-04-24 11:25:39 +0200 | demon-cat | (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) |
2024-04-24 11:32:33 +0200 | xdminsy | (~xdminsy@117.147.70.233) |
2024-04-24 11:32:54 +0200 | mima | (~mmh@138.246.3.254) |
2024-04-24 11:34:05 +0200 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 240 seconds) |
2024-04-24 11:34:31 +0200 | Luj | (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Ping timeout: 256 seconds) |
2024-04-24 11:35:47 +0200 | demon-cat | (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 252 seconds) |
2024-04-24 11:36:54 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
2024-04-24 11:37:01 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2024-04-24 11:42:08 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2024-04-24 11:43:32 +0200 | chele | (~chele@user/chele) |
2024-04-24 11:50:44 +0200 | Luj | (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) |
2024-04-24 11:53:18 +0200 | zetef | (~quassel@5.2.182.99) |
2024-04-24 12:05:36 +0200 | Luj | (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Ping timeout: 256 seconds) |
2024-04-24 12:09:01 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds) |
2024-04-24 12:11:07 +0200 | gehmehgeh | gmg |
2024-04-24 12:13:43 +0200 | yin | (~yin@user/zero) |
2024-04-24 12:15:02 +0200 | <haskellbridge> | <irregularsphere> here's something I think would be nice to share (though has some clear issues): https://play.haskell.org/saved/oO6x9Ycd |
2024-04-24 12:15:09 +0200 | yin | zwrv |
2024-04-24 12:17:35 +0200 | Me-me | (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Changing host) |
2024-04-24 12:17:35 +0200 | Me-me | (~me-me@user/me-me) |
2024-04-24 12:20:40 +0200 | <ncf> | is that your attempt at exofunctors |
2024-04-24 12:21:21 +0200 | <Inst> | gahhh, streamly |
2024-04-24 12:21:25 +0200 | <haskellbridge> | <irregularsphere> at what? |
2024-04-24 12:21:28 +0200 | <Inst> | i realize i'll probably fall in love with streamly |
2024-04-24 12:21:36 +0200 | <Inst> | do you know what a functor is in category theory? |
2024-04-24 12:21:51 +0200 | <haskellbridge> | <irregularsphere> yes? |
2024-04-24 12:22:06 +0200 | <ncf> | https://dorchard.wordpress.com/2011/10/18/subcategories-in-haskell-exofunctors/ |
2024-04-24 12:22:35 +0200 | actioninja | (~actioninj@user/actioninja) (Ping timeout: 268 seconds) |
2024-04-24 12:22:46 +0200 | <Inst> | streamly honestly is the best library ever; a bunch of Indian guys decide to build a whole new language on top of Haskell with a library and a GHC plugin |
2024-04-24 12:22:46 +0200 | <haskellbridge> | <irregularsphere> oh, I wasn't even the first to think of this |
2024-04-24 12:24:11 +0200 | <danse-nr3> | what matters whether they were indian or not? |
2024-04-24 12:24:22 +0200 | yeitrafferin | (~user@2a04:4540:7213:3800:bf5b:caaa:b515:ed1a) |
2024-04-24 12:24:53 +0200 | <Inst> | it matters insofar as if they open up a donation box, and you give them money, they'll get more work done than if you give money to any other Haskell organization |
2024-04-24 12:29:28 +0200 | <haskellbridge> | <irregularsphere> ...and i was off by a margin of _thirteen_ years |
2024-04-24 12:30:13 +0200 | <danse-nr3> | well that's what we do all the times, but by sharing you found out early |
2024-04-24 12:30:53 +0200 | demon-cat | (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) |
2024-04-24 12:31:38 +0200 | <haskellbridge> | <irregularsphere> wdym "early" |
2024-04-24 12:32:56 +0200 | <haskellbridge> | <irregularsphere> ncf: thanks for the link by the way |
2024-04-24 12:40:28 +0200 | Inst | (~Inst@user/Inst) (Ping timeout: 268 seconds) |
2024-04-24 12:45:53 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2024-04-24 12:46:38 +0200 | Square | (~Square@user/square) (Ping timeout: 268 seconds) |
2024-04-24 12:47:12 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds) |
2024-04-24 12:48:45 +0200 | Lord_of_Life_ | Lord_of_Life |
2024-04-24 12:48:59 +0200 | Inst | (~Inst@user/Inst) |
2024-04-24 12:50:14 +0200 | <Inst> | I've told the Streamly folks (ComposeWell) they really should set up a Haskell consultancy, I guess it's probably their dream or something; they can undercut Serokell and Tweag like crazy |
2024-04-24 12:50:27 +0200 | <Inst> | rather, I told them, they should open up a donation box |
2024-04-24 12:50:51 +0200 | <Inst> | but if they opened up a Haskell consultancy they'd make a ton of money, if they could keep their employees from getting sniped off by Well-Typed / Serokell / Tweag |
2024-04-24 12:52:57 +0200 | <danse-nr3> | haskell openings are not usually driven by low wages though |
2024-04-24 12:53:32 +0200 | <Inst> | usually someone idealistic or willing to give a niche language a shot |
2024-04-24 12:53:53 +0200 | <Inst> | still, the idea of having really cheap Haskell consultants would help move the needle on the business end |
2024-04-24 12:54:17 +0200 | <danse-nr3> | i mean before spending weeks or months on developing a library or something irregularsphere |
2024-04-24 12:56:30 +0200 | <danse-nr3> | haskellers *are* cheap nonetheless, 'cause the market is solid (to mean the opposite of a liquid market). But a cheap wage does not provide much of an edge from what i see in job offers |
2024-04-24 12:57:40 +0200 | <Inst> | I mean that they could open up a consultancy to attempt to compete with Well-Typed / Serokell / Tweag / Galois |
2024-04-24 13:01:03 +0200 | zetef | (~quassel@5.2.182.99) (Remote host closed the connection) |
2024-04-24 13:02:58 +0200 | xff0x | (~xff0x@2405:6580:b080:900:a709:5227:95bf:dd51) |
2024-04-24 13:03:53 +0200 | <Inst> | also TBH, while educated Indians usually know English, you tend to have substantial cultural differences compared to a European or American mainstream, so idioms, choices in API design, values in library construction, can differ |