Logs on 2021-12-02 (liberachat/#haskell)
| 00:00:07 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 00:01:39 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 00:03:23 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 00:05:02 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 00:09:33 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds) |
| 00:21:07 | × | Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:25:00 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 00:30:13 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 00:33:16 | × | acidjnk_new quits (~acidjnk@p200300d0c7271e31dccc5136b6b31647.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 00:36:41 | × | rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds) |
| 00:39:53 | → | Cajun joins (~Cajun@user/cajun) |
| 00:43:50 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 252 seconds) |
| 00:45:28 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 00:46:24 | × | alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection) |
| 00:47:52 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Quit: leaving) |
| 00:47:59 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 00:47:59 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 00:47:59 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:48:47 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 00:50:36 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 01:10:48 | → | slack1256 joins (~slack1256@191.126.227.74) |
| 01:10:52 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:13:17 | × | mmhat quits (~mmh@55d4c042.access.ecotel.net) (Ping timeout: 256 seconds) |
| 01:16:59 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:19:51 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 01:19:58 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:1d11:e285:317e:6a2a) (Quit: gone to sleep. ZZZzzz…) |
| 01:21:13 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 01:21:48 | yushyin | is now known as yushying |
| 01:22:07 | yushying | is now known as yushyin |
| 01:23:03 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:1d11:e285:317e:6a2a) |
| 01:23:30 | × | burnsidesLlama quits (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection) |
| 01:25:31 | → | mmhat joins (~mmh@55d4726e.access.ecotel.net) |
| 01:29:14 | × | mmhat quits (~mmh@55d4726e.access.ecotel.net) (Client Quit) |
| 01:44:02 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:44:23 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 01:44:25 | × | slack1256 quits (~slack1256@191.126.227.74) (Remote host closed the connection) |
| 01:49:29 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds) |
| 01:54:14 | <boxscape> | % Prelude... |
| 01:54:14 | <yahb> | boxscape: ; <interactive>:66:1: error: parse error on input `Prelude...' |
| 01:54:19 | <boxscape> | hmm |
| 01:54:23 | <boxscape> | didn't get a parse error in ghci |
| 01:54:36 | <boxscape> | ah |
| 01:54:40 | <boxscape> | % (Prelude...) |
| 01:54:41 | <yahb> | boxscape: ; <interactive>:67:1: error:; Not in scope: `Prelude...'; Perhaps you meant one of these: `Prelude..' (imported from Prelude), `Prelude.+' (imported from Prelude), `Prelude.*' (imported from Prelude) |
| 01:54:57 | <boxscape> | I'm somewhat surprised that this isn't a parse error, considering .. is reserved |
| 01:55:36 | <boxscape> | (So (ModuleName...) is an identifier you can refer to but never define) |
| 01:55:48 | <boxscape> | except possibly with template haskell... |
| 01:56:59 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 252 seconds) |
| 02:03:33 | <shapr> | Is there any way to save debug/crash info if GHC segfaults? |
| 02:03:35 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
| 02:03:40 | → | Typedfern joins (~Typedfern@75.red-88-22-25.staticip.rima-tde.net) |
| 02:07:46 | <Axman6> | oh no |
| 02:12:41 | <dmj`> | "Print Screen" |
| 02:13:01 | <EvanR> | quick get a screenshot |
| 02:13:57 | <boxscape> | (nope, can't do it with TH) |
| 02:14:02 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
| 02:14:16 | <c_wraith> | configure your OS to allow core files? |
| 02:18:27 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 02:24:15 | <shapr> | c_wraith: do you know if Windows does that? |
| 02:24:27 | <c_wraith> | oh. windows? unlikely. |
| 02:28:13 | <hololeap> | does (..) live in Prelude? I thought it was syntactic sugar |
| 02:29:00 | <EvanR> | anyone heard of `basement' and `foundation'... seems like it would be a totally different language using these xD |
| 02:29:12 | <hololeap> | the only place I've seen it is ['a'..'z'] |
| 02:29:29 | <EvanR> | import A (A(..)) |
| 02:30:43 | × | xff0x quits (~xff0x@2001:1a81:5339:b000:22b1:7654:f125:7b04) (Ping timeout: 252 seconds) |
| 02:30:46 | <hololeap> | EvanR: what are you supposed to import when you use basement? |
| 02:31:25 | <iqubic> | How does one use basement and foundation? Are those like, replacement preludes. |
| 02:31:46 | <EvanR> | disable prelude, import Foundation |
| 02:31:48 | <boxscape> | hololeap: you're right, I thought it was that you can refer to Prelude... *because* it's not defined in the Prelude |
| 02:32:01 | <boxscape> | s/it was/ it was odd |
| 02:32:45 | → | xff0x joins (~xff0x@2001:1a81:5351:7200:ec14:1667:941b:a8bf) |
| 02:33:15 | <boxscape> | I would have expected to see something like "illegal variable name" |
| 02:33:56 | <EvanR> | ok basement is behind the scenes of foundation. I wonder if it's "yet another alternative prelude" |
| 02:34:21 | <EvanR> | but e.g. the Num class is gone, String is a newtype over packed UTF8 bytes |
| 02:34:45 | <EvanR> | arrays are just there |
| 02:35:23 | <hololeap> | it seems very opinionated, which isn't to say it isn't good or you shouldn't use it |
| 02:35:46 | <boxscape> | I guess the one thing that might be annoying is interfacing with other libraries |
| 02:35:47 | <EvanR> | yeah I looked through the basement and didn't see anything too questionable |
| 02:36:07 | <hololeap> | it seems to have a special use case, probably for making network backends |
| 02:36:09 | <EvanR> | Subtractive class uses an associated type synonym for the return type xD |
| 02:36:41 | <EvanR> | so you can do Int -> Int -> Int, but Natural -> Natural -> Maybe Natural, or Date -> Date -> Integer |
| 02:37:24 | <EvanR> | oh yeah I wonder how you use other libraries at the same time |
| 02:37:40 | <EvanR> | well why did I even look at it, it's a transitive dependence for wreq xD |
| 02:37:56 | <jackdk> | My personal rule is to never use an altprelude in library code |
| 02:38:27 | <hololeap> | is there one that just removes partial functions? I would use that |
| 02:39:12 | <EvanR> | the conversion class is split between always works and Maybe works |
| 02:39:19 | <EvanR> | From, TryFrom |
| 02:39:24 | <EvanR> | Into, TryInto |
| 02:39:26 | <jackdk> | I've been pretty happy building on Relude at work, but I just don't think that the risk of the maintainer going AWOL and jamming the update of some library you care about isn't worth it for libs |
| 02:39:53 | <dsal> | jackdk: the obvious solution is to make your own prelude. |
| 02:40:08 | <hololeap> | jackdk: that's fair, although in a way this is a common problem |
| 02:41:02 | <jackdk> | for a larger lib an internal prelude could help with organisation, sure |
| 02:41:37 | <jackdk> | and yeah the problem is that Prelude tries to do too many things at once, so it simultaneously feels too big and too small |
| 02:42:01 | <EvanR> | if the library only exports new types and doesn't mention any altered base types... seems like the client code would not notice? |
| 02:42:31 | <EvanR> | i.e. only use altprelude in secret |
| 02:42:45 | <EvanR> | don't ask don't tell |
| 02:42:53 | <hololeap> | jackdk: I agree, actually. you can import from libraries that have a specific use. Prelude is basically a meta-import at that point |
| 02:43:19 | <hololeap> | which I guess it is already XD |
| 02:43:37 | <jackdk> | EvanR: until your altprelude turns out to be maintained by someone who falls behind on maintenance, and then everyone who depends on you is sad |
| 02:43:54 | <EvanR> | isn't that an issue with any library you use ever? |
| 02:43:57 | <hololeap> | but you get a ton of dependencies and someone has to go through and bump them constantly |
| 02:45:33 | <boxscape> | EvanR: I suppose with alt-preludes in particular, it's only a nice-to-have rather than a library you really need to depend on |
| 02:45:49 | <boxscape> | so the risk/benefit ratio is different |
| 02:46:03 | <EvanR> | the brochure for foundation mentions the changing landscape of GHC base, hence basement that doesn't change. But then this raises the exact issue of who continues to make basement compatible with GHC base as it (supposedly) changes |
| 02:46:15 | <jackdk> | EvanR: yes. But altpreludes seem to involve a) a lot of catherding because they often collate stuff from a bunch of libraries, b) by definition provide almost no additional features |
| 02:46:33 | × | unyu quits (~pyon@user/pyon) (Quit: WeeChat 3.3) |
| 02:46:57 | <EvanR> | this one doesn't have any dependencies and has a lot of features |
| 02:47:03 | <jackdk> | Re: "(supposedly) changes" - I keep bumping into libs that claim `build-depends: base >=4.x && <5` but break on GHC9 |
| 02:47:45 | <EvanR> | so <5 is BS |
| 02:48:04 | <hololeap> | I saw <666 once |
| 02:48:13 | <jackdk> | at least you know that's evil |
| 02:48:20 | <hololeap> | haha |
| 02:48:40 | <jackdk> | EvanR: and yet, https://github.com/haskell-foundation/foundation/pull/555#issuecomment-983107899 |
| 02:48:45 | <EvanR> | "If we all put <5 they can't possibly break all of us" |
| 02:49:00 | <jackdk> | (going back to the basement discussion rather than the bounds discussion) |
| 02:49:22 | <jackdk> | the low-dependencies altprelude that's actually holding up a bunch of stuff and doesn't work on ghcjs |
| 02:49:44 | <EvanR> | that github issue explains a lot |
| 02:50:11 | <EvanR> | in particular, the answer to my question "has anyone heard of this" xD |
| 02:50:28 | <EvanR> | apparently everyones on board with it, with consequences |
| 02:50:37 | × | Cajun quits (~Cajun@user/cajun) (Quit: Client closed) |
| 02:50:57 | × | curiousgay quits (~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving) |
| 02:52:07 | <EvanR> | so base in 9.2 has changed significantly? |
| 02:52:18 | <EvanR> | or this is like, a change the version bounds game |
| 02:52:34 | × | tito quits (tito@tilde.team) (Ping timeout: 260 seconds) |
| 02:53:11 | <hololeap> | is MonadThrow a good choice if you need to be able to throw Exceptions but not any of the regular IO stuff? I haven't see it used a lot |
| 02:54:07 | → | tito joins (tito@tilde.team) |
| 02:54:56 | → | ubert1 joins (~Thunderbi@p200300ecdf0ba290e6b318fffe838f33.dip0.t-ipconnect.de) |
| 02:55:06 | × | ub quits (~Thunderbi@p200300ecdf0ba2be089e3f14725e8432.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 02:55:06 | × | ubert quits (~Thunderbi@p200300ecdf0ba2bee6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 02:55:07 | ubert1 | is now known as ubert |
| 02:55:12 | <jackdk> | The diff in the PR is at least a partial answer to that question, but I think the further you are off the ground the less the GHC changes will affect you, as the libraries you depend on will maintain APIs |
| 02:55:24 | → | ub joins (~Thunderbi@p200300ecdf0ba2909868c7bbf0c5b488.dip0.t-ipconnect.de) |
| 02:55:57 | <jackdk> | hololeap: I think so? I see a lot of stuff goes straight to MonadCatch so I think throw-but-not-catch is relatively rare but you're in a compatible ecosystem |
| 02:57:23 | <EvanR> | word8ToWordCompat# |
| 02:57:28 | <EvanR> | :S |
| 02:58:39 | <EvanR> | ok, to be clear, actually using any of this in production is another universe away from my original comment that it was like "very different looking", i.e. String isn't even compatible anymore |
| 02:59:08 | <EvanR> | so I'm not even sure it's usable for not-production xD |
| 02:59:17 | <EvanR> | unless you're in total isolation |
| 03:00:00 | <hololeap> | should there be a IsString instance for SomeException? you could pack some string exception in there |
| 03:02:00 | <hololeap> | jackdk: the idea is to have throwM but nothing else so you limit the scope of the function. it also lets me use Either or IO |
| 03:02:54 | <jackdk> | hololeap: yeah I think I understand what you're doing, and I think that class gets used a lot |
| 03:04:31 | <hololeap> | ok |
| 03:05:10 | <EvanR> | is there a difference between throw and throwIO for m=IO |
| 03:05:42 | → | yauhsien joins (~yauhsien@2402:7500:5e7:7cb:2978:bff0:cda7:8559) |
| 03:05:54 | <EvanR> | oh throwM |
| 03:06:23 | <jackdk> | https://hackage.haskell.org/package/exceptions-0.10.4/docs/src/Control.Monad.Catch.html#line-330 |
| 03:06:46 | <jackdk> | (I found this by going to the "Source" link of the MonadThrow instance for IO) |
| 03:07:41 | <EvanR> | yeah nvm |
| 03:09:02 | <EvanR> | I like how MonadThrow has a law xD |
| 03:09:21 | <dsal> | I feel like it should have throw'M |
| 03:09:41 | <boxscape> | somewhat confusing that the haskell-foundation github account doesn't belong to the haskell foundation |
| 03:10:24 | <hololeap> | boxscape: I think they meant it as a pun, along the same lines as basement. it's something "underneath" your code |
| 03:10:42 | <boxscape> | yeah, they also came along long before the haskell foundation existed |
| 03:11:24 | <EvanR> | I was wondering if they had anything to do with haskell foundation |
| 03:11:50 | <EvanR> | kind of like w3schools xD |
| 03:12:38 | <EvanR> | s/confusing/potential trademark infringement/ |
| 03:15:38 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 03:16:33 | <hololeap> | I like this idea, but where should I put it? http://sprunge.us/xglu0G?haskell |
| 03:17:39 | → | xkuru joins (~xkuru@user/xkuru) |
| 03:18:59 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 03:20:15 | <dsal> | Put in a module called Old.Python.Bugs |
| 03:21:06 | <hololeap> | I don't understand the sass |
| 03:21:44 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 03:22:50 | <EvanR> | shouldn't your IsString instance be on StringException |
| 03:23:01 | <dsal> | SomeException itself shouldn't be thrown. This effectively gets rid of all of the exception hierarchy in a way that'll be very confusing. |
| 03:23:03 | <hololeap> | yes, that too |
| 03:23:20 | <dsal> | Python used to let you do that, but even in python2, they tell you not to: |
| 03:23:22 | <dsal> | TypeError: exceptions must be old-style classes or derived from BaseException, not str |
| 03:23:56 | <dsal> | Because using a string instead of a type makes all the things harder. |
| 03:23:57 | <hololeap> | dsal: I haven't had a need for the exception heirarchy beyond SomeException. how will this make things confusing? |
| 03:24:24 | <dsal> | Catching SomeException is almost always a very bad idea. |
| 03:25:06 | <EvanR> | if I was using StringException... I'd throw or catch StringException |
| 03:25:16 | <hololeap> | I tried using ExceptT ExceptionA (ExceptT ExceptionB (..)) but this was annoying |
| 03:25:21 | <EvanR> | if you put IsString on both, now throwing is ambiguous |
| 03:25:35 | <hololeap> | it seems better just to catch SomeException and know what exceptions you're looking for |
| 03:25:44 | <EvanR> | that sounds so wrong |
| 03:25:55 | <dsal> | The documentation describes this better than I can here: https://hackage.haskell.org/package/base-4.16.0.0/docs/Control-Exception.html#g:4 |
| 03:26:16 | <EvanR> | catches can let you catch multiple types of exceptions |
| 03:26:33 | <EvanR> | and if you don't know what you're trying to catch you're SOL anyway |
| 03:26:59 | → | gehmehgeh_ joins (~user@user/gehmehgeh) |
| 03:27:06 | <hololeap> | that's always the case, though. there's no way you're going to account for every single IO exception |
| 03:27:11 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds) |
| 03:27:16 | <EvanR> | traditionally I just hate having my exception handling code running when the exception is god knows what unknown thing I never heard of |
| 03:27:42 | × | gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 276 seconds) |
| 03:27:47 | <EvanR> | no, no one should be accounting for every IO exception |
| 03:27:57 | <EvanR> | you can use finally or a bracket to clean up and rethrow |
| 03:28:01 | <boxscape> | If I have `data Foo a b = Foo a b`, I can write `Foo Int String` and `Foo' Int String` at the type level to differentiate them. But Int `Foo` String will always refer to the type constructor. Is there a way to use the data constructor as infix on the type level? |
| 03:28:23 | <hololeap> | how is that any different from using SomeException? |
| 03:28:42 | <EvanR> | I assumed you were trying to catch an exception (and not crash) |
| 03:28:45 | <dsal> | This is a thing I noticed in java: Almost every time someone did a `try` they just wanted `finally` (or had to do dumb wrapper stuff for an API). `catch` leads to bugs. |
| 03:29:05 | <hololeap> | EvanR: you can catch exceptions from SomeException if you tell it what you're looking for |
| 03:29:26 | <boxscape> | (pretty sure the answer is no but I want to make sure) |
| 03:29:26 | <hololeap> | so how is this any different from IO? |
| 03:29:26 | <dsal> | What are you doing when you catch the exception? |
| 03:29:40 | <EvanR> | SomeException is always used behind the scenes using dynamic types and the Typable instance for.. what you're looking for. No need to mess with SomeException directly |
| 03:29:42 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 03:30:14 | <EvanR> | if it's a finally type pattern I'd just use finally |
| 03:30:23 | <hololeap> | ok, well maybe I should bypass SomeException then |
| 03:30:40 | <hololeap> | I thought it was just a convenient wrapper |
| 03:30:49 | <dsal> | bracket is almost always what you need. |
| 03:31:04 | <dsal> | If you need to continue after exceptions, you need to enumerate the specific conditions you want to continue. |
| 03:31:05 | <EvanR> | well unless you're trying to catch a specific exception xD |
| 03:31:12 | <dsal> | SomeException includes thread killed, control-c, etc... |
| 03:31:22 | <dsal> | Then you end up with programs that you can't stop. |
| 03:32:29 | <EvanR> | bracket also deals with async exception masking on your behalf so you don't mess that up |
| 03:32:38 | <EvanR> | you don't want an async exception during the exception handler |
| 03:32:48 | <hololeap> | EvanR: can't you do the same thing with SomeException as they are doing here with catching MismatchedParenthesis? https://hackage.haskell.org/package/base-4.16.0.0/docs/Control-Exception.html#t:Exception |
| 03:33:34 | <EvanR> | they throw and catch specific exceptions there |
| 03:33:38 | <dsal> | Yeah, you can catch specific exceptions. I catch application specific exceptions. |
| 03:33:53 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:1d11:e285:317e:6a2a) (Quit: Textual IRC Client: www.textualapp.com) |
| 03:34:22 | <EvanR> | and in the example, not crash but continue, another difference |
| 03:35:22 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) |
| 03:35:36 | <hololeap> | my point is that there is an assumption that you are catching a subset of exceptions that could be thrown, whether you are talking about IOException or more broadly SomeException |
| 03:36:10 | <hololeap> | so what is the problem with using SomeException directly? |
| 03:36:33 | <dsal> | What are you doing to do when you catch the thread killed or control-c or whatever? |
| 03:36:34 | <EvanR> | What are you trying to do again? Catch a specific exception and continue? |
| 03:36:44 | <EvanR> | and not catch others |
| 03:36:53 | <hololeap> | dsal: nothing if I don't have a catch for it |
| 03:37:02 | <dsal> | SomeException *does* catch it. |
| 03:37:29 | <EvanR> | catching SomeException and continuing is very bad |
| 03:37:32 | <dsal> | That is, catching SomeException does catch it. |
| 03:37:44 | <EvanR> | it nullifies all exceptions |
| 03:37:53 | <EvanR> | you're program is unkillable xD |
| 03:38:11 | <dsal> | It's the secret to making your program live forever. |
| 03:38:16 | <hololeap> | I would re-throw it if nothing in the `case` block matched |
| 03:38:17 | × | td_ quits (~td@94.134.91.22) (Ping timeout: 256 seconds) |
| 03:38:21 | <EvanR> | I haven't see a use case for doing it in any language |
| 03:38:42 | <dsal> | Wait, are you reinventing catch / catches? |
| 03:39:04 | <EvanR> | catches and bracket etc will handle async masking for you, at least there's that benefit |
| 03:39:30 | <hololeap> | the original point was having an IsString instance for SomeException using StringException as the intermediary |
| 03:39:41 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 03:39:55 | <EvanR> | I like the idea of having IsString for StringException |
| 03:40:00 | <EvanR> | then you can even catch it |
| 03:40:04 | → | td_ joins (~td@muedsl-82-207-238-002.citykom.de) |
| 03:40:08 | <dsal> | Having a StringException as a different thing isn't terrible. It just means you have an application-specific exception you can't distinguish sub-values of quite as much. |
| 03:40:16 | <EvanR> | (without touching SomeException radioactive waste xD) |
| 03:40:28 | <hololeap> | you couldn't catch it if you packed it in SomeException? |
| 03:40:29 | <EvanR> | StringException is from UnliftIO |
| 03:40:42 | × | gehmehgeh_ quits (~user@user/gehmehgeh) (Ping timeout: 276 seconds) |
| 03:40:44 | <EvanR> | it's not as easily caught and you are messing with fire |
| 03:40:55 | <hololeap> | that's a fair point |
| 03:40:56 | <dsal> | You just want to basically forget SomeException exists. :) |
| 03:40:58 | <EvanR> | but do it xD |
| 03:41:20 | <dsal> | stringException :: HasCallStack => String -> StringException |
| 03:42:16 | <EvanR> | I'm always scared of accidentally catching and ignoring stuff like undefined and error |
| 03:42:32 | <EvanR> | which I don't even know how to catch and don't want to know |
| 03:42:44 | <hololeap> | you are both helping figure this out, so thanks! |
| 03:42:46 | <dsal> | The closest I get to that is running code in an async and then reporting what happened. |
| 03:43:02 | <dsal> | hololeap: Yeah, sorry if it sounds harsh. Just avoid SomeException. It's tempting, but painful. :) |
| 03:43:11 | <hololeap> | no, I appreciate the feedback |
| 03:43:34 | <dsal> | async can blow up with any type of exception and then you can just ask how it was. |
| 03:44:26 | <dsal> | I wrote a thing that did this and a bunch of tests to make sure various types of runtime and IO exceptions and stuff were handled nicely. The neat thing is that the supervisor (I used to write a lot of erlang) doesn't actually catch any exceptions. |
| 03:44:35 | <EvanR> | actually you can assume async don't throw, and use normal exception handling around the await call xD |
| 03:44:58 | <EvanR> | even then you don't have to deal with SomeException |
| 03:45:05 | <hololeap> | what monad should be used to catch in? always IO? I find it painful to string together ExceptTs if I need to compose functions that throw different exceptions |
| 03:45:21 | <EvanR> | I never thought of trying to catch in anything but IO |
| 03:45:48 | <EvanR> | usually failing monads can be handled at the runcall |
| 03:45:56 | <hololeap> | I liked the idea of making explicit in the type what kind of exceptions it could throw |
| 03:46:11 | <EvanR> | oh god, checked exceptions xD |
| 03:46:27 | <EvanR> | java tried that no one liked it |
| 03:47:36 | <EvanR> | I feel like the original idea of exceptions was to deal with the fact that usually you don't want to know/deal with all the ways things could fail rarely |
| 03:47:52 | <EvanR> | it was too annoying |
| 03:48:22 | <EvanR> | but knowing that something MAY throw SOMETHING being in the type is great |
| 03:48:26 | <dsal> | I'd think it was a good idea if I never programmed in Java. |
| 03:48:28 | <hololeap> | it could be helpful because you can just visually enumerate what you need to catch by reading the file |
| 03:48:41 | <EvanR> | wait... that still doesn't sound right |
| 03:48:45 | <dsal> | In java, it was like, "Can throw X, Y, Z, or like, anything else." |
| 03:48:53 | <hololeap> | not every exception, obviously |
| 03:49:02 | <EvanR> | ok yeah |
| 03:49:10 | <Adeon> | I've been trying zig for past few days |
| 03:49:12 | <Adeon> | it does not have exceptions |
| 03:49:16 | <Adeon> | but it does have a nice error system |
| 03:49:18 | <Adeon> | "error sets" |
| 03:49:25 | <Adeon> | has a similar vibe to checked exceptions |
| 03:49:27 | <EvanR> | it would be theoretically nice to see all the possible things something could throw |
| 03:49:48 | <EvanR> | but for most of the IO section of the stdlib, that's like ... a lot |
| 03:49:48 | <Adeon> | but it tries to make it very frictionless to combine error types etc. so it's very much out of the way |
| 03:50:07 | <hololeap> | if it doesn't mention IO except as a black box, that would be helpful |
| 03:50:45 | <hololeap> | maybe throw in other large classes of exceptions, like pure exceptions and STM exceptions |
| 03:50:59 | <EvanR> | hold on, so we're really talking about application specific "exceptions" defined for use in pure code? |
| 03:51:07 | <hololeap> | correct |
| 03:51:10 | <EvanR> | like Either on steroids |
| 03:51:42 | <EvanR> | now we can get even more thereoretical. Have you heard of extensible variants? xD |
| 03:51:59 | <EvanR> | might achieve what Adeon was talking about, if it existed |
| 03:52:02 | <hololeap> | I'm somewhat familiar with the concept. extensible sum types, right? |
| 03:52:19 | <Adeon> | I think you can do what zig does in haskell but it's probably not nice |
| 03:52:27 | <EvanR> | yeah instead of SomeException or defining a lot of exception types, you throw extensible variants |
| 03:53:07 | <hololeap> | isn't polysemy supposed to do this? I haven't looked at it yet |
| 03:53:53 | <EvanR> | that looks like a free monads lib |
| 03:54:08 | × | boxscape_ quits (~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 03:55:18 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:55:18 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:55:18 | finn_elija | is now known as FinnElija |
| 03:56:04 | <hololeap> | I read this: https://haskell-explained.gitlab.io/blog/posts/2019/07/28/polysemy-is-cool-part-1/ |
| 03:57:07 | <dsal> | I've still never found that to improve anything. |
| 03:57:52 | <hololeap> | dsal: what do you do when it comes to exceptions? |
| 03:58:08 | <EvanR> | "let it crash" philosophy xD |
| 03:58:15 | <dsal> | I've never even considered polysemy related to exceptions. :) |
| 03:58:34 | <EvanR> | but this doesn't apply to pure code that uses exceptions for fun and profit, which seems beyond me |
| 03:58:35 | <dsal> | "let it crash" is pretty good, though. I had pretty good uptimes in all my erlang code. |
| 03:58:40 | <Adeon> | I pretend exceptions don't exist except to make my code work correctly if someone `throwTo` into my code |
| 03:58:43 | <dsal> | But erlang is crash-oriented |
| 03:58:43 | <Adeon> | I think that's "let it crash" |
| 03:58:59 | <dsal> | Yeah, that's basically right. |
| 03:59:05 | <hololeap> | I thought that since Either was an "effect" of sorts, you could stack them a little bit less painfuly |
| 03:59:18 | <EvanR> | async haskell library gives you similar to erlang stuff, but that's IO oriented |
| 03:59:54 | <dsal> | Yeah, you can sneak an async exception across an Asycn boundary. |
| 04:00:10 | <Axman6> | I'm not sure I agree Async gives you that. cloud haskell aimed to give you that, but async is quite a different paraidgm from Erlang |
| 04:00:21 | <hololeap> | and compose things so that you could combine (Either e a) and (Either f b) into (Either' '[e,f] (a,b)), at least that's what I hoped :) |
| 04:00:29 | → | whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com) |
| 04:00:49 | <EvanR> | I'm sure were talking about two different things now with cloud haskell |
| 04:01:16 | <Axman6> | I probably need to read more of the discussion |
| 04:01:25 | <EvanR> | this is the exceptions discussion xD |
| 04:01:30 | <dsal> | Axman6: I used async that way in a limited fashion. Run an effect with this input and give me a constrained result. If you crash then I record that. If *I* crash dealing with you, then I record that as well. |
| 04:01:30 | <EvanR> | and how to or not to deal with them |
| 04:07:18 | × | azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 04:07:37 | → | on^ joins (~on@68.101.58.90) |
| 04:07:46 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 04:11:58 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 04:13:38 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 04:14:22 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:23:53 | → | gehmehgeh_ joins (~user@user/gehmehgeh) |
| 04:25:33 | × | gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 276 seconds) |
| 04:29:25 | × | yauhsien quits (~yauhsien@2402:7500:5e7:7cb:2978:bff0:cda7:8559) (Remote host closed the connection) |
| 04:30:22 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 04:31:23 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 04:33:00 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 04:33:33 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 04:35:37 | × | renzhi quits (~xp@2607:fa49:6500:b100::5cef) (Ping timeout: 268 seconds) |
| 04:37:13 | → | yauhsien joins (~yauhsien@2402:7500:5e7:7cb:b0e6:1646:3027:d258) |
| 04:40:01 | × | n8ess163 quits (~b@pool-72-80-171-162.nycmny.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 04:40:40 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 04:45:44 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) (Quit: gone to sleep. ZZZzzz…) |
| 04:48:24 | <EvanR> | wait is this an ultimate irony |
| 04:48:27 | <EvanR> | No instance for (PrintfArg Foreign.C.Types.CInt) |
| 04:48:35 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 04:48:48 | <EvanR> | arising from printf "whatever = %d\n" myCInt |
| 04:54:09 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 04:55:30 | <monochrom> | Oh haha I see. |
| 04:55:45 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 265 seconds) |
| 04:55:46 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 04:56:30 | → | Bitters joins (~Bitters@37.19.211.58) |
| 04:57:38 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 04:57:54 | <Bitters> | not too alive for 705 |
| 04:58:24 | ← | Bitters parts (~Bitters@37.19.211.58) () |
| 05:02:31 | × | yauhsien quits (~yauhsien@2402:7500:5e7:7cb:b0e6:1646:3027:d258) (Ping timeout: 252 seconds) |
| 05:04:52 | × | lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection) |
| 05:05:04 | <Axman6> | omg, where did lambdabot go D: |
| 05:05:26 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 05:05:32 | × | vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (Quit: ...) |
| 05:06:17 | → | vjoki joins (~vjoki@2a00:d880:3:1::fea1:9ae) |
| 05:06:44 | → | lambdabot joins (~lambdabot@silicon.int-e.eu) |
| 05:06:44 | × | lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host) |
| 05:06:44 | → | lambdabot joins (~lambdabot@haskell/bot/lambdabot) |
| 05:08:19 | × | on^ quits (~on@68.101.58.90) (Remote host closed the connection) |
| 05:10:07 | <jackdk> | @botsnack welcome back |
| 05:10:07 | <lambdabot> | :) |
| 05:13:08 | × | dispater quits (~dispater@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in) |
| 05:13:14 | → | dlew^ joins (~dlew@68.101.58.90) |
| 05:13:26 | → | dispater joins (~dispater@user/brprice) |
| 05:13:46 | → | yauhsien joins (~yauhsien@2402:7500:5e7:7cb:e5c8:bb31:7afd:efa5) |
| 05:14:50 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 05:15:11 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 05:17:55 | × | dispater quits (~dispater@user/brprice) (Ping timeout: 252 seconds) |
| 05:19:59 | → | pyook joins (~puke@user/puke) |
| 05:19:59 | puke | is now known as Guest8593 |
| 05:19:59 | × | Guest8593 quits (~puke@user/puke) (Killed (strontium.libera.chat (Nickname regained by services))) |
| 05:19:59 | pyook | is now known as puke |
| 05:21:25 | × | lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Ping timeout: 256 seconds) |
| 05:21:47 | → | Jing_ joins (~hedgehog@2604:a840:3::1061) |
| 05:22:41 | × | Jing quits (~hedgehog@115.207.46.97) (Ping timeout: 252 seconds) |
| 05:22:45 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds) |
| 05:22:47 | → | lambdabot joins (~lambdabot@silicon.int-e.eu) |
| 05:22:47 | × | lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host) |
| 05:22:47 | → | lambdabot joins (~lambdabot@haskell/bot/lambdabot) |
| 05:23:52 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 05:24:03 | → | dispater joins (~dispater@user/brprice) |
| 05:25:14 | → | curiousgay joins (~curiousga@77-120-141-90.kha.volia.net) |
| 05:28:13 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
| 05:31:06 | → | mario joins (~mario@31.147.205.13) |
| 05:31:31 | × | jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 265 seconds) |
| 05:32:06 | × | mario quits (~mario@31.147.205.13) (Remote host closed the connection) |
| 05:32:21 | × | orcus quits (~orcus@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in) |
| 05:33:08 | × | dispater quits (~dispater@user/brprice) (Ping timeout: 252 seconds) |
| 05:33:10 | → | jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 05:33:57 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:34:58 | × | TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8) |
| 05:35:42 | → | dispater joins (~dispater@user/brprice) |
| 05:36:02 | → | orcus joins (~orcus@user/brprice) |
| 05:40:11 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 05:42:59 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 05:45:27 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 05:47:33 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Ping timeout: 256 seconds) |
| 05:49:51 | gehmehgeh_ | is now known as gehmehgeh |
| 05:54:41 | <EvanR> | oh wow |
| 05:55:24 | <EvanR> | I got screwed on AoC by getting foldr and foldl backwards, it doesn't make a difference on the first part, but does on the second part and I was very confused |
| 05:56:16 | <dsal> | Yeah, that does sound confusing. |
| 05:56:41 | <dsal> | I like foldr in general, but I don't think about order much. |
| 05:58:39 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 05:58:49 | <EvanR> | years of people in this channel challenging every possible interpretation of foldl and foldr xD |
| 06:00:20 | <EvanR> | in the end I always just bring up the @src for them |
| 06:05:41 | × | yauhsien quits (~yauhsien@2402:7500:5e7:7cb:e5c8:bb31:7afd:efa5) (Remote host closed the connection) |
| 06:06:47 | <int-e> | > foldr (flip (.) . flip f) id [b,c,d] a |
| 06:06:48 | <lambdabot> | f (f (f a b) c) d |
| 06:08:16 | <EvanR> | that's the one I thought was right |
| 06:08:53 | <int-e> | > foldl f a [b,c,d] |
| 06:08:55 | <lambdabot> | f (f (f a b) c) d |
| 06:08:58 | <EvanR> | lol |
| 06:09:10 | <EvanR> | also that one |
| 06:09:29 | <c_wraith> | foldl is specifically for working with an accumulator you update with each element of the list |
| 06:09:59 | <int-e> | explicit recursion exists btw ;-) |
| 06:10:14 | <c_wraith> | foldr is for... anything else that traverses the list exactly once |
| 06:10:36 | <iqubic> | If an AoC problem is asking me to process a list of commands in order, I usually parse the data into some data structure and then foldl' of them. |
| 06:11:20 | <EvanR> | yeah i use foldr a lot for haskelly stuff |
| 06:11:38 | <EvanR> | or accumulating but i guess it's usually commutative |
| 06:11:52 | <c_wraith> | I wouldn't use foldr for accumulating. you can blow the stack |
| 06:11:55 | <dsal> | I like fold when I can use it or foldMap. foldr for more general, and foldl when I'm doing stupid AoC stuff that cares about order. |
| 06:12:16 | × | dispater quits (~dispater@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in) |
| 06:12:20 | <iqubic> | I used foldMap for part 1 of today's problem. |
| 06:12:25 | <c_wraith> | like... foldr (+) is *really* bad for stack use |
| 06:12:30 | <EvanR> | no not + |
| 06:12:34 | → | dispater joins (~dispater@user/brprice) |
| 06:12:46 | <dsal> | None of these problems are big enough for it to make a big difference. |
| 06:13:53 | <dsal> | iqubic: It'd be fairly straightforward to do it with `fold`. Or just like, in the parser. |
| 06:14:40 | <EvanR> | I will do 90 laps around the yard and return to internalizing the meaning of folds and their seemingly arbitrary names xD |
| 06:15:52 | <c_wraith> | the names are arbitrary, but the function difference is pretty huge. |
| 06:15:57 | <EvanR> | yep |
| 06:17:30 | → | chomwitt joins (~chomwitt@2a02:587:dc0d:6d00:12c3:7bff:fe6d:d374) |
| 06:18:03 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds) |
| 06:18:11 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 06:18:24 | <int-e> | > foldr f a [b,c,d] |
| 06:18:26 | <lambdabot> | f b (f c (f d a)) |
| 06:18:43 | <iqubic> | Is foldl' (+) bad for memory usage? |
| 06:18:53 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 06:18:57 | <opqdonut> | iqubic: no it's great |
| 06:19:07 | <dsal> | Just use `sum` |
| 06:19:13 | <dsal> | No need to reinvent `sum` |
| 06:19:19 | <opqdonut> | yeah that's better for that exact invocation |
| 06:20:00 | <iqubic> | sum = getSum . foldMap Sum |
| 06:20:12 | <opqdonut> | however for tracking complex state, explicit recursion with bang patterns is both nicer to write and better performing than foldl/foldl' on tuples |
| 06:20:25 | <iqubic> | I didn't know that. |
| 06:20:34 | <iqubic> | But for Advent Of Code, I don't really care. |
| 06:20:38 | <opqdonut> | yeah |
| 06:21:38 | <int-e> | iqubic: ah but that's misleading, since it's a class member of Foldable (and even if it were not there'd surely be rewrite rules for it) |
| 06:22:49 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 06:24:38 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 06:24:55 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 06:24:59 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 06:25:15 | × | orcus quits (~orcus@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in) |
| 06:25:15 | × | dispater quits (~dispater@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in) |
| 06:25:35 | → | orcus joins (~orcus@user/brprice) |
| 06:25:53 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 06:26:03 | → | dispater joins (~dispater@user/brprice) |
| 06:27:10 | <dsal> | iqubic: Fold it in the parser! :) https://www.irccloud.com/pastebin/L4wAGlf6/fold.hs |
| 06:27:19 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 06:27:37 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 06:27:56 | <dsal> | iqubic: Also, that's an older implementation. The latest base does it differently. |
| 06:28:03 | <iqubic> | Really? |
| 06:29:16 | <dsal> | Data.List has `sum = foldl' (+) 0` but Data.Foldable has `sum = getSum #. foldMap' Sum` |
| 06:29:39 | <iqubic> | Right. |
| 06:29:47 | <iqubic> | But #. is just ., right |
| 06:29:55 | <dsal> | All the people who told you never to use `sum` made you write a bunch of code for no good reason. |
| 06:30:03 | <dsal> | foldMap' is the more significant change. |
| 06:30:25 | <dsal> | (#.) _f = coerce |
| 06:30:33 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Ping timeout: 256 seconds) |
| 06:31:59 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 06:32:18 | <opqdonut> | oh wow that's an absolutely genius definition |
| 06:33:58 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 06:34:16 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 06:34:18 | → | mniip_ joins (mniip@libera/staff/mniip) |
| 06:34:45 | <dsal> | It's pretty neat. Kind of a weird thing where you write code that doesn't actually run but leave it there to be read. heh |
| 06:35:24 | × | mniip quits (mniip@libera/staff/mniip) (Quit: This page is intentionally left blank.) |
| 06:35:43 | mniip_ | is now known as mniip |
| 06:36:51 | <int-e> | crucially, (#.) has a type signature; the `getSum` still matters for type inference |
| 06:37:02 | <opqdonut> | yeah |
| 06:37:58 | × | ubert quits (~Thunderbi@p200300ecdf0ba290e6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 06:37:58 | ub | is now known as ubert |
| 06:38:01 | → | ubert1 joins (~Thunderbi@p200300ecdf0ba290e6b318fffe838f33.dip0.t-ipconnect.de) |
| 06:40:47 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 06:42:51 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 06:43:09 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 06:44:57 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:45:09 | <EvanR> | in retrospect, I'm glad it's foldl so I can use foldl for something xD |
| 06:45:28 | <EvanR> | I know it's bad laziness, but doesn't matter in this case |
| 06:47:06 | <iqubic> | foldl' is better than foldl. Period. |
| 06:47:33 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
| 06:47:39 | <opqdonut> | I've been kinda assuming that for something like `foldl (\(s,n) x -> (s+x,n+1)) (0,0) ...` strictness analysis will save my bacon |
| 06:47:43 | <opqdonut> | but I haven't actually verified that |
| 06:47:56 | <opqdonut> | (might still write foldl', but it wouldn't matter really) |
| 06:48:06 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 06:48:19 | <opqdonut> | maybe I'll check the core for fun |
| 06:48:40 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 06:50:43 | <opqdonut> | yeah, -ddump-simpl and I see explicit recursion over an unboxed tuple |
| 06:51:34 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 06:51:37 | <opqdonut> | no, explicit recursion with multiple arguments, just the return value is an unboxed tuple |
| 06:52:34 | <EvanR> | foldl' makes no sense if you're implementing list reverse xD |
| 06:53:15 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 06:53:21 | <EvanR> | so yeah my solution contains foldl no prime and scary terrifying lazy readFile, it's great |
| 06:53:40 | <EvanR> | how haskell should be |
| 06:53:45 | <opqdonut> | :) |
| 06:54:19 | <EvanR> | -ddump-simpl? |
| 06:54:22 | <EvanR> | let me see |
| 06:54:29 | <opqdonut> | yeah |
| 06:55:04 | <opqdonut> | you need to squint a bit and ignore some verbosity, but otherwise GHC Core is pretty easy to read |
| 06:55:20 | <iqubic> | EvanR: I see you like to live dangerously with foldl no prime. |
| 06:55:37 | <opqdonut> | btw I had to specify -O to get the recursion, without it foldl wasn't even getting inlined |
| 06:55:53 | <EvanR> | was about to say, it just calls foldl xD |
| 06:57:43 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 06:58:02 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 06:58:09 | × | cheater quits (~Username@user/cheater) (Quit: (BitchX) Terminated.) |
| 07:01:13 | <EvanR> | with -O maybe I technically read it, but I have no idea what's going on xD |
| 07:02:27 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 07:03:18 | <EvanR> | oh nice, I see it doing a recursion over my tuple |
| 07:04:03 | <EvanR> | foldl ftw |
| 07:05:40 | → | bollu joins (uid233390@id-233390.helmsley.irccloud.com) |
| 07:06:30 | → | michalz joins (~michalz@185.246.204.33) |
| 07:06:46 | <EvanR> | the results of the loop body are returned in an unboxed pair or unboxed triple, cool I guess |
| 07:07:05 | <EvanR> | does that still require allocation |
| 07:07:34 | <c_wraith> | not for the tuple |
| 07:07:42 | <c_wraith> | but what you put inside it might |
| 07:10:04 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 07:10:22 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 07:12:00 | <dsal> | I used foldl because I didn't want to import anything. |
| 07:12:12 | × | acidsys quits (~LSD@2.lsd.systems) (Excess Flood) |
| 07:12:21 | → | neurocyte0132889 joins (~neurocyte@45.128.181.202) |
| 07:12:21 | × | neurocyte0132889 quits (~neurocyte@45.128.181.202) (Changing host) |
| 07:12:21 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 07:12:47 | → | acidsys joins (~LSD@2.lsd.systems) |
| 07:14:15 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 07:16:16 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 07:19:21 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 07:19:35 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 07:19:52 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 07:24:23 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
| 07:26:57 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 07:27:12 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 07:27:32 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:ebd1:d304:8195:da29) |
| 07:31:05 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 07:31:49 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 07:32:25 | → | chele joins (~chele@user/chele) |
| 07:33:35 | → | siers joins (~ij@user/ij) |
| 07:35:15 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 07:36:55 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 07:37:13 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 07:38:09 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Read error: Connection reset by peer) |
| 07:39:56 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 07:39:58 | → | deadmarshal joins (~deadmarsh@104.223.98.144) |
| 07:40:11 | × | xff0x quits (~xff0x@2001:1a81:5351:7200:ec14:1667:941b:a8bf) (Ping timeout: 252 seconds) |
| 07:40:13 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 07:40:42 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 07:40:59 | → | xff0x joins (~xff0x@2001:1a81:5351:7200:6aa9:cc6d:b99a:ba9f) |
| 07:43:14 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 07:43:32 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 07:45:08 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds) |
| 07:45:29 | × | deadmarshal quits (~deadmarsh@104.223.98.144) (Read error: Connection reset by peer) |
| 07:49:19 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds) |
| 07:50:11 | → | Farzad joins (~FarzadBek@37.98.111.153) |
| 07:56:39 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 07:56:57 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 08:00:37 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 08:00:55 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 08:01:39 | → | jamestmartin joins (~james@jtmar.me) |
| 08:02:51 | → | max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
| 08:03:27 | → | jstolarek joins (~jstolarek@137.220.120.162) |
| 08:04:38 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 08:07:52 | → | deadmarshal_ joins (~deadmarsh@68.235.38.163) |
| 08:08:33 | → | cosimone joins (~user@93-44-186-55.ip98.fastwebnet.it) |
| 08:09:09 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Ping timeout: 252 seconds) |
| 08:11:00 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 08:12:19 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 08:13:34 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 08:15:47 | → | vysn joins (~vysn@user/vysn) |
| 08:16:47 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 08:20:27 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 08:20:45 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 08:21:15 | × | neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 252 seconds) |
| 08:21:37 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 08:24:25 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 08:24:42 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 08:26:22 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 08:26:39 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 08:28:21 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 08:32:55 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 08:33:13 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 08:33:35 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 08:34:02 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 08:34:50 | × | deadmarshal_ quits (~deadmarsh@68.235.38.163) (Read error: Connection reset by peer) |
| 08:38:07 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds) |
| 08:41:11 | × | curiousgay quits (~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving) |
| 08:43:41 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 08:43:59 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 08:45:34 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:46:45 | <mikko> | is there a better way to do what the readInstruction function does here? capitalizing strings just to appease the default Read feels icky https://github.com/Andriamanitra/adventofcode2021/blob/main/day02/solution.hs (advent of code day 2 spoilers) |
| 08:48:09 | → | neurocyte0132889 joins (~neurocyte@46.243.81.73) |
| 08:48:09 | × | neurocyte0132889 quits (~neurocyte@46.243.81.73) (Changing host) |
| 08:48:09 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 08:48:14 | → | dschrempf joins (~dominik@mobiledyn-62-240-134-39.mrsn.at) |
| 08:49:55 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 08:50:13 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 08:50:27 | <mikko> | by better i mean something that doesn't require me explicitly write "forward" "up" "down" again when they're already known because of the data definition |
| 08:51:21 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 08:51:28 | <dminuoso> | 15:51:04 merijn | boxscape: Yes, but you can never do that for an individual irrefutable pattern |
| 08:52:33 | <dminuoso> | Many years ago there was an issue suggesting being able to selectively turn off warnings for a given region. Didn't take long until this was bikeshedded into "If at all, let's bake in some extremely generic diagnostics machinery into GHC rather than just wire it in for a select few diagnostics." |
| 08:53:07 | <dminuoso> | Maybe that issue should be relooked at, realistically there's just a handful of warnings where this is even applicable. |
| 08:53:57 | <dminuoso> | merijn: Btw, regarding your warning, was that triggered by a singleton data constructor match or a newtype match? |
| 08:55:24 | <boxscape> | dminuoso: erm, shouldn't it not fire on either of those, since those wouldn't be incomplete patterns? |
| 09:00:09 | × | anotherbruce[m] quits (~anotherbr@2001:470:69fc:105::1:2548) (Quit: You have been kicked for being idle) |
| 09:00:24 | <merijn> | dminuoso: Which warning? |
| 09:00:37 | → | anotherbruce[m] joins (~anotherbr@2001:470:69fc:105::1:2548) |
| 09:01:30 | <merijn> | oh, yesterday. Neither |
| 09:01:36 | <merijn> | It was an irrefutable match on Just |
| 09:02:08 | × | xff0x quits (~xff0x@2001:1a81:5351:7200:6aa9:cc6d:b99a:ba9f) (Ping timeout: 252 seconds) |
| 09:03:11 | → | xff0x joins (~xff0x@2001:1a81:5351:7200:5e3e:87f2:29ae:8612) |
| 09:05:13 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 09:05:30 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 09:06:14 | → | alzgh joins (~alzgh@user/alzgh) |
| 09:06:50 | <dminuoso> | I wonder, is Lower Your Guards already fully implemented in GHC? |
| 09:08:17 | × | Jing_ quits (~hedgehog@2604:a840:3::1061) (Remote host closed the connection) |
| 09:08:24 | <eyJhb> | Just tried installing haskell-mode for Emacs, and now I can't even type without much delay. I have disabled eldoc, lsp-mode, company-mode but still very sluggish (profiler - https://i.imgur.com/I0ib6Wu.png). Anyone else have had this issue? |
| 09:08:48 | <dminuoso> | Oh boy |
| 09:08:52 | → | Jing joins (~hedgehog@115.207.46.97) |
| 09:08:56 | <dminuoso> | I think it is mostly implemented |
| 09:09:00 | <dminuoso> | We even have this dark primitive |
| 09:09:02 | <dminuoso> | https://hackage.haskell.org/package/base-4.16.0.0/docs/GHC-Exts.html#v:considerAccessible |
| 09:09:08 | <dminuoso> | % import GHC.Exts |
| 09:09:08 | <yahb> | dminuoso: |
| 09:09:12 | <dminuoso> | % :t considerAccessible |
| 09:09:13 | <yahb> | dminuoso: ; <interactive>:1:1: error: Variable not in scope: considerAccessible |
| 09:09:13 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 09:11:27 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 09:11:45 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 09:12:35 | × | dispater quits (~dispater@user/brprice) (Ping timeout: 252 seconds) |
| 09:12:35 | × | orcus quits (~orcus@user/brprice) (Ping timeout: 252 seconds) |
| 09:12:49 | → | orcus joins (~orcus@user/brprice) |
| 09:13:18 | → | dispater joins (~dispater@user/brprice) |
| 09:15:33 | → | nschoe joins (~quassel@2a01:e0a:8e:a190:1242:6edc:4e6a:28bd) |
| 09:17:36 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 09:17:36 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 09:17:39 | allbery_b | is now known as geekosaur |
| 09:19:57 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 09:20:14 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 09:23:55 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 09:24:13 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 09:24:38 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 09:27:53 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 09:28:11 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 09:29:05 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 09:31:37 | <tomsmeding> | dminuoso: it's even just defined as True |
| 09:31:40 | <tomsmeding> | that's really dark |
| 09:34:07 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 09:34:25 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 09:38:04 | × | Farzad quits (~FarzadBek@37.98.111.153) (Remote host closed the connection) |
| 09:38:21 | → | Farzad joins (~FarzadBek@37.98.111.153) |
| 09:43:58 | → | cfricke joins (~cfricke@user/cfricke) |
| 09:47:43 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 09:48:00 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 09:48:40 | → | acidjnk_new joins (~acidjnk@p200300d0c7271e31dccc5136b6b31647.dip0.t-ipconnect.de) |
| 09:50:50 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
| 09:51:58 | → | Guest|44 joins (~Guest|44@cpc104774-belf12-2-0-cust670.2-1.cable.virginm.net) |
| 09:52:25 | × | Guest|44 quits (~Guest|44@cpc104774-belf12-2-0-cust670.2-1.cable.virginm.net) (Client Quit) |
| 09:53:19 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 09:53:43 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 09:55:30 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
| 09:58:17 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 09:58:25 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Remote host closed the connection) |
| 09:58:28 | × | bollu quits (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:02:26 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 10:02:45 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 10:03:07 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 10:04:40 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit) |
| 10:05:01 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 10:05:14 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 10:05:19 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 10:06:32 | Lord_of_Life_ | is now known as Lord_of_Life |
| 10:08:08 | <boxscape> | I just realized the hackage bot isn't here - has that been the case ever since the switch to libera? |
| 10:08:23 | <sm> | I think so |
| 10:08:25 | <merijn> | Even before then, I think |
| 10:08:31 | <boxscape> | hm okay |
| 10:09:49 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 10:11:16 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 10:13:14 | → | mmhat joins (~mmh@55d45251.access.ecotel.net) |
| 10:16:09 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 10:16:24 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 10:18:04 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 10:18:21 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 10:20:01 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 10:21:22 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 10:24:49 | → | vpan joins (~0@212.117.1.172) |
| 10:25:43 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
| 10:30:20 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 10:35:37 | → | kuribas joins (~user@ptr-25vy0i85jcl6zvp0ziu.18120a2.ip6.access.telenet.be) |
| 10:36:29 | × | jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 256 seconds) |
| 10:38:27 | → | jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 10:39:58 | × | ubert1 quits (~Thunderbi@p200300ecdf0ba290e6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 10:44:44 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 10:47:27 | → | jakzale joins (6291399afa@2604:bf00:561:2000::1e4) |
| 10:52:09 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 10:52:33 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 10:55:13 | × | whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:58:48 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:715b:47ca:3928:db8d) |
| 11:03:19 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:715b:47ca:3928:db8d) (Ping timeout: 252 seconds) |
| 11:07:12 | → | Codaraxis__ joins (~Codaraxis@user/codaraxis) |
| 11:08:24 | × | Codaraxis_ quits (~Codaraxis@user/codaraxis) (Read error: Connection reset by peer) |
| 11:12:08 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Quit: ZNC 1.8.2 - https://znc.in) |
| 11:13:16 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 11:16:43 | × | alzgh quits (~alzgh@user/alzgh) (Ping timeout: 256 seconds) |
| 11:18:04 | → | jgeerds joins (~jgeerds@55d45b75.access.ecotel.net) |
| 11:20:01 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 11:23:29 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 11:23:48 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 11:25:41 | × | xff0x quits (~xff0x@2001:1a81:5351:7200:5e3e:87f2:29ae:8612) (Ping timeout: 252 seconds) |
| 11:26:24 | → | xff0x joins (~xff0x@port-92-193-253-16.dynamic.as20676.net) |
| 11:29:11 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Ping timeout: 256 seconds) |
| 11:32:19 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 11:35:02 | → | jess joins (~jess@libera/staff/jess) |
| 11:38:17 | → | bliminse joins (~bliminse@host86-162-147-196.range86-162.btcentralplus.com) |
| 11:38:19 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 11:39:23 | × | max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection) |
| 11:39:42 | → | Codaraxis_ joins (~Codaraxis@user/codaraxis) |
| 11:39:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:40:32 | → | max22- joins (~maxime@2a01cb0883359800c40fd24ed5f88e1c.ipv6.abo.wanadoo.fr) |
| 11:41:19 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 11:42:04 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) |
| 11:42:34 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) (Client Quit) |
| 11:43:10 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 11:43:21 | × | Codaraxis__ quits (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
| 11:44:01 | × | mvk quits (~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 252 seconds) |
| 11:46:29 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) |
| 11:46:36 | → | boxscape_ joins (~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de) |
| 11:46:38 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 11:46:50 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) (Client Quit) |
| 11:47:41 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds) |
| 11:48:47 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds) |
| 11:49:14 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 11:50:54 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 12:02:33 | <merijn> | hmmm |
| 12:02:40 | <merijn> | Complicated PVP question :p |
| 12:02:50 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 12:02:57 | <Hecate> | merijn: that is not answered by the FAQ? :p |
| 12:03:08 | <merijn> | If you replace the type of a function with a type alias that refers to the same type, is that only a minor bump? |
| 12:03:15 | <Hecate> | I don't miss the hackage bot, personally |
| 12:03:21 | <Hecate> | merijn: yes |
| 12:03:26 | <Hecate> | types are transparent |
| 12:03:34 | <Hecate> | as such, they don't cause compile-time breakage |
| 12:03:48 | <Hecate> | and modify only half of the GHC errors :P |
| 12:04:05 | <Hecate> | that being said unless it's a very complex type I would advise against a type alias |
| 12:05:16 | <merijn> | Hecate: I need one to work across GHC with incompatible definitions >.> |
| 12:05:58 | <Hecate> | ah so you wish to unify those incompatible definitions by setting the content of the alias based on CPP? |
| 12:06:01 | <Hecate> | hmm |
| 12:06:03 | <Hecate> | I'd use a newtype tbh |
| 12:06:04 | <Hecate> | :( |
| 12:06:28 | <merijn> | Hecate: Well, I don't wish that. But that's what the compat library gives me :p |
| 12:06:44 | <merijn> | newtype doesn't work, because that won't typecheck |
| 12:07:31 | <Hecate> | merijn: can I see the code or is it proprietary? |
| 12:08:10 | <merijn> | Hecate: It's about typed TH splices, my code is TH and needs to be accepted by TH splices. But the types of those changed in 9.0, so a newtype can't ever solve/help :) |
| 12:08:27 | <Hecate> | ok |
| 12:08:32 | <Hecate> | yeah go with it |
| 12:08:39 | <Hecate> | PVP is about compilation breakage |
| 12:11:02 | <merijn> | We'll see what the CI says :) |
| 12:14:06 | × | fjmorazan quits (~quassel@user/fjmorazan) (Quit: fjmorazan) |
| 12:14:44 | → | fjmorazan joins (~quassel@user/fjmorazan) |
| 12:17:53 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 12:18:11 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 12:18:29 | × | jgeerds quits (~jgeerds@55d45b75.access.ecotel.net) (Ping timeout: 252 seconds) |
| 12:20:09 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 12:20:27 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 12:21:10 | → | unyu joins (~pyon@user/pyon) |
| 12:21:31 | → | pc__ joins (~pc@41.69.129.98) |
| 12:22:40 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 12:22:45 | × | pc__ quits (~pc@41.69.129.98) (K-Lined) |
| 12:26:34 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 12:26:52 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 12:27:33 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 12:31:03 | → | waleee joins (~waleee@h-82-196-111-63.NA.cust.bahnhof.se) |
| 12:37:11 | × | waleee quits (~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Ping timeout: 252 seconds) |
| 12:38:33 | <albet70> | why Eq remove /=? what's the benefit? |
| 12:39:04 | <Franciman> | why? |
| 12:39:27 | × | Megant quits (megant@user/megant) (Ping timeout: 256 seconds) |
| 12:39:46 | <geekosaur> | that question is why there are screaming fits thrown over it |
| 12:39:54 | → | burnsidesLlama joins (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
| 12:40:03 | <geekosaur> | about the only real benefit is that a 1-entry dictionary can easily be optimized away |
| 12:40:05 | → | lbseale joins (~ep1ctetus@user/ep1ctetus) |
| 12:40:23 | <arahael> | Of all the breakages I had moving to ghc 9.2.1, /= wasn't one of them - not one of the major ones anyway. |
| 12:41:05 | → | Megant joins (megant@user/megant) |
| 12:41:33 | <boxscape> | /= is still part of Eq in 9.2.1. |
| 12:42:01 | × | dlew^ quits (~dlew@68.101.58.90) (Remote host closed the connection) |
| 12:42:17 | <kritzefitz> | albet70: https://github.com/haskell/core-libraries-committee/issues/3 list quite understandable pros and cons. I doubt you will find any enlightenment here, that isn't already listed there. |
| 12:42:35 | <boxscape> | but all the breakage it will cause was already identified in the proposal (not that much, since usually people just Eq and otherwise use the default definition of (/=)) |
| 12:43:09 | <hpc> | they could at least have started with the numeric hierarchy, there's sooooooo much duplication there |
| 12:43:17 | <merijn> | boxscape: How about we benchmark and demonstrate it's actually worth it before breaking shit? |
| 12:43:37 | <merijn> | boxscape: Right now all we have is a hypothetical optimisation that we're not sure will actually benefit anyone |
| 12:43:41 | <boxscape> | merijn: I don't really have an opinion on the change |
| 12:43:54 | <merijn> | hpc: Please no >.> |
| 12:44:19 | <merijn> | I dislike the Num hierarchy, but any alternatives I've seen so far are all far less practical |
| 12:44:26 | <hpc> | merijn: at least then the proposal wouldn't be borderline cosmetic :P |
| 12:44:52 | <merijn> | I really hate the amount of superficial cosmetic/syntactical fiddling in recent years |
| 12:45:42 | <merijn> | Wish I could nuke it from orbit, together with all the recent record extensions (except for NoFieldSelectors, that one is Actually Good (TM)) |
| 12:46:10 | <hpc> | what we need is a proposal to make everyone unhappy |
| 12:46:18 | <hpc> | move (/=) out of Eq, and replace it with (!=) |
| 12:46:26 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 12:46:37 | <boxscape> | move (==) out of Eq, too, while we're at it |
| 12:46:46 | <hpc> | yes |
| 12:46:55 | <hpc> | all our equality comparisons are typesafe so it should really be (===) |
| 12:46:58 | <kuribas> | merijn: hey, I like recordWildCards, duplicateRecordFields, namedFieldPuns, etc... |
| 12:47:05 | <merijn> | Proposal to replace == with unsafePtrEquality |
| 12:47:14 | <merijn> | kuribas: I said *recent* record extensions |
| 12:47:24 | <kuribas> | merijn: which ones? |
| 12:47:27 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds) |
| 12:47:30 | <merijn> | kuribas: RecordWildCards and NamedFieldPuns are ancient |
| 12:47:35 | <kuribas> | ah :) |
| 12:47:38 | <hpc> | block arguments? |
| 12:47:47 | <merijn> | Do you even need DuplicateRecordFields with NoFieldSelectors? |
| 12:47:50 | <merijn> | hpc: Also bad |
| 12:48:08 | [_] | is now known as [itchyjunk] |
| 12:48:19 | <merijn> | hpc: "block arguments" is in the category like postfix qualified in imports |
| 12:48:22 | <boxscape> | % :set -XNoDuplicateRecordFields -XNoFieldSelectors |
| 12:48:23 | <yahb> | boxscape: Some flags have not been recognized: -XNoFieldSelectors |
| 12:48:31 | <boxscape> | :( |
| 12:48:32 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 12:48:36 | <merijn> | hpc: "Woulda been good if we had come up with it earlier and put it in initially" |
| 12:48:52 | <merijn> | hpc: But not worth the gratuitous backwards incompat for what they provide |
| 12:49:08 | <hpc> | still, it's on the way to becoming default enabled when we finally standardize haskell 2077 |
| 12:49:14 | <merijn> | I find reading code using block arguments really hard too |
| 12:49:30 | <merijn> | So, the more I see it, I'm actually more leaning towards "actually bad if we invented it earlier" |
| 12:49:51 | <merijn> | boxscape: NoFieldSelectors is only 9.0 or 9.2, I think? |
| 12:50:01 | <geekosaur> | 9.2 |
| 12:50:26 | <albet70> | "hpc :all our equality comparisons are typesafe so it should really be (===)", how about to introduce javascript's holy trinity? haha |
| 12:50:45 | <merijn> | albet70: See acme-php |
| 12:50:48 | <merijn> | @hackage acme-php |
| 12:50:48 | <lambdabot> | https://hackage.haskell.org/package/acme-php |
| 12:51:06 | <boxscape> | % GHC.SysTools.BaseDir.findTopDir Nothing |
| 12:51:06 | <yahb> | boxscape: "/srv/sandbox/root/usr/lib/ghc-9.0.1/lib" |
| 12:51:12 | <hpc> | i am accepting PRs on acme-php if you want to add it btw :D |
| 12:52:02 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Ping timeout: 252 seconds) |
| 12:52:08 | <albet70> | "🟢 merijn :albet70: See acme-php", do u like php better than js? :) |
| 12:52:13 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) |
| 12:53:36 | <albet70> | now I think python is more powerful, it can return anything I want everywhere |
| 12:54:26 | <boxscape> | so can haskell if you use Dynamic |
| 12:54:47 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 12:55:12 | → | __monty__ joins (~toonn@user/toonn) |
| 12:55:26 | <hpc> | maybe it's time for acme-haskell27 |
| 12:56:33 | × | quintasan quits (~quassel@quintasan.pl) (Quit: quintasan) |
| 12:56:43 | → | quintasan joins (~quassel@quintasan.pl) |
| 12:59:11 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 13:00:02 | → | gabriel_sevecek joins (~gabriel@188-167-229-200.dynamic.chello.sk) |
| 13:02:39 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:02:56 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:04:36 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:04:53 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:05:39 | × | max22- quits (~maxime@2a01cb0883359800c40fd24ed5f88e1c.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds) |
| 13:06:02 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 13:07:20 | <kuribas> | You already can return anything everywhere. You just need to give it the right type :) |
| 13:07:50 | <merijn> | unsafeCoerce all the things :p |
| 13:11:09 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:11:27 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:13:07 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:13:25 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:15:05 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:15:23 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:21:21 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:21:39 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:22:19 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 13:27:35 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:27:53 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:31:33 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:31:51 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:33:31 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:33:49 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:37:01 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 13:42:41 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:42:57 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:44:45 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 13:45:03 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 13:46:29 | × | burnsidesLlama quits (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection) |
| 13:47:35 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 13:47:49 | <merijn> | Finally getting around to looking at some PRs people made to my code and I don't understand why people always feel compelled to fix things that aren't broken... |
| 13:48:43 | <Rembane> | Which is the worst one so far? |
| 13:48:45 | × | dschrempf quits (~dominik@mobiledyn-62-240-134-39.mrsn.at) (Quit: WeeChat 3.3) |
| 13:48:57 | <merijn> | Literally needed to add 6 lines of language pragmas to replace my lambda + case in LambdaCase and replacing all uses of liftM with fmap |
| 13:49:38 | <merijn> | Which proceeds to break code that's perfectally functional on everything since, essentially GHC 6.10 to something that only works with like 8.x+ >.> |
| 13:50:17 | <merijn> | Like, I'm not deadset on supporting stupid old GHCs, but why break it if it's not necessary for whatever feature you wanna add? |
| 13:50:21 | → | benin joins (~benin@183.82.179.164) |
| 13:50:37 | <Rembane> | Wow, that's an interesting decision by the person who submitted the PR |
| 13:50:40 | <maerwald> | show me how you install GHC 6.10 on a modern machine |
| 13:51:32 | <merijn> | maerwald: My point is: why touch a whole bunch of code that isn't even close to the code you're adding/changing only to make it gratuitously backwards incompatible |
| 13:51:49 | <maerwald> | to force people to upgrade their damn GHCs :p |
| 13:52:18 | <merijn> | It's just churn unrelated to the actual change in various commits |
| 13:52:58 | <maerwald> | I hate it when people nitpick on my PRs and tell me it doesn't work with GHC-not-even-installable... those people can use older hackage state |
| 13:53:18 | <maerwald> | or just use stack |
| 13:54:05 | <maerwald> | well... the solution is easy: ask them to split their commits properly and just remove the stuff that doesn't add anything |
| 13:54:11 | <maerwald> | they won't even notice you removed it |
| 13:54:37 | <merijn> | maerwald: Well, that's part of the problem too. People having shitty commit hygiene |
| 13:54:45 | <maerwald> | then you pretend the merge commit swallowed it |
| 13:56:13 | <merijn> | Even if people had proper commit hygiene, github PRs suck. WTB mainstream patch based VCS >.> |
| 13:57:33 | <maerwald> | why do they suck? |
| 13:58:44 | <merijn> | maerwald: Nearly impossible to review individual commits |
| 13:58:57 | <merijn> | The only overview/review possibility they give is "everything in the branch" |
| 13:59:02 | <maerwald> | how so? you can comment on individual commits |
| 13:59:15 | <maerwald> | and I think these comments now show up in the PR even |
| 13:59:33 | <geekosaur> | they do but you can't e.g. reject an individual commit |
| 13:59:42 | <maerwald> | well, that's obvious |
| 13:59:43 | <geekosaur> | without rejecting the whole PR |
| 14:00:05 | <maerwald> | because github has now way of knowing how you want to rebase |
| 14:00:26 | <maerwald> | it may not even work |
| 14:00:42 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:ebd1:d304:8195:da29) (Quit: WeeChat 2.8) |
| 14:01:31 | <merijn> | maerwald: tbh, I can't figure out how to comment on individual commits either |
| 14:01:56 | <geekosaur> | hm, actually that's a good point. you can't comment on *commits*, y6ou comment on individual *diffs* |
| 14:02:15 | <maerwald> | merijn: I just did https://github.com/haskell/haskell-language-server/pull/2420 |
| 14:02:50 | <merijn> | maerwald: That's just part of the final diff AFAICT? |
| 14:03:23 | <maerwald> | I commented on the commit |
| 14:03:58 | <maerwald> | and github fixes the link to point to those |
| 14:04:03 | <merijn> | maerwald: If I click on the corresponding view changes I get taken to the global diff |
| 14:04:18 | <merijn> | And I don't see a link to the specific commit or an indication which commit you commented on? |
| 14:04:20 | <maerwald> | merijn: nope |
| 14:04:22 | <maerwald> | not true |
| 14:04:38 | <maerwald> | you're not looking hard enough |
| 14:04:56 | <maerwald> | github even has a drop-down showing you're only looking at a specific commit of the PR |
| 14:04:59 | <maerwald> | everything is there |
| 14:05:05 | <merijn> | well, the fact that I spend 30s starting at your comment and can't figure out how it relates to a commit is already pretty clear evidence the UX is shit |
| 14:05:26 | <maerwald> | https://imgur.com/FykkqhE.png |
| 14:05:41 | <maerwald> | looks pretty intuitive to me |
| 14:05:53 | <merijn> | If I click the "View Changes" button from the PR I get taken to "Changes from all commits" |
| 14:05:54 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 14:06:05 | <maerwald> | because I commented on the last commit |
| 14:06:15 | <merijn> | So I'm not sure how you got there from the PR comments |
| 14:06:41 | <maerwald> | https://github.com/haskell/haskell-language-server/pull/2420/files/5b869fd8087e1d2a6636c3ce183a6cb8f1cfe7de |
| 14:06:50 | <maerwald> | you're really trying hard not to get it :p |
| 14:06:52 | <merijn> | Anyway, this is doing the opposite of convincing me the github UI for reviews isn't shit |
| 14:07:11 | <maerwald> | CHANGES FROM 1 COMMIT |
| 14:07:17 | <merijn> | maerwald: I literally went to the PR, looked at the diff you commented my name and clicked on "View Changes" |
| 14:07:34 | <maerwald> | I made another comment from a different commit |
| 14:07:45 | <maerwald> | at this point I'm convinced you're not trying :p |
| 14:09:40 | → | DNH joins (~DNH@2a02:8108:1100:16d8:b4e0:9d38:46ba:cc41) |
| 14:10:53 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Quit: ZNC 1.8.2 - https://znc.in) |
| 14:11:17 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 14:12:01 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 14:12:35 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 14:16:19 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 14:16:20 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 14:16:37 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 14:16:38 | <boxscape> | My favorite controversial use of BlockArguments: Use it on non-monadic expressions to give a function one argument per line https://paste.tomsmeding.com/b2zy3Jw0 |
| 14:17:08 | <boxscape> | s/of/of `do` with |
| 14:17:45 | <boxscape> | (also the paste is missing a `]` at the end) |
| 14:20:07 | → | burnsidesLlama joins (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
| 14:24:55 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Ping timeout: 256 seconds) |
| 14:25:21 | × | burnsidesLlama quits (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 14:26:43 | <merijn> | Thanks, I hate it |
| 14:26:47 | → | lavaman joins (~lavaman@98.38.249.169) |
| 14:27:12 | → | sprout_ joins (~quassel@2a02:a467:ccd6:1:54db:f79f:90dc:3ee5) |
| 14:29:21 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 14:29:26 | <boxscape> | I thought you would >:) |
| 14:29:38 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 14:30:42 | × | sprout quits (~quassel@2a02:a467:ccd6:1:14f6:792c:9624:6b14) (Ping timeout: 268 seconds) |
| 14:31:55 | → | jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 14:34:20 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 252 seconds) |
| 14:35:53 | × | Farzad quits (~FarzadBek@37.98.111.153) (Quit: Leaving) |
| 14:39:20 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 268 seconds) |
| 14:40:10 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 14:40:14 | × | jlamothe quits (~jlamothe@198.251.61.229) (Quit: leaving) |
| 14:41:40 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 14:42:58 | → | dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com) |
| 14:42:58 | × | dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host) |
| 14:42:58 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 14:44:39 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 14:44:57 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 14:46:56 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 14:47:14 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 14:50:53 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 14:51:11 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 14:52:37 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:ebd1:d304:8195:da29) |
| 14:52:43 | → | jlamothe joins (~jlamothe@198.251.61.229) |
| 14:54:53 | → | burnsidesLlama joins (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
| 14:56:03 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 14:57:27 | <boxscape> | % a | let b | let c | let d = 1 = 2 = 3 = 4 |
| 14:57:28 | <yahb> | boxscape: |
| 14:58:35 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 14:59:29 | × | burnsidesLlama quits (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 15:03:31 | <boxscape> | % [t|Int ::: String|] |
| 15:03:32 | <yahb> | boxscape: AppT (AppT (ConT Ghci25.:::) (ConT GHC.Types.Int)) (ConT GHC.Base.String) |
| 15:03:38 | <boxscape> | why is this nested AppT rather than InfixT? |
| 15:05:33 | <geekosaur> | doesn't InfixT only happen afterward when fixity is known? |
| 15:05:46 | <geekosaur> | but ghci and probably TH mess that up |
| 15:07:11 | → | max22- joins (~maxime@2a01cb0883359800118b3200b4a756c8.ipv6.abo.wanadoo.fr) |
| 15:08:12 | <geekosaur> | or maybe it's the other way around. I don't really know how that works, only that fixity gets applied only late becuase it might not be known until the end of the file |
| 15:09:41 | <boxscape> | hmm right |
| 15:09:49 | <boxscape> | it seems to work differently for expressions though |
| 15:10:00 | <boxscape> | % [e|1 + 3|] |
| 15:10:00 | <yahb> | boxscape: InfixE (Just (LitE (IntegerL 1))) (VarE GHC.Num.+) (Just (LitE (IntegerL 3))) |
| 15:10:10 | <boxscape> | okay wait that's because it knows this name |
| 15:10:48 | <geekosaur> | mm, so it knows fixity and my first one was probably correct |
| 15:11:28 | <boxscape> | % [t|Int GHC.TypeLits.<= String|] |
| 15:11:29 | <yahb> | boxscape: AppT (AppT (ConT GHC.TypeNats.<=) (ConT GHC.Types.Int)) (ConT GHC.Base.String) |
| 15:11:34 | <boxscape> | 🤔 |
| 15:11:48 | <boxscape> | that produces Data.Type.Ord.<= in HEAD |
| 15:11:51 | <boxscape> | guess I'll report a bug |
| 15:12:01 | <boxscape> | oh wait |
| 15:12:04 | <boxscape> | it's fine |
| 15:12:12 | <boxscape> | I thought it was Data.Ord |
| 15:12:38 | <boxscape> | in any case, you'd think it would know fixity for this one geekosaur , so I think it never does it for types |
| 15:14:21 | → | Guest29 joins (~Guest29@84.212.204.195) |
| 15:15:02 | × | acidjnk_new quits (~acidjnk@p200300d0c7271e31dccc5136b6b31647.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 15:17:31 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 15:17:49 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 15:17:59 | × | Guest29 quits (~Guest29@84.212.204.195) (Quit: Client closed) |
| 15:19:12 | × | puke quits (~puke@user/puke) (Quit: puke) |
| 15:19:35 | × | jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer) |
| 15:19:54 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 15:20:46 | <geekosaur> | actually that makes me wonder, would it require an early fixity declaration for type level fixity to work? |
| 15:22:18 | <boxscape> | % [t|1 : 2 : 4 : '[]|] -- it seems to be able to figure it out |
| 15:22:18 | <yahb> | boxscape: AppT (AppT (PromotedT GHC.Types.:) (LitT (NumTyLit 1))) (AppT (AppT (PromotedT GHC.Types.:) (LitT (NumTyLit 2))) (AppT (AppT (PromotedT GHC.Types.:) (LitT (NumTyLit 4))) PromotedNilT)) |
| 15:23:52 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 15:25:43 | <boxscape> | % [e|a ++++ b ++++ c|] -- assuming infixl 9 here I supppose |
| 15:25:43 | <yahb> | boxscape: InfixE (Just (InfixE (Just (VarE Ghci24.a)) (UnboundVarE ++++) (Just (UnboundVarE b)))) (UnboundVarE ++++) (Just (UnboundVarE c)) |
| 15:27:45 | × | xff0x quits (~xff0x@port-92-193-253-16.dynamic.as20676.net) (Ping timeout: 256 seconds) |
| 15:28:03 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) (Quit: gone to sleep. ZZZzzz…) |
| 15:28:42 | → | Farzad joins (~FarzadBek@94.74.153.97) |
| 15:30:39 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 15:30:57 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 15:31:33 | <merijn> | cabal.project can't have fields conditional on compiler version, right? |
| 15:33:03 | <maerwald> | no |
| 15:33:17 | <maerwald> | I'm also not sure what my opinion on that feature is |
| 15:33:49 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 15:34:17 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) |
| 15:34:19 | <maerwald> | with the include feature you could easily re-use cabal.project code and supply multiple per-ghc files... then you still have the burden of telling cabal which one to use |
| 15:34:23 | <EvanR> | can somebody sanity check me on this. The AudioSpec record type in SDL has a field with a hidden type variable for sample format. So the accessor doesn't work. And the record constructor is not exported for some reason. Is there no way to access this field? |
| 15:34:27 | <boxscape> | geekosaur: btw, it has to know the fixity to convert to double AppT as well, so that doesn't seem like a good reason to avoid InfixT |
| 15:35:30 | × | Jing quits (~hedgehog@115.207.46.97) (Quit: Textual IRC Client: www.textualapp.com) |
| 15:35:38 | <merijn> | maerwald: I'm just trying to find a way to specify per-GHC flags for CI, as Haskell-CI doesn't currently support it and "manually modifying the generated CI file" is something I wanna try and avoid |
| 15:35:42 | <boxscape> | It has UInfixT to deal with unresolved fixities |
| 15:35:50 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 15:35:57 | <maerwald> | Use github actions |
| 15:36:00 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 15:36:01 | <merijn> | maerwald: So I was just wondering, because haskell-ci does support copying fields from cabal.project |
| 15:36:02 | <maerwald> | matrices are easy |
| 15:36:08 | → | lavaman joins (~lavaman@98.38.249.169) |
| 15:36:15 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 15:36:23 | <merijn> | maerwald: haskell-ci generates github actions scripts already |
| 15:36:30 | <yin> | wasn't there an extension that let you partially applicate (-) if you leave a space between the argument? |
| 15:36:33 | <maerwald> | never used haskell-ci |
| 15:36:36 | <geekosaur> | but would it know what to do with a conditional fied? |
| 15:36:40 | <geekosaur> | *field |
| 15:36:54 | <geekosaur> | yin: LexicalNegation |
| 15:37:09 | <merijn> | geekosaur: I mean, making a PR to handle that case is simpler then designing an interface for this from scratch :p |
| 15:37:37 | <EvanR> | since the sdl2 package has been like this for 6 years, I question whether I am missing something |
| 15:37:57 | <geekosaur> | there were several other negationb-related extensions but they got subsumed |
| 15:38:16 | <geekosaur> | at one point we were up to 4 negation-related extensions all with slightly different behavior |
| 15:38:28 | <merijn> | Hot take: Not requiring spaces around operators was a mistake |
| 15:38:45 | <boxscape> | likely true |
| 15:38:49 | <geekosaur> | there's a ghc proposal to more or less that extent currently |
| 15:38:53 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 15:38:55 | <geekosaur> | may even have made 9.2 |
| 15:39:11 | <EvanR> | whitespace relevance intensifies |
| 15:39:24 | <geekosaur> | I think merijn was complaining about it theother day because it broke working code |
| 15:40:00 | <merijn> | geekosaur: Hot take #2: Fixing said mistake now is a mistake |
| 15:40:02 | → | xff0x joins (~xff0x@2001:1a81:5351:7200:6ba7:7a98:a1da:e88f) |
| 15:40:23 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) (Ping timeout: 268 seconds) |
| 15:41:20 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 15:42:17 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 15:43:26 | → | burnsidesLlama joins (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
| 15:44:15 | × | benin quits (~benin@183.82.179.164) (Ping timeout: 256 seconds) |
| 15:44:54 | <boxscape> | EvanR: it probably has something to do with this existential type. But that's also not exported... https://hackage.haskell.org/package/sdl2-2.5.3.0/docs/src/SDL.Audio.html#AnAudioFormat |
| 15:46:03 | <boxscape> | which makes me think that maybe the field really is only meant for internal use |
| 15:47:30 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 15:50:20 | <EvanR> | it is exported |
| 15:50:35 | <boxscape> | oh |
| 15:50:37 | <EvanR> | that's why I get a type error and not a 'not found error', unlike the samples field xD |
| 15:50:44 | <EvanR> | which is inexplicably not exported |
| 15:50:55 | <boxscape> | I meant "AnAudioFormat" is not exported |
| 15:50:55 | <EvanR> | maybe the "intentionally didn't export" the wrong one |
| 15:51:25 | <EvanR> | didn't even know AnAudioFormat exited... |
| 15:51:46 | <EvanR> | you have to provide the AudioFormat type to the api |
| 15:52:00 | <boxscape> | that's why I linked to it :) |
| 15:52:10 | <boxscape_> | hmmm |
| 15:52:38 | <EvanR> | it just looks like a botched export list, doing a PR |
| 15:52:48 | <EvanR> | though my other PR has sat there for 2 years xD |
| 15:52:51 | × | gabriel_sevecek quits (~gabriel@188-167-229-200.dynamic.chello.sk) (Quit: WeeChat 3.3) |
| 15:52:56 | <boxscape> | oof |
| 15:54:15 | → | Itaru joins (~DaSH@ro2.flokinet.is) |
| 15:55:43 | <yin> | where can i find an updated list of all record syntax goodies? like field matching and whatever? |
| 15:56:26 | <geekosaur> | https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/records.html ? |
| 15:56:54 | <geekosaur> | although that won't include stuff in the standard, just ghc extensions |
| 16:02:59 | <yin> | ah. i am interested in the standard |
| 16:03:37 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:715b:47ca:3928:db8d) |
| 16:05:17 | <geekosaur> | https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-490003.15 |
| 16:05:22 | <yin> | that's fine, the examples in NoTraditionalRecordSyntax suffice! |
| 16:05:36 | <yin> | :) |
| 16:07:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 16:08:01 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:715b:47ca:3928:db8d) (Ping timeout: 252 seconds) |
| 16:11:21 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 16:11:27 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 16:11:39 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 16:13:17 | × | boxscape_ quits (~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de) (Quit: Connection closed) |
| 16:13:24 | <geekosaur> | also, fixing it now may be a mistake in some sense but we now have so many things that require space disambiguation that it's better to fix it once and for all instead of every special case being, well, special |
| 16:13:34 | <geekosaur> | starting already with BangPatterns back in 6.x |
| 16:14:12 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 16:14:29 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 16:14:47 | × | Farzad quits (~FarzadBek@94.74.153.97) (Ping timeout: 256 seconds) |
| 16:15:18 | <boxscape> | Did they have additional problems over irrefutable patterns? |
| 16:16:03 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:16:10 | <geekosaur> | hm? |
| 16:18:09 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 16:18:36 | × | ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
| 16:18:51 | <boxscape> | Irrefutable patterns also seem like a special case so I was wondering why we're starting with Bang patterns rather than irrefutable patterns |
| 16:20:33 | <janus> | mikko: you could theoretically use DerivingVia trick to specify that you want the 'Read' instance to use lower case |
| 16:20:34 | <geekosaur> | I think you can't use ~ as an operator anyway, which is how the Report resolved it |
| 16:20:54 | <janus> | mikko: waargonaut probably does it with json |
| 16:21:04 | <boxscape> | I see |
| 16:21:05 | <janus> | matt parsons has a blog post on it |
| 16:21:11 | <geekosaur> | which is probably why they borrowed it at type level for type equality |
| 16:21:18 | <boxscape> | right, make sense |
| 16:21:31 | <boxscape> | % let (~) = (+) in 1 ~ 2 |
| 16:21:31 | <yahb> | boxscape: 3 |
| 16:21:36 | <boxscape> | not true anymore though |
| 16:22:11 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) |
| 16:22:12 | <janus> | doesn't compile with warnings though ;) |
| 16:22:15 | <geekosaur> | right, wonder if that came in at the same time they started using it at type level. would be interesting to see if that worked in 6.x |
| 16:22:44 | <geekosaur> | I think it used to throw an error about pattern syntax in expression context |
| 16:23:04 | <boxscape> | it doesn't work on tryhaskell.org |
| 16:23:38 | <geekosaur> | but for all that they're different, there are a lot of similarities between type and term level these days and that's why I suspect it came in when ~ on type level did |
| 16:23:52 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 16:26:33 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:27:05 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) (Ping timeout: 252 seconds) |
| 16:27:21 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 16:30:01 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds) |
| 16:32:49 | × | vpan quits (~0@212.117.1.172) (Quit: Leaving.) |
| 16:38:34 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:ebd1:d304:8195:da29) (Quit: WeeChat 2.8) |
| 16:39:11 | × | jstolarek quits (~jstolarek@137.220.120.162) (Ping timeout: 252 seconds) |
| 16:39:45 | → | cheater joins (~Username@user/cheater) |
| 16:41:16 | → | gensyst joins (gensyst@user/gensyst) |
| 16:41:22 | <gensyst> | I have a long .hs file which tells a story, i.e. the order of the functions and comments is important. By splitting it into multiple files, I'd lose the "storyline" because I'd lose the order because the module filenames wouldn't necessarily preserve the order. |
| 16:41:25 | <gensyst> | Any ways around this? |
| 16:41:30 | → | lavaman joins (~lavaman@98.38.249.169) |
| 16:42:37 | <geekosaur> | is it necessary to split it in the first place? |
| 16:43:07 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 16:43:42 | <c_wraith> | there isn't actually a maximum size on modules in haskell |
| 16:43:52 | <geekosaur> | if it is, I'd probably take care to name the modules to keep the order, possibly by using hierarchical namespace |
| 16:43:54 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 16:44:41 | × | Codaraxis_ quits (~Codaraxis@user/codaraxis) (Ping timeout: 252 seconds) |
| 16:45:46 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 16:45:47 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 16:47:59 | <boxscape> | % Proxy @($(pure $ TH.UInfixT (TH.ConT $ TH.mkName "Int") (TH.mkName "':|") (TH.ConT $ TH.mkName "Any"))) |
| 16:47:59 | <yahb> | boxscape: ; <interactive>:94:10: error:; * Illegal type constructor or class name: ':|; When splicing a TH type: (Int ':| Any); * In the untyped splice: $(pure $ TH.UInfixT (TH.ConT $ TH.mkName "Int") (TH.mkName "':|") (TH.ConT $ TH.mkName "Any")) |
| 16:48:04 | <boxscape> | is there a way to make this work? |
| 16:48:20 | <boxscape> | I have to use UInfixT because I don't know the fixity of the operators I'm handling |
| 16:49:04 | <boxscape> | and I have to distinguish them from type constructors (so I can't just use `TH.mkName ":|"` without the tick) because I don't know if a type constructor with the same name is in scope |
| 16:49:05 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Ping timeout: 252 seconds) |
| 16:50:01 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 16:50:31 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) |
| 16:51:12 | <boxscape> | And I cannot look up the global name of the operator because the package containing might not even be installed while generating this code |
| 16:51:12 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 16:51:23 | <boxscape> | s/containing/containing it |
| 16:51:41 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 16:52:35 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 16:52:53 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 16:52:56 | <janus> | csaba's talk on the external spineless tagless g-machine starts in 20 minutes: https://skillsmatter.com/meetups/13654-haskell-stg-interp |
| 16:53:03 | <janus> | or rather, 8 minutes |
| 16:53:18 | <janus> | (minutes in decimal notation) |
| 16:54:58 | <boxscape> | I think this is impossible, in which case I suppose I'll probably just open a ticket to add support for promoted names in UInfix |
| 16:56:13 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds) |
| 16:56:14 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 268 seconds) |
| 16:57:17 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
| 16:58:27 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:715b:47ca:3928:db8d) |
| 16:59:40 | → | boxscape_ joins (~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de) |
| 17:03:03 | × | [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 17:08:34 | × | DNH quits (~DNH@2a02:8108:1100:16d8:b4e0:9d38:46ba:cc41) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:09:35 | → | benin joins (~benin@183.82.179.164) |
| 17:13:43 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 17:14:10 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 17:15:08 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:15:26 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 17:16:13 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 252 seconds) |
| 17:16:45 | → | retro_ joins (~retro@97e2ba2e.skybroadband.com) |
| 17:20:15 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 17:20:17 | × | retroid_ quits (~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds) |
| 17:20:23 | → | retroid_ joins (~retro@97e2ba2e.skybroadband.com) |
| 17:20:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:21:31 | × | retro_ quits (~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds) |
| 17:21:57 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) (Quit: gone to sleep. ZZZzzz…) |
| 17:22:58 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 17:23:11 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 17:24:56 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 17:25:56 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 17:26:20 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:26:22 | → | DNH joins (~DNH@2a02:8108:1100:16d8:b4e0:9d38:46ba:cc41) |
| 17:27:19 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Ping timeout: 256 seconds) |
| 17:29:33 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 17:29:50 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 17:29:53 | × | ozzymcduff quits (~mathieu@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection) |
| 17:30:18 | <EvanR> | on an old random blog I found a surprising feature related to blocking unsafe ffi calls "non-threaded runtime has an SIGALARM timer that interrupts (most) blocking system calls" |
| 17:30:41 | <EvanR> | the safe unsafe ffi plot thickens |
| 17:30:55 | → | zincy_ joins (~zincy@host86-181-60-139.range86-181.btcentralplus.com) |
| 17:31:51 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 17:31:55 | → | ozzymcduff joins (~mathieu@81-234-151-21-no94.tbcn.telia.com) |
| 17:32:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:33:54 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 17:34:11 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 17:35:17 | × | nschoe quits (~quassel@2a01:e0a:8e:a190:1242:6edc:4e6a:28bd) (Ping timeout: 252 seconds) |
| 17:35:42 | → | ec_ joins (~ec@gateway/tor-sasl/ec) |
| 17:37:31 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 17:37:50 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:38:01 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 17:38:33 | → | jstolarek joins (~jstolarek@137.220.120.162) |
| 17:39:31 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 17:41:33 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 17:41:53 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:715b:47ca:3928:db8d) (Remote host closed the connection) |
| 17:41:55 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 17:42:07 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:715b:47ca:3928:db8d) |
| 17:43:11 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
| 17:43:15 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 17:43:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:44:35 | <yin> | • Couldn't match expected type ‘GHC.Exts.Item a0’ |
| 17:44:51 | <yin> | ^ what does this mean ? |
| 17:44:51 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 17:45:01 | <yin> | it's just a (Int,Int) |
| 17:45:58 | <hippoid> | why is 'join.fmap return' not the same as '(join.fmap) return' - since function application is left associative, I thought join.fmap return would be (join.fmap) return, but it's actually join.(fmap return). What am I missing? |
| 17:46:05 | <hippoid> | :t join.fmap return |
| 17:46:05 | <lambdabot> | Monad m => m a -> m a |
| 17:46:10 | <hippoid> | :t join.(fmap return) |
| 17:46:11 | <lambdabot> | Monad m => m a -> m a |
| 17:46:17 | <hippoid> | :t (join.fmap) return |
| 17:46:19 | <lambdabot> | error: |
| 17:46:19 | <lambdabot> | • Occurs check: cannot construct the infinite type: m ~ (->) (m a) |
| 17:46:19 | <lambdabot> | Expected type: (a -> m1 a) -> m (m (m1 a)) |
| 17:46:47 | <dolio> | Because operators are always looser than function application. |
| 17:47:19 | <hippoid> | so I shouldn't consider (.) to be a function? |
| 17:47:21 | <[exa]> | yin: a tiny piece of source around could help, this looks like GHC.Exts.Item can't be evaluated because a0 is unknown |
| 17:47:26 | <yin> | :t (join .) fmap return |
| 17:47:27 | <lambdabot> | error: |
| 17:47:27 | <lambdabot> | • Occurs check: cannot construct the infinite type: m ~ (->) (m a) |
| 17:47:27 | <lambdabot> | Expected type: (a -> m1 a) -> m (m (m1 a)) |
| 17:47:51 | <dolio> | "Function application" means prefix function application in this case. |
| 17:48:01 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 17:48:03 | <yin> | :t (.) join fmap return |
| 17:48:04 | <lambdabot> | error: |
| 17:48:04 | <lambdabot> | • Occurs check: cannot construct the infinite type: m ~ (->) (m a) |
| 17:48:05 | <lambdabot> | Expected type: (a -> m1 a) -> m (m (m1 a)) |
| 17:48:23 | <yin> | :t (.) join (fmap return) |
| 17:48:24 | <lambdabot> | Monad m => m a -> m a |
| 17:48:31 | <yin> | there you go ^ |
| 17:48:51 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 17:49:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:49:15 | <[exa]> | hippoid: (.) is not a function application |
| 17:50:09 | <hippoid> | is (.) a function? |
| 17:50:17 | <yin> | yes |
| 17:50:21 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 17:50:23 | <yin> | however |
| 17:50:37 | <yin> | f = join . fmap return |
| 17:51:02 | <yin> | means that f x === (join . fmap return) x |
| 17:51:15 | <yin> | and when you write it in ghci it gives you |
| 17:51:33 | <hippoid> | yin: following so far |
| 17:52:18 | → | pfurla joins (~pfurla@201.17.118.230) |
| 17:52:36 | <yin> | :t (join . fmap return) |
| 17:52:38 | <lambdabot> | Monad m => m a -> m a |
| 17:52:50 | × | pfurla quits (~pfurla@201.17.118.230) (Client Quit) |
| 17:54:20 | <yin> | not sure what your intention is |
| 17:54:47 | <[exa]> | hippoid: probably better compare 'join.fmap return' with 'join$fmap return' (which is a slightly rewritten version of your 2nd snippet) |
| 17:55:00 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 17:55:25 | → | imdoor joins (~imdoor@balticom-142-78-50.balticom.lv) |
| 17:56:04 | <hippoid> | i still dont get it. I mean `(.) join fmap` seems like function application to me, even if it doesn't type check |
| 17:56:43 | <yin> | :t fmap return |
| 17:56:44 | <lambdabot> | (Monad m, Functor f) => f a -> f (m a) |
| 17:57:10 | <yin> | :t (.) (join) (fmap return) |
| 17:57:11 | <lambdabot> | Monad m => m a -> m a |
| 17:57:29 | <yin> | (join) and (fmap return) are the arguments to (.) |
| 17:57:47 | <[exa]> | hippoid: yeah, 2 function applications in fact |
| 17:58:35 | <yin> | this is the order of application: (join) . (fmap return) |
| 17:59:11 | <yin> | what's in parens gets computed first |
| 17:59:21 | × | imdoor quits (~imdoor@balticom-142-78-50.balticom.lv) (Client Quit) |
| 17:59:37 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
| 17:59:40 | → | imdoor joins (~imdoor@balticom-142-78-50.balticom.lv) |
| 17:59:41 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 17:59:58 | <hippoid> | what i'm trying to understand is why is the expression parsed that way. does it have to do with precedence rule? |
| 18:00:04 | <[exa]> | hippoid: just to be sure, what precisely you don't get? the 2 programs you wrote there are both syntactically and semantically different, it looks like you're assuming the . in the middle is something like function application, but that's not -- it's an operator |
| 18:00:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:00:29 | <yin> | function application takes precedence over fixity |
| 18:00:35 | <[exa]> | hippoid: the "spaces" between can be reimagined like function application operators, and in 'join . fmap return' there is only one |
| 18:00:58 | <yin> | ^ that |
| 18:01:06 | yin | speak broken english |
| 18:01:14 | <[exa]> | hippoid: so there really isn't any point at trying associativity. On the other hand, as yin, pointed out--- |
| 18:01:27 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:715b:47ca:3928:db8d) (Remote host closed the connection) |
| 18:01:39 | <monochrom> | Parsing is always about precedence rules. |
| 18:01:55 | <[exa]> | join . fmap return == (.) join (fmap return) ==(highlighting associativity)== ((.) join) (fmap return) |
| 18:02:02 | <hippoid> | ok i need to get more clear on the ideas of fixity and operators |
| 18:02:29 | <yin> | or... |
| 18:02:40 | <yin> | :t (join .) (fmap return) |
| 18:02:41 | <lambdabot> | Monad m => m a -> m a |
| 18:02:52 | <yin> | fun |
| 18:02:55 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 18:03:01 | × | neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 256 seconds) |
| 18:03:03 | <[exa]> | hippoid: a nice example for playing with parentheses: negate 3 + 4 vs negate (3+4) |
| 18:03:05 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:6d00:12c3:7bff:fe6d:d374) (Remote host closed the connection) |
| 18:03:24 | → | Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
| 18:03:29 | → | chomwitt joins (~chomwitt@2a02:587:dc0d:6d00:12c3:7bff:fe6d:d374) |
| 18:03:30 | <hippoid> | i wonder what concept i'm missing... is expression parsing, fixity, operators, or something else |
| 18:04:15 | <[exa]> | hippoid: the first of the example reads '(negate _APP_ 3) + 4', the second reads 'negate _APP_ (3+4)'. |
| 18:04:24 | <monochrom> | In ghci you can use :info to ask operator precedence. Try :info + |
| 18:04:43 | <monochrom> | Bigger number is higher precedence. |
| 18:04:55 | <monochrom> | If it doesn't say, the default is "infixl 9" |
| 18:05:17 | <[exa]> | hippoid: the _APP_ is "hidden" in normal expressions for making the code nice, but you should remember that any 2 things without an operator between them will make a highest-priority function application |
| 18:05:21 | <hippoid> | and function application has the highest precedence? |
| 18:05:25 | <[exa]> | yes |
| 18:05:28 | → | neurocyte0132889 joins (~neurocyte@46.243.81.73) |
| 18:05:28 | × | neurocyte0132889 quits (~neurocyte@46.243.81.73) (Changing host) |
| 18:05:28 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 18:05:57 | <hippoid> | ahh ok, something is starting to click. |
| 18:06:03 | <[exa]> | like, this is a pretty common point of confusion, takes a bit of time to get used to that |
| 18:06:21 | <hippoid> | i'm going to play with the different examples you all put into the chat |
| 18:06:26 | yin | whishes ' ' = _APP_ |
| 18:06:32 | <hippoid> | thanks so much! |
| 18:07:11 | <monochrom> | Unfortunately the "space = function application" model breaks easily as soon as you try for example: |
| 18:07:27 | <monochrom> | > map(\x->x+1)[3,4,5] |
| 18:07:28 | <lambdabot> | [4,5,6] |
| 18:07:54 | <monochrom> | No space at all. |
| 18:08:12 | <yin> | map (\x->x + 1) [3,4,5] |
| 18:08:13 | <[exa]> | hippoid: I'm showing this with small "implicit apply operator" to students on first few courses, like: negate⏝3+4 |
| 18:08:21 | <yin> | ^i wish we *had* to write it like this |
| 18:08:45 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 18:08:45 | <hippoid> | > map \x->x+1 [3, 4, 5] |
| 18:08:46 | <monochrom> | The better model is: juxtaposition (so, lack of syntax) is function application. (In suitable contexts anyway.) |
| 18:08:47 | <lambdabot> | error: |
| 18:08:47 | <lambdabot> | Unexpected lambda expression in function application: |
| 18:08:47 | <lambdabot> | \ x -> x + 1 [3, 4, ....] |
| 18:09:09 | <monochrom> | > length"hello" |
| 18:09:10 | <[exa]> | hippoid: there you were calling function `1` with parameter `[3,4,5]` :] |
| 18:09:10 | <lambdabot> | 5 |
| 18:09:17 | <gensyst> | geekosaur, no there's really no need to split it :D |
| 18:09:39 | <gensyst> | but it has a few separate, but related, concept. |
| 18:09:46 | <gensyst> | the relation forms the "story", so to speak |
| 18:10:01 | <gensyst> | for filename ordering, it's pity module names can't start with number |
| 18:10:02 | <yin> | and then you learn about qualified dot and record dot... :'( |
| 18:10:29 | × | xff0x quits (~xff0x@2001:1a81:5351:7200:6ba7:7a98:a1da:e88f) (Ping timeout: 252 seconds) |
| 18:10:32 | <[exa]> | yin: ssshh :] no complications now :D |
| 18:10:33 | <geekosaur> | but you could say S1-Foo etc. |
| 18:10:57 | × | jstolarek quits (~jstolarek@137.220.120.162) (Ping timeout: 256 seconds) |
| 18:11:04 | <gensyst> | geekosaur, yeah i could. i'll think about it. thanks! |
| 18:11:12 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 18:11:13 | × | neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 252 seconds) |
| 18:11:14 | → | xff0x joins (~xff0x@port-92-193-253-16.dynamic.as20676.net) |
| 18:11:14 | <yin> | you can also use Enum |
| 18:11:26 | → | neurocyte0132889 joins (~neurocyte@46.243.81.73) |
| 18:11:26 | × | neurocyte0132889 quits (~neurocyte@46.243.81.73) (Changing host) |
| 18:11:26 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 18:11:26 | <yin> | and name your files A-Z |
| 18:11:41 | <yin> | or whatever |
| 18:11:47 | <monochrom> | On the bright side, it is intuitive that lack of syntax binds tighter than presence of syntax. foo"hello" $ sin(x) is very intuitively "$ is the most loose one". |
| 18:11:57 | → | econo joins (uid147250@user/econo) |
| 18:13:09 | <geekosaur> | well, the advantage of my suggestion is the module names could then be part of, or at least summarize parts of, the "story" |
| 18:13:26 | <monochrom> | > zip"abc""def" |
| 18:13:27 | <lambdabot> | [('a','d'),('b','e'),('c','f')] |
| 18:14:18 | <xerox> | in C that wouldn't work |
| 18:14:26 | <monochrom> | That's got to be my latest most favourite example :) |
| 18:14:39 | <[exa]> | pls spaces |
| 18:14:47 | <geekosaur> | @quote zip`ap |
| 18:14:47 | <lambdabot> | quicksilver says: zip`ap`tail the aztec god of consecutive numbers |
| 18:15:29 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
| 18:15:35 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 18:16:02 | <yin> | i don't undestand this error: https://paste.jrvieira.com/1638468946485 |
| 18:16:29 | <monochrom> | Uh which line is line "45"? |
| 18:16:39 | <xerox> | just after 44 |
| 18:17:05 | × | Itaru quits (~DaSH@ro2.flokinet.is) (Ping timeout: 252 seconds) |
| 18:17:06 | <yin> | sorry, it's 17 |
| 18:17:20 | <yin> | i forgot to edit it there also |
| 18:17:32 | <yin> | i edited it in the error for convenience ;) |
| 18:18:55 | <monochrom> | What is the type of aim? |
| 18:19:07 | <yin> | Int |
| 18:19:41 | <yin> | it's right there in Stt |
| 18:19:46 | <geekosaur> | seems like it should error on that and not the first tuple if it were that tyope mismatch |
| 18:19:50 | <geekosaur> | *type |
| 18:19:59 | <monochrom> | So I would think "[(x,y), (aim :: Int but not even a tuple), (k,n)]" cannot be well-typed. |
| 18:20:01 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Ping timeout: 252 seconds) |
| 18:20:02 | <[exa]> | yin: did you try with a different operator than # ? |
| 18:20:05 | <geekosaur> | and I don't see where Item came in |
| 18:20:23 | <yin> | ho |
| 18:20:26 | <yin> | i see my mistake now |
| 18:20:28 | <yin> | ll |
| 18:20:31 | <[exa]> | # is used for ghc-internal magicks, not sure if it's safe to overload it like this |
| 18:20:46 | → | zebrag joins (~chris@user/zebrag) |
| 18:20:47 | → | doyougnu joins (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) |
| 18:20:50 | <monochrom> | # is fine if you don't turn on MagicHash |
| 18:20:59 | <geekosaur> | it's safe as long as MagicHash isn't enabled |
| 18:21:01 | <yin> | thanks monochrom |
| 18:21:07 | <[exa]> | ah okay good |
| 18:21:10 | <monochrom> | > let x # y = y/x in 2 # 4 |
| 18:21:11 | <lambdabot> | 2.0 |
| 18:21:37 | [exa] | starts using # |
| 18:22:04 | <monochrom> | > let x #! y = 2*x+y in 2 #! 4 |
| 18:22:06 | <lambdabot> | 8 |
| 18:22:16 | <yin> | that wasn't supposed t be a list. []s for ()s |
| 18:22:22 | <yin> | sorry |
| 18:22:34 | × | burnsidesLlama quits (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection) |
| 18:22:41 | <yin> | time to go eat something |
| 18:23:05 | → | burnsidesLlama joins (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
| 18:25:40 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 18:27:20 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 18:27:21 | × | burnsidesLlama quits (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 18:27:38 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 18:27:44 | <Profpatsch> | I have a GADT like |
| 18:27:46 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 18:27:53 | <Profpatsch> | data G a where |
| 18:28:03 | <Profpatsch> | Simple :: G Text |
| 18:28:21 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 18:28:22 | <Profpatsch> | List :: a -> G [a] |
| 18:28:41 | <Profpatsch> | Now, I can see that it can either be G Text or G [Text] |
| 18:29:20 | <Profpatsch> | And I want to `show` my `a` that comes from `G a` |
| 18:30:20 | <Profpatsch> | But I can’t rely on the information that all of my `a`s are always showable if I have a `G a`. Or can I? |
| 18:31:23 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 18:31:44 | <Profpatsch> | Okay wait my List cnostructor was wrong |
| 18:31:48 | <Profpatsch> | List :: G a -> G [a] |
| 18:32:40 | → | jasonmason joins (~bc8165b6@cerf.good1.com) |
| 18:32:51 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 18:33:29 | → | chillin_penguin joins (~igloo@mobile-166-175-56-140.mycingular.net) |
| 18:33:32 | × | chillin_penguin quits (~igloo@mobile-166-175-56-140.mycingular.net) (Max SendQ exceeded) |
| 18:33:47 | <monochrom> | Have you tried? |
| 18:33:49 | → | chillin_penguin joins (~igloo@mobile-166-175-56-140.mycingular.net) |
| 18:33:59 | × | chillin_penguin quits (~igloo@mobile-166-175-56-140.mycingular.net) (Max SendQ exceeded) |
| 18:34:07 | <monochrom> | Apparently, "instance Show (G a) where ... show (List x) = show x" is accepted. |
| 18:34:18 | → | chillin_penguin joins (~igloo@mobile-166-175-56-140.mycingular.net) |
| 18:34:38 | × | chillin_penguin quits (~igloo@mobile-166-175-56-140.mycingular.net) (Max SendQ exceeded) |
| 18:34:41 | <Profpatsch> | monochrom: not instance Show (G a), but the inferrence that G a means `a` is Show |
| 18:36:24 | <monochrom> | Have you tried? |
| 18:36:45 | <monochrom> | The thing I tried and got rejected is: f :: G a -> a -> String; f _ x = show x |
| 18:37:13 | <Profpatsch> | monochrom: and it gets rejected right? |
| 18:37:36 | <Profpatsch> | Because how would GHC know that all `a`s that can be assigned to G are showable |
| 18:37:56 | <Profpatsch> | I mean *I* know it but I don’t know how to write it down |
| 18:38:28 | <Profpatsch> | I wolud just give it a Show a constraint, but I’m trying to give it a natural transformation which doesn’t allow restrictions. |
| 18:38:46 | <Profpatsch> | forall m x. G x -> m x is hard to argue with |
| 18:38:54 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 18:38:58 | <maerwald> | how do you use TH to include another haskell source file like you would with CPP and #include? |
| 18:39:01 | <Profpatsch> | err well |
| 18:39:06 | <Profpatsch> | forall m. (x. G x -> m x) -> m x is hard to argue with |
| 18:39:10 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 18:39:14 | → | Farzad joins (~FarzadBek@94.74.154.205) |
| 18:40:54 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 18:41:12 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 18:41:14 | <monochrom> | I don't think TH provides for including a haskell source file. |
| 18:41:45 | <dolio> | Write: f' :: G b -> (Show b => a -> String) -> a -> String |
| 18:42:04 | <dolio> | Then write: f :: G a -> a -> String |
| 18:42:06 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:715b:47ca:3928:db8d) |
| 18:42:13 | <dolio> | f g x = f g show x |
| 18:43:54 | × | gensyst quits (gensyst@user/gensyst) (Quit: Leaving) |
| 18:47:11 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 18:47:29 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 18:47:46 | <monochrom> | Yikes haha write an induction proof and don't perform proof erasure for the executable... |
| 18:48:03 | × | neurocyte0132889 quits (~neurocyte@user/neurocyte) (Read error: Connection reset by peer) |
| 18:48:31 | → | neurocyte0132889 joins (~neurocyte@46.243.81.73) |
| 18:48:31 | × | neurocyte0132889 quits (~neurocyte@46.243.81.73) (Changing host) |
| 18:48:31 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 18:50:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 18:50:22 | <Profpatsch> | monochrom: Okay, I figured it out, you have to do something like `:: G a -> a -> Text` and then manuall match on all constructors of G. |
| 18:50:31 | <Profpatsch> | Inside the match arms, the right types will be availabl |
| 18:50:43 | <Profpatsch> | This makes too much sense! |
| 18:53:51 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 18:54:08 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 18:57:36 | → | burnsidesLlama joins (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
| 19:00:13 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 19:00:31 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 19:01:41 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 19:01:57 | × | burnsidesLlama quits (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 19:04:10 | <monochrom> | Category theory is really easier. |
| 19:04:10 | → | nschoe joins (~quassel@2a01:e0a:8e:a190:5edd:cf91:5423:75e0) |
| 19:04:10 | × | nschoe quits (~quassel@2a01:e0a:8e:a190:5edd:cf91:5423:75e0) (Client Quit) |
| 19:09:32 | <Midjak> | Hello I am using haskell-language-server from emacs on Mac OSX 11. When I try to open o haskell source file from emacs I get this message https://paste.tomsmeding.com/DM5eBvjM . If i check lsp-logs this messages: https://paste.tomsmeding.com/eehb6COh |
| 19:10:42 | <Hecate> | Midjak: so you did install haskell-language-server |
| 19:10:46 | <Hecate> | is it in your PATH ? |
| 19:11:03 | <Midjak> | I tried to update the language server with brew and to update the emacs packages but I could not get this error message to disappear. |
| 19:11:36 | <Midjak> | Hecate, yes it worked a few days ago |
| 19:11:47 | <Midjak> | just now I get this error... |
| 19:12:01 | <tomsmeding> | you didn't change anything in your emacs configuration? |
| 19:12:06 | <Midjak> | I am looking the path the PATH |
| 19:12:12 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3) |
| 19:13:32 | <Midjak> | no I didn't change nothing. I have just added (require lsp) and (require lsp-haskell) right now which were missing in .emacs |
| 19:13:37 | <tomsmeding> | Midjak: apparently 'M-x getenv' allows you to get the value of an environment variable in emacs (I don't actually know emacs). Try to look up PATH in that way, and see if the directory where haskell-language-server-wrapper is located is indeed in that list |
| 19:14:04 | <Midjak> | ok I am looking this tomsmeding |
| 19:14:04 | × | Farzad quits (~FarzadBek@94.74.154.205) (Quit: Leaving) |
| 19:14:20 | <tomsmeding> | Midjak: you added those statements to your .emacs file; did that break it, or is that unrelated? |
| 19:14:33 | <Midjak> | no effect |
| 19:14:35 | <tomsmeding> | ok |
| 19:14:45 | <Midjak> | I get the error I have before this |
| 19:15:36 | × | emf quits (~emf@2620:10d:c090:400::5:d28b) (Ping timeout: 268 seconds) |
| 19:15:45 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds) |
| 19:16:32 | <tomsmeding> | (you can check where haskell-language-server-wrapper is by typing 'which haskell-language-server-wrapper' in a terminal) |
| 19:17:32 | → | emf joins (~emf@2620:10d:c091:480::1:6546) |
| 19:17:44 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 19:21:22 | → | dudek joins (~dudek@185.150.236.103) |
| 19:21:36 | <Midjak> | ok the server wrapper is in /usr/local/bin and is not in the emacs PATH |
| 19:21:56 | <Midjak> | I am going to change this |
| 19:22:46 | <tomsmeding> | how are you starting emacs? Is it also not on the path of a newly started emacs in a new terminal? |
| 19:24:36 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 19:24:52 | <Midjak> | I launch emacs from the dock. I think I had made configuration which was gone when I upgraded emacs. (not sure of this however) |
| 19:27:27 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 19:27:45 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 19:27:56 | <tomsmeding> | ah, probably you're adding /usr/local/bin to the PATH in something like .bashrc, right? |
| 19:28:19 | <tomsmeding> | a program in the dock launches from the context of WindowServer or something like that, which doesn't load .bashrc beforehand -- it runs in a fairly bare environment |
| 19:29:09 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 19:29:15 | → | emf_ joins (~emf@2620:10d:c090:400::5:d28b) |
| 19:30:03 | × | emf quits (~emf@2620:10d:c091:480::1:6546) (Ping timeout: 252 seconds) |
| 19:31:25 | <Midjak> | in zsh I have '/usr/local/bin' in my PATH but I didn't do nothing for that. I have added some local '/bin' in my PATH with zshrc but not /usr/local/bin |
| 19:31:51 | <Midjak> | https://paste.tomsmeding.com/ubNQZxwh |
| 19:32:46 | <tomsmeding> | then it might be some zsh functionality perhaps |
| 19:33:06 | <tomsmeding> | in any case, /usr/local/bin is not put in PATH by anything that runs before the window system starts on mac, I believe |
| 19:33:23 | <Midjak> | yes I think so |
| 19:33:24 | <tomsmeding> | you might be able to do something with something like /etc/environ, but not sure |
| 19:33:34 | <tomsmeding> | easiest is probably to add /usr/local/bin to the PATH in emacs itself somehow :) |
| 19:33:43 | <Midjak> | but I don't understand how this worked before... |
| 19:34:16 | <Midjak> | my .emacs file was not changed when I upgrade emacs |
| 19:35:03 | <Midjak> | I have looked into and didn't see nothing which add /usr/local/bin explicitely. |
| 19:35:45 | <tomsmeding> | sounds odd |
| 19:37:35 | <Midjak> | yeah... I am going to find how to do that definitively in .emacs (it's the configuration file for emacs) |
| 19:39:53 | → | inkbottle[m] joins (~inkbottle@2001:470:69fc:105::2ff5) |
| 19:40:11 | <Midjak> | aah I think I have installed this https://github.com/purcell/exec-path-from-shell |
| 19:40:53 | → | curiousgay joins (~curiousga@77-120-141-90.kha.volia.net) |
| 19:40:55 | → | jstolarek joins (~jstolarek@137.220.120.162) |
| 19:44:59 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 19:45:16 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 19:45:26 | → | Itaru joins (~DaSH@ro2.flokinet.is) |
| 19:45:42 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 19:46:29 | <tomsmeding> | and it did the opposite of what you wanted? :p |
| 19:48:49 | → | burnsidesLlama joins (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
| 19:53:41 | <Midjak> | No perhaps I have remove something when I upgraded |
| 19:54:03 | → | nabaiste^ joins (~nabaiste@68.101.58.90) |
| 19:54:13 | <Midjak> | Well now I have the proper PATH |
| 19:55:13 | × | burnsidesLlama quits (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 19:58:06 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Quit: leaving) |
| 19:58:09 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) |
| 19:58:57 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) (Client Quit) |
| 20:00:19 | → | pavonia joins (~user@user/siracusa) |
| 20:00:33 | → | narendraj9 joins (~user@2a02:8109:b63f:ff7c::57b2) |
| 20:02:29 | <Profpatsch> | monochrom: well I only went down this rabbit hole because I wanted to use a free applicative :) |
| 20:05:05 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) |
| 20:05:26 | × | juhp quits (~juhp@128.106.188.82) (Ping timeout: 252 seconds) |
| 20:05:49 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 20:07:29 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 20:07:29 | → | juhp joins (~juhp@128.106.188.82) |
| 20:07:47 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 20:09:31 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 20:09:48 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 20:10:18 | → | whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com) |
| 20:10:23 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 20:12:03 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 20:12:21 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 20:12:23 | <zincy_> | When doing property based state machine testing should you be relying on your existing logic to inform your test model of the suitable next action? |
| 20:12:41 | <Midjak> | Ok it works now thanks for your help tomsmeding Hecate |
| 20:12:49 | <tomsmeding> | cheers! |
| 20:15:20 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 20:16:59 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds) |
| 20:17:21 | <Hecate> | Midjak: good luck |
| 20:19:01 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 20:19:18 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 20:20:58 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 20:21:15 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 20:22:30 | <Midjak> | Hecate, why do you say "good luck" ? |
| 20:22:42 | × | zincy_ quits (~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection) |
| 20:25:13 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 20:25:31 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 20:27:13 | <Hecate> | Midjak: everything |
| 20:28:45 | <Midjak> | Well I would prefer not to rely too much on luck Hecate |
| 20:29:02 | <Hecate> | very well, than I wish you success :) |
| 20:29:21 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 20:30:46 | <Hecate> | hi waleee o/ |
| 20:32:21 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 20:33:07 | → | hamflask joins (~hamflask@2600:1700:1bd8:b00f:ea60:30f6:60ab:8120) |
| 20:33:10 | <waleee> | Hecate: ? |
| 20:34:14 | → | fresheyeball joins (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) |
| 20:34:27 | <waleee> | (but hi to you too, even if I can't remember the nick) |
| 20:34:53 | × | xff0x quits (~xff0x@port-92-193-253-16.dynamic.as20676.net) (Ping timeout: 256 seconds) |
| 20:34:55 | × | fresheyeball quits (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) (Client Quit) |
| 20:34:58 | <boxscape> | Hecate: people seem to be confused a lot by your cordiality today :D |
| 20:35:12 | → | fresheyeball joins (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) |
| 20:35:49 | → | xff0x joins (~xff0x@2001:1a81:5351:7200:9887:9cf7:56de:2525) |
| 20:35:51 | → | deadmarshal joins (~deadmarsh@95.38.119.253) |
| 20:35:55 | <monochrom> | Next time use "may the odds be ever in your favour" >:) |
| 20:36:06 | <Hecate> | boxscape: yeah I have a reputation :') |
| 20:36:13 | × | benin quits (~benin@183.82.179.164) (Quit: The Lounge - https://thelounge.chat) |
| 20:36:15 | <Hecate> | waleee: you just joined the channel and I was feeling cordial :) |
| 20:36:18 | <Rembane> | "May you love in interesting times." > "good luck" |
| 20:36:18 | <Hecate> | monochrom: hehehe |
| 20:36:51 | <dsal> | Love in interesting times sounds like a sitcom situation. |
| 20:37:34 | <geekosaur> | love in the time of covid |
| 20:37:54 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:38:22 | → | vysn joins (~vysn@user/vysn) |
| 20:39:43 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds) |
| 20:39:53 | <Rembane> | That typo made the quote so much more concerning. :D |
| 20:40:11 | <Rembane> | s/concerning/disconcerting/ |
| 20:40:19 | <Rembane> | My fingers arne't doing my bidding today |
| 20:42:40 | <Hecate> | "May you leave the Thunderdome" |
| 20:46:00 | × | fresheyeball quits (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
| 20:47:12 | <Rembane> | That's a good one |
| 20:47:23 | <Rembane> | "Two enters, three leaves." |
| 20:47:53 | <Hecate> | :) |
| 20:49:10 | <monochrom> | Sounds like something like the LHC. Which are like Thunderdomes for particles. |
| 20:50:15 | <Rembane> | Indeed, with extra speed added. :) |
| 20:50:31 | → | zincy_ joins (~zincy@host86-181-60-139.range86-181.btcentralplus.com) |
| 20:51:07 | <Hecate> | monochrom, Rembane: btw, what are you doing with Haskell these days? |
| 20:51:58 | <Rembane> | Hecate: I'm only doing Advent of Code, and it's blissful. At work I'm working in Elixir which is surprisingly good but it has too much and too weird syntax imo. |
| 20:52:14 | <monochrom> | Yesterday I was reading https://link.springer.com/chapter/10.1007/978-3-662-54434-1_21 |
| 20:52:39 | <monochrom> | So now I am learning representable functors and the Yoneda lemma again. |
| 20:52:56 | <Hecate> | Rembane: yes I'm very familiar with Elixir, my first job was with it :) |
| 20:53:06 | <Hecate> | monochrom: oooh! |
| 20:53:19 | → | jgeerds joins (~jgeerds@55d45b75.access.ecotel.net) |
| 20:54:20 | <Rembane> | Hecate: Sweet! What are you doing with Haskell these days? |
| 20:54:35 | <Hecate> | $dayjob technically |
| 20:54:44 | <Hecate> | I've also joined the Cabal dev team |
| 20:54:58 | <Hecate> | still doing my job as Board Member for the Haskell Foundation |
| 20:55:35 | <Hecate> | Started an alternative Hackage repository called Flora: https://twitter.com/TechnoEmpress/status/1465713784945659906 |
| 20:55:42 | <Rembane> | Cool! |
| 20:55:52 | <Hecate> | I try |
| 20:56:14 | <Rembane> | Was it you who was the force behind adding good stuff to the Haskell docs? |
| 20:56:33 | <boxscape> | "Namespaces for packages" what does this mean in practice? |
| 20:56:54 | <boxscape> | Oh I'm seeing it |
| 20:57:00 | <boxscape> | e.g. @haskell/bytestring |
| 20:57:01 | <Hecate> | boxscape: https://www.npmjs.com/package/@purescript/node-path |
| 20:57:03 | <Hecate> | yes |
| 20:57:12 | <Hecate> | Rembane: Yes :) :) :) |
| 20:57:15 | <Hecate> | 'tis me |
| 20:58:07 | <boxscape> | hmm namespaces do seem nice |
| 20:59:31 | <Rembane> | Hecate: Then it's you I'm sending grateful thoughts to when I see useful examples in base! :D |
| 20:59:36 | <Rembane> | Hecate: Thank you for doing that work! |
| 21:00:02 | → | benin joins (~benin@183.82.179.164) |
| 21:00:19 | <Hecate> | Rembane: <3 <3 <3 |
| 21:00:26 | <Hecate> | thank you as well, it really warms my heart |
| 21:00:49 | × | zincy_ quits (~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection) |
| 21:01:04 | → | zincy_ joins (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) |
| 21:03:19 | <Rembane> | Hecate: ^^ no worries, may the slugs hand you fresh lettuce |
| 21:03:23 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 21:03:23 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 21:03:26 | allbery_b | is now known as geekosaur |
| 21:06:23 | <Hecate> | awww |
| 21:06:26 | <Hecate> | this is very cute |
| 21:09:46 | × | zincy_ quits (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection) |
| 21:10:01 | × | hamflask quits (~hamflask@2600:1700:1bd8:b00f:ea60:30f6:60ab:8120) (Ping timeout: 256 seconds) |
| 21:10:50 | × | benin quits (~benin@183.82.179.164) (Quit: The Lounge - https://thelounge.chat) |
| 21:11:07 | → | benin joins (~benin@183.82.179.164) |
| 21:11:09 | → | zincy_ joins (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) |
| 21:11:59 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 21:12:00 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) (Quit: gone to sleep. ZZZzzz…) |
| 21:14:31 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 21:14:49 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 21:16:37 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 21:16:40 | × | jess quits (~jess@libera/staff/jess) () |
| 21:16:55 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 21:18:13 | × | xff0x quits (~xff0x@2001:1a81:5351:7200:9887:9cf7:56de:2525) (Ping timeout: 252 seconds) |
| 21:18:15 | × | zincy_ quits (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection) |
| 21:19:01 | → | xff0x joins (~xff0x@2001:1a81:5351:7200:d75b:ca2f:7cd3:f39) |
| 21:20:33 | → | zincy_ joins (~zincy@2a00:23c8:970c:4801:f9b9:ddeb:6361:fc1a) |
| 21:22:52 | × | zincy_ quits (~zincy@2a00:23c8:970c:4801:f9b9:ddeb:6361:fc1a) (Remote host closed the connection) |
| 21:24:39 | → | yauhsien joins (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) |
| 21:27:22 | → | acidjnk_new joins (~acidjnk@p200300d0c7271e85247d18c27da64632.dip0.t-ipconnect.de) |
| 21:29:17 | × | yauhsien quits (~yauhsien@61-231-22-20.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 21:29:57 | → | hamflask joins (~hamflask@2600:1700:1bd8:b00f:11a7:e1ed:d710:a4af) |
| 21:30:14 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
| 21:30:31 | → | hskpractice joins (~hskpracti@94-255-217-215.cust.bredband2.com) |
| 21:31:33 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) |
| 21:32:24 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 21:32:30 | → | mvk joins (~mvk@2607:fea8:5cc1:fa00::4702) |
| 21:32:38 | → | zincy_ joins (~zincy@host86-181-60-139.range86-181.btcentralplus.com) |
| 21:33:13 | × | hamflask quits (~hamflask@2600:1700:1bd8:b00f:11a7:e1ed:d710:a4af) (Client Quit) |
| 21:33:27 | → | Hashida joins (~DaSH@ro2.flokinet.is) |
| 21:33:31 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:5084:9b62:332c:deab) (Client Quit) |
| 21:34:57 | × | hskpractice quits (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
| 21:35:12 | → | hamflask joins (~hamflask@2600:1700:1bd8:b00f:8fba:5075:a126:c2f) |
| 21:35:51 | × | Hashida quits (~DaSH@ro2.flokinet.is) (Remote host closed the connection) |
| 21:36:19 | → | Hashida joins (~DaSH@ro2.flokinet.is) |
| 21:36:33 | × | Itaru quits (~DaSH@ro2.flokinet.is) (Ping timeout: 252 seconds) |
| 21:40:26 | → | xkuru joins (~xkuru@user/xkuru) |
| 21:40:52 | × | Hashida quits (~DaSH@ro2.flokinet.is) (Client Quit) |
| 21:43:53 | → | Itaru joins (~DaSH@ro2.flokinet.is) |
| 21:49:23 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds) |
| 21:50:52 | × | imdoor quits (~imdoor@balticom-142-78-50.balticom.lv) (Quit: imdoor) |
| 21:52:41 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds) |
| 21:55:02 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 22:00:12 | × | michalz quits (~michalz@185.246.204.33) (Remote host closed the connection) |
| 22:03:57 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds) |
| 22:06:14 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 22:08:52 | → | abrantesasf joins (~abrantesa@187.36.170.211) |
| 22:09:06 | → | burnsidesLlama joins (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
| 22:13:33 | × | burnsidesLlama quits (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 22:14:02 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:15:55 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 22:16:44 | × | doyougnu quits (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Read error: Connection reset by peer) |
| 22:17:15 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 22:19:52 | <Hecate> | omfg |
| 22:20:02 | <Hecate> | Flora.pm appears in the Haskell Weekly newsletter |
| 22:20:03 | <Hecate> | https://haskellweekly.news/issue/292.html |
| 22:20:04 | <Hecate> | :D |
| 22:20:33 | <Rembane> | Yay! :D |
| 22:20:55 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:21:17 | × | benin quits (~benin@183.82.179.164) (Quit: The Lounge - https://thelounge.chat) |
| 22:27:31 | × | Itaru quits (~DaSH@ro2.flokinet.is) (Ping timeout: 252 seconds) |
| 22:28:04 | → | Itaru joins (~DaSH@ro2.flokinet.is) |
| 22:29:43 | × | sagax quits (~sagax_nb@user/sagax) (Ping timeout: 252 seconds) |
| 22:30:22 | → | benin joins (~benin@183.82.179.164) |
| 22:33:01 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 252 seconds) |
| 22:35:33 | × | benin quits (~benin@183.82.179.164) (Quit: The Lounge - https://thelounge.chat) |
| 22:40:04 | → | monochrom joins (trebla@216.138.220.146) |
| 22:40:55 | × | DNH quits (~DNH@2a02:8108:1100:16d8:b4e0:9d38:46ba:cc41) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:42:50 | → | TranquilEcho joins (~grom@user/tranquilecho) |
| 22:44:01 | × | narendraj9 quits (~user@2a02:8109:b63f:ff7c::57b2) (Remote host closed the connection) |
| 22:45:29 | × | deadmarshal quits (~deadmarsh@95.38.119.253) (Ping timeout: 252 seconds) |
| 22:45:43 | <dsal> | Hecate: I love the response to the "why don't you just" on that post. |
| 22:46:55 | <Franciman> | congrawts Hecate |
| 22:48:03 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 22:49:09 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 22:50:46 | → | DNH joins (~DNH@2a02:8108:1100:16d8:a968:658b:9652:428a) |
| 22:52:45 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 22:54:02 | × | zincy_ quits (~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection) |
| 22:54:36 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 22:54:42 | → | lavaman joins (~lavaman@98.38.249.169) |
| 22:55:20 | → | kupi joins (uid212005@id-212005.hampstead.irccloud.com) |
| 22:55:25 | × | Itaru quits (~DaSH@ro2.flokinet.is) (Remote host closed the connection) |
| 22:59:03 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 23:02:41 | <sm> | yes, nice answer |
| 23:03:16 | → | burnsidesLlama joins (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
| 23:03:36 | <Hecate> | dsal, sm haha thanks :) |
| 23:03:39 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 250 seconds) |
| 23:03:40 | <Hecate> | Franciman: thanks :3 |
| 23:06:25 | <jackdk> | hey cool, the amazonka RC got into HWN too. Wish the call-to-action made it in also - if you're using it, please upgrade and test. I promise to respond promptly to issues etc |
| 23:07:28 | <Axman6> | The translation to v2.0 for one of my packages ended up being less painful than I expected |
| 23:10:06 | × | Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep) |
| 23:10:09 | × | jstolarek quits (~jstolarek@137.220.120.162) (Ping timeout: 256 seconds) |
| 23:10:33 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:6d00:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds) |
| 23:10:42 | → | juri_ joins (~juri@79.140.120.193) |
| 23:10:51 | <Axman6> | Also, getting to use generic-lens was fun, definitely cleaner than the new lenses (which I suspect have intentionally been given very long, annoying names to disuade people from using them) |
| 23:14:18 | → | deadmarshal joins (~deadmarsh@95.38.116.117) |
| 23:15:44 | <monochrom> | https://xkcd.com/1105/ applies. |
| 23:17:01 | × | jgeerds quits (~jgeerds@55d45b75.access.ecotel.net) (Ping timeout: 245 seconds) |
| 23:17:15 | × | cosimone quits (~user@93-44-186-55.ip98.fastwebnet.it) (Remote host closed the connection) |
| 23:18:29 | × | deadmarshal quits (~deadmarsh@95.38.116.117) (Ping timeout: 252 seconds) |
| 23:18:44 | <monochrom> | Also, IDEs use auto-completion to solve all long, annoying name problems. |
| 23:19:31 | <EvanR> | all? |
| 23:19:50 | <EvanR> | what about the "have to read the code" part of the problem xD |
| 23:20:08 | <hpc> | when has reading code ever been necessary to write code? :P |
| 23:20:09 | <EvanR> | "without being too annoyed" |
| 23:20:18 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 23:21:21 | × | max22- quits (~maxime@2a01cb0883359800118b3200b4a756c8.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
| 23:21:27 | <monochrom> | I thought syntax highlighting solved all reading problems. |
| 23:21:57 | <monochrom> | I mean, I thought people made that claim. |
| 23:22:54 | <hpc> | maybe 256 colors was enough for 80x24 characters of code |
| 23:23:07 | <hpc> | in today's world of portrait-oriented 4k screens, nothing less than emoji and helvetica is required |
| 23:23:08 | <geekosaur> | syntax gaslighting |
| 23:26:35 | × | xff0x quits (~xff0x@2001:1a81:5351:7200:d75b:ca2f:7cd3:f39) (Ping timeout: 268 seconds) |
| 23:27:13 | → | xff0x joins (~xff0x@2001:1a81:5351:7200:c8d5:d64b:ba01:92ce) |
| 23:29:24 | → | AlexNoo_ joins (~AlexNoo@178.34.151.83) |
| 23:32:15 | × | AlexZenon quits (~alzenon@178.34.160.14) (Ping timeout: 256 seconds) |
| 23:32:19 | × | Alex_test quits (~al_test@178.34.160.14) (Ping timeout: 256 seconds) |
| 23:32:49 | × | AlexNoo quits (~AlexNoo@178.34.160.14) (Ping timeout: 256 seconds) |
| 23:33:05 | × | jasonmason quits (~bc8165b6@cerf.good1.com) (Quit: CGI:IRC (Session timeout)) |
| 23:33:20 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds) |
| 23:34:37 | × | juri_ quits (~juri@79.140.120.193) (Ping timeout: 252 seconds) |
| 23:35:33 | → | waleee joins (~waleee@h-82-196-111-63.NA.cust.bahnhof.se) |
| 23:35:51 | → | namkeleser joins (~namkelese@101.175.102.188) |
| 23:36:35 | → | juri_ joins (~juri@178.63.35.222) |
| 23:37:29 | → | Alex_test joins (~al_test@178.34.151.83) |
| 23:38:09 | → | AlexZenon joins (~alzenon@178.34.151.83) |
| 23:41:19 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
| 23:45:23 | <shapr> | I was gonna complain about this paper https://well-typed.com/blog/2019/10/nonmoving-gc-merge/ but then I found https://www.cs.unh.edu/~dietz/appendix/pldiws20ismmmain-p64-p-18fdc64--final.pdf |
| 23:45:28 | <shapr> | thanks bgamari for doing awesome stuff! |
| 23:46:14 | <bgamari> | shapr, no worries ;) |
| 23:46:20 | <bgamari> | shapr, let me know if you have any questions |
| 23:49:29 | × | hamflask quits (~hamflask@2600:1700:1bd8:b00f:8fba:5075:a126:c2f) (Quit: Ping timeout (120 seconds)) |
| 23:50:32 | <shapr> | bgamari: only one I have at the moment is whether the non-moving GC became parallel since its merge in 8.10 ? |
| 23:50:45 | <bgamari> | shapr, I have a branch |
| 23:50:49 | <bgamari> | it currently segfaults |
| 23:50:51 | <shapr> | oh exciting! |
| 23:50:53 | <shapr> | oh no! |
| 23:50:55 | <bgamari> | I haven't had time to investigate why |
| 23:51:05 | <bgamari> | Perhaps for9.4 |
| 23:51:09 | <shapr> | yay! |
| 23:51:21 | × | dudek quits (~dudek@185.150.236.103) (Quit: Leaving) |
| 23:51:29 | × | kuribas quits (~user@ptr-25vy0i85jcl6zvp0ziu.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 23:51:33 | <shapr> | five of us are reading the alligator paper for our weekly meeting, I'll ask if anyone has interesting questions |
| 23:51:45 | × | sprout_ quits (~quassel@2a02:a467:ccd6:1:54db:f79f:90dc:3ee5) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 23:52:04 | → | sprout joins (~quassel@2a02:a467:ccd6:1:54db:f79f:90dc:3ee5) |
| 23:59:47 | × | namkeleser quits (~namkelese@101.175.102.188) (Quit: Client closed) |
All times are in UTC on 2021-12-02.