Logs: liberachat/#haskell
| 2021-07-09 17:47:44 | → | ukari joins (~ukari@user/ukari) |
| 2021-07-09 17:49:25 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 246 seconds) |
| 2021-07-09 17:49:59 | × | chris-the-slurpa quits (~chris@81.96.113.213) (Ping timeout: 255 seconds) |
| 2021-07-09 17:50:04 | → | Reyu[M] joins (~reyureyuz@matrix.reyuzenfold.com) |
| 2021-07-09 17:50:54 | → | favonia joins (~favonia@user/favonia) |
| 2021-07-09 17:52:10 | × | yauhsien quits (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 2021-07-09 17:52:45 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 252 seconds) |
| 2021-07-09 17:52:57 | × | HotblackDesiato quits (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Ping timeout: 244 seconds) |
| 2021-07-09 17:53:45 | → | ubert joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) |
| 2021-07-09 17:59:25 | → | warnz joins (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) |
| 2021-07-09 17:59:34 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 246 seconds) |
| 2021-07-09 18:00:16 | → | HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato) |
| 2021-07-09 18:00:54 | → | favonia joins (~favonia@user/favonia) |
| 2021-07-09 18:04:38 | × | ubert quits (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 2021-07-09 18:05:34 | → | chris-the-slurpa joins (~chris@81.96.113.213) |
| 2021-07-09 18:06:46 | → | roconnor_ joins (~roconnor@host-104-157-231-207.dyn.295.ca) |
| 2021-07-09 18:06:49 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:39f3:da:7ab8:bc1e) (Remote host closed the connection) |
| 2021-07-09 18:07:24 | × | roconnor_ quits (~roconnor@host-104-157-231-207.dyn.295.ca) (Client Quit) |
| 2021-07-09 18:08:35 | × | roconnor quits (~roconnor@host-45-58-230-126.dyn.295.ca) (Ping timeout: 252 seconds) |
| 2021-07-09 18:10:22 | → | chisui joins (~chisui@200116b866eaab00b869ec172918c6ce.dip.versatel-1u1.de) |
| 2021-07-09 18:10:51 | → | Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) |
| 2021-07-09 18:10:58 | <chisui> | Hey, is there a way to resolve this issue without the need of an additional type variable? `Could not deduce: n1 ~ (n - 1) from the context: n ~ (n1 + 1)` |
| 2021-07-09 18:11:30 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 2021-07-09 18:11:43 | → | lavaman joins (~lavaman@98.38.249.169) |
| 2021-07-09 18:14:45 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 252 seconds) |
| 2021-07-09 18:15:53 | → | favonia joins (~favonia@user/favonia) |
| 2021-07-09 18:19:34 | → | pavonia joins (~user@user/siracusa) |
| 2021-07-09 18:19:50 | → | pgib joins (~textual@173.38.117.69) |
| 2021-07-09 18:20:14 | × | ukari quits (~ukari@user/ukari) (Remote host closed the connection) |
| 2021-07-09 18:21:01 | → | ukari joins (~ukari@user/ukari) |
| 2021-07-09 18:22:42 | × | ukari quits (~ukari@user/ukari) (Remote host closed the connection) |
| 2021-07-09 18:23:09 | → | yauhsien joins (~yauhsien@61-231-39-135.dynamic-ip.hinet.net) |
| 2021-07-09 18:23:46 | → | ukari joins (~ukari@user/ukari) |
| 2021-07-09 18:30:02 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 2021-07-09 18:31:45 | <Hecate> | would I sound absolutely demented if I suggested to examine which GHC language extensions can be moved to a compiler plugin? |
| 2021-07-09 18:32:06 | <Hecate> | or have they all encroached in its architecture now? |
| 2021-07-09 18:32:33 | → | favonia joins (~favonia@user/favonia) |
| 2021-07-09 18:33:27 | <Hecate> | or maybe we have some work to make compiler plugins' ergonomics better so that it doesn't slow adoption? |
| 2021-07-09 18:33:30 | <peutri> | bonus points for extracting ApplicativeDo |
| 2021-07-09 18:33:33 | <Hecate> | bgamari: what do you think? |
| 2021-07-09 18:34:03 | <Hecate> | peutri: yeah I was thinking of this, because people are talking about SelectiveDo on the subreddit and it might start as a compiler plugin |
| 2021-07-09 18:34:36 | <davean> | Hecate: what would be the proposed benefit? |
| 2021-07-09 18:35:01 | <bgamari> | yeah, I'll admit that I'm not entirely clear on what we would gain by doing so |
| 2021-07-09 18:35:23 | <bgamari> | all I see are costs |
| 2021-07-09 18:35:40 | <Hecate> | davean: the things that don't have to live in-tree can be put elsewhere, we can reduce the size of the GHC codebase… |
| 2021-07-09 18:35:45 | <Hecate> | bgamari: I'm interested to know why! |
| 2021-07-09 18:35:49 | <Hecate> | we're not modular enough? |
| 2021-07-09 18:36:11 | <davean> | Hecate: So, more cost of maintainership for ... a larger overall code base? I'm confused, I see no benefits here |
| 2021-07-09 18:36:43 | <monochrom> | I think the hope is that when a thing is called a "plugin", you can enable 3 plugins and expect no surprising interference, just because they are called "plugin"s. The word suggests so much modularity, no? |
| 2021-07-09 18:36:58 | <Hecate> | davean: why more cost of maintenership? |
| 2021-07-09 18:37:07 | <bgamari> | Hecate, well, many, if not most, extensions do require some extra syntax |
| 2021-07-09 18:37:13 | <peutri> | wouldn't the point be to have a smaller, lighter ghc? |
| 2021-07-09 18:37:14 | <davean> | Hecate: because you have to deal with GHC version still |
| 2021-07-09 18:37:19 | <monochrom> | And I think the reality is that they will still have the same ugly surprising interference as when we did things the old "monolithic" way. |
| 2021-07-09 18:37:22 | <bgamari> | and we currently have no means for plugins to extend the grammar |
| 2021-07-09 18:37:29 | <davean> | monochrom: but thats clearly silly |
| 2021-07-09 18:37:32 | <Hecate> | bgamari: ok, I wasn't quite aware of that. :) |
| 2021-07-09 18:37:40 | <bgamari> | even for those cases that don't require new syntax |
| 2021-07-09 18:37:43 | <davean> | but even if there was, theres only cost here |
| 2021-07-09 18:38:09 | <bgamari> | you still have the usual composability problems that plugins introduce |
| 2021-07-09 18:38:13 | <bgamari> | as monochrom suggested |
| 2021-07-09 18:38:17 | <Hecate> | I see the errors of my ways. Let's first create a beautiful monolith before thinking about splitting and modularity |
| 2021-07-09 18:38:34 | <bgamari> | then there are also the purely practical considerations |
| 2021-07-09 18:38:47 | <bgamari> | e.g. presumably we would want to continue to evolve the plugin alongside GHC |
| 2021-07-09 18:38:58 | <Hecate> | which is certainly reasonable :P |
| 2021-07-09 18:39:03 | <davean> | Hecate: no, I don't think you EVER split this |
| 2021-07-09 18:39:08 | <bgamari> | which means we would have to advance multiple projects in lockstep |
| 2021-07-09 18:39:09 | <davean> | Hecate: because they're inhernetly tied |
| 2021-07-09 18:39:18 | <Hecate> | bgamari: ok, got it! |
| 2021-07-09 18:39:21 | <Hecate> | davean: 👍 |
| 2021-07-09 18:39:23 | <bgamari> | potentially introducing another haddock scenario |
| 2021-07-09 18:39:35 | <bgamari> | it's an interesting idea though |
| 2021-07-09 18:39:40 | → | motherfs1 joins (~motherfsc@user/motherfsck) |
| 2021-07-09 18:40:40 | <davean> | The only "benefit" to plugins I see here is supporting new things on older GHCs, but thats combinatorically more work, and its a bad idea - upgrade GHC, you need to anyway |
| 2021-07-09 18:41:10 | <monochrom> | The monad transformer saga was a wake-up call. |
| 2021-07-09 18:41:20 | <Hecate> | monochrom: tell me more :) |
| 2021-07-09 18:41:34 | <davean> | monochrom: ? |
| 2021-07-09 18:42:15 | <monochrom> | Early adoptors used to think that the monad transformer way was "modular", "plugin", "component", "mix and match", all those nice utopian->dystopian wordings. |
| 2021-07-09 18:42:41 | <monochrom> | Just because each monad transformer has standalone definition, "no dependency". |
| 2021-07-09 18:43:00 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 272 seconds) |
| 2021-07-09 18:43:04 | <monochrom> | We now understand that you combine your monad transformers to build a monolith. |
| 2021-07-09 18:43:05 | × | mikail quits (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 255 seconds) |
| 2021-07-09 18:43:45 | <sclv> | i think plugins for things like selective-do (or preprocessors) are good as proofs of concept |
| 2021-07-09 18:43:54 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds) |
| 2021-07-09 18:44:14 | <sclv> | you can develop them independently, let a few brave people try them out and get a feel for it |
| 2021-07-09 18:44:26 | <sclv> | but long term you have to fold it in to the main codebase or it usually dies |
| 2021-07-09 18:45:12 | <sclv> | in the case of selective-do its the preprocessor approach rather than plugin imho, since its a syntactic transform |
| 2021-07-09 18:45:13 | <bgamari> | right |
| 2021-07-09 18:45:16 | <bgamari> | I agree with that |
| 2021-07-09 18:45:23 | <sclv> | recall that's how arrows were first done too -- a long tradition! |
| 2021-07-09 18:45:26 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 252 seconds) |
| 2021-07-09 18:45:30 | <bgamari> | plugins are really best used for a prototyping |
| 2021-07-09 18:45:35 | <Hecate> | oki doki |
| 2021-07-09 18:45:58 | <bgamari> | IIRC scala used to make quite a bit of use of compiler plugins |
| 2021-07-09 18:46:14 | <bgamari> | and the effect was that projects became very tied to particular compiler versions |
| 2021-07-09 18:46:53 | → | favonia joins (~favonia@user/favonia) |
| 2021-07-09 18:47:40 | × | warnz quits (~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Remote host closed the connection) |
| 2021-07-09 18:48:18 | × | motherfs1 quits (~motherfsc@user/motherfsck) (Ping timeout: 252 seconds) |
| 2021-07-09 18:49:43 | <lechner> | Hi, what are the "row types" mentioned here, and why are they scary, please? Thanks! https://chrisdone.com/posts/clientside-programming-haskell/ |
| 2021-07-09 18:49:46 | <sclv> | also these days for syntactic prototyping one can do it directly with quasiquotes, which is pretty nice and stable |
All times are in UTC.