Logs: liberachat/#haskell
| 2021-06-28 09:07:58 | <tomsmeding> | that's opinion :p |
| 2021-06-28 09:08:24 | <merijn> | Profpatsch: It's not wrong, it's the only sensible option |
| 2021-06-28 09:08:33 | <tomsmeding> | in the same vein you would be against supporting non-record constructors wholesale, I think |
| 2021-06-28 09:08:36 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 2021-06-28 09:08:52 | × | jespada quits (~jespada@90.254.247.46) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 2021-06-28 09:08:58 | <Profpatsch> | I mean we can disagree |
| 2021-06-28 09:09:01 | <merijn> | tomsmeding: Oh, that reminds me, is NoFieldSelectors in yet |
| 2021-06-28 09:09:14 | <Profpatsch> | don’t want to list the amount of times somebody was lazy and mixed up fields |
| 2021-06-28 09:09:19 | <Profpatsch> | which were both text |
| 2021-06-28 09:09:21 | <merijn> | Profpatsch: You are free to propose an alternative to constructor ordering that does *not* use "a random heuristic guess" |
| 2021-06-28 09:09:30 | <merijn> | Profpatsch: But I don't think you will be able to |
| 2021-06-28 09:09:46 | <tomsmeding> | merijn: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0160-no-toplevel-field-selectors.rst ("Implemented: 9.2") |
| 2021-06-28 09:09:49 | <merijn> | Profpatsch: Shouldn't use Text as type, imo |
| 2021-06-28 09:09:52 | <merijn> | tomsmeding: \o/ |
| 2021-06-28 09:09:55 | <Profpatsch> | merijn: Disallow using constructors in that way in the surface |
| 2021-06-28 09:10:02 | <merijn> | Profpatsch: You can already do that |
| 2021-06-28 09:10:03 | → | jespada joins (~jespada@90.254.247.46) |
| 2021-06-28 09:10:09 | <Profpatsch> | merijn: how? |
| 2021-06-28 09:10:09 | <merijn> | Profpatsch: Just don't export the constructor |
| 2021-06-28 09:10:18 | <merijn> | That's what I do for a lot of code |
| 2021-06-28 09:10:26 | <Profpatsch> | then you can’t construct the record? |
| 2021-06-28 09:10:36 | <Profpatsch> | Data.Lens in 3 2 1 |
| 2021-06-28 09:10:42 | <merijn> | I don't use lens |
| 2021-06-28 09:10:55 | <merijn> | Haven't had a need for it in the past decade, tbh |
| 2021-06-28 09:11:29 | <merijn> | Profpatsch: I export either parsers/explicit construction functions/etc. from the module defining the record and only use those |
| 2021-06-28 09:11:42 | <Profpatsch> | so builder pattern |
| 2021-06-28 09:11:44 | <merijn> | And aggressively newtype things like Text, Int, etc. |
| 2021-06-28 09:11:58 | <Profpatsch> | Thing is: that’s the verbose thing |
| 2021-06-28 09:12:05 | <Profpatsch> | And the nonverbose thing is the bad thing |
| 2021-06-28 09:12:10 | <Profpatsch> | Which is bad language design |
| 2021-06-28 09:12:40 | <merijn> | Profpatsch: What alternative do you propose that does not involve magic? |
| 2021-06-28 09:12:42 | <Profpatsch> | I mean that train has left the station, but we can at least give some good new defaults |
| 2021-06-28 09:12:54 | <merijn> | It's easy to say "that's bad language design" if you don't have to come up with something better |
| 2021-06-28 09:13:03 | <merijn> | I'm not convinced something better can exist |
| 2021-06-28 09:13:21 | <Profpatsch> | like a linter that disallows construction by field order |
| 2021-06-28 09:13:26 | <merijn> | All the languages that attempt to do "better" seem to settle on "convoluted implicit magic" |
| 2021-06-28 09:13:39 | → | warnz joins (~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) |
| 2021-06-28 09:13:56 | <tomsmeding> | record construction syntax seems to be a way that Profpatsch approves of |
| 2021-06-28 09:13:59 | <Profpatsch> | Or maybe even a compiler warning by default |
| 2021-06-28 09:14:09 | <Profpatsch> | Unless it’s a newtype |
| 2021-06-28 09:14:31 | <merijn> | tomsmeding: Everyone's excited about these terrible complicated extensions like LinearHaskell, but me? I'm *hyped* for NoFieldSelectors :> |
| 2021-06-28 09:14:55 | <tomsmeding> | am I excited about LinearHaskell? cool! |
| 2021-06-28 09:15:12 | <merijn> | tomsmeding: Terror is a form of excitement ;) |
| 2021-06-28 09:16:11 | <Profpatsch> | merijn: Ah, nice, NoFieldSelectors sounds like a step in the right direction |
| 2021-06-28 09:16:16 | <boxscape_> | doesn't the same argument apply to function application without keyword args? |
| 2021-06-28 09:16:28 | <boxscape_> | i.e. disallowing positional arguments |
| 2021-06-28 09:16:29 | <tomsmeding> | yes |
| 2021-06-28 09:16:41 | <Profpatsch> | boxscape_: yes |
| 2021-06-28 09:16:44 | <boxscape_> | okay |
| 2021-06-28 09:17:27 | <merijn> | The solution to that problem is: Use a record as function argument, imo |
| 2021-06-28 09:17:34 | <Unhammer> | can I {- HLINT ignore "some hint" -} only in a specific function? |
| 2021-06-28 09:17:36 | <merijn> | Which is something I've been doing *a lot* in my code |
| 2021-06-28 09:17:51 | <Profpatsch> | merijn: yeah, as soon as your function isn’t plumbing, that’s the way to go |
| 2021-06-28 09:18:02 | <Profpatsch> | I just want RowType & Anonymous records :( |
| 2021-06-28 09:18:22 | <merijn> | Profpatsch: That's not happening in Haskell as we know it |
| 2021-06-28 09:18:25 | × | warnz quits (~warnz@2600:1700:77c0:5610:eca1:bc9d:4345:931f) (Ping timeout: 272 seconds) |
| 2021-06-28 09:18:30 | <merijn> | Profpatsch: Maybe switch to Ur/Web? ;) |
| 2021-06-28 09:18:42 | <Profpatsch> | Conflicts with inference too much? |
| 2021-06-28 09:18:54 | tomsmeding | . o O ( Unrestricted Web? ) |
| 2021-06-28 09:19:08 | <merijn> | tomsmeding: You don't know Ur/Web? |
| 2021-06-28 09:19:14 | × | yauhsien quits (~yauhsien@61-231-57-141.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
| 2021-06-28 09:19:19 | <tomsmeding> | heard of it at some point |
| 2021-06-28 09:19:19 | <Profpatsch> | merijn: thanks, I prefer to stick with general purpose langs :) |
| 2021-06-28 09:19:47 | <merijn> | tomsmeding: Imagine if the PHP inventor was actually competent at PL design and fell into a cauldron of type theory as a baby... ;) |
| 2021-06-28 09:20:09 | <tomsmeding> | lol |
| 2021-06-28 09:20:12 | <Unhammer> | oh {- HLINT ignore haveFun "some hint" -} works :) |
| 2021-06-28 09:20:15 | <merijn> | tomsmeding: It's quite cool, but to call it "niche" would be an understatement :p |
| 2021-06-28 09:20:18 | <merijn> | tomsmeding: http://www.impredicative.com/ur/ |
| 2021-06-28 09:20:26 | <boxscape_> | merijn: what about https://github.com/ghc-proposals/ghc-proposals/pull/180 ? Or would that not qualify as "as we know it"? |
| 2021-06-28 09:20:41 | <boxscape_> | (tbh it's been a year since I looked at that proposal so I don't remember it very well) |
| 2021-06-28 09:21:35 | <merijn> | boxscape_: That's not even close to a prototype or worked-out implementation |
| 2021-06-28 09:21:42 | <boxscape_> | that's fair |
| 2021-06-28 09:22:15 | <Profpatsch> | merijn: you never know when some company decides that’s what they should put $1M into |
| 2021-06-28 09:22:22 | <Profpatsch> | And then it happens within 5 years |
| 2021-06-28 09:22:34 | <Profpatsch> | Like it happened with linear types |
| 2021-06-28 09:22:41 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 2021-06-28 09:23:03 | <Profpatsch> | Although that’s probably closer to $3–5M at this point |
| 2021-06-28 09:23:25 | × | zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!) |
| 2021-06-28 09:23:33 | × | azeem quits (~azeem@dynamic-adsl-94-34-9-28.clienti.tiscali.it) (Ping timeout: 250 seconds) |
| 2021-06-28 09:23:52 | <merijn> | I wouldn't consider LinearHaskell "Haskell as we know it" either |
| 2021-06-28 09:24:11 | → | azeem joins (~azeem@176.201.40.58) |
| 2021-06-28 09:24:23 | <Profpatsch> | I’m not married to the language as I know it |
| 2021-06-28 09:24:35 | <Profpatsch> | It’s a local maximum at best |
| 2021-06-28 09:24:43 | <merijn> | Oh, agreed |
| 2021-06-28 09:24:57 | <merijn> | But I don't believe *adding stuff* will make it better |
| 2021-06-28 09:25:09 | <merijn> | I think we can do much better than Haskell now |
| 2021-06-28 09:25:28 | <merijn> | I don't believe trying to that *within Haskell* is viable without making the language *worse* |
| 2021-06-28 09:26:03 | <merijn> | I understand the pragmatic reasons why people don't want to create a new language...but that seems like a silly problem, because they're making a new language *anyway* |
| 2021-06-28 09:26:03 | → | fendor joins (~fendor@178.165.168.249.wireless.dyn.drei.com) |
| 2021-06-28 09:26:45 | <Lycurgus> | how baked is this thing that's gonna replace haskell? |
| 2021-06-28 09:26:53 | <merijn> | You can't truly use LinearHaskell or DependentHaskell without it spreading throughout your entire code (and dependencies) |
| 2021-06-28 09:27:09 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 2021-06-28 09:27:27 | <merijn> | And if you're gonna have to adjust/update/etc. everything drastically anyway, why are we tying ourselves to limitations from the past design of Haskell |
| 2021-06-28 09:27:53 | <boxscape_> | it does solve the coordination problem though, getting people to use a new language is hard, getting people to use new features of the language they already use it much easier |
| 2021-06-28 09:28:04 | <merijn> | boxscape_: Sure |
| 2021-06-28 09:28:12 | <merijn> | boxscape_: And then you converge on C++ |
| 2021-06-28 09:28:18 | <boxscape_> | could be |
| 2021-06-28 09:28:35 | <merijn> | boxscape_: I understand *why* it happens as a result of pragmatism |
| 2021-06-28 09:28:52 | <merijn> | boxscape_: That doesn't mean I have to like it |
| 2021-06-28 09:29:00 | <boxscape_> | very true |
All times are in UTC.