Home freenode/#haskell: Logs Calendar

Logs on 2020-09-21 (freenode/#haskell)

00:00:01 × romtam quits (~romtam@s91904426.blix.com) ()
00:00:10 × atk quits (~Arch-TK@ircpuzzles/staff/Arch-TK) (Quit: Well this is unexpected.)
00:00:32 <cipherchess> In cabal, what is the difference between v2- and new-? Which one should I use?
00:00:50 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
00:00:54 × gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 272 seconds)
00:00:59 <dolio> The only difference is the name.
00:01:42 <dolio> If your cabal-install is 3 or newer (I think), those are the default, as well.
00:01:59 × ddellacosta quits (~dd@86.106.121.168) (Quit: WeeChat 2.8)
00:02:02 atk joins (~Arch-TK@ircpuzzles/staff/Arch-TK)
00:02:33 <cipherchess> Oh nice, thank you.
00:02:33 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) (Client Quit)
00:02:51 <edwardk> Cale: i figured a way to make everything work. i just had to give up on Nat.
00:02:53 <edwardk> =)
00:03:54 <edwardk> now it "just works" https://github.com/ekmett/haskell/blob/master/types/example/Vec.hs -- and you can even swap out Natural there for Int, Word, etc. to get things with smaller singletons.
00:04:09 × MorrowM quits (~max@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
00:04:48 ddellacosta joins (~dd@86.106.121.168)
00:05:41 <Cale> Well, that's definitely simpler
00:06:15 <edwardk> basically i gave in and made fully general Z' and S' data families and used them to make Word, Word16, Natural ... all inhabitable as kinds. then made 'safe' aliases for Z and S that delegate to 0 and 1+ for the nat case but otherwise use those Z' and S' hacked constructors
00:06:21 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
00:07:31 <edwardk> to be fully safe the Z and S I export should have an enumerated set of types for which they work, but the proof of concept is nice
00:07:56 <edwardk> you can't use Nat in there or you get the lack of injection issue we had before, but everything else works as expected and Nat is no longer my bottleneck
00:08:21 ph88 joins (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c)
00:08:27 <Cale> The definition of the S type family is amusing
00:09:06 shatriff joins (~vitaliish@176.52.219.10)
00:09:12 cipherchess parts (~oned4@151.51.54.223) ()
00:09:25 <edwardk> what i'll do is switch it to an open type family that way i can enumerate exactly which types it works on and users can extend that set by importing Data.Type.Unsafe and adding a type instance
00:09:47 × falafel quits (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Ping timeout: 260 seconds)
00:10:57 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:13:04 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6)
00:13:13 <edwardk> oh, i have an even better hack, one sec
00:13:26 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) (Client Quit)
00:14:27 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
00:16:41 <edwardk> there
00:16:58 <edwardk> now you need to instantiate Nice in order to unstick the evaluation of Z and S for your type
00:17:06 <edwardk> making them safer to export from Data.Type
00:17:16 <edwardk> they'll eval for naturals and any Nice type
00:17:44 sm[m] thinks why can't we have a SwapColons extension
00:18:37 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
00:19:06 × ph88 quits (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) (Ping timeout: 246 seconds)
00:19:58 <edwardk> its not currently as safe as i'd like, because you can just claim 'Nice' for any type you want. a safer version would export the Nice, but not include the defaults i guess
00:20:27 <edwardk> that way if you have your own injective zero and succ you can instantiate the class, or you can delegate to mine through Unsafe
00:20:33 <edwardk> ok, going back and writing longer instances
00:20:45 Xing`1 joins (~Xing`@185.244.214.216)
00:22:22 <ddellacosta> Baader-Meinhof is a funny thing. This morning I was checking out haskellweekly.news and clicked on a blog post about contravariant functors, as I haven't built up much of an intuition for them yet, so was interested. I skimmed it enough to note that it talked about composing predicate functions. Later, I jumped back into a side project debugging some FFI code, and searched for items on this
00:22:24 <ddellacosta> topic--found another blog post, which...talked about using contravariant functors in the context of debugging. Finally I took a break and looked up a logging library someone had mentioned earlier today here, co-log...yeah, more contravariant functors. I haven't read all of these in depth yet, but I guess the universe/my unconscious is telling me I need to stop slacking off
00:23:20 <koz_> ddellacosta: Contravariant functors are indeed cool.
00:23:31 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
00:23:36 <ddellacosta> they seem kind of mindblowing honestly
00:24:02 <koz_> ddellacosta: They can do some really cool things - discrimination sorting, for example.
00:24:17 <ddellacosta> damnit, now I have another thing to go read about lol
00:24:32 <koz_> ddellacosta: Do you know how radix sorting works?
00:24:56 <ddellacosta> unfortunately no
00:25:04 <koz_> Read that first.
00:25:21 <koz_> It'll help a lot to understand what's happening and why it has the asymptotics it claims.
00:25:48 ddellacosta pulls out the CLRS
00:27:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:28:27 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:31:22 × borne quits (~fritjof@200116b86490460022497ba62715fb72.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
00:33:00 bahamas joins (~lucian@188.24.181.166)
00:33:01 × bahamas quits (~lucian@188.24.181.166) (Changing host)
00:33:01 bahamas joins (~lucian@unaffiliated/bahamas)
00:33:12 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
00:33:18 × suppi quits (~suppi@172.246.241.246) (Ping timeout: 256 seconds)
00:35:39 suppi joins (~suppi@2605:f700:40:c00::e6fc:6842)
00:37:41 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds)
00:38:28 CMCDragonkai1 joins (~Thunderbi@124.19.3.250)
00:39:31 <ddellacosta> koz_ thank you, that was super interesting. As far as discrimination sorting, is there a better source than this? https://hackage.haskell.org/package/discrimination Everything else that comes up is for like, young child education
00:39:36 plutoniix joins (~q@ppp-223-24-94-234.revip6.asianet.co.th)
00:39:47 <Cale> ddellacosta: For the most part, a decent intuition for practically all the examples relevant to programming is just that when F is a contravariant functor, then a value of type F a is something which consumes values of type a
00:40:02 <koz_> ddellacosta: That's the source, plus its links.
00:40:05 mariatsji joins (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e)
00:40:19 <koz_> I'd read the papers it links - if you're used to algorithm literature, it's pretty readable.
00:40:31 <ddellacosta> Cale: thank you, that is helpful!
00:40:42 <ddellacosta> koz_: ah okay, I didn't see any linked papers but will look again
00:41:01 <ddellacosta> d'oh right at the top, nevermind
00:41:03 <ddellacosta> thanks koz_ !
00:41:12 <koz_> No worries! Happy reading.
00:41:29 isovector1 joins (~isovector@d207-81-8-13.bchsia.telus.net)
00:41:30 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
00:44:31 <ski> ddellacosta : one example which can be made into a contravariant functor is the write end of a concurrent communication channel (also a write view on a mutable cell)
00:45:07 × mariatsji quits (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Ping timeout: 272 seconds)
00:45:42 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
00:45:56 ddellacosta thinks about it
00:46:27 <ski> ("can be made", in this case, means that you allow attaching an arbitrary preprocessing step (function), that you apply before you write to the channel/cell)
00:46:28 ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
00:46:55 <ddellacosta> ski: okay that's helpful, one thing I read earlier today was that the order of processing is conceptually "reversed" when compared to a covariant functor
00:47:05 <ddellacosta> I mean wrt contramap
00:47:31 <ski> yes
00:48:25 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
00:48:30 <ddellacosta> now I'm trying to understand how that connects to what Cale said
00:49:15 <ski> well, the write end/view of the channel/cell consumes values, in that you feed a value to it, when writing
00:49:17 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
00:50:18 <ski> (and read end/view will produce values, when reading. so that can be made into a covariant functor (by allowing attaching an arbitrary post-processing step (function), after reading))
00:51:31 <ddellacosta> okay thank you ski , I think I need to think about that for a bit
00:52:04 × plutoniix quits (~q@ppp-223-24-94-234.revip6.asianet.co.th) (Ping timeout: 246 seconds)
00:52:06 <ddellacosta> like intuitively it makes sense, but the deeper structure of it all is eluding me still
00:52:28 <ski> (if you want to, you could try to wrap `Chan' or `IORef' into such read and write ends/views. and then see if you can, possibly with some modification, make the read ones covariant functors, and the write ones contravariant functors)
00:52:57 <ddellacosta> okay interesting
00:53:15 <ski> (also providing some relevant operations on the new data types (which are to be exported abstractly))
00:53:31 gmt joins (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net)
00:53:40 <Cale> newtype WriteEnd a = MkWriteEnd { writeTo :: a -> IO () }
00:54:12 <ski> it might perhaps sometimes be nice to have a callback that you want to pass a channel to, but you only want it to write to the channel, not read, so you only pass it the write end
00:54:26 <ski> Cale : hah :)
00:54:39 <Cale> ddellacosta: Try writing the instance for that :)
00:54:53 <ddellacosta> Cale: okay cool
00:55:01 <ddellacosta> and ski the last thing you just said clicked, thank you
00:55:32 <ddellacosta> and I can actually kind of see how that's like a predicate now in the general sense
00:56:26 <Cale> Yeah, there will be basically no difference in what the instance looks like
01:00:11 <ski> ddellacosta : btw, for the read end, you can try to make a version of `getChanContents' as well
01:00:53 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
01:00:56 <ddellacosta> okay
01:02:58 xff0x joins (~fox@2001:1a81:53e2:5200:158c:d17f:d83e:dc7f)
01:03:23 × zopsi quits (zopsi@2600:3c00::f03c:91ff:fe14:551f) (Remote host closed the connection)
01:03:32 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
01:05:18 plutoniix joins (~q@175.176.222.7)
01:05:23 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:05:35 wroathe_ joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:06:08 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 272 seconds)
01:06:24 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
01:06:30 zopsi joins (~zopsi@irc.dir.ac)
01:06:46 × xff0x_ quits (~fox@port-92-195-46-13.dynamic.as20676.net) (Ping timeout: 272 seconds)
01:08:27 <ski> hm, pondering `dupChan'
01:09:27 <ski> at first sight, it would seen one would do `WriteChan a -> IO (ReadChan a)' ..
01:09:34 <koz_> Anime has ruined concurrency for me - every time I see any variant of 'chan' I'm amused.
01:09:56 wroathe_ is now known as wroathe
01:10:07 <ski> .. however, this isn't compatible with having `WriteChan' a contravariant functor
01:11:06 <ski> `Chan a -> IO (ReadChan a)' would be possible, of course (just `dupChan' and convert to `ReadChan')
01:13:26 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Read error: Connection reset by peer)
01:14:01 mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
01:14:40 × g-belmonte quits (~g-belmont@2804:14c:8786:9312:3638:eaf5:dc36:146d) (Quit: Leaving)
01:14:55 × arahael quits (~arahael@118.208.100.107) (Ping timeout: 240 seconds)
01:15:14 × ddellacosta quits (~dd@86.106.121.168) (Ping timeout: 256 seconds)
01:15:47 <ski> however, it seems that if one had a difunctor, `RWChan a b' being contravariant in `a' (write end type) and covariant in `b' (read end type), then one could do `RWChan a b -> IO (ReadChan b)' (obviously also `RWChan a b -> IO (RWChan a b)' would work)
01:17:24 arahael joins (~arahael@203.194.42.27)
01:17:25 × zopsi quits (~zopsi@irc.dir.ac) (Max SendQ exceeded)
01:18:14 zopsi joins (zopsi@2600:3c00::f03c:91ff:fe14:551f)
01:18:15 <ski> hm. although if one takes advantage if the fact that `Chan', which `ReadChan' is presumably implemented in terms of, also contains the write end, one could have `ReadChan a -> IO (ReadChan a)' .. although this feels like cheating a bit, since a direct reimplementation, separating the read and write ends, rather than just hiding one or the other, couldn't do this
01:21:20 xerox_ joins (~xerox@unaffiliated/xerox)
01:21:28 × ntwhaaci^ quits (ntwhaaci@ip98-184-89-2.mc.at.cox.net) ()
01:21:38 × CMCDragonkai1 quits (~Thunderbi@124.19.3.250) (Ping timeout: 256 seconds)
01:22:21 × zopsi quits (zopsi@2600:3c00::f03c:91ff:fe14:551f) (Max SendQ exceeded)
01:22:46 zopsi joins (zopsi@2600:3c00::f03c:91ff:fe14:551f)
01:25:36 wei2912 joins (~wei2912@unaffiliated/wei2912)
01:26:56 × zopsi quits (zopsi@2600:3c00::f03c:91ff:fe14:551f) (Max SendQ exceeded)
01:27:20 zopsi joins (~zopsi@irc.dir.ac)
01:27:32 zaquest joins (~notzaques@5.128.210.178)
01:28:17 qualiaqq joins (~user@47.189.249.188)
01:31:26 × zopsi quits (~zopsi@irc.dir.ac) (Max SendQ exceeded)
01:31:50 zopsi joins (~zopsi@irc.dir.ac)
01:36:34 fulc9277 joins (~fulc927@unaffiliated/fulc927)
01:36:38 <zebrag> I'm trying to understand what is "existential" in "existential types". Is it related to quantifiers? In what way?
01:37:38 <ski> yes
01:38:13 <ski> do you understand what's universal about polymorphism ?
01:39:12 <MarcelineVQ> Cale: what's that comparing <> example you use all the time?
01:39:22 <ski> @where monoids
01:39:23 <lambdabot> comment on "Monoids? In my programming language?" by Cale in 2008 (or 2009 ?) at <http://www.reddit.com/r/programming/comments/7cf4r/monoids_in_my_programming_language/c06adnx> about a use of `
01:39:23 <lambdabot> instance Monoid a => Monoid (rho -> a)'
01:39:25 × fulc927 quits (~fulc927@unaffiliated/fulc927) (Ping timeout: 240 seconds)
01:39:33 <MarcelineVQ> :D
01:39:35 × adamwespiser quits (~adam_wesp@209.6.42.110) (Ping timeout: 272 seconds)
01:39:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
01:40:13 <zebrag> ski: I believe I understand what's universal about polymorphism
01:40:14 × howdoi quits (uid224@gateway/web/irccloud.com/x-jznybxwchugeubau) (Quit: Connection closed for inactivity)
01:40:41 hololeap joins (~hololeap@unaffiliated/hololeap)
01:40:44 <ski> zebrag : and you understand rank-2 ?
01:41:09 adamwespiser joins (~adam_wesp@209.6.42.110)
01:41:32 <zebrag> ski: do you mean about the rho being in a negative position?
01:42:03 <ski> `rho' ?
01:42:40 <zebrag> wasn't meant for me, instance Monoid a => Monoid (rho -> a)'
01:42:56 <zebrag> so no I don't quite undestand rank-2
01:42:58 <ski> nah, that was answering another question
01:43:27 <ski> well, let me try to fast-forward over `forall'
01:44:06 <zebrag> should read that: https://wiki.haskell.org/Rank-N_types
01:44:17 Jeanne-Kamikaze joins (~Jeanne-Ka@static-198-54-131-92.cust.tzulo.com)
01:44:26 <ski> in Haskell, it happens that many uses of `forall' are implicit. but that doesn't mean that they're not there. in another language, they could be required to be explicit, always
01:44:27 <zebrag> back in a jif
01:45:11 <ski> so if you see e.g.
01:45:19 <ski> length :: [a] -> Int
01:45:21 <ski> or
01:45:31 <ski> take :: Int -> [a] -> [a]
01:45:32 <ski> or
01:45:41 <ski> sort :: Ord a => [a] -> [a]
01:45:49 <ski> then these really mean
01:45:58 <ski> length :: forall a. [a] -> Int
01:46:04 <ski> take :: forall a. Int -> [a] -> [a]
01:46:08 <ski> sort :: forall a. Ord a => [a] -> [a]
01:46:46 <zebrag> ok
01:47:01 <ski> however : this does not mean that e.g. `[a] -> [a]' "really means" `forall a. [a] -> [a]' !
01:47:44 <ski> since, in that case, `foo :: ([a] -> [a]) -> ([a] -> [a])' could be argued to "really mean" `foo :: (forall a. [a] -> [a]) -> (forall a. [a] -> [a])', which is incorrect
01:48:17 <ski> similarly, `data Foo a = MkFoo ([a] -> [a])' does not mean `data Foo a = MkFoo (forall a. [a] -> [a])'
01:48:40 <ski> the implicit `forall' is only inserted, right after the `::', in a type signature
01:49:43 <ski> and even then, there are a few exceptions, which boil down to the type variable(s) in question already being in scope. e.g. in `data Foo a = MkFoo {unFoo :: [a] -> [a]}', `a' is already in scope, bound by the `data Foo a =' "head" part
01:50:23 <ski> also, in `class Eq a where (==) :: a -> a -> Bool', `a' is already in scope, when we reach the type signature. so, this does not mean `class Eq a where (==) :: forall a. a -> a -> Bool'
01:50:37 <ski> (`(==)' is a monomorphic class method)
01:50:47 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Remote host closed the connection)
01:51:06 <ski> (i mention this, because these seems to be common confusions about where implicit `forall's are inserted)
01:51:15 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
01:51:39 <ski> anyway, `length :: forall a. [a] -> Int' means that : for every type `a', `length' can be used as having type `[a] -> Int'
01:51:59 <ski> strictly speaking, `length' is not a function, but a "polymorphic value"
01:52:48 × cosimone quits (~cosimone@5.170.241.4) (Quit: Quit.)
01:53:17 <ski> however, when going from `length :: forall a. [a] -> Int' to say `length :: [String] -> Int', specializing the polymorphic value, to a function in this case, we don't actually write anything more than `length'
01:53:44 inkbottle joins (~inkbottle@aaubervilliers-654-1-112-119.w86-198.abo.wanadoo.fr)
01:54:01 <ski> (well, there is now an extension that allows one to explicitly write the specialization as `length @String', meaning that we pick `a' to be `String', so that this whole thing has type `[String] -> Int')
01:54:13 × zebrag quits (~inkbottle@aaubervilliers-654-1-99-86.w86-212.abo.wanadoo.fr) (Ping timeout: 264 seconds)
01:54:20 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6)
01:54:27 tsrt^ joins (tsrt@ip98-184-89-2.mc.at.cox.net)
01:55:12 ddellacosta joins (~dd@86.106.121.168)
01:55:56 × adamwespiser quits (~adam_wesp@209.6.42.110) (Remote host closed the connection)
01:56:32 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
01:57:48 × suppi quits (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 246 seconds)
01:58:17 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
02:00:44 <inkbottle> ski: zebrag -> inkbottle; I'm still reading https://wiki.haskell.org/Rank-N_types, I think it was a very good suggestion
02:01:00 suppi joins (~suppi@2605:f700:40:c00::e6fc:6842)
02:01:51 <ski> ah, ok
02:02:22 × xff0x quits (~fox@2001:1a81:53e2:5200:158c:d17f:d83e:dc7f) (Ping timeout: 260 seconds)
02:04:08 xff0x joins (~fox@2001:1a81:53e9:6d00:158c:d17f:d83e:dc7f)
02:04:13 blankhart joins (~blankhart@pool-100-35-219-3.nwrknj.fios.verizon.net)
02:04:23 <ski> inkbottle : did the above explanation make sense, so far ?
02:07:34 × isovector1 quits (~isovector@d207-81-8-13.bchsia.telus.net) (Ping timeout: 272 seconds)
02:09:14 eric joins (~eric@191.193.105.46)
02:09:25 × fulc9277 quits (~fulc927@unaffiliated/fulc927) (Ping timeout: 240 seconds)
02:09:50 × eric quits (~eric@191.193.105.46) (Read error: Connection reset by peer)
02:09:59 × danvet_ quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
02:10:01 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
02:10:45 <inkbottle> ski: yes, they did
02:12:47 <ski> ok
02:13:05 <ski> so, if you have
02:13:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:13:22 <ski> blah :: (forall a. [a] -> [a]) -> [String] -> [String]
02:13:35 <ski> blah f ss = map f (f ss)
02:14:11 notzmv` joins (~user@177.103.86.92)
02:14:16 <ski> what this means is that `blah' itself is not polymorphic. rather, it requires its first argument (a callback function), to be polymorphic
02:15:31 <ski> so, you can e.g. call `blah id ["foo","bar"]', but you can't call `blah (map toUpper) ["foo","bar"]', since `map toUpper' has type `String -> String' (that is, `[Char] -> [Char]'), so is not polymorphic
02:15:58 × notzmv quits (~user@unaffiliated/zmv) (Disconnected by services)
02:16:11 × notzmv` quits (~user@177.103.86.92) (Changing host)
02:16:11 notzmv` joins (~user@unaffiliated/zmv)
02:16:13 notzmv` is now known as notzmv
02:16:24 <ski> and, in this case, `blah' uses the fact that `f' is polymorphic, by picking two different types to use for `a', at the two different uses of `f' in the body
02:16:50 <ski> (can you see if you can figure out which type `a' will be, in each of those two cases ?)
02:17:38 <ski> (btw, in case, it's not totally obvious, the signature `blah :: forall a. ([a] -> [a]) -> [String] -> [String]' would not work at all, for this implementation of `blah')
02:18:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
02:19:01 <ski> if you see `foo :: forall a. ..a..', then that means that the caller/user/consumer of `foo' will get to pick a type for `a'. while the callee/implementor/producer/definer of `foo', which is the definition/body for it, will have to make sure to work for any choice that could be made. may not assuming anything about `a'
02:19:06 <inkbottle> hang on...
02:19:18 × polyrain quits (~polyrain@2001:8003:e501:6901:3846:7fa4:c749:eb08) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:19:25 × ystael quits (~ystael@209.6.50.55) (Ping timeout: 240 seconds)
02:19:38 <inkbottle> still reading what you wrote
02:19:55 <ski> to the body of `foo', `a' acts like an unknown/forgotten/hidden/opaque/abstract/"skolem"/rigid type, that it may assume nothing about
02:20:36 drbean joins (~drbean@TC210-63-209-28.static.apol.com.tw)
02:20:39 <ski> in the case of `sort :: forall a. Ord a => [a] -> [a]', the implementation of `sort' may assume that `a' is an instance of `Ord', and so can use the methods of `Ord' on values of type `a'. but can assume nothing else about `a'
02:21:14 <ski> `foo' can't "look inside" values of type `a'. neither can `sort', apart from via the methods of `Ord'
02:21:36 notzmv` joins (~user@177.103.86.92)
02:22:22 <ski> if you have say `foo :: forall a. (a -> Bool) -> ..a..', then `foo' can pass a value of type `a' to its callback argument (which is allowed to know what type `a' is, since it's provided by the caller, who picks `a'), and so is able to extract a `Bool' of info from the `a' value, using that
02:22:56 <inkbottle> ok
02:23:06 × notzmv` quits (~user@177.103.86.92) (Changing host)
02:23:06 notzmv` joins (~user@unaffiliated/zmv)
02:23:09 × notzmv quits (~user@unaffiliated/zmv) (Disconnected by services)
02:23:21 notzmv` is now known as notzmv
02:23:30 <ski> however, in the case of the rank-two `blah', the caller of the polymorphic `f' is `blah' itself
02:24:04 <ski> so, while the caller of the polymorphic `foo' was to choose `a', and the callee/implementation couldn't assume anything about `a'
02:25:19 <ski> in the case of the rank-two `blah', these two rôles are reversed : the callee/implementation of `blah' is the one that can pick and choose types for `a', while the caller of `blah' can't assume anything about `a' (and hence must pass a polymorphic callback, that assumes nothing about `a')
02:25:22 ystael joins (~ystael@209.6.50.55)
02:26:23 × machinedgod quits (~machinedg@d67-193-126-196.home3.cgocable.net) (Ping timeout: 265 seconds)
02:27:04 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
02:27:10 <ski> this reversal of rôles between caller/user/consumer and callee/implementor/producer/definer, as pertains to who may pick and choose the actual type to use for the type variable `a', and who has to make do with the choice that's being made, is due to, in the rank-two `blah', having `forall' "to the left (inside)" of a function arrow `->'
02:27:28 hackage containers 0.6.4.1 - Assorted concrete container types https://hackage.haskell.org/package/containers-0.6.4.1 (dfeuer)
02:27:38 <ski> if you have `foo :: forall a. (..a.. -> ..a..)', then the caller picks `a'
02:28:04 <ski> if you have `foo :: ... -> (forall a. ..a..)', then the caller still picks `a' (but the first argument isn't allowed to mention `a')
02:28:30 <ski> (note that e.g. `take :: forall a. Int -> [a] -> [a]' is basically the same thing as `take :: Int -> forall a. [a] -> [a]')
02:29:00 <ski> but if you have `foo :: (forall a. ..a..) -> ...', the rank-two case, then the callee will get to pick `a'
02:29:49 × blankhart quits (~blankhart@pool-100-35-219-3.nwrknj.fios.verizon.net) (Ping timeout: 260 seconds)
02:30:21 × suppi quits (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 246 seconds)
02:30:44 <ski> if we had `foo :: ((forall a. ..a..) -> ...) -> ...', this would be rank-three (having a `forall' "inside, to the left of", two function arrows `->'), then the rôles are reversed again, so that the caller again picks `a' (by selecting a rank-two callback to pass, which will pick an `a' (or several), to use with its polymorphic callback)
02:30:53 <ski> and so on, for higher ranks ..
02:31:32 blankhart joins (~blankhart@pool-100-35-219-3.nwrknj.fios.verizon.net)
02:32:09 adamwespiser joins (~adam_wesp@209.6.42.110)
02:32:10 lagothrix is now known as Guest42888
02:32:10 × Guest42888 quits (~lagothrix@unaffiliated/lagothrix) (Killed (rothfuss.freenode.net (Nickname regained by services)))
02:32:16 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
02:32:18 <ski> (if there's several `forall's in a type, then we say the overall rank is the maximum of the individual ranks of the `forall's in it. ordinary polymorphic operations are rank-one. monomorphic operations could be said to be rank-zero, i suppose ..)
02:32:26 <ski> inkbottle : is this making sense ?
02:34:05 <inkbottle> I'm not done reading, I've been interrupted
02:34:30 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
02:35:00 <ski> take your time. if anything is unclear, if you want further elaboration, or you have questions or comments, please do tell
02:36:02 <ski> here's one other example of a rank-two (and in this case also polymorphic) operation :
02:36:13 <ski> runST :: forall a. (forall s. ST s a) -> a
02:38:23 <inkbottle> The explanation in terms of "who pick 'a" is very interesting
02:38:37 <ski> for "running" (executing/performing) an `ST s'-action (`ST s' expressing a kind of state effects, where one can dynamically allocate mutable reference cells (and arrays), and read from and write to them. implemented in terms of actual update-in-place, unlike say `State s' (which has a single global state `s', no dynamic allocation))
02:39:26 <ski> yea, that's the main thing that happens, as we pass to higher ranks, we alternate between caller and callee picking
02:40:04 <ski> the usual reason for wanting to define a rank-two operation is that you actually want to use a callback with multiple choices for your type variable(s)
02:40:20 <ski> (as in my `blah' example a bit up)
02:40:38 fulc9277 joins (~fulc927@unaffiliated/fulc927)
02:40:38 mariatsji joins (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e)
02:41:19 <ski> another reason is to want to hide some implementation detail of the function, from its caller. that is, hide which (possiby single) type that the implementation uses
02:42:17 <ski> here's some kind of example of that. consider
02:42:28 hackage monad-memo 0.5.2 - Memoization monad transformer https://hackage.haskell.org/package/monad-memo-0.5.2 (EduardSergeev)
02:42:45 <ski> newtype StateT s m a = MkStateT (s -> m (a,s))
02:43:08 asan joins (~yan4138@114.84.148.87)
02:43:14 <ski> there is a function
02:43:16 <ski> @type mapStateT
02:43:18 <lambdabot> (m (a, s) -> n (b, s)) -> StateT s m a -> StateT s n b
02:43:46 howdoi joins (uid224@gateway/web/irccloud.com/x-mtwkarqdregvoupa)
02:44:00 <ski> that can be used to change the `m' in `StateT s m a' to another monad, `n' (also here swapping `a' out for `b')
02:44:47 <ski> however, in the callback, we can see that we're handed an action of type `m (a,s)', that will produce a pair. and we're to give back a new action of type `n (b,s)', that will also produce a pair
02:45:01 <ski> one might consider this as "implementation detail leaking"
02:45:08 <ski> so, one could make a variant
02:45:26 pera joins (~pera@unaffiliated/pera)
02:45:32 × mariatsji quits (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Ping timeout: 260 seconds)
02:45:48 <ski> mapStateT' :: (forall h. m h -> n h) -> StateT s m a -> StateT s n a
02:46:46 <ski> where `h' here hides the pair type from the caller of the function. in some cases, this can be useful to prevent the callback that the caller provides, from messing around with the internal implementation (the values of the "hidden" type `h')
02:47:00 TooDifficult joins (~TooDiffic@139.59.59.230)
02:47:44 suppi joins (~suppi@172.246.241.246)
02:48:07 <ski> inkbottle : is that reasonably clear ?
02:48:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:49:59 <ski> (there are probably more suggestive examples of this "information hiding" capability of rank-two .. but i can't think offhand of one that would be quick to showcase)
02:52:34 dansho joins (~dansho@ip68-108-167-185.lv.lv.cox.net)
02:53:26 Stanley00 joins (~stanley00@unaffiliated/stanley00)
02:55:04 × suppi quits (~suppi@172.246.241.246) (Ping timeout: 272 seconds)
02:55:47 × Volt_ quits (~Volt_@c-73-145-164-70.hsd1.mi.comcast.net) (Quit: )
02:55:47 × danso quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
02:56:22 danso joins (~dan@107-190-41-58.cpe.teksavvy.com)
02:56:50 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
02:57:27 suppi joins (~suppi@2605:f700:40:c00::e6fc:6842)
02:58:14 × ryansmccoy quits (~ryansmcco@156.96.151.132) (Ping timeout: 272 seconds)
02:58:41 ryansmccoy joins (~ryansmcco@193.37.254.27)
02:59:45 × theDon quits (~td@muedsl-82-207-238-073.citykom.de) (Ping timeout: 240 seconds)
03:00:01 × Xing`1 quits (~Xing`@185.244.214.216) ()
03:00:20 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
03:01:43 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
03:01:53 theDon joins (~td@muedsl-82-207-238-036.citykom.de)
03:03:54 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
03:04:48 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
03:09:40 notzmv` joins (~user@177.103.86.92)
03:11:46 toorevitimirp joins (~tooreviti@117.182.182.33)
03:12:10 iscke joins (~black@60.225.157.201)
03:12:45 × notzmv quits (~user@unaffiliated/zmv) (Ping timeout: 240 seconds)
03:12:56 <ski> inkbottle : anyway .. if you want to, perhaps we could continue this conversation later (getting to existentials, hopefully), as it's quite late here
03:13:25 × notzmv` quits (~user@177.103.86.92) (Changing host)
03:13:25 notzmv` joins (~user@unaffiliated/zmv)
03:13:30 notzmv` is now known as notzmv
03:14:05 × bloodstalker quits (~bloodstal@46.166.187.178) (Remote host closed the connection)
03:14:35 × ryansmccoy quits (~ryansmcco@193.37.254.27) (Ping timeout: 240 seconds)
03:14:50 petersen joins (~petersen@redhat/juhp)
03:16:57 ryansmccoy joins (~ryansmcco@68.235.48.108)
03:17:39 × gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
03:18:48 × acidjnk_new2 quits (~acidjnk@p200300d0c736584378afc0f7e05aaafd.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
03:21:09 × teardown quits (~user@unaffiliated/mrush) (Ping timeout: 260 seconds)
03:22:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
03:27:40 mmohammadi981261 joins (~mmohammad@2.178.188.114)
03:30:32 modaljunk joins (~modaljunk@gateway/tor-sasl/modaljunk)
03:30:52 × modaljunk quits (~modaljunk@gateway/tor-sasl/modaljunk) (Remote host closed the connection)
03:31:18 modaljunk joins (~modaljunk@gateway/tor-sasl/modaljunk)
03:34:44 × TooDifficult quits (~TooDiffic@139.59.59.230) (Quit: TooDifficult)
03:35:04 TooDifficult joins (~TooDiffic@139.59.59.230)
03:36:07 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
03:38:14 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
03:39:24 mirrorbird joins (~psutcliff@m83-187-173-228.cust.tele2.se)
03:39:54 × TooDifficult quits (~TooDiffic@139.59.59.230) (Client Quit)
03:43:43 × suppi quits (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 272 seconds)
03:45:28 hackage stm-actor 0.1.0.0 - See the README https://hackage.haskell.org/package/stm-actor-0.1.0.0 (sgschlesinger)
03:45:37 × ericsagnes quits (~ericsagne@2405:6580:0:5100:5585:9ff6:72b9:d99a) (Ping timeout: 260 seconds)
03:47:29 isovector1 joins (~isovector@node-1w7jr9squrfoy3fci95ksrhpu.ipv6.telus.net)
03:47:45 × asan quits (~yan4138@114.84.148.87) (Ping timeout: 240 seconds)
03:48:01 asan joins (~yan4138@124.78.128.72)
03:49:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:53:47 TooDifficult joins (~TooDiffic@139.59.59.230)
03:54:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
03:54:56 suppi joins (~suppi@172.246.241.246)
03:55:07 × modaljunk quits (~modaljunk@gateway/tor-sasl/modaljunk) (Remote host closed the connection)
03:55:33 modaljunk joins (~modaljunk@gateway/tor-sasl/modaljunk)
03:56:13 kini1 joins (~kini@195.206.169.184)
03:56:29 × modaljunk quits (~modaljunk@gateway/tor-sasl/modaljunk) (Client Quit)
03:57:53 ericsagnes joins (~ericsagne@2405:6580:0:5100:25d0:9c91:85b6:2191)
04:06:38 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
04:06:39 Sanchayan joins (~Sanchayan@122.167.114.73)
04:11:27 × dansho quits (~dansho@ip68-108-167-185.lv.lv.cox.net) (Remote host closed the connection)
04:11:52 dansho joins (~dansho@ip68-108-167-185.lv.lv.cox.net)
04:12:02 day_ joins (~Unknown@unaffiliated/day)
04:12:27 × dale quits (dale@unaffiliated/dale) (Remote host closed the connection)
04:14:35 dale joins (dale@2600:3c02::f03c:92ff:feb4:61d1)
04:14:56 × dale quits (dale@2600:3c02::f03c:92ff:feb4:61d1) (Remote host closed the connection)
04:15:10 × day quits (~Unknown@unaffiliated/day) (Ping timeout: 258 seconds)
04:15:10 day_ is now known as day
04:16:19 dale joins (dale@unaffiliated/dale)
04:16:40 mrlazos joins (~mrlazos@ppp046176231124.access.hol.gr)
04:17:23 × mrlazos quits (~mrlazos@ppp046176231124.access.hol.gr) (Remote host closed the connection)
04:18:10 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
04:19:29 × ddellacosta quits (~dd@86.106.121.168) (Ping timeout: 260 seconds)
04:19:29 josh joins (~josh@c-67-164-104-206.hsd1.ca.comcast.net)
04:20:18 × isovector1 quits (~isovector@node-1w7jr9squrfoy3fci95ksrhpu.ipv6.telus.net) (Remote host closed the connection)
04:20:45 × suppi quits (~suppi@172.246.241.246) (Ping timeout: 260 seconds)
04:22:34 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:23:28 hackage stm-actor 0.1.1.0 - See the README https://hackage.haskell.org/package/stm-actor-0.1.1.0 (sgschlesinger)
04:24:41 × josh quits (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Remote host closed the connection)
04:25:14 josh joins (~josh@c-67-164-104-206.hsd1.ca.comcast.net)
04:25:25 × roconnor quits (~roconnor@host-45-78-255-115.dyn.295.ca) (Ping timeout: 260 seconds)
04:26:57 hackage stm-actor 0.1.1.1 - A simplistic actor model based on STM https://hackage.haskell.org/package/stm-actor-0.1.1.1 (sgschlesinger)
04:29:36 × josh quits (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
04:29:51 × mmohammadi981261 quits (~mmohammad@2.178.188.114) (Quit: I quit (╯°□°)╯︵ ┻━┻)
04:30:31 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
04:31:20 × brettgilio quits (~brettgili@brettgilio.com) (Quit: Long live IRC! <https://brettgilio.com>)
04:31:58 hackage wai-extra 3.0.32 - Provides some basic WAI handlers and middleware. https://hackage.haskell.org/package/wai-extra-3.0.32 (MichaelSnoyman)
04:32:33 brettgilio joins (~brettgili@brettgilio.com)
04:33:05 × Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 240 seconds)
04:35:12 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
04:38:43 × TooDifficult quits (~TooDiffic@139.59.59.230) (Ping timeout: 260 seconds)
04:41:35 mariatsji joins (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e)
04:42:26 ggole joins (~ggole@2001:8003:8119:7200:e0af:f6f1:e650:ba35)
04:42:39 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 246 seconds)
04:44:24 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
04:45:17 × adamwespiser quits (~adam_wesp@209.6.42.110) (Remote host closed the connection)
04:46:09 × mariatsji quits (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Ping timeout: 246 seconds)
04:46:16 TooDifficult joins (~TooDiffic@139.59.59.230)
04:48:58 falafel joins (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a)
04:49:13 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
04:49:15 suppi joins (~suppi@172.246.241.246)
04:49:57 adamwespiser joins (~adam_wesp@209.6.42.110)
04:51:57 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Quit: Lost terminal)
04:54:10 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:56:28 × blankhart quits (~blankhart@pool-100-35-219-3.nwrknj.fios.verizon.net) (Quit: WeeChat 2.8)
04:56:33 knupfer joins (~Thunderbi@i5E86B42C.versanet.de)
04:57:52 × toorevitimirp quits (~tooreviti@117.182.182.33) (Ping timeout: 256 seconds)
04:57:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
04:59:01 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
04:59:06 toorevitimirp joins (~tooreviti@117.182.182.33)
05:01:42 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:04:46 × TooDifficult quits (~TooDiffic@139.59.59.230) (Ping timeout: 246 seconds)
05:06:26 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
05:06:56 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
05:07:34 × knupfer quits (~Thunderbi@i5E86B42C.versanet.de) (Ping timeout: 246 seconds)
05:09:20 × suppi quits (~suppi@172.246.241.246) (Ping timeout: 272 seconds)
05:09:30 suppi joins (~suppi@2605:f700:40:c00::e6fc:6842)
05:14:32 Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362)
05:14:53 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 260 seconds)
05:15:53 Lord_of_Life_ is now known as Lord_of_Life
05:16:40 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
05:16:56 × revprez_anzio quits (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 272 seconds)
05:22:13 × mitchellsalad quits (uid40617@gateway/web/irccloud.com/x-ahcdpvrnkonimwkz) (Quit: Connection closed for inactivity)
05:24:18 × suppi quits (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 246 seconds)
05:24:46 TooDifficult joins (~TooDiffic@139.59.59.230)
05:24:59 × asan quits (~yan4138@124.78.128.72) (Ping timeout: 240 seconds)
05:25:17 asan joins (~yan4138@114.84.148.87)
05:25:44 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:25:48 coot joins (~coot@37.30.49.42.nat.umts.dynamic.t-mobile.pl)
05:26:14 shafox joins (~shafox@106.51.234.111)
05:31:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
05:33:25 × mirrorbird quits (~psutcliff@m83-187-173-228.cust.tele2.se) (Quit: Leaving)
05:34:52 × jedws quits (~jedws@121.209.139.222) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:35:54 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:35:56 × ryansmccoy quits (~ryansmcco@68.235.48.108) (Ping timeout: 272 seconds)
05:36:06 ryansmccoy joins (~ryansmcco@193.37.254.27)
05:36:32 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6)
05:37:33 bahamas joins (~lucian@unaffiliated/bahamas)
05:40:16 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
05:44:58 hackage monad-memo 0.5.3 - Memoization monad transformer https://hackage.haskell.org/package/monad-memo-0.5.3 (EduardSergeev)
05:46:30 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
05:47:49 × toorevitimirp quits (~tooreviti@117.182.182.33) (Quit: Konversation terminated!)
05:48:36 × abhixec quits (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
05:48:43 toorevitimirp joins (~tooreviti@117.182.182.33)
05:53:23 × Jeanne-Kamikaze quits (~Jeanne-Ka@static-198-54-131-92.cust.tzulo.com) (Quit: Leaving)
05:53:45 × drbean quits (~drbean@TC210-63-209-28.static.apol.com.tw) (Ping timeout: 240 seconds)
05:55:04 × TooDifficult quits (~TooDiffic@139.59.59.230) (Quit: TooDifficult)
05:55:12 josh joins (~josh@c-67-164-104-206.hsd1.ca.comcast.net)
05:57:05 SanchayanM joins (~Sanchayan@106.201.114.230)
05:57:28 × wavemode quits (~wavemode@097-070-075-143.res.spectrum.com) (Ping timeout: 272 seconds)
05:58:35 × toorevitimirp quits (~tooreviti@117.182.182.33) (Remote host closed the connection)
05:58:39 × Sanchayan quits (~Sanchayan@122.167.114.73) (Ping timeout: 260 seconds)
05:59:54 toorevitimirp joins (~tooreviti@117.182.182.33)
06:00:02 × kini1 quits (~kini@195.206.169.184) ()
06:01:36 × josh quits (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Remote host closed the connection)
06:02:25 mariatsji joins (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e)
06:02:50 × mariatsji quits (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Remote host closed the connection)
06:03:13 × Turmfalke quits (~user@unaffiliated/siracusa) (Quit: Bye!)
06:04:04 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
06:04:51 × Gerula quits (~Gerula@unaffiliated/gerula) (Ping timeout: 260 seconds)
06:05:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:05:31 × adamwespiser quits (~adam_wesp@209.6.42.110) (Remote host closed the connection)
06:05:49 suppi joins (~suppi@172.246.241.246)
06:05:52 takuan_dozo joins (~takuan@178-116-218-225.access.telenet.be)
06:06:53 drbean joins (~drbean@TC210-63-209-64.static.apol.com.tw)
06:07:11 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 260 seconds)
06:07:57 mmohammadi981261 joins (~mmohammad@2.178.188.114)
06:08:46 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
06:12:28 × suppi quits (~suppi@172.246.241.246) (Ping timeout: 258 seconds)
06:12:37 × plutoniix quits (~q@175.176.222.7) (Remote host closed the connection)
06:14:57 Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch)
06:15:21 cfricke joins (~cfricke@unaffiliated/cfricke)
06:15:26 × toorevitimirp quits (~tooreviti@117.182.182.33) (Remote host closed the connection)
06:16:39 toorevitimirp joins (~tooreviti@117.182.182.33)
06:20:17 × Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 244 seconds)
06:21:18 unknown joins (~unknown@s91904426.blix.com)
06:21:31 Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch)
06:22:23 suppi joins (~suppi@2605:f700:40:c00::e6fc:6842)
06:22:24 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
06:28:17 × sfvm quits (~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine)
06:31:30 kayvan``` joins (~user@52-119-115-243.PUBLIC.monkeybrains.net)
06:32:26 jedws joins (~jedws@121.209.139.222)
06:32:43 josh joins (~josh@c-67-164-104-206.hsd1.ca.comcast.net)
06:33:04 × kayvan`` quits (~user@52-119-115-243.PUBLIC.monkeybrains.net) (Ping timeout: 256 seconds)
06:36:03 × Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 246 seconds)
06:36:34 mirrorbird joins (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2)
06:39:52 mariatsji joins (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e)
06:40:20 × mariatsji quits (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Remote host closed the connection)
06:40:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
06:40:27 mariatsji joins (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e)
06:40:32 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
06:41:11 adamwespiser joins (~adam_wesp@209.6.42.110)
06:44:50 × danso quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
06:44:59 shad0w_ joins (~shad0w_@160.202.36.27)
06:45:17 <shad0w_> morning people. just droppin in to say Hi : )
06:45:36 munksgaard parts (~philip@2a03:b0c0:3:d0::2eef:1001) ("WeeChat 1.0.1")
06:45:41 <Axman6> Hello!
06:45:42 danso joins (~dan@107-190-41-58.cpe.teksavvy.com)
06:45:49 × adamwespiser quits (~adam_wesp@209.6.42.110) (Ping timeout: 264 seconds)
06:49:00 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
06:52:23 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
06:52:52 × qualiaqq quits (~user@47.189.249.188) (Quit: ERC (IRC client for Emacs 28.0.50))
06:52:56 Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch)
06:52:57 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
06:55:06 × toorevitimirp quits (~tooreviti@117.182.182.33) (Ping timeout: 272 seconds)
06:55:47 × cfricke quits (~cfricke@unaffiliated/cfricke) (Ping timeout: 258 seconds)
07:00:32 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:10e:bca5:1dcc:68c6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:01:48 ph88 joins (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c)
07:01:53 × jespada quits (~jespada@90.254.241.6) (Ping timeout: 265 seconds)
07:02:52 jespada joins (~jespada@90.254.241.6)
07:02:54 cfricke joins (~cfricke@unaffiliated/cfricke)
07:03:52 × josh quits (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Remote host closed the connection)
07:05:07 × Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 272 seconds)
07:06:23 × mmohammadi981261 quits (~mmohammad@2.178.188.114) (Quit: I quit (╯°□°)╯︵ ┻━┻)
07:06:40 mmohammadi9812 joins (~mmohammad@2.178.188.114)
07:10:18 × orion quits (~orion@unaffiliated/orion) (Ping timeout: 272 seconds)
07:11:16 × Rudd0 quits (~Rudd0@185.189.115.98) (Ping timeout: 256 seconds)
07:13:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:14:42 <dminuoso> Is there something equivalent to Chronicle's condemn for hspec Spec? I have a series of specs that rely on preconditions of earlier specs succeeding.
07:15:45 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
07:16:22 × ph88 quits (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) (Remote host closed the connection)
07:16:52 dhouthoo joins (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
07:17:30 alp joins (~alp@2a01:e0a:58b:4920:8dbc:80e7:a786:cb13)
07:17:47 × __Joker quits (~Joker@180.151.105.65) (Ping timeout: 240 seconds)
07:18:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
07:19:54 Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch)
07:20:05 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
07:20:20 Ariakenom joins (~Ariakenom@h-98-128-229-34.NA.cust.bahnhof.se)
07:20:49 kritzefitz joins (~kritzefit@fw-front.credativ.com)
07:21:01 × tzh quits (~tzh@c-73-94-222-143.hsd1.mn.comcast.net) (Quit: zzz)
07:25:30 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
07:26:08 Peter_Storm joins (uid288816@gateway/web/irccloud.com/x-nhjukwhxucyezwqe)
07:27:19 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: gone to sleep. ZZZzzz…)
07:27:28 × hvr quits (~hvr@haskell/developer/hvr) (Ping timeout: 256 seconds)
07:30:44 × danso quits (~dan@107-190-41-58.cpe.teksavvy.com) (Quit: WeeChat 2.9)
07:32:46 danvet_ joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
07:32:52 danvet joins (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453)
07:34:02 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
07:35:24 Guest_96 joins (51cdaf71@81-205-175-113.fixed.kpn.net)
07:35:37 × Guest_96 quits (51cdaf71@81-205-175-113.fixed.kpn.net) (Remote host closed the connection)
07:37:09 chele joins (~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
07:38:41 × pera quits (~pera@unaffiliated/pera) (Quit: leaving)
07:41:04 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds)
07:41:17 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
07:41:29 <shad0w_> yo, anyone around
07:41:37 × falafel quits (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Ping timeout: 260 seconds)
07:41:43 <shad0w_> woops. wrong channel
07:42:28 hackage jord 2.0.0.0 - Geographical Position Calculations https://hackage.haskell.org/package/jord-2.0.0.0 (CedricLiegeois)
07:43:49 <dansho> are io actions not ordered? i don't understand why this doesn't measure time elapsed https://hatebin.com/zwvzuzpfih
07:44:04 <dansho> it returns something like 0.00015 seconds
07:44:37 josh joins (~josh@c-67-164-104-206.hsd1.ca.comcast.net)
07:45:46 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
07:47:06 __Joker joins (~Joker@180.151.105.65)
07:47:14 <dansho> oh i guess its not measuring wall time, or something
07:47:19 fweht joins (uid404746@gateway/web/irccloud.com/x-vltddeikipwkmies)
07:48:05 <dminuoso> "Computation getCPUTime returns the number of picoseconds CPU time used by the current program"
07:48:31 <dminuoso> The sleep is not busy sleep
07:49:34 × josh quits (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
07:50:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:51:19 bahamas joins (~lucian@unaffiliated/bahamas)
07:53:58 jonatanb joins (~jonatanb@83.24.161.211.ipv4.supernova.orange.pl)
07:58:46 edwardk does a little dance.
07:59:16 <Axman6> Don't hold back Ed
07:59:47 <edwardk> i just managed to get my 'types' library to let me use Constraint one of the many kinds i managed to lower to the term level
07:59:48 siraben sends a request to the current effect handler to do a little dance
07:59:53 <edwardk> this means Sing p subsumes Dict p
08:00:21 <Axman6> :o
08:00:22 <edwardk> and (:-) becomes able to move around any singleton through SingI instances, so it becomes a way to pass arbitrary functions between singleton types
08:00:29 <edwardk> So now
08:00:40 <edwardk> Sing (a :: Type) -- is TypeRep a
08:00:46 <edwardk> Sing (a :: Constraint) -- is Dict a
08:01:16 <edwardk> Sing (a :: String) -- is a type level string that you can actually cons on, take/drop from and otherwise manipulate unlike Symbol.
08:01:35 <edwardk> etc.
08:02:16 <Taneb> Ooh, that's pretty neat
08:02:17 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:03:02 <edwardk> but the idea of a polykinded (:-) makes me super happy
08:03:12 <edwardk> (:--) i guess to go with what :~~: does for HRefl
08:03:16 chaosmasttter joins (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de)
08:03:39 <edwardk> would be any function from Sing a -> Sing b -- and can be lifted into Constraint!
08:03:51 <edwardk> or maybe
08:03:53 <Axman6> that last oe is excellent - do you have to construct the strings a char at a time?
08:04:18 <edwardk> yeah they get built up out of nil and cons. because String is defined as [Char]
08:04:20 <edwardk> and i can lift Char
08:04:24 <edwardk> and I can lift []!
08:04:36 <edwardk> i can give a little TH love to generating them
08:05:14 thc202 joins (~thc202@unaffiliated/thc202)
08:05:31 solonarv joins (~solonarv@astrasbourg-653-1-186-165.w90-13.abo.wanadoo.fr)
08:05:37 <edwardk> oh, and i was able to overload things so that all the numeric types, injective or crappy like Nat can share a S and Z pattern
08:06:16 <edwardk> er S and Z type family
08:06:39 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
08:06:45 Gerula joins (~Gerula@unaffiliated/gerula)
08:07:05 × aidecoe quits (~aidecoe@unaffiliated/aidecoe) (Ping timeout: 258 seconds)
08:07:54 aidecoe joins (~aidecoe@unaffiliated/aidecoe)
08:08:44 <edwardk> > sing :: Sing '(1,Eq Int,Just (Z :: Int)) ==> Sing @(Nat,Constraint,(Maybe Int)) (1,Constraint Dict,Just 0)
08:08:46 <lambdabot> <hint>:1:52: error: <hint>:1:52: error: parse error on input ‘@’
08:09:02 gnumonik joins (~gnumonik@c-73-170-91-210.hsd1.ca.comcast.net)
08:09:02 × irc_user quits (uid423822@gateway/web/irccloud.com/x-yhvajookqrbnnurt) (Quit: Connection closed for inactivity)
08:09:27 <edwardk> er didn't mean to > that
08:10:09 knupfer joins (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de)
08:11:39 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-157-9.dhcp-dynamic.fibreop.nb.bellaliant.net)
08:12:10 × knupfer quits (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de) (Client Quit)
08:12:31 knupfer joins (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de)
08:13:28 <Taneb> Is Z a pattern synonym there?
08:13:50 <edwardk> Z there is actually a type family i have that expands to 0 in Nat and to various other things in other kinds
08:14:01 × devalot quits (~ident@mail.pmade.com) (Ping timeout: 264 seconds)
08:14:18 <Taneb> Right
08:14:28 <edwardk> i hack Int to have a pair of injective type constructors for Z# and S# and it delegates to those for that kind
08:15:30 <edwardk> testEquality (sing :: Sing Int) (sing :: Sing Int) ==> Just Refl
08:16:08 <edwardk> i had to get fancy with S and Z because the lack of injectivity in Nat's (1+) approach to define Succ meant when you start building singletons on things like a Vec type that is indexed by a Nat you start breaking
08:16:25 <edwardk> but if you use the fact that Natural now has Z and S which are injective for all kinds other than Nat it works fine
08:17:35 sQVe joins (~sQVe@unaffiliated/sqve)
08:19:42 <edwardk> oh yeah, i forgot it is taken by the repl. i guess i need a better name
08:19:45 <edwardk> er 'it'
08:20:11 × Gerula quits (~Gerula@unaffiliated/gerula) (Ping timeout: 265 seconds)
08:20:18 <edwardk> I and 'me' would be cute but the former too short. maybe You and you.
08:20:41 <edwardk> no good ungendered singular pronouns
08:21:57 × drbean quits (~drbean@TC210-63-209-64.static.apol.com.tw) (Ping timeout: 256 seconds)
08:22:52 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:23:02 Aquazi joins (uid312403@gateway/web/irccloud.com/x-bxvisodaildxgivh)
08:23:17 <edwardk> ok, going with Me and me
08:23:28 <edwardk> that way the template haskell function for building it is makeMe
08:24:16 Saten-san joins (~Saten-san@ip-83-134-202-127.dsl.scarlet.be)
08:24:24 <edwardk> between that and makeNice this is becoming punnier than expected
08:25:23 × denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 240 seconds)
08:27:32 × knupfer quits (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
08:27:39 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
08:30:04 × mirrorbird quits (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) (Quit: Leaving)
08:31:25 <edwardk> and bugger
08:32:23 <edwardk> there appears to be a bug where when i go to try to validate that i can't subvert things by using Sing on constraint, it yells about overlapping instances for StrictEq Constraint -- when there is no instance?
08:32:28 <edwardk> i have one on Type
08:32:38 <edwardk> but Constraint and Type are different types to the surface language
08:32:47 <edwardk> but even so i only have the one instance
08:35:15 <Axman6> time for a GHC bug report "Ed broke it again: Overlapping instances for StrictEq Constraint"
08:35:32 Gerula joins (~Gerula@unaffiliated/gerula)
08:38:12 × danvet quits (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Quit: Leaving)
08:38:29 <edwardk> ok, fixed it
08:38:36 <edwardk> just crappy error reporting. whew
08:43:43 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:43:56 <merijn> edwardk: You need to step up your GHC breaking, at least Iceland_Jack has got an error explicitly calling them out, why don't you? ;)
08:45:02 <edwardk> merijn: i have a clip of simon shouting from the back of the room during a talk that he would change the compiler to make it stop allowing me to do something
08:45:37 <merijn> :D
08:45:58 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
08:48:29 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
08:50:32 × Saten-san quits (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8)
08:50:42 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
08:50:57 hackage hlatex 0.3.2 - A library to build valid LaTeX files https://hackage.haskell.org/package/hlatex-0.3.2 (NicolasPouillard)
08:51:44 zebrag joins (~inkbottle@aaubervilliers-654-1-112-47.w86-198.abo.wanadoo.fr)
08:52:16 × inkbottle quits (~inkbottle@aaubervilliers-654-1-112-119.w86-198.abo.wanadoo.fr) (Ping timeout: 272 seconds)
08:56:35 × dysfigured quits (dysfigured@2600:3c00::f03c:92ff:feb4:be75) (Remote host closed the connection)
08:56:44 dysfigured joins (dysfigured@2600:3c00::f03c:92ff:feb4:be75)
08:57:33 mirrorbird joins (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2)
08:57:33 mirrorbird is now known as psut
09:00:01 × unknown quits (~unknown@s91904426.blix.com) ()
09:00:14 × avocado quits (renningmat@gateway/shell/matrix.org/x-cjscopkjowyvreqy) (Quit: Idle for 30+ days)
09:00:30 × camlriot42 quits (camlriotma@gateway/shell/matrix.org/x-rtbhfsekxaemiuex) (Quit: Idle for 30+ days)
09:02:52 cpressey joins (~cpressey@88.144.93.20)
09:05:13 <cpressey> Hi, I recently upgraded cabal from 1.24 (the version that ships with Ubuntu 18 LTS) to 3.0.2 and I'm seeing unusual behaviour: cabal build works, but doesn't detect when I've edited a source file, and cabal install tries to build and fails because it can't find my source files. I can post a minimal example in a gist if it helps.
09:06:35 <[exa]> cpressey: do you have all modules listed in the cabal file? (otherwise, a MWE would certainly help)
09:07:08 <maerwald> 3.0.2?
09:07:27 <maerwald> that version doesn't exist
09:07:44 <[exa]> probably meant 3.2.0.0?
09:08:01 <cpressey> maerwald: "cabal-install version 3.0.0.0\ncompiled using version 3.0.2.0 of the Cabal library"
09:08:10 <maerwald> upgrade to 3.2.0.0
09:08:33 <cpressey> [exa]: In fact I don't, that could easily be the problem.
09:09:50 <[exa]> debian says it has 3.0.0.0-3 which might be the same... You may just use the binary distribution of cabal from their website, or get one using ghcpu
09:09:55 <[exa]> *ghcup
09:10:03 × worc3131 quits (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786) (Remote host closed the connection)
09:10:10 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
09:10:32 <[exa]> a common observation here is that ghc/cabal versions from $distro's package manager usually suck
09:10:59 <maerwald> there's also https://launchpad.net/~hvr/+archive/ubuntu/ghc but it lacks ghc-8.10
09:11:02 <cpressey> maerwald: This is the version it gave me when I did "cabal install cabal-install" on (I think) Friday. I'll try upgrading again and see if it goes all the way to 3.2 this time.
09:11:18 × psut quits (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) (Quit: Leaving)
09:11:18 worc3131 joins (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786)
09:11:27 <maerwald> ah no, it has 8.10
09:11:40 <maerwald> cpressey: cabal install cabal-install doesn't work very well
09:11:41 <int-e> cpressey: the newer cabal-install should pick up the most recent cabal-install ;-)
09:12:11 <merijn> You might need to "cabal update" first :p
09:12:13 <maerwald> int-e: that depends on your GHC version, not cabal-install
09:12:14 <int-e> maerwald: it turns out that cabal-install 3.2 cannot be built with cabal-install<2.2
09:12:27 <maerwald> well, then both
09:12:35 <cpressey> [exa]: Is it absolutely required to list all modules in the cabalfile? In development, I sometimes add/remove modules, and it would be nice to not have to remember to update the cabalfile too
09:13:10 <maerwald> cpressey: you can use cabal-fmt to auto-expand modules https://oleg.fi/gists/posts/2019-08-11-cabal-fmt.html
09:13:14 <merijn> cpressey: Also, why did you still have 1.24? :o THat's ancient
09:13:46 <phadej> merijn: some people use distributions' package managers, and their repositories ;)
09:13:46 <cpressey> merijn: because I'm running Ubuntu 18.04 LTS and was still using the version in their package repository.
09:13:58 <phadej> but does 18.04 has that old cabal-install
09:13:59 <merijn> cpressey: Short answer: Yes. Long answer: Yes, because the cabal file is supposed to *define* what goes into a source distribution and doing that sorta thing implicitly is...a bad idea
09:14:07 <int-e> phadej: yes
09:14:08 <phadej> that's wiked
09:14:09 <merijn> cpressey: Wow, that's depressing
09:14:19 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
09:14:27 <int-e> phadej: 18.04 was released very shortly after cabal-install 2.0.0.0
09:14:37 <int-e> phadej: presumably it was frozen then.
09:14:39 <merijn> cpressey: 1.24 is probably at least 4-6 years out of date by now :o
09:14:51 <[exa]> cpressey: well it sometimes picks the unlisted modules correctly for me, but I have no idea about the precise reason why it works
09:15:00 <merijn> [exa]: It doesn't
09:15:02 <maerwald> merijn: that's what LTS means
09:15:04 <maerwald> lol
09:15:13 <merijn> [exa]: However, GHC looks for imports independent of cabal
09:15:15 <cpressey> Well, not listing the modules in the cabalfile probably explains my problem, anyway. Thanks all.
09:15:30 <merijn> [exa]: So, even if files aren't listed, GHC may find them
09:16:06 <[exa]> o good
09:16:12 <int-e> phadej: Or hmm. Am I off by a year? Anyway, 1.24 wasn't ancient yet then :P
09:16:13 <[exa]> makes sense, thanks
09:16:42 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
09:16:45 <int-e> phadej: and your 4-6 years are definitely closer to 3.
09:16:52 <merijn> int-e: That was mine
09:16:57 boxscape joins (577bcb23@gateway/web/cgi-irc/kiwiirc.com/ip.87.123.203.35)
09:17:08 <merijn> Although, admittedly I may have been using the source version
09:17:10 <int-e> ah. oops I did it again...
09:17:35 <merijn> I just recall switching to new-build early on in the Haskell part of my phd codebase and I moved on from 1.24 really shortly after that :p
09:17:45 <phadej> 20.04 is using 2.4.0.0
09:17:52 <phadej> though there definitely was 3.0 and 3.2
09:18:01 <boxscape> was curious how the constraints package implements Gcd so I took a look and... https://hackage.haskell.org/package/constraints-0.12/docs/src/Data.Constraint.Nat.html#Gcd
09:18:02 <boxscape> that doesn't look right? Am I missing something or is it just not fully implemented?
09:18:06 <merijn> int-e: Perhaps it's just academic trauma induced time dilation that makes feel like it was 6 years :p
09:18:06 <phadej> and **worse**, they have ghc-8.8
09:18:12 <phadej> which cabal-install-2.4 doesn't support
09:18:17 <phadej> they = Ubuntu
09:18:29 <merijn> lol
09:18:35 <int-e> merijn: FWIW, I was surprised as well... it feels longer.
09:18:38 <merijn> Linux packaging, yay!
09:18:41 <phadej> or now
09:18:48 <phadej> s/now/no
09:18:54 <phadej> it's 8.8.1+dfsg1+is+8.6.5
09:19:01 <phadej> which is :)(:
09:19:19 <int-e> phadej: still usable for bootstrapping a real ghc.
09:19:38 <phadej> feels like it's common that distribution packages don't really are up to date with where HAskell goes
09:19:44 kuribas joins (~user@ptr-25vy0i9m1chs7zs38i7.18120a2.ip6.access.telenet.be)
09:19:44 <phadej> int-e: to bootstrap 9.0 you need 8.8.1
09:19:47 <phadej> that one is really 8.6.5
09:19:50 <phadej> so no luck.
09:19:55 borne joins (~fritjof@200116b864f88900f00953f5fedbeb5e.dip.versatel-1u1.de)
09:19:59 <tomsmeding> boxscape: not to speak about Lcm, Div and Mod
09:20:03 <int-e> phadej: 9.0 isn't released
09:20:12 <phadej> int-e: I hope it's matter of weeks now.
09:20:14 <boxscape> tomsmeding right
09:20:46 <maerwald> int-e: 9.0.1-alpha1 is
09:20:48 <tomsmeding> boxscape: does it actually _work_, somehow in a way that we don't understand? or is it actually unimplemented
09:20:58 <tomsmeding> work as in "test it"
09:21:06 <boxscape> I haven't actually tried to be honest but I guess I should, and I will right now
09:21:07 <phadej> ghc "support" windows are too short for ubuntu :(
09:21:34 Cadair1 joins (~Cadair@185.204.1.185)
09:21:54 <maerwald> boxscape: try to be honest next time
09:22:17 <boxscape> but I was honest this time too :(
09:22:34 <boxscape> it doesn't work, by the way - Gcd 4 2 is not reduced
09:22:39 <tomsmeding> heh
09:22:41 <phadej> maerwald: there is no 9.0.1-alpha1, is there?
09:22:54 <maerwald> https://downloads.haskell.org/~ghc/9.0.1-alpha1/
09:23:15 <tomsmeding> boxscape: file a bug report :)
09:23:47 <boxscape> I suppose I will, or maybe a PR if I can figure out how it should work
09:25:09 <merijn> hah
09:25:32 <merijn> Next thing you know you'll be handed commit access and responsible for maintaining it ;)
09:25:38 <boxscape> oh boy
09:25:43 <int-e> phadej: hmm if you release 2 major versions per year and you support the 2 latest major versions for bootstrapping...
09:25:48 <boxscape> I am not at all qualified to handle the constraints package :)
09:25:48 <tomsmeding> unlikely for this particular package I think
09:25:56 <phadej> maerwald: there isn't tag in repository
09:26:02 <int-e> ...that's not a very generous time frame
09:26:04 <phadej> maerwald: so I have no idea what that directory is about
09:26:23 <phadej> maerwald: also it wasn't announced, and according to ben, if something weren't announced it doesn't exist.
09:26:29 <maerwald> phadej: I don't know either, but it works fine :p
09:26:39 <phadej> maerwald: specifically, I'd ask you to not add that to ghcup
09:26:44 <phadej> to not confuse shit out of users
09:27:00 <maerwald> what's confusing about it?
09:27:32 <phadej> if there would be an bug report "GHC-9.0.1-alpha1 regresses ..."
09:27:34 <maerwald> phadej: also, ben uploaded that and signed it with his key
09:27:44 <cheater> hi
09:28:03 <cheater> is vty still the best thing for creating simple curses style UIs or is there something else you would suggest
09:28:15 <merijn> vty is low level
09:28:24 <merijn> For something higher level, probably you want brick
09:28:27 acidjnk_new2 joins (~acidjnk@p200300d0c73658819d57354728142a5b.dip0.t-ipconnect.de)
09:28:53 <merijn> cheater: vty deals with terminal emulation, brick deals with "using vty to draw widgets and stuff"
09:29:17 <cheater> i want to create a very simple text editor
09:29:25 <cheater> vim style
09:29:43 <[exa]> you really want brick
09:29:50 × jedws quits (~jedws@121.209.139.222) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:29:58 <merijn> Prepare to be surprised how comlex text editing is :p
09:30:08 <maerwald> merijn: yeah, I looked into yi... whew
09:30:28 <cheater> all it'll do is move lines up and down. that's all.
09:30:35 <merijn> Was it Atom that took like 5 years before it could open files ? 5 MB
09:30:36 <cheater> maybe edit them and add new ones or remove some.
09:30:52 <merijn> cheater: Yeah...that's harder than you think :p
09:30:52 <cheater> file size limited to 100k.
09:31:01 <cheater> merijn: oookay
09:31:16 carlomagno1 joins (~cararell@inet-hqmc01-o.oracle.com)
09:31:17 <maerwald> 100k is a very precise unit
09:31:21 <cheater> brick says "This package deprecates vty-ui." ahh i've been using vty-ui
09:31:22 <merijn> I have a 30 page paper on "data structure for text editing" :p
09:31:28 <cheater> wow can y'all stop lol
09:31:40 <merijn> cheater: yeah, brick is the successor of vty-ui
09:31:40 <[exa]> cheater: isn't that motivating? :]
09:31:44 <maerwald> we're trying to encourage you
09:31:49 <cheater> no, it's boring
09:31:54 <cheater> i have enough problems as it is
09:31:56 <maerwald> it's so hard, you must do it
09:32:10 <Cheery> there was a library in haskell for rendering text
09:32:13 <tomsmeding> cheater: I've written a terminal text editor in c++ without using any terminal library at all
09:32:14 <boxscape> wait... Div and Mod seem to work, even though Gcd and Lcm don't
09:32:14 <maerwald> (isn't that what motivates haskellers?)
09:32:22 <tomsmeding> if I can do that you can do it with the niceties that haskell gives you
09:32:24 <cheater> tomsmeding: nice
09:32:34 mirrorbird joins (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2)
09:32:42 <cheater> yeah i'm just writing a small manual decompiling helper
09:32:50 <tomsmeding> (before you actually go and look at that c++ code beware it's ugly and bad)
09:32:55 <cheater> like, be able to move lines around without violating semantics
09:32:57 <cheater> that's all really
09:32:57 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 258 seconds)
09:32:59 <boxscape> oh but that's because I'm using Div and Mod from a different package, never mind
09:33:04 <[exa]> cheater: o nice, decompiling what precisely?
09:33:06 <tomsmeding> boxscape: :D
09:33:06 <boxscape> (base)
09:33:13 <cheater> shader assembly
09:33:28 <tomsmeding> boxscape: perhaps their implementation in base can suggest how to implement Gcd in constraints
09:33:33 <boxscape> yeah, good point
09:33:46 <boxscape> wait
09:33:48 <boxscape> they're built in
09:33:51 <[exa]> cheater: very cool
09:33:53 <cheater> i decompiled it by hand already but i introduced a bug and it's going to be impossible to track down, so i'm gonna do this now
09:34:03 <cheater> i commuted some lines that i shouldn't have
09:34:04 <cheater> i think
09:34:07 <merijn> ah, rats
09:34:14 <tomsmeding> cheater: https://xkcd.com/1205/
09:34:18 <merijn> I can't find a copy of the PDF i was talking about now
09:34:22 <cheater> i'm not clicking any xkcd links
09:34:56 <tomsmeding> merijn: pity
09:36:24 <tomsmeding> merijn: it's not this one by any chance? https://www.cs.unm.edu/~crowley/papers/sds.pdf
09:36:43 <merijn> Ooh, looks like it
09:36:49 <merijn> cheater: ^^ that one :)
09:37:07 <gnumonik> Hello. I'm trying to generate parsers for records automatically using TH. Have a function that gives me a 'Q (Parser a)', but I can't figure out how to turn that into an exp so it's unusable. Is there some way to do that or is it impossible?
09:37:14 <gnumonik> Am new to TH
09:37:31 <merijn> gnumonik: You need to unquote it via $()
09:37:45 <cheater> merijn: what is it?
09:38:05 <merijn> If "foo :: Q (Parser a)" then 'bar $(foo)' is "splice the AST of 'foo' in the code here"
09:38:18 <cheater> oh yea no idc i'll just put everything in a list
09:38:41 ces joins (~ces@52d3ce3c.dynamic-ip.k-net.dk)
09:38:52 <cheater> just so you understand where i'm at
09:39:45 <merijn> hmm, I forget how to specify ghc-options for only local packages in cabal.project (i.e. as opposed to for all transitive dependencies)
09:40:37 <gnumonik> I've tried splicing it but it doesn't work. I think it's because I have a Q Parser and not a Q exp.
09:40:43 ixlun joins (~matthew@213.205.241.81)
09:41:13 <cheater> does Vty work on windows btw?
09:41:16 <cheater> it works, right?
09:41:38 <merijn> gnumonik: oh, wait, yeah
09:41:45 <cheater> hmm i'm not seeing any mention of windows
09:41:55 <merijn> gnumonik: Can you pastebin/gist the code?
09:42:04 ph88 joins (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c)
09:42:13 <merijn> cheater: It supports windows for users who have/use a proper terminal emulator
09:42:19 <merijn> cheater: So..."maybe"
09:42:21 <cheater> how do i do that
09:42:25 <cheater> is powershell proper
09:42:30 <merijn> No clue
09:42:58 <merijn> That's a messy swamp of complicated questions and ridiculously archaic technology your asking questions about :p
09:42:59 sagax joins (~sagax_nb@213.138.71.146)
09:44:06 <gnumonik> It's pretty long and I need a sec to unbreak it, I was trying something and I ran out of undo space in VSCode
09:44:18 <cheater> hmm i need to get git on this machine as well
09:44:23 <gnumonik> But yeah. It just seems like there's no way to get the Parser into an Exp :-(
09:44:34 <cheater> what's the least painful way to have git on windows? sorry for OT
09:45:12 <mirrorbird> installing linux probably
09:45:17 <[exa]> cheater: the linux subsystem kinda works, msysgit/tortoisegit also work, but the least painful way is likely to...yeah ^^
09:45:30 <cheater> mirrorbird: no
09:46:12 <mirrorbird> how do you know?
09:46:36 <merijn> gitbash
09:46:54 <merijn> gnumonik: You can, but you're mixing levels
09:47:19 <[exa]> cheater: consider https://www.reddit.com/r/haskell/comments/7tutxa/vty_needs_your_help_supporting_windows/
09:47:21 <merijn> gnumonik: You're creating a parser in your quotation, while what you *want* is "the Exp resembling a parser"
09:47:28 <[exa]> cheater: generally, windows does _not_ have a terminal
09:47:29 <cheater> this is how i know mirrorbird and why you've been put on ignore https://twitter.com/PLT_cheater/status/1306114709905694722
09:47:59 <cheater> [exa]: thanks, looking!
09:48:22 <mirrorbird> cheater, yeah i hate that too
09:48:25 <merijn> cheater: gitbash is what my girlfriend uses on windows for git, seems the most workable solution
09:48:38 <cheater> merijn: thank you
09:48:49 <cheater> merijn: does she know how it compares to WSL1 or WSL2?
09:49:31 <merijn> WSL1/2 are linux emulation layers fully running linux code. gitbash is just a lightweight terminal emulator that runs bash, git and some other commandline tools
09:49:45 <cheater> right
09:49:50 cosimone joins (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6)
09:49:51 × ces quits (~ces@52d3ce3c.dynamic-ip.k-net.dk) (Quit: WeeChat 2.9)
09:50:00 <dminuoso> gnumonik: Of course there is! :)
09:50:01 <merijn> Incidentally, all of GNU coreutils already support windows anyway. I used to use grep/bash/etc. in windows' Command.exe
09:50:07 <cheater> if I need a terminal to run Vty, then maybe this will be a good way to get Vty running
09:50:09 <merijn> No clue how to get git in there, though
09:50:20 <merijn> And git-bash seems to have the most convenient story for installing stuff
09:50:28 <cheater> mhm
09:50:50 <gentauro> I once saw a .cabal file that had, besides several `executable` (`executable foobar` and `executable bazqux`) it also had another `library` besides the main/default. I just don't remember the syntax to add this ad-hoc library. Anybody can help? Thx
09:51:39 <gentauro> is it `library identifier` or how is it done?
09:51:42 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
09:51:57 <gentauro> I'm using `cabal 2.2`
09:52:05 gentauro that's the header of the file
09:52:24 <phadej> gentauro: https://cabal.readthedocs.io/en/3.4/cabal-package.html#library scroll down to internal library
09:53:07 <gnumonik> I'm not sure how to get an exp that resembles a parser though :-( And I tried building the AST by hand but i reach a point where I need a way to lift a 'Parser' to get it into the syntax tree and I'm lost
09:53:28 hackage floskell 0.10.5 - A flexible Haskell source code pretty printer https://hackage.haskell.org/package/floskell-0.10.5 (ecramer)
09:53:42 mpereira joins (~mpereira@2a02:810d:f40:d96:b903:bcf4:35d5:9a35)
09:55:29 × mirrorbird quits (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) (Ping timeout: 272 seconds)
09:55:47 <gentauro> phadej: thx. Just what I needed :)
09:56:00 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
09:58:15 <gnumonik> The only thing I can think of is rewriting a bunch of Parsec (that's what I'm using) by hand in the Haskell AST, so everything's an exp. Actually it'd probably be easier to just write some haskell to generate the text of the source code for the parsers than do that
09:58:40 × pingiun quits (~pingiun@j63019.upc-j.chello.nl) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:01:40 Rudd0 joins (~Rudd0@185.189.115.103)
10:02:05 <merijn> gnumonik: You want [| |] for lifting stuff into Exp
10:02:34 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 272 seconds)
10:02:51 <merijn> gnumonik: "[| foo 1 >>= bar |]" says "take the code "foo 1 >>= bar" and give me the Exp of that AST
10:04:50 polyrain joins (~polyrain@2001:8003:e501:6901:9557:35db:b11f:8e3c)
10:05:07 <gnumonik> https://gist.github.com/gnumonik/77554f3a7817495030c16dd46739fa79 is what I have (I think that's all the important stuff, hastily reconstructed, probably quite ugly)
10:05:13 <boxscape> looks like the Gcm etc. thing in constraints is intentional https://github.com/ekmett/constraints/issues/53
10:07:42 <boxscape> ( tomsmeding, in case you're interested)
10:09:04 <tomsmeding> boxscape: I'm not sure whether that issue still applies, given that Min does seem to have a suitable implementation now
10:09:20 <boxscape> oh, huh, true
10:10:18 <gnumonik> I know how the quotation brackets work. I wish I knew more so I could explain this well. The problem, I think, is that I'm trapped in the Q monad. My function that generates parsers spits out 'Q Parser a's, so when I quote it, I *think* that it's giving me the AST for an expression that spits out the Q stuff.
10:11:13 × marek quits (~mmahut@209.250.249.245) (Changing host)
10:11:13 marek joins (~mmahut@fedora/pyxel)
10:11:49 <dminuoso> gnumonik: Try generating a `Q Exp` instead.
10:12:30 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
10:13:04 <dminuoso> gnumonik: You can either use [| ... |] like merijn suggested, or you build up that construction yourself
10:13:13 × chaosmasttter quits (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
10:13:50 <boxscape> s/Gcm/Gcd, whoops
10:14:43 <cheater> has anyone got experience compiling medium large Haskell projects on Windows using WSL1 vs WSL2 if the data must be stored on the Windows file system?
10:15:49 × fweht quits (uid404746@gateway/web/irccloud.com/x-vltddeikipwkmies) (Quit: Connection closed for inactivity)
10:17:04 v0d1ch joins (~v0d1ch@cable-178-148-120-241.dynamic.sbb.rs)
10:17:08 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
10:18:11 <gnumonik> I tried to do that and I couldn't make it work :-( If I make a parser in the Q monad I can't get it out. I can use the oxford brackets to transform any other function (or w/e) into an exp but whenever I try to quote the parser I generates I get a "No lift instance"
10:18:32 <gentauro> phadej: I like this feature with `sub-libs`. That way I can keep my main library `Safe` while all the nasty stuff needed by some of the `executables` I can move to these `sub-libs` :-)
10:18:53 chaosmasttter joins (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de)
10:18:54 gentauro what's not to like :)
10:19:33 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 272 seconds)
10:21:06 × mmohammadi9812 quits (~mmohammad@2.178.188.114) (Quit: I quit (╯°□°)╯︵ ┻━┻)
10:23:15 × stree quits (~stree@50-108-115-67.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
10:23:33 stree joins (~stree@50-108-115-67.adr01.mskg.mi.frontiernet.net)
10:25:58 <gnumonik> https://gist.github.com/gnumonik/51b29cb694a8e19052f3613b8cc3fcfa that's problem I think. I can quote *other* parsers in the oxford brackets but for some reason that I don't understand the compiler never lets me quote the one that I made inside the Q monad. So I have to return a 'Q Parser'. Which is kinda useless.
10:27:59 × alp quits (~alp@2a01:e0a:58b:4920:8dbc:80e7:a786:cb13) (Remote host closed the connection)
10:28:06 alp joins (~alp@88.126.45.36)
10:34:12 × cosimone quits (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Quit: Quit.)
10:36:21 bahamas joins (~lucian@unaffiliated/bahamas)
10:37:33 <cheater> glguy: hi, do you know if there is any way yet to sensibly run Vty on Windows?
10:37:40 cosimone joins (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6)
10:40:56 × polyrain quits (~polyrain@2001:8003:e501:6901:9557:35db:b11f:8e3c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:41:07 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds)
10:41:10 <tomsmeding> cheater: what kind of trouble are you hitting?
10:41:49 <cheater> tomsmeding: Vty is said to require an ansi terminal, which windows didn't have until recently, so I don't know if Vty has been updated at all to take advantage of any of that
10:42:06 <tomsmeding> have you tried it? it might just magically work
10:42:25 <cheater> no, it takes a bunch of time to try it. i'd rather ask some people I know have used it.
10:42:38 <tomsmeding> sure :)
10:43:06 × cosimone quits (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Quit: Quit.)
10:44:15 <dminuoso> What is the reason `cabal build foo:test:bar` requires --enable-tests (sometimes?). Why is there some mutable state requiring me to switch between enabling and disabling tests?
10:44:38 <merijn> dminuoso: It's because it affects the build plan
10:45:05 <merijn> dminuoso: tests might require different build plans for the main library and having them automatically rebuild and switch plans each time is...suboptimal
10:45:24 <merijn> Because then your code recompiles every time you switch between tests or not
10:45:27 hackage wai-extra 3.1.0 - Provides some basic WAI handlers and middleware. https://hackage.haskell.org/package/wai-extra-3.1.0 (MichaelSnoyman)
10:45:40 <dminuoso> merijn: And that is bad why?
10:45:47 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
10:45:48 <merijn> dminuoso: Just enable tests in cabal.project(.local) so they're always in the build plan
10:45:55 <dminuoso> Mm
10:46:07 <merijn> dminuoso: Because if you alternate running tests and executables you don't want your library to recompile each switch?
10:46:13 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
10:46:27 <merijn> But not recompiling isn't safe if the build plan changes
10:46:44 <merijn> So just enable tests so the build plan always accommodates them, problem solved
10:48:38 cosimone joins (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6)
10:48:51 <tomsmeding> cheater: I _think_ that because vty will indirectly use the terminfo library, which I _think_ is not present on windows, it will not work out of the box
10:48:56 <tomsmeding> but I haven't tested it either :)
10:49:11 <cheater> OK
10:49:13 <dminuoso> Fair enough. So --enable-tests essentially mixes in the build-depends from the test-suite, causing a new build plan to be generated that includes the (transitive) version bounds of the test-suite?
10:49:24 <dminuoso> And --disable-tests turns that off again?
10:50:00 <tomsmeding> cheater: I have written a library on somewhat the same level of abstraction as vty at some point, that does work on windows (https://git.tomsmeding.com/terminal-io-hs/tree/); however, it's not on hackage, and has been used for exactly one university project at some point :p
10:50:14 <tomsmeding> so I don't necessarily recommend using it, but wanted to post it for completeness regardless
10:50:46 <cheater> tomsmeding: thanks, that's pretty cool. how does it work on windows?
10:51:20 × acarrico quits (~acarrico@pppoe-209-99-203-201.greenmountainaccess.net) (Ping timeout: 272 seconds)
10:52:05 <merijn> dminuoso: Right
10:52:34 Saten-san joins (~Saten-san@ip-83-134-202-127.dsl.scarlet.be)
10:52:34 <merijn> dminuoso: And there's no real design (yet?) for how to properly handle switching between executable and test targets
10:52:48 <merijn> dminuoso: (recompiling each time is obviously not ideal)
10:52:50 <dminuoso> merijn: But wouldnt `cabal v2-test` have to enable-tests at the very least?
10:53:00 <merijn> Yes, no, maybe?
10:53:38 <merijn> dminuoso: If you have a coherent design for how all the bits should work I'm sure it'll be welcome ;) And probably there's at least 1 or 2 issues discussing it on github :p
10:54:07 <dminuoso> Im quite confident that this is very non-trivial.
10:54:17 <dminuoso> Build systems always are.
10:54:17 <merijn> :)
10:54:53 <dminuoso> Hooray, I just managed to completely screw up dist-newstyle/ to the point of having to delete it.
10:54:55 <boxscape> Is there a way to access functions in ghci that aren't exported?
10:55:22 <cheater> using :m
10:55:27 <boxscape> oh
10:55:28 <boxscape> thankss
10:55:31 <cheater> yw
10:56:36 <boxscape> hmm though actually that seems to have the same behavior as importing it
10:57:08 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
10:57:12 <cheater> you can use :m +Foo or something i think
10:57:27 <cheater> not sure
10:57:52 basil joins (~basil@host-87-26-187-41.business.telecomitalia.it)
10:58:08 <boxscape> I can use that, but it doesn't seem to bring into scope identifiers in Foo that aren't exported by Foo, unfortunately
10:58:16 basil is now known as Guest87848
10:59:22 × chaosmasttter quits (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
10:59:28 × Guest87848 quits (~basil@host-87-26-187-41.business.telecomitalia.it) (Client Quit)
10:59:39 <solonarv> :m + *Foo works
10:59:54 <solonarv> has to be an interpreted module
11:00:26 <boxscape> oh, interesting, thanks
11:00:31 basil_ joins (~basil@host-87-26-187-41.business.telecomitalia.it)
11:01:49 × basil_ quits (~basil@host-87-26-187-41.business.telecomitalia.it) (Client Quit)
11:02:42 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
11:03:46 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
11:04:19 basil_ joins (~basil@host-87-26-187-41.business.telecomitalia.it)
11:07:26 <dminuoso> I recall there was a super dirty and unsafe package that let gain access to non-exported identifiers from other package..
11:08:20 <merijn> @hackage true-name -- this one? :p
11:08:20 <lambdabot> https://hackage.haskell.org/package/true-name -- this one? :p
11:08:44 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
11:08:59 <boxscape> hm, neat
11:09:06 <dminuoso> Yes, thats it :)
11:09:36 <merijn> hmm, I forget how to specify ghc-options for only local packages in cabal.project (i.e. as opposed to for all transitive dependencies)
11:09:46 <merijn> anyone know?
11:11:08 <hekkaidekapus> merijn: package foo
11:11:36 <hekkaidekapus> And `ghc-options:` under that stanza.
11:11:42 × sQVe quits (~sQVe@unaffiliated/sqve) (Quit: Bye!)
11:11:45 <tomjaguarpaw> package opaleye ghc-options: -iDoc/Tutorial -iTest -fprint-potential-instances
11:11:54 <tomjaguarpaw> Hmm, bad formatting
11:11:57 <tomjaguarpaw> package opaleye
11:11:59 <tomjaguarpaw> ghc-options: -iDoc/Tutorial -iTest -fprint-potential-instances
11:12:51 × v0d1ch quits (~v0d1ch@cable-178-148-120-241.dynamic.sbb.rs) (Quit: WeeChat 2.9)
11:13:25 × jespada quits (~jespada@90.254.241.6) (Ping timeout: 264 seconds)
11:13:54 gmt joins (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net)
11:14:14 <tomsmeding> cheater: it assumes you have a sort-of xterm-compliant terminal, which windows has nowadays
11:14:27 <int-e> merijn: is it too much to hope that cabal v2-configure --ghc-options would drop the flags into cabal.project.local where it will be picked up by other cabal invocations?
11:14:40 bahamas joins (~lucian@188.24.181.166)
11:14:40 × bahamas quits (~lucian@188.24.181.166) (Changing host)
11:14:40 bahamas joins (~lucian@unaffiliated/bahamas)
11:14:46 <int-e> merijn: Oh.
11:14:53 <tomsmeding> vty does the full thing by actually consulting the terminfo database to find out what escape sequences are appropriate for your terminal; that works great on linux but fails on windows (at least, that's my hypothesis)
11:14:58 <int-e> merijn: never mind, I missed the "only local" part
11:14:59 <cheater> tomsmeding: does it work in ps, or in cmd only?
11:15:05 <tomsmeding> my library doesn't bother, which makes it work :p
11:15:16 <tomsmeding> my windows-using friend used it in cmd at the time
11:15:26 <tomsmeding> does PS support ansi escape sequences?
11:15:31 <cheater> i don't know
11:15:34 <cheater> at some point it didn't
11:15:39 <cheater> not sure what it's like now
11:15:44 <tomsmeding> printf "\x1B[1mbold text!\x1B[0m"
11:16:05 jespada joins (~jespada@90.254.241.6)
11:16:34 <tomsmeding> where \x1B is byte 27; manage to print that to PS (possibly using putStrLn ;) ), if that shows bold text, then yes, else no
11:18:05 × gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
11:18:51 <int-e> merijn: https://github.com/haskell/cabal/issues/3883 suggests you can't :-/
11:19:28 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds)
11:20:21 × cosimone quits (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Remote host closed the connection)
11:20:26 cosimone_ joins (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6)
11:21:20 <int-e> merijn: (The suggested workaround is to specify ghc-options for each package of interest in one of the cabal.project files... manually?)
11:21:38 <merijn> hekkaidekapus: But then I need to explicitly do that for each of the local package :\
11:22:04 <hekkaidekapus> Yeah, int-e has been expanding on that.
11:22:07 <int-e> So... yeah what hekkaidekapus suggested.
11:23:06 × arianvp quits (~weechat@arianvp.me) (Quit: WeeChat 2.7.1)
11:23:22 <tomjaguarpaw> If only a cabal file was a datastructure in some programming language. Then you could just write code to do it.
11:23:39 arianvp joins (~weechat@arianvp.me)
11:24:04 <Putonlalla> What is Nix?
11:25:05 <Cheery> it's a package manager where the specialty is referential transparency extended to package-level.
11:26:17 tchouri joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
11:26:18 <merijn> Putonlalla: Oh, oh, is the answer "a terribly ill-specified programming language that's hard to use unless you have a fulltime expert to tell you how to fix things so they work"? :)
11:26:27 <Putonlalla> I was just trying to play Jeopardy with tomjaguarpaw.
11:26:38 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
11:27:06 <tomjaguarpaw> Ah nice
11:27:39 <tomjaguarpaw> But also just having this property for our language-specific build system would be nice (some would say essential)
11:27:54 × cpressey quits (~cpressey@88.144.93.20) (Quit: WeeChat 1.9.1)
11:28:03 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
11:28:12 tchouri is now known as hekkaidekapus
11:28:31 × basil_ quits (~basil@host-87-26-187-41.business.telecomitalia.it) (Quit: Leaving)
11:28:56 <merijn> tomjaguarpaw: Well, it is one, but the API is rather unstable :p
11:29:40 <tomjaguarpaw> Yeah I've been considering extracting a stable subset, but I incrementally learn the internals of cabal slowly :)
11:29:42 mirrorbird joins (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2)
11:29:55 chaosmasttter joins (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de)
11:29:57 <tomjaguarpaw> hekkaidekapus: Does your name mean 16-legged?
11:30:46 <hekkaidekapus> tomjaguarpaw: hehehehe… Yeah, it’s about arithmetic branched off octopuses…
11:30:46 × GyroW quits (~GyroW@unaffiliated/gyrow) (Remote host closed the connection)
11:30:57 Amras joins (~Amras@unaffiliated/amras0000)
11:31:06 GyroW joins (~GyroW@ptr-48ujrfb8c7gfd2lu92q.18120a2.ip6.access.telenet.be)
11:31:06 × GyroW quits (~GyroW@ptr-48ujrfb8c7gfd2lu92q.18120a2.ip6.access.telenet.be) (Changing host)
11:31:06 GyroW joins (~GyroW@unaffiliated/gyrow)
11:31:06 <merijn> tomjaguarpaw: Godspeed
11:31:25 knupfer joins (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de)
11:31:27 <merijn> tomjaguarpaw: Cabal's internals are...hairy :p
11:31:54 <tomjaguarpaw> I've also been wondering whether it's possible to reduce Cabal's line count by 80%
11:32:07 <tomjaguarpaw> I suspect it would be, at the expense of not supporting Hugs and other little-used things
11:33:42 hvr joins (~hvr@haskell/developer/hvr)
11:35:08 <merijn> tomjaguarpaw: Well, not so much about not supporting Hugs as "dropping the established API/design that accommodates any compiler"
11:35:34 <merijn> Sure, if we just threw our hands in the air and said "fuck it, cabal only supports GHC" a significant portion of the code could be eliminated
11:35:52 <merijn> But I don't like the idea of tying crucial tooling *that* tightly to GHC
11:38:37 <hekkaidekapus> tomjaguarpaw: The full quote: “Octopus… Enapus… pentekaidekapus hekkaidekapus heptakaidekapus OKTOKAIDEKAPUS enneakaidekapus eikosapus” courtesy of Helen Dewitt <http://helendewitt.com/>
11:38:56 <tomjaguarpaw> merijn: Agreed, but it would be an interesting experiment to see just how small and simple one could get.
11:39:13 × shafox quits (~shafox@106.51.234.111) (Remote host closed the connection)
11:39:32 <tomjaguarpaw> hekkaidekapus: What's the connection to arithmetic?
11:40:23 shafox joins (~shafox@106.51.234.111)
11:40:59 <hekkaidekapus> Learning new languages, for instance starting by counting in Greek, all of that to sustain some learning philosophy due to John S. Mill.
11:42:33 <hekkaidekapus> H. Dewitt claims many teaching systems are broken and she goes on to teach Japanese, Greek, poker, bridge, maths… to an imaginary kid in her novel.
11:44:09 × terrorjack quits (sid225236@gateway/web/irccloud.com/x-tzzxtdijayougbld) ()
11:44:55 gmt joins (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net)
11:45:14 <tomjaguarpaw> Oh, The Last Samurai?
11:45:20 <hekkaidekapus> Yep!
11:45:22 <tomjaguarpaw> Interesting
11:46:11 josh joins (~josh@c-67-164-104-206.hsd1.ca.comcast.net)
11:46:40 <hekkaidekapus> It’s a masterpiece, but let’s not go too far in the off-topic.
11:47:04 terrorjack joins (~terrorjac@static.23.111.201.195.clients.your-server.de)
11:47:36 <hekkaidekapus> (Though I should add: wathc the movie —7 Samurai— before reading the novel)
11:48:13 <tomjaguarpaw> Yes, I'm a big fan of Kurosawa, which is why I found the synopsis of this book interesting. I will keep it in mind, thanks!
11:48:22 × chaosmasttter quits (~chaosmast@p200300c4a70213017ae400fffe8093b8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
11:48:25 <hekkaidekapus> yw
11:49:14 <tomjaguarpaw> It's strange. When I first saw "hekkaidekapus" I assumed it was Japanese. When I looked more closely I saw it was Greek. Now we're back to Japanese again!
11:49:27 <hekkaidekapus> lol
11:49:49 × Saten-san quits (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8)
11:49:54 polyrain joins (~polyrain@2001:8003:e501:6901:1d0:1c96:3b88:7bde)
11:50:03 <Putonlalla> We do have #haskell-offtopic, where you can just derail and go.
11:50:20 hekkaidekapus is already faded.
11:50:25 × josh quits (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
11:51:01 <tomjaguarpaw> A brief flash of communication which may change a life ... or may not. And now back to your regularly scheduled Haskell programming.
11:51:31 <nitrix> edwardk, How much have you explored ray marching signed-distance functions and do you remember much from it? I'm exploring the field and ran into a couple answers online by you and would have questions of my own.
11:53:31 <Cale> nitrix: From what I recall, Ed has made some really cool demos involving them.
11:54:33 × lemmih quits (~lemmih@58.182.131.25) (Ping timeout: 272 seconds)
11:54:41 × jchia__ quits (~jchia@58.32.37.220) (Read error: Connection reset by peer)
11:54:54 jchia_ joins (~jchia@45.32.62.73)
11:55:40 jchia__ joins (~jchia@45.32.62.73)
11:55:55 lemmih joins (~lemmih@58.182.131.25)
11:56:36 <nitrix> Like many others, I've successfully rendered a cute little scene. I now want to make an editor to build 3d models using these SDFs primitives... the problem is that suddenly makes the scene dynamic.
11:56:40 iqubic` joins (~user@2601:602:9500:4870:ecd4:9584:1de:8f2d)
11:57:40 × jchia__ quits (~jchia@45.32.62.73) (Remote host closed the connection)
11:58:13 jchia__ joins (~jchia@58.32.37.220)
11:58:24 <nitrix> I sort of have an interpreter in the shader now, reading "instructions" to draw various primitives from a UBO (uniform buffer). The performance is pretty bad beyond a handful of SDFs.
11:59:19 <nitrix> So that's one question for edward, then second one would be if I should drop the full-screen quad approach and invest time into compute shaders.
11:59:25 × __Joker quits (~Joker@180.151.105.65) (Ping timeout: 240 seconds)
11:59:49 __Joker joins (~Joker@180.151.105.65)
11:59:51 <nitrix> Not very Haskell-related but pretty math-y :D
12:00:02 × Cadair1 quits (~Cadair@185.204.1.185) ()
12:01:02 × jchia_ quits (~jchia@45.32.62.73) (Remote host closed the connection)
12:01:12 × iqubic quits (~user@2601:602:9500:4870:958d:950f:29cc:a6c4) (Ping timeout: 260 seconds)
12:01:23 jchia_ joins (~jchia@45.32.62.73)
12:02:24 × jchia_ quits (~jchia@45.32.62.73) (Remote host closed the connection)
12:03:39 urodna joins (~urodna@unaffiliated/urodna)
12:03:42 jchia_ joins (~jchia@58.32.37.220)
12:04:54 × acidjnk_new2 quits (~acidjnk@p200300d0c73658819d57354728142a5b.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
12:09:09 <tomjaguarpaw> nitrix: What's the best introduction to SDFs for that kind of thing?
12:10:07 sQVe joins (~sQVe@unaffiliated/sqve)
12:11:03 wavemode joins (~wavemode@097-070-075-143.res.spectrum.com)
12:11:24 <nitrix> tomjaguarpaw, Probably this video/channel "The Art of Code": https://www.youtube.com/watch?v=PGtv-dBi2wE
12:12:13 <nitrix> tomjaguarpaw, Otherwise, this guy Inigo Quilez (aka IQ) is one of the leading pioneer: https://iquilezles.org/www/articles/distfunctions/distfunctions.htm
12:12:18 × knupfer quits (~Thunderbi@dynamic-046-114-145-147.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
12:12:27 <davve> ah nitrix beat me to linking inigos
12:12:39 <davve> love those geometry functions
12:12:40 <nitrix> tomjaguarpaw, He's the creator of ShaderToy (https://www.shadertoy.com/) which is junk full of that technique.
12:14:29 DavidEichmann joins (~david@43.240.198.146.dyn.plus.net)
12:14:42 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
12:15:34 × Peter_Storm quits (uid288816@gateway/web/irccloud.com/x-nhjukwhxucyezwqe) (Quit: Connection closed for inactivity)
12:16:28 <nitrix> tomjaguarpaw, Oh, and here's a video that can sell you on the technique for doing constructive solid geometry: https://www.youtube.com/watch?v=Cp5WWtMoeKg
12:17:27 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
12:25:11 × gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
12:25:19 × shad0w_ quits (~shad0w_@160.202.36.27) (Read error: Connection reset by peer)
12:26:41 shad0w_ joins (~shad0w_@160.202.36.94)
12:26:43 <davve> nitrix: shaders are a nice way of using them
12:26:54 <davve> and with glsl you get all the math functions you might need
12:27:17 <davve> only they can be difficult to debug
12:27:28 <davve> painful but fun
12:28:01 × boxscape quits (577bcb23@gateway/web/cgi-irc/kiwiirc.com/ip.87.123.203.35) (Quit: Connection closed)
12:28:49 × sQVe quits (~sQVe@unaffiliated/sqve) (Quit: Bye!)
12:29:29 × darjeeling_ quits (~darjeelin@122.245.219.58) (Ping timeout: 260 seconds)
12:29:56 <dminuoso> aroundWith :: (ActionWith a -> ActionWith b) -> SpecWith a -> SpecWith b; type ActionWith a = a -> IO (); after action = aroundWith $ \e x -> e x `finally` action x
12:30:02 <dminuoso> My head is spinning. How is this even type checking?
12:30:32 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
12:30:39 <dminuoso> How can aroundWith take a 2-argument function with that type signature?
12:31:05 <{abby}> ((a- > IO ()) -> b -> IO ()) -> SpecWith a -> SpecWith b
12:31:13 <{abby}> modulo paren errors, if any
12:31:15 <Cale> e :: ActionWith a, x :: a
12:31:16 sQVe joins (~sQVe@unaffiliated/sqve)
12:31:41 × Stanley00 quits (~stanley00@unaffiliated/stanley00) ()
12:31:45 <dminuoso> Oh.
12:32:10 <dminuoso> My head kept thinking of this type alias as a newtype for so long, after 15 minutes in disbelief it didn't click.
12:32:12 <dminuoso> Thanks.
12:32:14 <ski> what's `SpecWith' ?
12:32:29 <dminuoso> type SpecWith a = SpecM a ()
12:32:47 <Cale> (It doesn't matter for this question, it turns out)
12:33:05 <ski> (yea, i know. just wondering)
12:33:28 <dminuoso> This I think is a good example of why type aliases can be annoying.
12:33:30 × sQVe quits (~sQVe@unaffiliated/sqve) (Client Quit)
12:33:41 <Cale> Yeah, pretty much
12:33:56 <Cale> It would be clearer without the synonym
12:34:09 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:34:25 × p8m quits (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 264 seconds)
12:34:43 sQVe joins (~sQVe@unaffiliated/sqve)
12:34:55 <ski> aroundWith . flip . (runContT .) :: (b -> ContT () IO a) -> (SpecWith a -> SpecWith b) -- then
12:35:03 p8m joins (p8m@gateway/vpn/protonvpn/p8m)
12:35:33 × Kaivo quits (~Kaivo@104-200-86-99.mc.derytele.com) (Quit: WeeChat 2.9)
12:36:02 cybercraft joins (~Cybercraf@194.78.58.3)
12:37:58 × sQVe quits (~sQVe@unaffiliated/sqve) (Client Quit)
12:38:48 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
12:39:14 gmt joins (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net)
12:40:04 iqubic` parts (~user@2601:602:9500:4870:ecd4:9584:1de:8f2d) ("ERC (IRC client for Emacs 28.0.50)")
12:40:28 hackage signable-haskell-protoc 0.1 - Signable instances protoc compiler plugin. https://hackage.haskell.org/package/signable-haskell-protoc-0.1 (coingaming)
12:41:05 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 240 seconds)
12:43:30 argent0 joins (~argent0@168.227.97.4)
12:46:24 × rprije quits (~rprije@27.143.220.203.dial.dynamic.acc01-myal-dub.comindico.com.au) (Ping timeout: 260 seconds)
12:47:27 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
12:48:11 tronical joins (~tronical@185.244.214.216)
12:50:21 drbean joins (~drbean@TC210-63-209-62.static.apol.com.tw)
12:50:38 xerox_ joins (~xerox@unaffiliated/xerox)
12:51:57 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
12:52:19 <siraben> What should I do when stack fails to find a version of GHC that works?
12:52:29 <siraben> Why wouldn't it have found a version that worked in the past?
12:52:41 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-157-9.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer)
12:55:00 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:56:28 <merijn> siraben: It doesn't look for a GHC version, the snapshot specifies the GHC version
12:56:45 × rihards quits (~rihards@balticom-142-78-50.balticom.lv) (Quit: rihards)
12:57:05 × gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
12:57:09 <merijn> So if you stack setup uses lts 11.8 (or whatever, I don't use stack) that defines which GHC you get and if that one doesn't work, well, fix your project >.>
12:57:13 <siraben> Running stack init in a repository like https://github.com/jozefg/pcf/ seems to fail
12:57:41 <siraben> log: http://ix.io/2yhR
12:58:13 <merijn> I'm assuming "stack init" just picks the latest LTS snapshot or something
12:58:41 <merijn> I doubt it does anything smart
12:59:13 <siraben> Is that log not showing it going through older LTS snapshots to find one that has all the deps?
12:59:24 <merijn> ok, something smarter than I expected, but still doomed to fail
12:59:34 <siraben> How should I fix it?
12:59:38 <merijn> siraben: Eh, why would you assume a snapshot that has all the dependencies exists?
12:59:54 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
13:00:02 <siraben> merijn: presumably this project built at some moment in time
13:00:07 <merijn> That seems...naively optimistic, especially given the lat change to that package predates the existence of stack
13:00:32 <siraben> Ok, I see why, because it predates stack.
13:00:36 <merijn> oh, wait, no, there's more recent changes
13:00:47 <merijn> Still, I'd assume the author uses cabal-install
13:01:09 <siraben> Well, cabal build doesn't work either.
13:01:18 <siraben> After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: base, language-c, c-dsl, pcf
13:01:28 <merijn> What's the rest of the error, though?
13:01:47 <siraben> http://ix.io/2yhU
13:02:08 <merijn> Right
13:02:15 <siraben> stack wasn't around in 2015?
13:02:46 <siraben> Ok, so building projects older than stack seems to be slightly more involved.
13:02:47 <merijn> siraben: That error is pointing out that it (transitively) depends on language-c==0.4.*
13:03:02 <merijn> siraben: Which requires (conflict: language-c
13:03:03 <merijn> +/-separatesyb +/-splitbase => base<4.11)
13:03:16 <merijn> So your GHC is to new
13:03:38 <merijn> You could (optimistically) try "cabal build --allow-newer" which may work
13:03:42 <siraben> Ok, so should I use a nix-shell with an older version of GHC then?
13:04:37 <merijn> siraben: base 4.11 is GHC 8.4 it seems: https://wiki.haskell.org/Base_package
13:05:53 × polyrain quits (~polyrain@2001:8003:e501:6901:1d0:1c96:3b88:7bde) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:06:42 polyrain joins (~polyrain@2001:8003:e501:6901:1d0:1c96:3b88:7bde)
13:06:42 × polyrain quits (~polyrain@2001:8003:e501:6901:1d0:1c96:3b88:7bde) (Client Quit)
13:07:26 <siraben> merijn: Running cabal build --allow-newer now
13:08:04 <cheater> what's a word for an exercise that's very repetitive, and you learn by doing a lot of it? like when you have a full page of stuff like 1x5 = __, 7x4 = __, and so on
13:08:41 <siraben> cheater: rote
13:08:48 <siraben> rote learning, that is
13:10:13 <cheater> someone else suggested that too. rote learning is the method with which you learn from this. but what about the problem itself that's on the problem sheet?
13:10:37 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
13:10:37 darjeeling_ joins (~darjeelin@122.245.219.58)
13:10:50 hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
13:11:29 <int-e> boring, trite, routine
13:12:31 <int-e> (and wrong channel)
13:15:37 <siraben> merijn: with allow-never it seems to get all the dependencies, however how it's complaining about Pcf.hs which is the source file
13:15:43 <siraben> newer*
13:15:47 bahamas joins (~lucian@188.24.181.166)
13:15:47 × bahamas quits (~lucian@188.24.181.166) (Changing host)
13:15:47 bahamas joins (~lucian@unaffiliated/bahamas)
13:15:48 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
13:16:10 <siraben> http://ix.io/2yhY
13:16:36 <siraben> Could I use nix to go back to GHC 8.4 with the packages there?
13:16:46 <merijn> Probably a change in the dependencies or something
13:16:55 basil joins (~basil@host-87-26-187-41.business.telecomitalia.it)
13:17:19 basil is now known as Guest18536
13:17:44 × Guest18536 quits (~basil@host-87-26-187-41.business.telecomitalia.it) (Client Quit)
13:18:58 <siraben> Hm, what's the easiest way to get it to build then?
13:19:04 <siraben> These are not libraries I'm very familiar with.
13:19:23 <Cheery> A question.. Lets say you had de-bruijn syntax, eg. λλ1, how would you represent let-expressions?
13:19:37 <Cheery> and letrec syntax?
13:20:01 <Cheery> let x = ... in, if we dropped the variable here, how would you adjust the syntax? How about the case expression?
13:20:15 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
13:20:49 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds)
13:21:36 <ggole> Indices require rewriting of the scope of a binding when you remove that binding
13:22:12 <ggole> Wait, did you mean removing the name and using an index?
13:22:56 <merijn> siraben: The package is lacking proper bounds, so the answer is "you manually have to patch the package description to have the correct bounds"
13:23:06 <Cheery> yup. I mean, if it had a textual representation where you use de-bruijn indices, how would you form let-expressions?
13:23:08 <edwardk> nitrix: i did. though i admit my brain is currently a bit of goo on the floor from my current project
13:23:14 <merijn> siraben: "What are the correct bounds?" 'you have to figure that out the hard way'
13:23:29 <siraben> Ugh, if only there was an automated tool to do that!
13:23:43 <Cheery> You could use (λx) y to represent let = y in x
13:23:54 <merijn> There can't be, because "it compiles" isn't sufficient to identify "correct" bounds
13:24:02 <edwardk> Cale: if you thought `constraints` was fun. wait until you meet it's polykinded cousin https://github.com/ekmett/haskell/blob/master/types/src/Data/Type/Constraint.hs
13:24:06 <ggole> Just let term in body seems ok
13:25:07 <cheater> tomsmeding: so i was wondering, does cmd.exe accept the EXACT same terminal escape codes as VT100 (just possibly less of them)? what if for windows, I told Vty to not query terminfo, but instead give it a specific finite amount of supported escape codes instead?
13:25:22 Saten-san joins (~Saten-san@ip-83-134-202-127.dsl.scarlet.be)
13:25:25 <cheater> tomsmeding: basically making it not use terminfo, but instead hard coded stuff
13:27:04 <edwardk> Cheery: i tend to bolt lets in as an extra form in most of my type checkers. why? mainly because inference can be a bit better and you can make an ever so slightly faster evaluator that just recurses in with the arg in hand in debruijn terms you just wind up with let expression body where the body is counted as having one more expression bound in it, 'let expression' counts like a lambda in terms of var count.
13:28:06 cybercraft parts (~Cybercraf@194.78.58.3) ("WeeChat 2.9")
13:28:50 <edwardk> this whole 'plumbing around every part of every expression' feels very grothendieck construction-like to me.
13:29:13 <edwardk> it is weird treating "Left" as a functor. and '(:) as a bifunctor
13:30:39 shatriff joins (~vitaliish@176.52.219.10)
13:30:56 <siraben> edwardk: error raised at compile time by the bound library; Exception when trying to run compile-time code: This is bad: AppT (ConT Language.Pcf.Clos) (VarT a_6989586621679111736) False, what could be causing it?
13:31:44 <edwardk> wat?
13:32:20 <siraben> edwardk: why doesn't this work? http://ix.io/2yi5
13:32:28 <siraben> you're the author of bound right?
13:32:54 <siraben> makeBound ''ExpC seems to be the culprit
13:32:57 hackage signable 0.1 - Deterministic serialisation and signatures with proto-lens support https://hackage.haskell.org/package/signable-0.1 (coingaming)
13:33:16 <merijn> siraben: The problem is that --allow-newer probably picks bound 2.x
13:33:37 <merijn> siraben: And pcf uses bound 1.x
13:33:41 <siraben> merijn: I've decided to remove the bounds completely and update the project to the newest libraries
13:33:55 <siraben> So I've commented everything out and starting from top dow
13:33:55 <siraben> down
13:33:59 <edwardk> can you try expanding the type synonym for Clos in it?
13:34:02 <merijn> siraben: Then I'd recommend consulting the changelog of dependencies and read what changed? :)
13:34:04 × argent0 quits (~argent0@168.227.97.4) (Remote host closed the connection)
13:34:09 <edwardk> it probably isn't seeing through that
13:34:15 <siraben> merijn: Ok
13:34:29 <siraben> edwardk: Ah, now it works
13:34:38 <siraben> Interesting, didn't know type synonym expansion matters
13:34:50 <edwardk> well, we have to walk through that syntax tree manually in TH
13:34:52 Kaivo joins (~Kaivo@104-200-86-99.mc.derytele.com)
13:35:03 <edwardk> and i guess we never had anybody try to hide expressions from us behind type synonyms before
13:35:21 <edwardk> otherwise we have to figure out how to look them up instantiate them and keep walking somehow
13:35:30 <edwardk> sounds like lots fo templatehaskell
13:36:13 <siraben> edwardk: is there a problem with mutually recursive data?
13:36:30 <siraben> I have, data A = .<B>., data B = ...<A> ... and makebound ''A; makeBound ''B
13:36:32 <siraben> Seems to fail as well
13:36:40 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
13:36:50 <edwardk> there is a 'trick' to working with bound
13:37:06 <edwardk> you make one monad, and a bunch of left-modules over monads that carefully don't mention it
13:37:09 <edwardk> then get parameterized on it
13:37:41 <siraben> Left module over a monad is left distributivity over bind, right?
13:37:43 <edwardk> https://github.com/ekmett/bound/blob/master/examples/Deriving.hs
13:38:21 <edwardk> shows an example with patterns
13:38:26 <edwardk> the patterns are in a separate data type
13:38:35 <siraben> Ah, I'll take a look, thanks.
13:38:37 <edwardk> that data type has an instance of the Bound class
13:38:54 <edwardk> but note Pat carries the 'f' as a parameter and later we just instantiate that to Exp
13:38:54 <hekkaidekapus> siraben: (In the shell) `printf '%s\n%s' 'packages: .' 'allow-newer: *:all' > cabal.project` in the pcf directory. Then build. You will have to make local patches to fix <https://paste.tomsmeding.com/84uGbbWh>.
13:38:59 <edwardk> Pat isn't itself a monad
13:39:03 <edwardk> it is just an instance of Bound
13:39:43 <edwardk> Some times you dont' want to do this, so i then recommend writing the instances by hand, and making your own class for the (>>>=) equivalent operation, which is that left-module thing
13:40:35 × drbean quits (~drbean@TC210-63-209-62.static.apol.com.tw) (Ping timeout: 258 seconds)
13:40:52 IT92 joins (511495c6@198-149-20-81.sta.estpak.ee)
13:41:14 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
13:41:30 <edwardk> siraben: https://github.com/ekmett/bound/tree/master/examples has a few examples, the overkill one shows what happens if you go all the way down the manual rabbit hole
13:41:34 <siraben> I see
13:41:40 <edwardk> deriving is closer to where you are now
13:42:09 Sheilong joins (uid293653@gateway/web/irccloud.com/x-nsrjqtazcudlgiur)
13:42:48 <IT92> Hi guys! I'm qurious how do I declare binary dependencies for my haskell package? Here is example, my library needs secp256k1 library, but Hackage CI machine obviously don't have it https://hackage.haskell.org/package/signable-0.1/reports/1
13:42:57 <siraben> At least writing that somewhat boilerplatey monad instance is better than having to deal with manual substitution, heh.
13:43:28 <merijn> IT92: Short answer: You don't
13:43:42 <merijn> IT92: Are you using cabal-install?
13:43:56 <IT92> merijn I'm using stack and nix
13:44:30 <merijn> You can build/upload docs locally to get working docs in the absence of succesful hackage build, but not sure how to do that with stack
13:44:56 <merijn> "cabal haddock --haddock-for-hackage" works, I assume stack has something similar
13:45:09 <IT92> merijn thanks!
13:45:30 × ixlun quits (~matthew@213.205.241.81) (Ping timeout: 256 seconds)
13:46:40 <hekkaidekapus> siraben: hmm… Scrolling down, I see you already got the errors in <http://ix.io/2yhY>. Cheers.
13:47:29 <siraben> Alright, so the only part that seems to have problems is the one that uses the c-dsl package, hm.
13:47:54 <siraben> c-dsl has dependenices base (==4.), language-c (==0.4.)
13:49:33 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:7928:db17:6f00:cd09)
13:49:49 spew joins (uid195861@gateway/web/irccloud.com/x-ttozjtuhdixrdemb)
13:51:18 gmt joins (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net)
13:51:40 bahamas joins (~lucian@unaffiliated/bahamas)
13:52:16 mmohammadi9812 joins (~mmohammad@2.178.188.114)
13:53:47 × alp quits (~alp@88.126.45.36) (Ping timeout: 240 seconds)
13:55:09 cpressey joins (~cpressey@79-65-248-204.host.pobb.as13285.net)
13:55:13 Lycurgus joins (~niemand@98.4.96.130)
13:56:04 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 246 seconds)
13:56:15 × takuan_dozo quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
13:56:16 × gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 272 seconds)
13:56:27 <siraben> Heh, relaxing that restriction on base seems to do the job.
13:57:20 × ryansmccoy quits (~ryansmcco@193.37.254.27) (Ping timeout: 256 seconds)
13:57:25 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
13:58:08 ryansmccoy joins (~ryansmcco@156.96.151.132)
13:58:42 <siraben> merijn: is there a way to put --allow-newer in the cabal file?
14:00:19 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:01:47 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
14:02:00 × jlamothe quits (~jlamothe@dev.jlamothe.net) (Quit: leaving)
14:02:51 alp joins (~alp@2a01:e0a:58b:4920:e1db:5e81:371d:6a3c)
14:03:40 <siraben> cabal is complaining about multiple main libraries http://ix.io/2yil
14:04:13 <siraben> Oh if I write library c-dsl instead of library, it works.
14:04:14 son0p joins (~son0p@181.136.122.143)
14:04:32 irc_user joins (uid423822@gateway/web/irccloud.com/x-orjppconqhqlsued)
14:05:12 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:7928:db17:6f00:cd09) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:05:49 <siraben> I wonder if I could do a dependency override in cabal like in nix
14:08:26 jlamothe joins (~jlamothe@dev.jlamothe.net)
14:09:22 × son0p quits (~son0p@181.136.122.143) (Ping timeout: 246 seconds)
14:10:24 × IT92 quits (511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection)
14:10:34 son0p joins (~son0p@181.136.122.143)
14:11:19 oxide joins (~lambda@unaffiliated/mclaren)
14:13:31 <edwardk> siraben: that is what cabal.project files are for
14:13:56 <edwardk> siraben: https://github.com/ekmett/codex/blob/master/cabal.project#L57
14:13:59 <edwardk> is an example
14:14:24 × SanchayanM quits (~Sanchayan@106.201.114.230) (Quit: leaving)
14:14:29 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
14:14:57 fendor joins (~fendor@77.119.128.64.wireless.dyn.drei.com)
14:15:02 <siraben> edwardk: Oh, do I have to use another tool or does it work with cabal?
14:15:10 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
14:15:14 <edwardk> cabal.project is part of cabak
14:15:16 <edwardk> er cabal
14:15:26 <siraben> Ok, I'll try that
14:16:02 <edwardk> you put one at the top of your project dir, it can tell cabal where to go find libraries when they are branches in git repos, tell it to override version bounds in various ways, specify flags, etc.
14:16:39 <edwardk> you can share one across multiple libraries when working on a multi-library project, etc.
14:17:03 × xff0x quits (~fox@2001:1a81:53e9:6d00:158c:d17f:d83e:dc7f) (Ping timeout: 272 seconds)
14:17:28 <siraben> edwardk: I already have pcf.cabal, so I add cabal.project as well?
14:17:34 <edwardk> yes
14:17:48 <edwardk> cabal.project is used to locate cabal files and specify things like overrides
14:18:16 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
14:18:42 × mjuad quits (greg@2600:3c00::f03c:91ff:fec3:b10f) (Quit: WeeChat 1.6)
14:18:55 <edwardk> that is the only actual required line
14:19:14 × jlamothe quits (~jlamothe@dev.jlamothe.net) (Remote host closed the connection)
14:19:30 <edwardk> after that you can skim through that file i linked, and at the bottom there are some examples of specifying local project bounds on things, or allowing newer versions of different libraries for either specific targets or all
14:19:43 <edwardk> the cabal docs have a bunch to say on cabal.project files
14:20:31 <siraben> Ah, I see
14:20:32 IT78 joins (511495c6@198-149-20-81.sta.estpak.ee)
14:20:34 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:dceb:16d3:9c64:27d9)
14:21:04 <merijn> .cabal files specify packages, cabal.project files specify "build setups"
14:21:28 <merijn> One is for distributing packages, the other helps specify setups when developing packages
14:22:23 <IT78> Hi guys! Can cabal package use dependencies from github like stack do? I just need a bit different version of package, but don't want to push changes and propose pull request to contributor of the package
14:22:35 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
14:23:10 <siraben> edwardk: great, it works, thanks!
14:23:38 <merijn> IT78: Depending on circumstances "not really" or "sorta"
14:24:16 <merijn> IT78: You can use cabal.project files to point to a git repo to fetch a dependency from, which is useful for "in-flight" patches/changes
14:24:30 <merijn> But it's probably a bad idea for long-term
14:24:42 <IT78> merijn why?
14:24:53 <tomsmeding> cheater: I believe that cmd.exe attempts to act like an xterm, which is kind of the modern (but ugly, according to some?) de-facto derivative/extension of vt100
14:25:01 <merijn> Well, for one, such a package can't be (usefully) distributed via Hackage
14:25:13 <cheater> tomsmeding: i thought it was trying to act like vt100
14:25:16 <tomsmeding> so yes, if you manage to make vty not query terminfo and just blindly assume it runs in an xterm, then yes
14:25:16 <merijn> Also, git repos tend to be more volatile in terms of lifecycle
14:25:20 <cheater> tomsmeding: what do you think of my plan?
14:25:21 <cheater> ok
14:25:21 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
14:25:41 <cheater> have you ever looked inside vty? to see if/how it figures out what escape sequences to use when?
14:25:44 <tomsmeding> cheater: https://github.com/microsoft/terminal/issues/6045#issuecomment-631743728
14:26:15 mastarija joins (~mastarija@93-142-74-181.adsl.net.t-com.hr)
14:26:27 <IT78> merijn so how usually such issues are solved with cabal? Just create new hackage repo with new code which you can change?
14:26:42 <merijn> IT78: Depends what you're working on
14:26:57 <merijn> IT78: Like, if you don't ever plan to put it on hackage then the problem is moot
14:27:05 <mastarija> Is it possible to read from Control.Concurrent.Chan without blocking. Or rather, is it possible to return Nothing in case there is no value in the Chan at the moment?
14:27:22 × DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
14:27:31 <tomsmeding> cheater: as for looking inside vty, well, I just did earlier today in response to your question, and found https://hackage.haskell.org/package/vty-5.30/docs/src/Graphics.Vty.Output.html#outputForConfig which, directly or indirectly, calls https://hackage.haskell.org/package/vty-5.30/docs/src/Graphics.Vty.Output.TerminfoBased.html#reserveTerminal
14:27:47 <dminuoso> IT78: You could also run a local package repository (does not have to be hackage). cabal is able to use multiple repositories
14:27:52 <dminuoso> Look at skete
14:27:58 <merijn> mastarija: I was gonna say yes, but apparently not
14:28:03 <mastarija> From what I understand, if I attempt to read from Chan when there's nothing in it, that operation will block until a new value arrives
14:28:30 <merijn> mastarija: However, I've got a package that's basically a more featureful implementation of Chan which does support that ;)
14:28:33 <merijn> mastarija: https://hackage.haskell.org/package/broadcast-chan
14:28:34 <IT78> dminuoso thanks!
14:28:36 xff0x joins (~fox@2001:1a81:53e9:6d00:158c:d17f:d83e:dc7f)
14:28:44 jlamothe joins (~jlamothe@dev.jlamothe.net)
14:28:47 <tomsmeding> cheater: Terminfo, there, is System.Console.TermInfo from https://hackage.haskell.org/package/terminfo , which does foreign calls to a C library; I didn't look further, but I assume that's going to fail on windows
14:28:53 acidjnk_new2 joins (~acidjnk@p200300d0c73658819d57354728142a5b.dip0.t-ipconnect.de)
14:28:55 × tolt quits (kevin@2600:3c03::f03c:91ff:fe79:6b76) (Quit: tolt)
14:29:38 × IT78 quits (511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection)
14:29:46 <tomsmeding> mastarija: any reason you're not able to use a TChan from Control.Concurrent.STM ? That does support polling
14:29:52 <merijn> Wait, no
14:29:54 <merijn> I lied
14:29:58 <merijn> I should add that!
14:30:03 <tomsmeding> :D
14:30:07 <merijn> The Maybe is for when it's closed >.>
14:30:21 <mastarija> tomsmeding, well, I kind of used Chan and am to lazy to switch now
14:30:24 machinedgod joins (~machinedg@45.78.189.122)
14:30:31 <mastarija> :D
14:30:32 <tomsmeding> that's a reason :p
14:30:56 <tomsmeding> mastarija: also, I haven't tried it, but perhaps https://hackage.haskell.org/package/base-4.14.0.0/docs/System-Timeout.html#v:timeout works
14:31:08 utopic_int0x80 joins (~lucid_0x8@188.253.235.98)
14:31:19 eric_ joins (~eric@2804:431:c7d4:402a:842:24e2:eb65:718)
14:31:19 <mastarija> tomsmeding, that was going to be my next question :D
14:31:38 ddellacosta joins (~dd@86.106.121.168)
14:31:41 × Lycurgus quits (~niemand@98.4.96.130) (Quit: Exeunt)
14:31:57 × mirrorbird quits (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) (Quit: Leaving)
14:32:17 <tomsmeding> even if it works, it's dangerous, though, because you might get Nothing then even if there is data on the Chan
14:32:31 <mastarija> tomsmeding, although I could use MVar or something like that and a separate thread to push changes form Chan into it
14:32:43 <mastarija> and then read values from that MVar
14:32:43 <tomsmeding> in case the read just takes abnormally long (which I guess can happen) and that happens to be longer than the (short) timeout you specified
14:33:07 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
14:33:18 <Eduard_Munteanu> mastarija, or TMVar
14:33:27 <mastarija> tomsmeding, do you think my TMVar approach could work?
14:33:46 <mastarija> Eduard_Munteanu, I kind of need speed in this case
14:33:46 <tomsmeding> what even is a TMVar
14:33:52 <Eduard_Munteanu> mastarija, the nice thing about STM primitives is you can do something like select()
14:33:56 <merijn> tomsmeding: STM version of MVar
14:34:10 <tomsmeding> isn't that TVar?
14:34:12 <merijn> mastarija: What's the actual problem, though?
14:34:13 <merijn> tomsmeding: No
14:34:18 <merijn> tomsmeding: TVar can't be empty
14:34:21 <tomsmeding> ah
14:34:24 <mastarija> merijn, game loop for multiplayer game
14:34:34 <mastarija> and I need to receive data form the server
14:34:42 <merijn> mastarija: Eh, more detailed then that :p Why do you need to poll for data?
14:34:43 <mastarija> so I can't have my loop block
14:35:08 <merijn> You can do something super dumb
14:35:22 <merijn> Like, use and MVar and have one thread "read from Chan, write to MVar"
14:35:33 <merijn> and then your main loop can do "tryTakeMVar"
14:35:38 <mastarija> merijn, that's what I suggested earlier
14:35:43 <mastarija> I think I'll go with that :D
14:35:44 <tomsmeding> that could work :p
14:35:53 John20 joins (~John@82.46.59.122)
14:35:55 <tomsmeding> it won't even be that slow perhaps
14:35:56 <merijn> It probably wouldn't even be that inefficient, tbh
14:36:01 <tomsmeding> lol
14:36:18 <merijn> sleeping on Chan/MVar is pretty cheap
14:36:24 <mastarija> Ok, thanks for the brainstorm peeps!
14:36:29 <Eduard_Munteanu> One other reason to refactor is to use a bounded channel instead of Chan to avoid leaks.
14:36:50 <mastarija> Meh, I'll accept spaceleaks for now XD
14:36:51 <John20> Hi all, Does anyone have any examples of LanguageExtensions that have made it into the haskell language 'proper'?
14:37:16 <mastarija> Eduard_Munteanu, But yes, I will have to fix that eventually
14:37:31 <merijn> John20: PatternGuards extension was added to the report in Haskell2010
14:37:43 <merijn> as was EmptyDataDecls?
14:38:11 <Eduard_Munteanu> John20, https://www.haskell.org/onlinereport/haskell2010/haskellli2.html#x3-5000
14:38:24 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-157-9.dhcp-dynamic.fibreop.nb.bellaliant.net)
14:39:02 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
14:39:14 <Eduard_Munteanu> I'd count a few more as de facto into the language, such as FlexibleInstances, MPTCs...
14:40:00 ph88^ joins (~ph88@2a02:8109:9e40:2704:3dae:c0b9:eddf:4cf0)
14:40:59 <Eduard_Munteanu> It's hard to imagine Haskell without some of those even if not in the report.
14:42:05 gmt joins (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net)
14:42:25 <John20> Thanks, that's really useful. I'm writing a blog post about some of the things that are surprising about Haskell for someone coming from a more mainstream language (Java in my case).
14:43:28 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
14:44:06 <merijn> John20: The main problem is that "properly specifying" these extensions is tricky and that's what any new Haskell Report would have to do to include them. Which is why the past 2 (3?) attempts to produce a new report have stranded
14:44:17 × ph88 quits (~ph88@2a02:8109:9e40:2704:b503:e755:2c19:955c) (Ping timeout: 272 seconds)
14:44:27 hackage flink-statefulfun 0.1.0.0 - Flink stateful functions SDK https://hackage.haskell.org/package/flink-statefulfun-0.1.0.0 (tdbgamer)
14:44:32 <cpressey> Hi. I have a list of Word8 and I'd like to render it as hexdigit pairs (e.g. "03 a9 1e" etc). I have written a function to do this, but it uses Text.Printf, which produces a String, but the consumer of my function now expects a Data.Text.Text. I could just DT.pack the string, but... any suggestions for something more elegant?
14:44:38 <merijn> Everyone wants to include "the most common/important stuff into the report", but actually specifying them is hard and people give up
14:45:06 <merijn> cpressey: fyi, the Numeric module has functions for doing that too
14:45:15 <John20> Language Extensions certainly fit that bill. to my mind, they feel like an incubator for new language features however, they rarely seem to actually make it into the core language. Does anyone know why that is? Is my understanding roughly correct?
14:45:19 <merijn> And those are less...questionable then printf :p
14:45:31 <merijn> John20: See my above 2 comments ;)
14:45:48 <merijn> > showHex 152 ""
14:45:51 <lambdabot> "98"
14:46:00 <merijn> > showHex 252 ""
14:46:04 <lambdabot> "fc"
14:46:07 <John20> thanks merijn. Missed them while typing out my response!
14:46:45 <merijn> cpressey: So I'd probably go with '\n -> DT.pack . showHex n ""' or something
14:46:52 × gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
14:47:01 × sleblanc quits (~sleblanc@unaffiliated/sebleblanc) (Ping timeout: 264 seconds)
14:47:16 <merijn> cpressey: Alternatively, you can go via text's Builder: https://hackage.haskell.org/package/text-1.2.4.0/docs/Data-Text-Lazy-Builder-Int.html#v:hexadecimal
14:47:49 <merijn> John20: The other factor is that, since GHC is really the only widely used compiler, there's less incentive to go through the hardwork to produce a new report
14:48:06 <merijn> John20: There's like 2.5 actively maintained Haskell2010 compilers
14:48:15 <merijn> And GHC has 99% market share
14:48:37 <merijn> If there was a competitor to GHC there'd be more motivation to produce a new report to standardise the various compilers
14:48:43 Sanchayan joins (~Sanchayan@106.201.114.230)
14:49:12 <glguy> cheater: what changed on windows recently that makes you ask? I haven't heard any vty/Windows news myself.
14:49:16 <mmaruseacph2> what's the timeframe?
14:49:22 <mmaruseacph2> bad window, sorry
14:49:30 pingiun joins (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net)
14:49:33 <tdammers> problem with coming up with a competitor is the economics of it
14:49:55 <tdammers> in order to compete, the other compiler would have to be able to do most of what GHC can do, and keep up with GHC, and then deliver some additional benefits
14:50:13 <tdammers> but at this point, with GHC being a thing and open-source, it is cheaper and more efficient for most people to just contribute to GHC instead
14:50:19 <merijn> tomsmeding: I hope csaba's work and massively overambitious plan to separate out the Core backend would allow alternate Haskell implementation that compile to Core and share code gen with GHC
14:50:26 <merijn> eh
14:50:33 <merijn> s/tomsmeding/tdammers
14:50:33 <tdammers> maybe what we need to do is make the GHC proposals procedure more difficult and cumbersome
14:50:54 <tdammers> hmm, that does sound like a good plan
14:51:18 <tdammers> massively ambitious indeed, and also subject to problems with Core itself not being properly version-managed
14:51:21 <dolio> There were multiple compilers for many years without new reports, though.
14:51:24 <cpressey> merijn: Thanks. I think I picked printf over showHex originally to get leading 0's. I guess my deeper question is, is there actually much gain performance-wise in switching from Strings to DT.Texts, if I need to call DT.pack in lots of places? Is it still justifiable to use DT.Text over String in the name of simply "being modern"?
14:51:26 <merijn> tdammers: https://www.patreon.com/posts/introducing-ghc-38173710
14:51:45 <merijn> cpressey: "it depends"
14:51:57 <merijn> cpressey: Like, what are you outputting and when and how much
14:52:09 <cpressey> I guess another way to say it is, do people laugh derisively when they see String in your code these day? :)
14:52:16 <merijn> cpressey: If you're just visualising a few 100 Word8 for users it probably doesn't matter much
14:52:17 <dolio> And the one new report didn't really incorporate much.
14:52:48 <merijn> cpressey: plenty of stuff is still String based, depends what you use it for
14:52:59 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:dceb:16d3:9c64:27d9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:54:46 <oats> for anyone who knows java/oopystuffs, is an AbstractVisitor just a shittier Traverse?
14:54:52 <cpressey> merijn: Makes sense, thanks. This is definitely not very performance-sensitive, I'm more wondering about norms and "nice" ways to write it. I'll probably just leave it as is.
14:55:42 <merijn> cpressey: You could write a small wrapper that goes straight to Text which can be convenient when you need to combine with lots of other Text
14:56:46 stef204 joins (~stef204@unaffiliated/stef-204/x-384198)
14:57:14 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:c87d:6f52:4c16:4130)
14:58:02 <dolio> oats: I think a visitor is the function you pass to e.g. traverse.
14:59:08 <dolio> `T -> ()` basically.
14:59:22 <oats> right, thanks
14:59:26 <dolio> Or `T -> M ()`, since the former is useless.
14:59:47 <oats> trying to read some java that's making me want to never venture near java ever again
14:59:53 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:00:01 × tronical quits (~tronical@185.244.214.216) ()
15:00:07 <dolio> There are multiple patterns that could just be functions, I think.
15:01:24 bahamas joins (~lucian@unaffiliated/bahamas)
15:02:29 × dale quits (dale@unaffiliated/dale) (Remote host closed the connection)
15:03:17 dale joins (dale@unaffiliated/dale)
15:04:12 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
15:04:30 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:04:57 × borne quits (~fritjof@200116b864f88900f00953f5fedbeb5e.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
15:05:31 perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
15:05:43 josh joins (~josh@c-67-164-104-206.hsd1.ca.comcast.net)
15:06:41 × pingiun quits (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:08:46 <siraben> Which version of GHC will have -XLinearTypes ?
15:09:12 josh_ joins (~josh@c-67-164-104-206.hsd1.ca.comcast.net)
15:09:48 × zebrag quits (~inkbottle@aaubervilliers-654-1-112-47.w86-198.abo.wanadoo.fr) (Remote host closed the connection)
15:10:10 zebrag joins (~inkbottle@aaubervilliers-654-1-112-47.w86-198.abo.wanadoo.fr)
15:10:26 × josh quits (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
15:11:03 <phadej> 9.0 will have an experimental support
15:12:14 __Joker_ joins (~Joker@180.151.104.210)
15:13:39 × josh_ quits (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
15:13:58 <siraben> When will that be released? This month?
15:14:23 <phadej> no-one knows
15:14:37 <dolio> When was the last one?
15:14:57 <phadej> I mean, there weren't any updates on its release schedule
15:15:06 <dolio> I guess it's been 6 months.
15:15:16 <phadej> (it was supposed to be released this month, but it doesn't seem likely)
15:15:17 emmanuel_erc joins (~user@2604:2000:1382:ce03:71a7:7eea:bdbf:f3a4)
15:15:43 × __Joker quits (~Joker@180.151.105.65) (Ping timeout: 260 seconds)
15:16:17 <dolio> I guess with the major stuff, a delay isn't super surprising.
15:16:22 <phadej> https://gitlab.haskell.org/ghc/ghc/-/wikis/status/ghc-9.0.1
15:17:35 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
15:17:45 Seyaryuki joins (~Seyaryuki@185.204.1.185)
15:18:49 <phadej> looks like we should have beta release in three days!
15:18:59 <siraben> so linear types will be good for safe mutable in-place updates? and allow us to make safe API abstractions?
15:19:23 × Saten-san quits (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8)
15:20:18 <siraben> Well, the first part is what Wadler claims in his 1990 paper, Linear Types can Change the World!
15:20:40 hhefesto joins (~user@2806:103e:27:514e:97f8:577a:384e:d8df)
15:20:41 <phadej> maybe
15:21:13 <phadej> ST s allows to do safe mutable in-place updates too
15:21:23 × Sanchayan quits (~Sanchayan@106.201.114.230) (Quit: leaving)
15:22:43 <phadej> I suggest to think about LinearHaskell as an academic experiment (of they would fit into Haskell).
15:22:56 <phadej> at least for a year or two.
15:23:03 <merijn> Or 5 :p
15:23:06 <merijn> Or forever :p
15:23:26 <merijn> siraben: We can already do safe mutable in-place updates with a pure API
15:23:32 <merijn> siraben: It's called ST :)
15:23:47 <phadej> phadej ST s allows to do safe mutable in-place updates too -- few lines above.
15:23:57 <siraben> merijn: yes, but without needing to use a monad
15:24:18 <merijn> siraben: Using linear functions is going to be *hella* more invasive on your code then ST will
15:24:37 <merijn> siraben: Like "rewrite/update many dependencies" intensive
15:24:37 <siraben> merijn: Right, because now everything has to preserve the linearity
15:24:44 <phadej> time will show.
15:24:55 <siraben> Perhaps with linear-base it won't be that bad, perhaps?
15:24:56 <merijn> Whereas you can stick ST pretty much anywhere without much effort
15:24:57 bloodstalker joins (~bloodstal@46.166.187.154)
15:25:08 <phadej> linear update "eats" the old value.
15:25:17 <phadej> so you will end up writing something like ssa
15:25:39 <siraben> merijn: why doesn't ST act like the state monad? is there a state monad that is efficient?
15:25:47 <siraben> As in, I want modify, get, put, etc.
15:25:50 <phadej> (static single assignment form)
15:25:51 <dolio> I think a lot of languages experimenting with linearity for mutability stuff found that it wasn't very nice to use at the level of individual values.
15:26:05 teardown joins (~user@unaffiliated/mrush)
15:26:13 <phadej> at which point one might need some kind of syntactic sugar as well
15:26:14 <siraben> Rust uses an affine type system to manage memory, to great effect.
15:26:29 <merijn> siraben: Not sure what you mean?
15:26:40 <phadej> siraben: GHC is very good at compiling state passing code
15:26:55 <siraben> merijn: ST is a lot like using IORef, right?
15:27:09 <int-e> ST is a lot like IO
15:27:11 <merijn> siraben: Sorta? I guess?
15:27:35 <siraben> phadej: oh it is?
15:27:36 <merijn> siraben: I mean, you can easily define a version of State that uses ST for the value and has get/put/modify work on that
15:27:42 <siraben> mine to learn core I guess, never dove into it
15:27:44 <merijn> But ST is much more general
15:27:46 <int-e> IIRC the "ST" is for "state thread"... a thread that can have mutable state.
15:27:57 <dolio> And then people were looking into 'linear regions' or something instead of individual linear values.
15:28:35 × mastarija quits (~mastarija@93-142-74-181.adsl.net.t-com.hr) (Ping timeout: 260 seconds)
15:28:47 <int-e> There's really not much of a connection to the state monad, except as an implementation detail.
15:28:57 <merijn> siraben: "StateT (STRef s a) (ST s) b" with "modify :: (a -> a) -> StateT (STRef s a) (ST s) ()" is kinda the interface you're refering too
15:29:03 <phadej> dolio: I understood that Rust does have that. YOu can pass ownership of just a part of array of values (e.g. part to one thread, another part to another thread)
15:29:05 <siraben> https://old.reddit.com/r/haskell/comments/1rcc8t/performance_of_the_st_monad_over_the_state_monad/ ooh
15:29:11 <siraben> merijn: I see
15:29:12 ephemera_ joins (~E@122.34.1.187)
15:29:40 <phadej> merijn: you'd be fine with just ReaderT, details...
15:29:46 <merijn> siraben: The basic logic of ST is that "single threaded mutable references" are still perfectly deterministic in a purely function language
15:29:52 <siraben> Wadler also mentions that there should be a mechanism for getting a read-only reference to a linear value whose deference can be nonlinear
15:30:06 <merijn> siraben: Because the order of changes and what you change is perfectly deterministic in that setting
15:30:11 <siraben> Right
15:30:15 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
15:30:29 <merijn> siraben: So ST gives you arbitrary many independent mutable variables, whereas State's interface has just one
15:30:29 <dolio> phadej: Oh, I guess that's one possible meaning of 'region'. It wasn't the one I was thinking of, but maybe it's the right one.
15:30:47 <merijn> siraben: So the State API is just the trivial case of "I have one STRef" :p
15:30:52 <siraben> merijn: right
15:30:57 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
15:30:58 <siraben> Well, I haven't used STRef yet, might come in useful.
15:31:33 <phadej> yet, Rust is ownership and LinearHaskell are very different things
15:31:48 <merijn> siraben: I'd say that STRef itself has limited usefulness
15:31:52 <phadej> it's tricky to represent ownership with linear types
15:31:55 <siraben> What do people use STRef here for? Translating imperative code?
15:31:58 <merijn> siraben: The most useful ST application imo is Vector
15:32:05 <phadej> you can emulate that, but whether it's convenient: again, time will whow.
15:32:07 <dolio> Yeah, actually, that makes a lot more sense for how it would solve the problem.
15:32:09 <siraben> phadej: right, the ownership system in its glory is a lot like linear regions
15:32:31 <merijn> siraben: Vector has ST based mutable vectors, which are very useful for obvious reasons of "mutable arrays are useful" ;)
15:32:45 <siraben> Memory management aside, what about linearity as an alternative to Haskell's bracket pattern?
15:32:56 <phadej> siraben: they are complementary
15:32:58 <siraben> Also, making sure files are closed, sesion types etc
15:33:04 <phadej> LinearTypes and exceptions is not solved problem
15:33:11 <siraben> phadej: Bracket pattern is like RAII in C++ and Rust?
15:33:14 <merijn> siraben: I like the idea of that, but I'm not sure about the reality :p
15:33:19 <phadej> (in fact explicitly unsolved, IIRC)
15:33:29 <merijn> siraben: IndexedMonads might be a better solution for a "better bracket", tbh
15:33:38 <siraben> phadej: How do they interact? I know that Rust does not have exceptions but I wonder if it's do to the theoretical limitations.
15:33:46 <merijn> But I don't see Haskell en masse adopting indexed monads :p
15:33:46 <siraben> IndexedMonads is a language extension?
15:33:56 <merijn> siraben: that's a missing space ;)
15:34:06 <phadej> I think someone have to do a bit of homework at this point ;)
15:34:11 eric___ joins (~eric@2804:431:c7d4:a280:a420:f119:9a1a:c48)
15:34:41 × eric_ quits (~eric@2804:431:c7d4:402a:842:24e2:eb65:718) (Ping timeout: 246 seconds)
15:34:58 <phadej> I don't know what mechanism Rust uses to report division by zero errors
15:34:59 <phadej> e.g.
15:35:05 <siraben> Oh, it's like the LockM monad in https://www.cs.tufts.edu/comp/150FP/archive/simon-peyton-jones/typefun.pdf
15:35:06 <siraben> indexed monads, that is
15:35:07 <phadej> so I cannot comment further
15:35:31 <siraben> phadej: it panics
15:35:34 <siraben> so, stack unwind
15:35:39 <merijn> siraben: indexed monads would be "(>>>=) :: IxMonad m => m i j a -> (a -> m j k b) -> m i k b"
15:35:49 coffeeturtle joins (~coffeetur@cpc103420-donc13-2-0-cust24.17-1.cable.virginm.net)
15:35:55 mastarija joins (~mastarija@93-142-74-181.adsl.net.t-com.hr)
15:36:00 × mastarija quits (~mastarija@93-142-74-181.adsl.net.t-com.hr) (Client Quit)
15:36:02 <merijn> siraben: And then you can use i/j/k etc. to encode "file descript is open" file descriptor is closed, etc.
15:36:07 <phadej> siraben: can you recover from panics?
15:36:17 <siraben> phadej: no
15:36:21 <siraben> merijn: right
15:36:29 <siraben> panics are like error in Haskell, I suppose
15:36:36 <phadej> you can catch `error` in Haskell
15:36:55 <phadej> or just let the thread die (but not the whole program)
15:37:13 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
15:37:37 × acidjnk_new2 quits (~acidjnk@p200300d0c73658819d57354728142a5b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
15:37:41 × coffeeturtle quits (~coffeetur@cpc103420-donc13-2-0-cust24.17-1.cable.virginm.net) (Remote host closed the connection)
15:37:55 <phadej> :t error
15:37:57 <lambdabot> [Char] -> a
15:37:58 <siraben> heh, well technically you can catch panics in Rust, but it's definitely not recommended https://doc.rust-lang.org/beta/std/panic/fn.catch_unwind.html
15:38:02 coffeeturtle joins (~coffeetur@cpc103420-donc13-2-0-cust24.17-1.cable.virginm.net)
15:38:09 <phadej> :t throwIO . userError
15:38:11 <lambdabot> String -> IO a
15:38:18 <phadej> :t throw . userError
15:38:20 <lambdabot> String -> c
15:38:27 × suppi quits (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 260 seconds)
15:38:30 <phadej> error = throw . userError
15:38:37 <phadej> you can try to catch them in IO then
15:39:10 <phadej> which is e.g. useful when you write a web-server framework, so you can log how users' buggy handlers failed
15:39:31 <siraben> https://users.cs.northwestern.edu/~jesse/pubs/substructural-control/CtlURAL.pdf comes up when I search for linear types and exceptions
15:39:40 <siraben> "In short, exceptions and linear types refuse to get along, because linear types make promises that exceptions do not let them keep."
15:39:49 <siraben> But in an affine system apparently this is alright, just drop the variables.
15:40:20 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:40:28 <phadej> yes.
15:40:44 <phadej> this is why I said that LinearHaskell + exceptions is unsolved problem
15:41:25 <phadej> one can be optimistic and think "we need an implementation to see how things fit (or not fit) together, so we can develop LinearHaskell further"
15:41:39 <phadej> or you can be pessimistic and just declare upfront "it won't work"
15:41:40 <phadej> :)
15:41:50 × chele quits (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
15:41:55 pingiun joins (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net)
15:42:22 <siraben> Hehe
15:42:25 <phadej> IMHO anyone who says *now* that LinearHaskell will solve any problem is just selling you a hype.
15:42:38 <phadej> yeah, it might solve a problem, but give you dozen new ones.
15:42:40 <siraben> Why emphasis on now?
15:42:44 <siraben> Ah, right.
15:42:45 <Taneb> It might solve the problem of "I would like another thing to mess around with"
15:43:11 <siraben> I'm not expecting it to solve problems immediately, but linear types are interesting and I'd like to mess around with them, heh.
15:43:18 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 256 seconds)
15:43:18 revprez_anzio joins (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
15:43:22 <phadej> Taneb: that can be fun :)
15:43:24 <siraben> AffineHaskell, anyone?
15:43:56 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 272 seconds)
15:45:25 vdiazroa joins (578036c2@p578036c2.dip0.t-ipconnect.de)
15:45:28 mmohammadi98129 joins (~mmohammad@2.178.188.114)
15:45:38 × Chi1thangoo quits (~Chi1thang@87.112.60.168) (Remote host closed the connection)
15:45:49 × mmohammadi9812 quits (~mmohammad@2.178.188.114) (Ping timeout: 265 seconds)
15:45:49 mmohammadi98129 is now known as mmohammadi9812
15:47:16 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
15:49:41 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:c87d:6f52:4c16:4130) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:49:43 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
15:50:16 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 272 seconds)
15:50:56 <phadej> GHC-9.2 will change the syntax for linear arrows, so at least that should make it clear that LinearHaskell is very experimental feature ;)
15:51:54 <dolio> Presumably the emphasis is due to, right now, no one having any significant experience actually designing things with LinearHaskell, so any claims about what it will solve are just speculation.
15:52:07 <phadej> yes
15:52:18 qwerty joins (59b76b94@a89-183-107-148.net-htp.de)
15:52:25 ph88_ joins (~ph88@2a02:8109:9e40:2704:a1b2:872a:487a:52ae)
15:52:31 × eric___ quits (~eric@2804:431:c7d4:a280:a420:f119:9a1a:c48) (Read error: Connection reset by peer)
15:52:35 <phadej> obviously authors claim it will solve all problems ;)
15:52:43 qwerty is now known as qwerty123
15:52:57 qwerty123 is now known as qwerty93
15:53:03 <dolio> Even the authors mostly have toy examples from research papers and blog posts.
15:53:09 eric_ joins (~eric@2804:431:c7d4:a280:a420:f119:9a1a:c48)
15:54:00 × coffeeturtle quits (~coffeetur@cpc103420-donc13-2-0-cust24.17-1.cable.virginm.net) (Quit: leaving)
15:54:09 <phadej> the implicit claim? is that you examples generalise
15:54:15 <phadej> s/you/toy/
15:54:18 × utopic_int0x80 quits (~lucid_0x8@188.253.235.98) (Quit: Leaving)
15:54:30 <phadej> but in this case it is not obvious
15:55:23 plutoniix joins (~q@ppp-27-55-67-24.revip3.asianet.co.th)
15:56:21 nikosky joins (ba0e194f@186.14.25.79)
15:56:29 × ph88^ quits (~ph88@2a02:8109:9e40:2704:3dae:c0b9:eddf:4cf0) (Ping timeout: 272 seconds)
15:56:56 <qwerty93> I want to write a function `mycatch :: a -> Either String a` which returns its argument if no error was thrown and otherwise the error message. For example, `mycatch ((error "asd")::Int)` should return `Left "asd"`. How can this be done with `unsafePerformIO`?
15:57:28 <dminuoso> qwerty93: That is not possible in standard haskell/
15:57:36 × cpressey quits (~cpressey@79-65-248-204.host.pobb.as13285.net) (Quit: WeeChat 1.9.1)
15:57:36 <dminuoso> You have to do this in IO
15:57:42 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:f82a:5e5e:a65a:42ad)
15:57:47 <edwardk> pretty happy that my bytestring patch is finally going in. i'd practically forgotten about in the last year, other than using it in some cabal.project.local's
15:58:00 <dminuoso> % :t Control.Exception.evaluate -- qwerty93
15:58:00 <yahb> dminuoso: a -> IO a
15:58:16 <dminuoso> Note, you might be tempted to use unsafePerformIO with this, but there's good reasons not to.
15:58:43 <dolio> I think you should eliminate your desire to write such a function. :)
15:59:59 <qwerty93> I have seen the example `catchPure h v = unsafePerformIO $ evaluate v `catch` (pure . h)` but this can only return some sort of default value for a if an error is thrown
16:00:25 × coot quits (~coot@37.30.49.42.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
16:00:31 <davean> qwerty93: you think thats what it does at least.
16:00:36 <davean> qwerty93: this is a very bad idea.
16:00:51 <edwardk> qwerty93: the problem is it isn't monotone
16:01:19 <davean> And thats why it doesn't do what you think it does.
16:01:53 s00pcan joins (~chris@075-133-056-178.res.spectrum.com)
16:02:18 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 272 seconds)
16:02:22 <edwardk> in haskell pure code you enjoy the benefits of the fact that if you make your inputs more defined all that can happen is that at worst your output becomes more defined. in a world with catchPure that is no longer the case
16:02:39 <edwardk> that is a pretty high price of admission
16:02:49 suppi joins (~suppi@2605:f700:40:c00::e6fc:6842)
16:04:22 <qwerty93> I just want to use it for a special debugging mode, the final code would not use it anymore. So, is this not possible at all or just highly advised against?
16:05:28 <davean> qwerty93: It can make your debugging harder for the reason above.
16:06:31 <davean> as for if its possible, that depends on what "it" is, and I don't think you understand what it is and thats the problem.
16:07:41 <qwerty93> davean: you mean it affects the semantics in the sense that is forces evaluation which could cause problems if laziness is expected? the code I'm interested in is not affected by eager evaluation. or is there more?
16:07:53 × suppi quits (~suppi@2605:f700:40:c00::e6fc:6842) (Ping timeout: 272 seconds)
16:08:02 <davean> qwerty93: Theres more, see edwardk's comment.
16:08:50 <davean> qwerty93: Its value can change based on how you look at it now.
16:08:53 <edwardk> qwerty93: no monotonicity police will be dispatched to your location, just saying the nature of the issue
16:09:41 <davean> qwerty93: If it throws an exception, an exception is throw, how does this new function help you in your mind?
16:09:59 × vdiazroa quits (578036c2@p578036c2.dip0.t-ipconnect.de) (Remote host closed the connection)
16:10:14 shad0w__ joins (~shad0w_@160.202.36.59)
16:10:47 × kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
16:11:05 <davean> Tahts the sort of function I use debugging to fix, not the sort of function I use to debug.
16:11:52 × shad0w_ quits (~shad0w_@160.202.36.94) (Ping timeout: 246 seconds)
16:11:53 shad0w__ is now known as shad0w_
16:12:44 suppi joins (~suppi@172.246.241.246)
16:12:57 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Quit: WeeChat 2.9)
16:13:45 tolt joins (~Kevin@li697-66.members.linode.com)
16:14:15 senri joins (evlian@gateway/shell/xshellz/x-qfoqhwybgfovdhvb)
16:14:35 × unlink2 quits (~unlink2@p5dc0ae0e.dip0.t-ipconnect.de) (Quit: Leaving)
16:14:49 unlink2 joins (~unlink2@p200300ebcf25bd0068eb9d9c94da2a17.dip0.t-ipconnect.de)
16:15:05 tolt_ joins (kevin@2600:3c03::f03c:91ff:fe79:6b76)
16:15:30 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
16:16:52 × qwerty93 quits (59b76b94@a89-183-107-148.net-htp.de) (Remote host closed the connection)
16:17:12 <cheater> glguy: cmd.exe supports xterm escape sequences now
16:19:13 Turmfalke joins (~user@unaffiliated/siracusa)
16:20:07 josh joins (~josh@c-67-164-104-206.hsd1.ca.comcast.net)
16:20:34 × tolt quits (~Kevin@li697-66.members.linode.com) (Quit: Goodbye!)
16:21:07 tolt_ is now known as tolt
16:23:53 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
16:24:54 Saten-san joins (~Saten-san@ip-83-134-202-127.dsl.scarlet.be)
16:25:25 tzh joins (~tzh@2601:448:c500:5300::df41)
16:29:38 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:30:28 × Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 244 seconds)
16:32:05 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
16:33:18 OptimusMKD joins (~risto@87.227.241.139)
16:33:39 × OptimusMKD quits (~risto@87.227.241.139) (Max SendQ exceeded)
16:34:09 OptimusMKD joins (~risto@87.227.241.139)
16:34:59 × pingiun quits (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:36:15 × OptimusMKD quits (~risto@87.227.241.139) (Max SendQ exceeded)
16:36:45 OptimusMKD joins (~risto@87.227.241.139)
16:36:45 × dansho quits (~dansho@ip68-108-167-185.lv.lv.cox.net) (Remote host closed the connection)
16:37:07 Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch)
16:37:09 dansho joins (~dansho@ip68-108-167-185.lv.lv.cox.net)
16:38:52 × OptimusMKD quits (~risto@87.227.241.139) (Max SendQ exceeded)
16:39:03 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
16:39:30 OptimusMKD joins (~risto@87.227.241.139)
16:43:22 × Saten-san quits (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8)
16:44:44 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 272 seconds)
16:48:49 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
16:50:12 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
16:51:40 kritzefitz joins (~kritzefit@212.86.56.80)
16:51:40 × kritzefitz quits (~kritzefit@212.86.56.80) (Client Quit)
16:52:42 Dolly joins (585fd1fd@ti0203q160-5312.bb.online.no)
16:53:42 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
16:55:20 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
16:56:01 × alp quits (~alp@2a01:e0a:58b:4920:e1db:5e81:371d:6a3c) (Ping timeout: 272 seconds)
16:56:22 × nineonine quits (~nineonine@216-19-190-182.dyn.novuscom.net) (Remote host closed the connection)
16:57:44 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer)
16:58:28 × averell quits (~averell@unaffiliated/averell) (Remote host closed the connection)
17:00:14 × OptimusMKD quits (~risto@87.227.241.139) (Quit: Leaving)
17:00:28 adamwespiser joins (~adam_wesp@209.6.42.110)
17:03:58 hackage tomland 1.3.1.0 - Bidirectional TOML serialization https://hackage.haskell.org/package/tomland-1.3.1.0 (vrom911)
17:04:32 × Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 260 seconds)
17:05:01 × adamwespiser quits (~adam_wesp@209.6.42.110) (Ping timeout: 264 seconds)
17:05:15 roconnor joins (~roconnor@host-45-78-255-115.dyn.295.ca)
17:05:33 mirrorbird joins (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2)
17:05:39 nineonine joins (~nineonine@216.81.48.202)
17:06:10 × nineonine quits (~nineonine@216.81.48.202) (Remote host closed the connection)
17:06:23 nineonine joins (~nineonine@216.81.48.202)
17:07:23 pgib joins (~textual@lmms/pgib)
17:07:57 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
17:12:25 LKoen joins (~LKoen@81.255.219.130)
17:13:18 alp joins (~alp@2a01:e0a:58b:4920:3d6a:1746:8ffe:5c08)
17:13:42 pingiun joins (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net)
17:16:06 Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch)
17:16:46 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
17:16:54 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
17:17:25 Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362)
17:17:28 hackage stm-actor 0.1.2.1 - A simplistic actor model based on STM https://hackage.haskell.org/package/stm-actor-0.1.2.1 (sgschlesinger)
17:17:28 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
17:17:39 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 260 seconds)
17:17:45 × machinedgod quits (~machinedg@45.78.189.122) (Ping timeout: 240 seconds)
17:18:28 × kuribas quits (~user@ptr-25vy0i9m1chs7zs38i7.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
17:18:47 Lord_of_Life_ is now known as Lord_of_Life
17:20:33 Saten-san joins (~Saten-san@ip-83-134-202-127.dsl.scarlet.be)
17:24:38 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
17:24:51 × pingiun quits (~pingiun@ip-213-124-184-182.ip.prioritytelecom.net) (Quit: Textual IRC Client: www.textualapp.com)
17:26:16 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:26:34 pera joins (~pera@unaffiliated/pera)
17:29:57 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Remote host closed the connection)
17:30:24 × stef204 quits (~stef204@unaffiliated/stef-204/x-384198) (Quit: WeeChat 2.9)
17:34:25 David43 joins (4cd8d0d0@76-216-208-208.lightspeed.wbfdmi.sbcglobal.net)
17:34:51 × David43 quits (4cd8d0d0@76-216-208-208.lightspeed.wbfdmi.sbcglobal.net) (Remote host closed the connection)
17:35:35 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
17:36:16 sfvm joins (~sfvm@37.228.215.148)
17:36:33 × alp quits (~alp@2a01:e0a:58b:4920:3d6a:1746:8ffe:5c08) (Ping timeout: 272 seconds)
17:36:59 geekosaur joins (42d52102@66.213.33.2)
17:37:33 × jespada quits (~jespada@90.254.241.6) (Quit: Sleeping)
17:38:10 koz joins (~koz@2404:4408:4303:8800:4270:af80:81b7:2f9)
17:38:19 × koz_ quits (~koz@121.99.240.58) (Ping timeout: 246 seconds)
17:39:03 × Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds)
17:39:05 × plutoniix quits (~q@ppp-27-55-67-24.revip3.asianet.co.th) (Read error: Connection reset by peer)
17:39:13 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
17:42:26 × mariatsji quits (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Remote host closed the connection)
17:45:46 jespada joins (~jespada@90.254.241.6)
17:46:18 adamwespiser joins (~adam_wesp@209.6.42.110)
17:47:08 mariatsji joins (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e)
17:47:58 × adamwespiser quits (~adam_wesp@209.6.42.110) (Remote host closed the connection)
17:48:12 adamwespiser joins (~adam_wesp@209.6.42.110)
17:49:36 knupfer joins (~Thunderbi@i5E86B42C.versanet.de)
17:49:58 × __Joker_ quits (~Joker@180.151.104.210) (Ping timeout: 272 seconds)
17:52:57 Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer)
17:53:03 <monochrom> https://jscoq.github.io/node_modules/jscoq/examples/scratchpad.html
17:53:22 × ryansmccoy quits (~ryansmcco@156.96.151.132) (Ping timeout: 246 seconds)
17:53:50 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
17:54:10 ryansmccoy joins (~ryansmcco@156.96.151.132)
17:55:11 × Saten-san quits (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8)
17:56:11 plutoniix joins (~q@node-unh.pool-125-24.dynamic.totinternet.net)
17:56:49 × mpereira quits (~mpereira@2a02:810d:f40:d96:b903:bcf4:35d5:9a35) (Ping timeout: 272 seconds)
17:57:03 alp joins (~alp@2a01:e0a:58b:4920:a050:58b3:20bf:5c71)
17:58:21 <NieDzejkob> is there a better alternative to (const x <$>) <$> xs for replacing all elements of [[a]] by x?
18:00:01 × Seyaryuki quits (~Seyaryuki@185.204.1.185) ()
18:00:06 × John20 quits (~John@82.46.59.122) (Ping timeout: 272 seconds)
18:01:15 <phadej> :t \xs y -> set (mapped.mapped) y xs
18:01:17 <lambdabot> (Functor f1, Functor f2) => f1 (f2 a) -> b -> f1 (f2 b)
18:01:17 <monochrom> I think prefix notation is better. fmap (fmap (const x)) xs
18:02:05 Thra11 joins (~Thra11@5.1.169.217.in-addr.arpa)
18:03:23 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
18:03:45 × mariatsji quits (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Remote host closed the connection)
18:04:04 koz is now known as koz_
18:04:12 × adamwespiser quits (~adam_wesp@209.6.42.110) (Remote host closed the connection)
18:04:36 <NieDzejkob> I'm just starting to discover lens today, I assume that's where mapped comes from :D
18:05:03 <monochrom> also "set"
18:05:13 <NieDzejkob> if I defined, say, foo a b = ... where bar c = a + c, how can I access bar in ghci?
18:05:29 <monochrom> Cannot.
18:06:43 <NieDzejkob> even if I provide a specific value of a and b? How can I debug these definitions, then?
18:07:04 <dolio> fmap (const x) = (x <$)
18:07:12 Saten-san joins (~Saten-san@ip-83-134-202-127.dsl.scarlet.be)
18:07:51 <monochrom> If you're OK with outputting debugging messages, look into Debug.Trace
18:08:19 <monochrom> My Debug.Trace tutorial: http://www.cs.utoronto.ca/~trebla/CSCC24-2020-Summer/tracing.html
18:08:37 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
18:09:33 <Cale> NieDzejkob: You can of course, edit the definition and lift it out of the definition of foo, but you'd need to add a as a parameter then.
18:10:27 <NieDzejkob> that's particularily inconvenient as the definition in question is recursive
18:10:55 Jaf23o joins (029895e7@2.152.149.231.dyn.user.ono.com)
18:11:03 <Cale> Of course, addition (and other functions), work the same everywhere, so if you know a and c, you can just add them directly in ghci. (Similarly, you could use the definition of whatever local thing you were looking at to reconstruct what it would be)
18:11:10 sepi joins (49dc4892@c-73-220-72-146.hsd1.ca.comcast.net)
18:11:16 × dansho quits (~dansho@ip68-108-167-185.lv.lv.cox.net) (Quit: Leaving)
18:11:24 <senri> 10
18:11:30 <senri> whoops
18:11:34 <Cale> What's the actual definition you're trying to figure out?
18:12:07 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
18:13:34 __monty__ joins (~toonn@unaffiliated/toonn)
18:14:04 <NieDzejkob> oh hold on, I added some more type annotations and figured out what's going on :D
18:14:18 <NieDzejkob> anyway, this is what the code in question looks like: https://gist.github.com/NieDzejkob/ea6e75ee00951fb8a82e51beafa7d7c4
18:15:06 <NieDzejkob> (I'm investigating bijections f such that g(x) = x + f(x) is also bijective)
18:16:03 orion joins (~orion@unaffiliated/orion)
18:16:26 <orion> Hi. Are there technical reasons why GHC does not support the Power ISA?
18:16:38 <ski> composition of bijections yields a bijection
18:16:47 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
18:17:03 <NieDzejkob> not sure how that helps here?
18:17:03 × Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds)
18:17:08 <orion> Sorry, I should probably direct this to #ghc.
18:17:19 <ski> hm, i guess it doesn't. sorry
18:17:21 <geekosaur> orion, generally if ghc doesn't support some arch it's because nobody has time or access to it
18:17:32 <NieDzejkob> ski: I mean, g isn't a composition of bijections
18:17:56 <NieDzejkob> but composition of bijections does indeed yield a bijection
18:18:02 <orion> geekosaur: How many hours of labor do you estimate would be involved in porting GHC to another architecture?
18:18:38 × jespada quits (~jespada@90.254.241.6) (Quit: Sleeping)
18:18:42 <geekosaur> depends on what tools you can use. it'll be much faster if you can take advantage of the llvm backend instead of going unregisterised, for example
18:19:52 Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer)
18:20:04 × Sigyn quits (sigyn@freenode/utility-bot/sigyn) (Quit: i've seen things you people wouldn't believe. spam bots on fire off the shoulder of sigyn. i watched k-line beams glitter in the dark near the Tannhäuser Gate. all these moments will be lost in time, like tears in rain. time to /die)
18:20:43 Sigyn joins (sigyn@freenode/utility-bot/sigyn)
18:20:43 ChanServ sets mode +o Sigyn
18:21:56 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 265 seconds)
18:22:21 machinedgod joins (~machinedg@d67-193-126-196.home3.cgocable.net)
18:22:23 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
18:22:29 × Saten-san quits (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8)
18:23:07 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
18:26:20 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
18:27:06 Saten-san joins (~Saten-san@ip-83-134-202-127.dsl.scarlet.be)
18:28:43 × shad0w_ quits (~shad0w_@160.202.36.59) (Remote host closed the connection)
18:29:29 × senri quits (evlian@gateway/shell/xshellz/x-qfoqhwybgfovdhvb) (Remote host closed the connection)
18:29:58 jespada joins (~jespada@90.254.241.6)
18:30:35 juuandyy joins (~juuandyy@90.166.144.65)
18:36:25 × machinedgod quits (~machinedg@d67-193-126-196.home3.cgocable.net) (Ping timeout: 246 seconds)
18:36:42 × Saten-san quits (~Saten-san@ip-83-134-202-127.dsl.scarlet.be) (Quit: WeeChat 2.8)
18:38:59 × shafox quits (~shafox@106.51.234.111) (Remote host closed the connection)
18:39:05 × ystael quits (~ystael@209.6.50.55) (Ping timeout: 240 seconds)
18:39:07 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds)
18:39:23 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
18:41:47 bahamas joins (~lucian@unaffiliated/bahamas)
18:43:06 adamwespiser joins (~adam_wesp@209.6.42.110)
18:44:14 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
18:44:19 × mirrorbird quits (~psutcliff@2a00:801:44a:a00b:20c3:c64:eb15:73a2) (Ping timeout: 272 seconds)
18:44:37 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
18:46:25 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-bxvisodaildxgivh) (Quit: Connection closed for inactivity)
18:47:23 × adamwespiser quits (~adam_wesp@209.6.42.110) (Ping timeout: 240 seconds)
18:48:18 <hyperisco> since we have flip :: (a -> b -> c) -> (b -> a -> c) I think it makes a lot of sense to add flop :: (b -> a -> c) -> (a -> b -> c) in case you want to go back
18:49:03 <monochrom> haha
18:49:10 adaminsull joins (~adaminsul@84.39.117.57)
18:49:24 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
18:49:35 <Rembane> Cunning!
18:50:42 <monochrom> We also need one for reverse.
18:51:02 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
18:51:44 <tomjaguarpaw> rovorse
18:52:58 hackage libjwt-typed 0.2 - A Haskell implementation of JSON Web Token (JWT) https://hackage.haskell.org/package/libjwt-typed-0.2 (rzeznik)
18:56:49 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Remote host closed the connection)
18:57:41 × knupfer quits (~Thunderbi@i5E86B42C.versanet.de) (Ping timeout: 260 seconds)
18:57:56 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
18:58:50 × Jaf23o quits (029895e7@2.152.149.231.dyn.user.ono.com) (Ping timeout: 245 seconds)
19:00:31 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
19:06:14 × orion quits (~orion@unaffiliated/orion) ()
19:07:20 michael__ joins (~michael@2a02:2455:b61:1b00:4ecc:6aff:fe28:be5e)
19:08:23 × alp quits (~alp@2a01:e0a:58b:4920:a050:58b3:20bf:5c71) (Ping timeout: 272 seconds)
19:08:42 bennofs_ joins (~quassel@dslb-094-222-034-064.094.222.pools.vodafone-ip.de)
19:10:01 × Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 246 seconds)
19:10:56 × juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 256 seconds)
19:11:09 <koz_> I'm a bit confused how to write an Hspec 'SpecWith a' with 'beforeAll'. Where do I get the value of type 'a' from?
19:11:40 <koz_> I'm only familiar with the 'describe "foo" . it "bars" $ x `shouldBe` y' style of incantation.
19:11:54 <koz_> And the docs aren't very clear about how to use 'before' and 'beforeAll'.
19:12:56 × bennofs quits (~quassel@dslb-178-000-064-245.178.000.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
19:13:01 coot joins (~coot@37.30.51.178.nat.umts.dynamic.t-mobile.pl)
19:14:11 vicfred joins (~vicfred@unaffiliated/vicfred)
19:14:14 machinedgod joins (~machinedg@d67-193-126-196.home3.cgocable.net)
19:16:11 acidjnk_new2 joins (~acidjnk@p200300d0c73658819d57354728142a5b.dip0.t-ipconnect.de)
19:16:59 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
19:17:15 × worc3131 quits (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786) (Ping timeout: 272 seconds)
19:20:57 × michael__ quits (~michael@2a02:2455:b61:1b00:4ecc:6aff:fe28:be5e) (Quit: Leaving)
19:20:57 hackage sequence-formats 1.5.1.2 - A package with basic parsing utilities for several Bioinformatic data formats. https://hackage.haskell.org/package/sequence-formats-1.5.1.2 (stephan_schiffels)
19:25:00 × sepi quits (49dc4892@c-73-220-72-146.hsd1.ca.comcast.net) (Remote host closed the connection)
19:25:26 ystael joins (~ystael@116.sub-174-196-195.myvzw.com)
19:28:43 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:30:12 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds)
19:33:02 × fendor quits (~fendor@77.119.128.64.wireless.dyn.drei.com) (Remote host closed the connection)
19:33:56 fendor joins (~fendor@77.119.128.64.wireless.dyn.drei.com)
19:35:12 chaosmasttter joins (~chaosmast@p200300c4a702130181d7af909c24ca2e.dip0.t-ipconnect.de)
19:42:17 × nikosky quits (ba0e194f@186.14.25.79) (Remote host closed the connection)
19:42:24 alp joins (~alp@2a01:e0a:58b:4920:24b6:1e8a:d1c8:1f2e)
19:43:28 John20 joins (~John@82.46.59.122)
19:45:16 × ystael quits (~ystael@116.sub-174-196-195.myvzw.com) (Read error: Connection reset by peer)
19:48:35 adamwespiser joins (~adam_wesp@209.6.42.110)
19:49:27 ystael joins (~ystael@116.sub-174-196-195.myvzw.com)
19:49:59 × geekosaur quits (42d52102@66.213.33.2) (Remote host closed the connection)
19:51:23 × carlomagno1 quits (~cararell@inet-hqmc01-o.oracle.com) (Ping timeout: 240 seconds)
19:53:23 × adamwespiser quits (~adam_wesp@209.6.42.110) (Ping timeout: 260 seconds)
19:54:08 × wwwww quits (~wwwww@unaffiliated/wwwww) (Ping timeout: 260 seconds)
19:54:44 × irc_user quits (uid423822@gateway/web/irccloud.com/x-orjppconqhqlsued) (Quit: Connection closed for inactivity)
19:56:02 wwwww joins (~wwwww@unaffiliated/wwwww)
19:56:26 gmt joins (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net)
19:57:16 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
20:00:00 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Remote host closed the connection)
20:00:34 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
20:01:01 × gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
20:01:26 gmt joins (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net)
20:01:49 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:03:29 × danvet_ quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
20:04:14 mariatsji joins (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e)
20:05:02 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
20:05:31 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:06:46 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 272 seconds)
20:08:24 × mariatsji quits (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Ping timeout: 246 seconds)
20:10:06 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
20:10:10 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
20:10:28 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
20:10:56 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:11:35 juuandyy joins (~juuandyy@90.166.144.65)
20:12:09 lazerpants joins (c59d003d@197.157.0.61)
20:14:27 × coot quits (~coot@37.30.51.178.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
20:14:43 hiroaki joins (~hiroaki@2a02:908:4b14:d500:8d4c:a111:9cac:718b)
20:15:17 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
20:16:54 × jespada quits (~jespada@90.254.241.6) (Ping timeout: 272 seconds)
20:18:46 jespada joins (~jespada@90.254.241.6)
20:20:29 × alx741 quits (~alx741@186.178.110.130) (Quit: alx741)
20:24:02 × ryansmccoy quits (~ryansmcco@156.96.151.132) (Ping timeout: 256 seconds)
20:24:25 ryansmccoy joins (~ryansmcco@193.37.254.27)
20:25:33 × ggole quits (~ggole@2001:8003:8119:7200:e0af:f6f1:e650:ba35) (Quit: Leaving)
20:27:15 × jonatanb quits (~jonatanb@83.24.161.211.ipv4.supernova.orange.pl) (Quit: Leaving...)
20:27:16 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
20:28:01 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
20:28:05 isovector1 joins (~isovector@node-1w7jr9squrfoy3fci95ksrhpu.ipv6.telus.net)
20:28:56 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
20:32:38 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:34:06 × dhouthoo quits (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.8)
20:36:13 × mmohammadi9812 quits (~mmohammad@2.178.188.114) (Quit: I quit (╯°□°)╯︵ ┻━┻)
20:37:28 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
20:39:11 × Kaivo quits (~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 258 seconds)
20:39:12 russruss83 joins (~russruss@my.russellmcc.com)
20:41:03 × NinjaTrappeur quits (~ninja@unaffiliated/ninjatrappeur) (Quit: WeeChat 2.8)
20:41:27 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
20:41:41 Kaivo joins (~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com)
20:41:56 NinjaTrappeur joins (~ninja@unaffiliated/ninjatrappeur)
20:42:12 × russruss8 quits (~russruss@my.russellmcc.com) (Ping timeout: 260 seconds)
20:42:13 russruss83 is now known as russruss8
20:42:42 × lazerpants quits (c59d003d@197.157.0.61) (Remote host closed the connection)
20:45:56 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
20:46:02 × John20 quits (~John@82.46.59.122) (Ping timeout: 272 seconds)
20:47:11 × juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
20:48:31 aarvar joins (~foewfoiew@50.35.43.33)
20:49:47 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
20:50:11 × Dolly quits (585fd1fd@ti0203q160-5312.bb.online.no) (Remote host closed the connection)
20:50:36 × DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Ping timeout: 260 seconds)
20:51:33 falafel joins (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a)
20:52:28 × ryansmccoy quits (~ryansmcco@193.37.254.27) (Ping timeout: 260 seconds)
20:53:20 ryansmccoy joins (~ryansmcco@156.96.151.132)
20:53:43 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:55:20 averell joins (~averell@unaffiliated/averell)
20:55:33 dirediresalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
20:56:12 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 260 seconds)
20:57:08 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Ping timeout: 260 seconds)
20:58:19 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
20:58:32 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
20:58:59 xerox__ joins (~xerox@unaffiliated/xerox)
21:00:00 × glguy quits (x@freenode/staff/haskell.developer.glguy) (Quit: Quit)
21:00:02 × adaminsull quits (~adaminsul@84.39.117.57) ()
21:00:13 glguy joins (x@freenode/staff/haskell.developer.glguy)
21:00:26 adamwespiser joins (~adam_wesp@209.6.42.110)
21:01:26 × ystael quits (~ystael@116.sub-174-196-195.myvzw.com) (Ping timeout: 265 seconds)
21:02:03 × adamwespiser quits (~adam_wesp@209.6.42.110) (Remote host closed the connection)
21:02:21 worc3131 joins (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786)
21:02:24 × gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
21:02:55 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
21:03:01 × alp quits (~alp@2a01:e0a:58b:4920:24b6:1e8a:d1c8:1f2e) (Ping timeout: 272 seconds)
21:03:11 gmind[m] joins (gmindmatri@gateway/shell/matrix.org/x-xbxgoalkishimjic)
21:05:15 × fendor quits (~fendor@77.119.128.64.wireless.dyn.drei.com) (Read error: Connection reset by peer)
21:05:28 hackage ormolu 0.1.3.0 - A formatter for Haskell source code https://hackage.haskell.org/package/ormolu-0.1.3.0 (mrkkrp)
21:06:10 alx741 joins (~alx741@186.178.110.130)
21:07:03 Bill--Door joins (550112fd@253.18.1.85.dynamic.wline.res.cust.swisscom.ch)
21:07:12 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
21:08:19 fendor joins (~fendor@77.119.128.64.wireless.dyn.drei.com)
21:09:47 <Bill--Door> How come the example in Control-Concurrent-STM-TChan doesn't type check? I don't quite understand how TChan works:
21:10:13 <merijn> Which example?
21:10:52 <Bill--Door> From what I've gathered in the docs, I want to use `newBroadcastTChanIO` and duplicate that for reads, but there's no `*IO` variant of `dupTChan`..
21:10:54 <glguy> http://hackage.haskell.org/package/stm-2.5.0.0/docs/Control-Concurrent-STM-TChan.html#v:newBroadcastTChan
21:11:11 <glguy> Use 'atomically' to turn STM into IO
21:11:14 <Bill--Door> Yeah, that one.
21:11:28 <merijn> oh, hah
21:11:31 <glguy> You'll rarely use the IO variants; they exist for some special cases
21:11:34 <Bill--Door> But then I always get `thread blocked indefinitely in an STM transaction`, tried that too
21:11:39 <merijn> someone fucked up and missed an "atomically" in the example
21:11:50 <merijn> Bill--Door: That means there's someone reading but no one can ever write
21:11:56 <Bill--Door> So, I am doing it right oof
21:11:57 <merijn> (or vice versa)
21:12:39 <Bill--Door> Wait, will the reader not be blocked & wait until the write happens?
21:12:54 × worc3131 quits (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786) (Remote host closed the connection)
21:13:05 <glguy> The example exists as a demonstration of what *not* to do
21:13:18 <glguy> a little less surprising that they didn't actually try to use it
21:13:39 <merijn> Bill--Door: "thread blocked indefinitely" means "a thread blocked trying to read from a channel, but no thread can ever write to it because there are no other references"
21:14:00 <merijn> i.e., "you wrote deadlocking code, but luckily we detected it"
21:14:15 <Bill--Door> I'm not sure this is dead-locking: pastebin.com/fYq4B8XW
21:14:30 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
21:15:21 <Bill--Door> Everyone has a neighbour and writes there, reads what they got and so on. Somehow it deadlocks, it should work?
21:15:31 × cosimone_ quits (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Quit: Quit.)
21:15:57 cosimone joins (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6)
21:17:12 rprije joins (~rprije@27.143.220.203.dial.dynamic.acc01-myal-dub.comindico.com.au)
21:17:22 <merijn> Bill--Door: Eh, you never store 'c' and thus can't ever write to it
21:17:25 alp joins (~alp@2a01:e0a:58b:4920:154c:81bf:aad9:3bc2)
21:17:39 <glguy> merijn: The c's are stored in chans
21:17:39 <merijn> oh wait, the net does
21:17:42 <glguy> which get put into net
21:18:08 <glguy> though I still don't see why broadcast chans are being used at all yet
21:18:32 <glguy> any chance this is related to AoC?
21:18:35 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
21:18:40 <Bill--Door> I do the `inbound <- atomically $ dupTChan c` and use `inbound` instead, like that example does
21:18:50 <merijn> Where are they read, though?
21:18:52 <glguy> Bill--Door: The example is showing you what not to do
21:19:26 <Bill--Door> But even when I change to using `c` and `newTChanIO` which apparently leads to memory-leaks, it doesn't change
21:19:32 <glguy> if you have one reader and one writer you don't need a broadcast chan
21:19:44 <glguy> I mean:
21:19:53 <Bill--Door> There might be multiple writers but single readers
21:19:55 <glguy> if you have one reader (doesn't matter how many writters)
21:20:03 <glguy> then you don't need a broadcast chan
21:20:19 <merijn> glguy: If you never have 0 readers you don't need a broadcast chan
21:20:26 <merijn> That's the real thing
21:20:38 <glguy> the code never actually forks off all the listeners
21:21:42 <Bill--Door> Oh, so I just use `c` from `newTChanIO`, but it still locks: pastebin.com/T2CBXMaM
21:22:08 <glguy> You'll need to fork a thread per participant
21:22:51 <Bill--Door> Oooh, crap
21:23:07 <Bill--Door> I've been staring at this for way too long... thanks so much!
21:23:44 × darjeeling_ quits (~darjeelin@122.245.219.58) (Ping timeout: 260 seconds)
21:23:45 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 240 seconds)
21:24:55 <glguy> Bill--Door: Is this homework? online challenge problem? something you're just making up?
21:25:16 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
21:26:04 <Bill--Door> Just making sth. up, why?
21:26:27 <Bill--Door> It does work (not deadlock that is) now, but I have some issues w/ logging.
21:26:37 darjeeling_ joins (~darjeelin@122.245.219.58)
21:26:48 <glguy> 1) why not? 2) helps to see the actual problem description 3) reminds me of something else
21:26:50 <Bill--Door> I'd like to implement some simulations of multi-party protocols we looked at in uni
21:28:06 <Bill--Door> In such a case my approach with `TChan` isn't completely flawed, or is it?
21:28:47 × falafel quits (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Ping timeout: 260 seconds)
21:29:03 × isovector1 quits (~isovector@node-1w7jr9squrfoy3fci95ksrhpu.ipv6.telus.net) (Ping timeout: 260 seconds)
21:30:38 <Bill--Door> btw. what does this remind you of?
21:30:41 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
21:31:01 <glguy> Some problems from Advent of Code 2019
21:31:50 <glguy> making bunch of TChans for different threads to communicate like this is fine. If you have only a single reader TQueue is a little more efficient than TChan, but it doesn't really matter for a toy
21:32:50 <Bill--Door> Didn't know about advent of code, looks pretty cool. I used to do some Project Euler, but I don't think I ever used Haskell there
21:33:17 <glguy> aoc is more programming focused than pe
21:34:55 <Bill--Door> Yeah, PE is solely maths. Plus maybe some clever algorithms but still it got too hard at some point, maybe I should go back one day
21:36:24 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
21:38:27 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
21:39:02 ystael joins (~ystael@209.6.50.55)
21:41:01 × hiroaki quits (~hiroaki@2a02:908:4b14:d500:8d4c:a111:9cac:718b) (Ping timeout: 272 seconds)
21:44:44 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
21:45:37 <glguy> Bill--Door: For example: https://adventofcode.com/2019/day/23
21:46:50 × hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 272 seconds)
21:47:05 × Ariakenom quits (~Ariakenom@h-98-128-229-34.NA.cust.bahnhof.se) (Quit: Leaving)
21:52:20 Kampala joins (~Kampala@84.39.117.57)
21:55:25 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Read error: Connection reset by peer)
21:56:02 mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
21:56:46 polyrain joins (~polyrain@2001:8003:e501:6901:c488:3d8b:4de5:8b83)
21:58:45 Dolly joins (585fd1fd@ti0203q160-5312.bb.online.no)
21:58:51 × Dolly quits (585fd1fd@ti0203q160-5312.bb.online.no) (Remote host closed the connection)
21:59:11 × fendor quits (~fendor@77.119.128.64.wireless.dyn.drei.com) (Remote host closed the connection)
22:00:49 Rudd0 joins (~Rudd0@185.189.115.108)
22:03:04 gmt joins (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net)
22:04:13 × chaosmasttter quits (~chaosmast@p200300c4a702130181d7af909c24ca2e.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
22:09:50 <Bill--Door> That's a cool puzzle, and indeed more CS-y than a lot of PE ones
22:09:55 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Excess Flood)
22:11:20 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
22:11:31 × eric_ quits (~eric@2804:431:c7d4:a280:a420:f119:9a1a:c48) (Remote host closed the connection)
22:12:49 × LKoen quits (~LKoen@81.255.219.130) (Remote host closed the connection)
22:13:26 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
22:15:40 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
22:18:23 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
22:20:24 × plutoniix quits (~q@node-unh.pool-125-24.dynamic.totinternet.net) (Quit: Leaving)
22:29:59 LKoen joins (~LKoen@81.255.219.130)
22:30:31 mariatsji joins (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e)
22:30:41 × LKoen quits (~LKoen@81.255.219.130) (Remote host closed the connection)
22:31:12 × tzh quits (~tzh@2601:448:c500:5300::df41) (Ping timeout: 260 seconds)
22:32:55 tzh joins (~tzh@2601:448:c500:5300::df41)
22:33:24 reppertj joins (~textual@pool-96-246-209-59.nycmny.fios.verizon.net)
22:35:29 × mariatsji quits (~mariatsji@2a01:79d:53aa:c66c:342b:5324:f59b:5b0e) (Ping timeout: 272 seconds)
22:35:42 zacts joins (~zacts@dragora/developer/zacts)
22:35:47 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
22:37:37 × son0p quits (~son0p@181.136.122.143) (Quit: leaving)
22:37:52 × tzh quits (~tzh@2601:448:c500:5300::df41) (Ping timeout: 260 seconds)
22:40:17 × zacts quits (~zacts@dragora/developer/zacts) (Client Quit)
22:40:34 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
22:41:48 zacts joins (~zacts@dragora/developer/zacts)
22:44:35 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:48:36 falafel joins (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a)
22:50:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
22:56:33 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 260 seconds)
23:04:43 × cosimone quits (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Ping timeout: 260 seconds)
23:05:00 × ryansmccoy quits (~ryansmcco@156.96.151.132) (Read error: Connection reset by peer)
23:05:24 ryansmccoy joins (~ryansmcco@156.96.151.132)
23:08:04 × darjeeling_ quits (~darjeelin@122.245.219.58) (Ping timeout: 265 seconds)
23:08:50 frdg joins (47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net)
23:09:25 kayvan``` parts (~user@52-119-115-243.PUBLIC.monkeybrains.net) ("ERC (IRC client for Emacs 27.1)")
23:09:26 × frdg quits (47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net) (Remote host closed the connection)
23:09:50 tzh joins (~tzh@2601:448:c500:5300::82b3)
23:11:22 <remexre> is it possible to depend on pandoc as a library at the moment? I'm getting https://github.com/haskell-infra/hackage-trustees/issues/280, I think, but this is fixed, if I understand the comments
23:15:47 × gmt quits (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
23:17:38 × pacak quits (~pacak@bb116-14-220-91.singnet.com.sg) (Remote host closed the connection)
23:18:00 pacak joins (~pacak@bb116-14-220-91.singnet.com.sg)
23:19:13 thir joins (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de)
23:21:19 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:22:58 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
23:23:02 <dolio> The hackage page for text-conversions has bounds on base16-bytestring now, yes.
23:26:00 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
23:26:52 × thir quits (~thir@p200300f27f0fc600ed2222922a5678d5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
23:27:00 <yushyin> Good
23:27:24 × s00pcan quits (~chris@075-133-056-178.res.spectrum.com) (Ping timeout: 256 seconds)
23:28:30 × Bill--Door quits (550112fd@253.18.1.85.dynamic.wline.res.cust.swisscom.ch) (Remote host closed the connection)
23:28:47 gmt joins (~gmt@pool-71-105-108-44.nycmny.fios.verizon.net)
23:28:59 s00pcan joins (~chris@107.181.165.217)
23:32:40 × zacts quits (~zacts@dragora/developer/zacts) (Quit: leaving)
23:32:54 <remexre> oh wait, I probably need to `cabal update`, I'm guessing
23:32:57 <dolio> You can assist the solver with command line flags in situations like that before it's fixed, too. --constraint='...' or something like that.
23:33:07 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
23:33:12 <dolio> Yeah, you need to update the cached information.
23:34:11 × alx741 quits (~alx741@186.178.110.130) (Ping timeout: 240 seconds)
23:34:41 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:f82a:5e5e:a65a:42ad) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:35:00 flex14 joins (~flex14@2601:280:c780:7ea0:d233:9ddf:c010:c113)
23:35:25 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
23:35:43 <remexre> ok looks like that worked (well, got past text-conversions at least; not finished building)
23:40:26 darjeeling_ joins (~darjeelin@122.245.219.58)
23:40:47 × falafel quits (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Ping timeout: 240 seconds)
23:41:08 × dirediresalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
23:41:33 dirediresalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
23:43:08 kupi joins (uid212005@gateway/web/irccloud.com/x-xvisocankedeksfn)
23:45:21 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Remote host closed the connection)
23:45:29 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
23:46:09 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 260 seconds)
23:47:46 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
23:48:55 alx741 joins (~alx741@186.178.110.130)
23:49:56 × gentauro quits (~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer)
23:50:30 gentauro joins (~gentauro@unaffiliated/gentauro)
23:55:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
23:55:44 wroathe_ joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:56:50 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
23:57:17 renzhi joins (~renzhi@modemcable070.17-177-173.mc.videotron.ca)
23:57:46 × renzhi quits (~renzhi@modemcable070.17-177-173.mc.videotron.ca) (Client Quit)

All times are in UTC on 2020-09-21.