Home liberachat/#haskell: Logs Calendar

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.