2021/06/22

2021-06-22 00:00:20 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:01:52 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:03:07 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 258 seconds)
2021-06-22 00:04:40 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:06:15 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:06:58 +0200MorrowM(~MorrowM_@147.161.8.246) (Ping timeout: 252 seconds)
2021-06-22 00:07:43 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 258 seconds)
2021-06-22 00:08:06 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-06-22 00:08:36 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-06-22 00:08:53 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-22 00:08:57 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:10:31 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:11:14 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-22 00:13:18 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:14:52 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:15:39 +0200 <johnw> jumper149: you could use type application to specify m, apparently it can't be determined from use?
2021-06-22 00:17:59 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Remote host closed the connection)
2021-06-22 00:18:35 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-22 00:19:31 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:20:16 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Remote host closed the connection)
2021-06-22 00:22:26 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:23:59 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:26:57 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:27:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-22 00:28:24 +0200mikail_(~mikail@90.212.77.3) (Ping timeout: 265 seconds)
2021-06-22 00:28:31 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:29:22 +0200unyu(~pyon@user/pyon) (Ping timeout: 265 seconds)
2021-06-22 00:31:19 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:31:32 +0200tomsmeding(~tomsmedin@2a03:b0c0:0:1010::767:3001) (Quit: ZNC 1.8.2 - https://znc.in)
2021-06-22 00:31:39 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-06-22 00:31:51 +0200tomsmeding(~tomsmedin@2a03:b0c0:0:1010::767:3001)
2021-06-22 00:32:17 +0200unyu(~pyon@user/pyon)
2021-06-22 00:32:54 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:34:11 +0200Codaraxis(~Codaraxis@193.32.126.158) (Changing host)
2021-06-22 00:34:11 +0200Codaraxis(~Codaraxis@user/codaraxis)
2021-06-22 00:34:23 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-22 00:34:35 +0200Guest9(~Guest9@43.250.158.43) (Quit: Connection closed)
2021-06-22 00:35:40 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:35:41 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net)
2021-06-22 00:35:41 +0200ddellaco_(~ddellacos@86.106.121.100)
2021-06-22 00:37:07 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-06-22 00:37:15 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:37:32 +0200 <Cajun> so im now using cabal to build and im trying to use `hip` for image processing and no matter what i cant get it to build (why do these tools have to be a pain). heres the output: https://paste.tomsmeding.com/zbgeWosa
2021-06-22 00:38:29 +0200 <davean> ok, so its told you the problem, whats the question?
2021-06-22 00:38:53 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
2021-06-22 00:38:58 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 268 seconds)
2021-06-22 00:39:29 +0200 <Cajun> i have absolutely no idea how to make this build. is it constraints? is it just not possible? it doesnt seem like i can do anything to get it to use the package and build
2021-06-22 00:39:58 +0200 <davean> So you might want to update your package set, but what you have doesn't work together
2021-06-22 00:40:09 +0200 <davean> it looks like something that might work together has been released
2021-06-22 00:40:09 +0200 <Cajun> its literally `base` and `hip`
2021-06-22 00:40:12 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:40:31 +0200 <davean> yes, your required version of base, and diagrams-postscript's required versions of base don't overlap
2021-06-22 00:41:10 +0200 <davean> try cabal update though
2021-06-22 00:41:33 +0200 <Cajun> just did `cabal update` and that didnt help it
2021-06-22 00:41:45 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:42:16 +0200 <davean> https://hackage.haskell.org/package/diagrams-postscript-1.5/revisions/ theres a revision that should have opened it up for you
2021-06-22 00:42:36 +0200 <davean> 2021-06-21T19:57:32Z so it was very recent
2021-06-22 00:42:56 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-22 00:43:08 +0200 <Cajun> so how would i go about using that for `hip`?
2021-06-22 00:43:47 +0200 <davean> I mean what state is your package index at? You're trying to use version 1.5 - read the output it tells you - but clearly you don't have that revision
2021-06-22 00:44:02 +0200 <davean> so the update didn't get sometihng only an hour or two old - caching perhaps?
2021-06-22 00:44:07 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-22 00:44:30 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:44:58 +0200 <davean> when you did cabal update, it'd have shown you the index state it got up to
2021-06-22 00:45:40 +0200 <Cajun> here is what `cabal update` spat out when i ran it a few minutes ago https://paste.tomsmeding.com/uHgqBqU4
2021-06-22 00:45:52 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Ping timeout: 250 seconds)
2021-06-22 00:46:03 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:46:23 +0200 <davean> 2021-06-19T09:28:37Z - notice 09:28:37Z not 2021-06-21T19:57:32Z
2021-06-22 00:46:27 +0200 <davean> so there is some caching happening there
2021-06-22 00:46:46 +0200 <davean> Hum, so the question is whats caching it
2021-06-22 00:46:58 +0200 <davean> because thats not what I see being served
2021-06-22 00:47:05 +0200ukari(~ukari@user/ukari)
2021-06-22 00:47:11 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-06-22 00:47:12 +0200 <Cajun> well isnt that the old package list? considering its saying how to revert the update
2021-06-22 00:47:34 +0200 <davean> It should say something like "Updated package list of hackage.haskell.org to the index-state 2021-06-21T21:21:54Z"
2021-06-22 00:47:53 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-22 00:47:58 +0200 <Cajun> i just ran it again and yes it said that
2021-06-22 00:48:03 +0200 <davean> perhaps your cabal is to old to say that, but its unclear what you ended up with
2021-06-22 00:48:14 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
2021-06-22 00:48:32 +0200 <Cajun> running it again told me to download that specific version to revert the update so that is the index-state i have
2021-06-22 00:48:36 +0200 <Cajun> yet it still does not build
2021-06-22 00:48:52 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:49:29 +0200 <Cajun> i have cabal 3.2.0.0 if that matters
2021-06-22 00:50:27 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:50:34 +0200 <davean> I just upgrade my cabal to the latest all the time, so I have no idea about 3.2 but I was pretty sure it output the current version also
2021-06-22 00:50:53 +0200 <Cajun> just updated to 3.4.0.0 and yes it still does not build
2021-06-22 00:51:08 +0200 <davean> did it update to more current though?
2021-06-22 00:51:16 +0200 <davean> This is about what it has available
2021-06-22 00:51:19 +0200 <Cajun> `index-state 2021-06-21T21:21:54Z`
2021-06-22 00:51:27 +0200 <davean> ok, and it still doesn't build after that?
2021-06-22 00:51:30 +0200 <Cajun> no
2021-06-22 00:51:31 +0200 <davean> did the output change?
2021-06-22 00:51:41 +0200zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-06-22 00:53:15 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:53:26 +0200zaquest(~notzaques@5.128.210.178)
2021-06-22 00:53:27 +0200 <Cajun> not much at all except its now `diagrams-core` instead of `diagrams-postscript`
2021-06-22 00:53:34 +0200 <davean> Thats a huge change though
2021-06-22 00:53:59 +0200 <davean> though uh
2021-06-22 00:54:22 +0200 <davean> its got to be telling you more than just that - diagrams-core 1.5 would build
2021-06-22 00:54:30 +0200 <Cajun> well heres the current output https://paste.tomsmeding.com/aup814H3
2021-06-22 00:54:44 +0200 <monochrom> Nice, today I modified the idea of "Queue a = {front :: [a], back :: [a]}" to {front :: [a], back :: [a] -> [a]}, i.e., use a difflist for the back.
2021-06-22 00:54:48 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:54:55 +0200 <davean> Chart-diagrams =>
2021-06-22 00:54:57 +0200 <davean> diagrams-core>=1.3 && <1.5
2021-06-22 00:55:10 +0200 <davean> see that Cajun?
2021-06-22 00:55:16 +0200 <monochrom> I use this in BFS over an infinite tree. It seems like I only suffer GC pauses.
2021-06-22 00:55:31 +0200 <Cajun> i do but i have no idea what that means and how thats helpful lol
2021-06-22 00:56:12 +0200 <davean> Hum, do you not understand what => means? or the >=1.3 && <1.5?
2021-06-22 00:56:41 +0200 <shachaf> monochrom: What do you get from using a difference list for the back?
2021-06-22 00:57:06 +0200 <monochrom> Eliminating reversing the back list.
2021-06-22 00:57:08 +0200 <Cajun> => means X implies constraint but cannot match it and `>=1.3 && <1.5` means it must be within version 1.3.* and less than version 1.5.0
2021-06-22 00:57:43 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 00:57:52 +0200 <shachaf> Hmm, but you still need to do effectively linear work, don't you?
2021-06-22 00:57:53 +0200 <davean> Yes, so thats all thee is to understand there, because you can't use anything older than diagrams-core-1.5.0, as it says it tried to but wasn't allowed to
2021-06-22 00:58:04 +0200 <davean> shachaf: look at when the work happens
2021-06-22 00:58:24 +0200 <davean> though, its really just the other method in disguise I tihnk?
2021-06-22 00:58:51 +0200 <shachaf> So a typical state of this might be something like, Queue { front = [1,2,3], back = ((4:) . (5:) . (6:) }, right?
2021-06-22 00:58:59 +0200 <shachaf> Oops.
2021-06-22 00:59:00 +0200dunj3(~dunj3@2001:16b8:309f:ea00:9791:603:5183:d379) (Remote host closed the connection)
2021-06-22 00:59:06 +0200 <shachaf> Queue { front = [1,2,3], back = ((4:) . (5:)) . (6:) }
2021-06-22 00:59:14 +0200 <Cajun> davean: so i have to wait for the package to be updated or something?
2021-06-22 00:59:18 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 00:59:38 +0200 <davean> Cajun: or fix it yourself. or use an older hip, or an older GHC, or ...
2021-06-22 00:59:39 +0200 <shachaf> So in order to get to the 4, you need to go through all the (.)s, which will be left-associated if you've been appending. Right?
2021-06-22 01:00:19 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-22 01:00:22 +0200ddellaco_(~ddellacos@86.106.121.100) (Remote host closed the connection)
2021-06-22 01:00:42 +0200 <monochrom> This is where I still don't understand why "( ... (((x1 :) . (x2 :)) . (x3 :)) . (x4 :) ...) []" is still much faster than (...(([x1]++[x2])++[x3])++[x4] ...) but empiricallly it is proven over and over again.
2021-06-22 01:00:50 +0200 <davean> Cajun: so 'base's version is bound to GHC
2021-06-22 01:00:52 +0200ddellacosta(~ddellacos@86.106.121.100)
2021-06-22 01:00:57 +0200 <davean> Cajun: GHC version that is
2021-06-22 01:01:06 +0200 <davean> Cajun: so if you want an older base, move back a major GHC version
2021-06-22 01:01:11 +0200 <davean> or upgrade the package to work with newer GHC
2021-06-22 01:01:16 +0200 <shachaf> monochrom: That one is different.
2021-06-22 01:01:23 +0200 <Cajun> i used to use 8.8.4, should i try using that?
2021-06-22 01:02:04 +0200 <davean> Cajun: Yes, that would use base 4.13
2021-06-22 01:02:05 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 01:02:12 +0200 <shachaf> Pretend it's a strict language. To compute ([x1]++[x2])++[x3], you go [x1,x1]++[x3], [x1,x2,x3]
2021-06-22 01:02:13 +0200 <davean> which you'll notice is in range for the constraints specified
2021-06-22 01:02:18 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds)
2021-06-22 01:02:27 +0200 <shachaf> Uh, [x1,x2]++[x3]
2021-06-22 01:02:37 +0200 <shachaf> In the second step, (++) has to traverse the entire list just to append [x3]
2021-06-22 01:02:49 +0200 <davean> Cajun: Basicly all you have to do is look at what it tells you and do it
2021-06-22 01:03:00 +0200 <sclv> Cajun: you could also just try passing the --allow-newer flag, cross your fingers, and pray to your diety of choice
2021-06-22 01:03:08 +0200 <davean> Cajun: it tells you two things don't fit together, change one of them to match the other
2021-06-22 01:03:12 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-06-22 01:03:27 +0200 <sclv> it looks like a bump to Chart-diagrams to allow it to work with diagrams-core 1.5 could work, but that might fail
2021-06-22 01:03:29 +0200 <shachaf> And then if you need to go to [x1,x2,x3]++[x4], this (++) also needs to traverse the entire list on the left.
2021-06-22 01:03:38 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 01:03:50 +0200 <sclv> using the allow newer flag says "ignore the constraints, and try to build anyway, and then maybe there will be errors, who knows"
2021-06-22 01:04:03 +0200 <monochrom> OK, I meant: "head (( ... (((x1 :) . (x2 :)) . (x3 :)) . (x4 :) ...) [])" is still much faster than "head (...(([x1]++[x2])++[x3])++[x4] ...)" empirically.
2021-06-22 01:04:10 +0200 <davean> if you do what sclv says, if it breaks you may not notice, and you get to keep all the pieces
2021-06-22 01:04:11 +0200tzar_bomba(~tzar_bomb@78-56-41-78.static.zebra.lt) (Quit: Client closed)
2021-06-22 01:04:25 +0200 <davean> monochrom: right, its lazy
2021-06-22 01:04:40 +0200 <shachaf> Yes, it works the same way in a lazy language.
2021-06-22 01:04:41 +0200 <davean> monochrom: so the first doesn't have to walk the list repeatedly?
2021-06-22 01:04:48 +0200 <Cajun> davean: thanks! im guessing adjusting the leftmost part of => is easier to do than trying to change the rightmost part?
2021-06-22 01:04:49 +0200 <sclv> often i'll also locally pull in the offending package, and try to fix it by hand, and if it works, then I can A) depend on the local version and B) submit a PR request back upstream
2021-06-22 01:04:50 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
2021-06-22 01:04:58 +0200 <davean> Cajun: depends entirely
2021-06-22 01:05:37 +0200ddellacosta(~ddellacos@86.106.121.100) (Ping timeout: 265 seconds)
2021-06-22 01:05:54 +0200 <sclv> if you're in a cabal project already, then if you `cabal unpack SOMEPACKAGE` it'll unpack it into that directory, and if you get it building, and have a cabal.project set up, cabal will use the local source version over the one from hackage
2021-06-22 01:06:19 +0200jiribenes(~jiribenes@rosa.jiribenes.com) (Remote host closed the connection)
2021-06-22 01:06:30 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 01:06:49 +0200 <shachaf> With difference lists -- let a = (:) -- you have something like ((a 1 . a 2) . a 3). You need to do linear work once to turn that into [1,2,3], but that's it.
2021-06-22 01:08:04 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 01:08:11 +0200 <davean> Cajun: personally my first approach is always "change whichever side moves to newer versions" because thats the longer term approach, but if I have an easier time changing the other side, I might be expedient
2021-06-22 01:09:01 +0200 <shachaf> This isn't a very clear answer, hmm.
2021-06-22 01:09:02 +0200 <davean> sclv: I would say I'd be suspicious of allow-newere here since he rest of that ecosystem seems to be bumped.
2021-06-22 01:09:20 +0200 <davean> shachaf: I tihnk linear verses quadratic work is pretty clear?
2021-06-22 01:09:33 +0200 <davean> shachaf: but I mean also, lazinessed helps with one and not the other
2021-06-22 01:09:47 +0200 <shachaf> Yes, but the question was why.
2021-06-22 01:09:58 +0200 <shachaf> I don't think laziness is that relevant here. You have exactly the same thing in a strict language.
2021-06-22 01:10:08 +0200 <davean> Why is it linear verses quadratic?
2021-06-22 01:10:18 +0200 <sclv> davean: i'm not suspicius because the offending package is Chart-diagrams which isn't part of the diagrams ecosystem, its part of the "bridge" to that ecosystem from the Chart ecosystem :-)
2021-06-22 01:10:19 +0200 <davean> I mean ... you showed that directly
2021-06-22 01:10:30 +0200 <shachaf> I just don't think my explanation was very good.
2021-06-22 01:10:52 +0200 <davean> shachaf: you have MORE here than in a strict language though, because to take head you don't even have to do the entire linear walk, just O(1)
2021-06-22 01:10:54 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 01:11:04 +0200 <shachaf> No, you have to do the whole linear thing.
2021-06-22 01:11:19 +0200 <shachaf> Because your compositions are left associated, ((a 1 . a 2) . a 3) . a 4
2021-06-22 01:11:34 +0200 <shachaf> So you need to go through the whole thing to get to the 1.
2021-06-22 01:12:26 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 01:14:22 +0200zeenk(~zeenk@2a02:2f04:a00e:6e00:d401:4c92:fecc:16f9) (Quit: Konversation terminated!)
2021-06-22 01:14:22 +0200 <davean> shachaf: With that construction, but you can setup one that doesn't
2021-06-22 01:14:51 +0200 <davean> Depending on how much you're optimizing the specific case
2021-06-22 01:15:04 +0200 <shachaf> I mean, we were talking about difference lists. Of course you can set up other data structures.
2021-06-22 01:15:23 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 01:15:29 +0200 <davean> Oh i think of difference lists as the specific signature, not an alg
2021-06-22 01:15:44 +0200 <davean> maybe that doesn't match the actual usage of the term
2021-06-22 01:15:57 +0200 <shachaf> Oh, maybe you mean any function of the form (l ++)
2021-06-22 01:16:14 +0200 <shachaf> But the point of using difference lists here is "constant time append".
2021-06-22 01:16:24 +0200 <davean> [a] -> [a] is what I've seen defined as difference lists
2021-06-22 01:16:29 +0200 <shachaf> Which you do get! But you don't get constant-time head.
2021-06-22 01:16:47 +0200 <shachaf> I don't think people would call reverse a difference list.
2021-06-22 01:16:55 +0200 <shachaf> Just functions of the form (l ++) for some l.
2021-06-22 01:16:56 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 01:17:01 +0200 <davean> mmm
2021-06-22 01:17:19 +0200 <davean> Thats fair I suppose. Different than what I saw specificly defined, but I'd buy that I was being too general
2021-06-22 01:17:47 +0200killsushi(~killsushi@user/killsushi) (Read error: Connection reset by peer)
2021-06-22 01:18:04 +0200 <shachaf> The term comes from Prolog, right? Where you would leave the end of the list as a thing you can unify with.
2021-06-22 01:18:14 +0200killsushi(~killsushi@user/killsushi)
2021-06-22 01:18:19 +0200 <davean> I had no clue that was a thing
2021-06-22 01:18:30 +0200 <davean> I've never heard of it in regards to prolog
2021-06-22 01:18:41 +0200 <shachaf> I think that's where the term comes from, at least.
2021-06-22 01:19:05 +0200 <shachaf> The point is, a list is a thing that looks like (1 : 2 : 3 : []). A difference list is like a list, but parameterized on nil, so it's of the form (\nil -> 1 : 2 : 3 : nil)
2021-06-22 01:19:31 +0200 <shachaf> So the nil is like a hole that you can fill in later, making list A end at the beginning of list B.
2021-06-22 01:19:55 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 01:20:31 +0200 <shachaf> (\nil -> 1 : 2 : 3 : nil) [4,5,6] ---> [1,2,3,4,5,6], without ever having to actually traverse a [1,2,3] list.
2021-06-22 01:21:09 +0200 <davean> Right but notice with THAT
2021-06-22 01:21:17 +0200 <davean> > head $ (\nil -> 1 : 2 : 3 : nil) undefined
2021-06-22 01:21:19 +0200 <lambdabot> 1
2021-06-22 01:21:29 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 01:21:31 +0200 <davean> er
2021-06-22 01:21:36 +0200 <davean> that was a dumb thing to say
2021-06-22 01:21:46 +0200moet_(~moet@172.58.19.20) (Ping timeout: 252 seconds)
2021-06-22 01:22:44 +0200 <shachaf> Yes, right, once you have something of that form, you can take the head in constant time.
2021-06-22 01:23:05 +0200 <shachaf> You can always flatten it: flatten dlist = (dlist [] ++)
2021-06-22 01:23:14 +0200 <shachaf> But that's also a (worst-case) linear-time operation.
2021-06-22 01:24:16 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 01:25:48 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 01:28:18 +0200thyriaen(~thyriaen@45.178.73.238)
2021-06-22 01:28:30 +0200lavaman(~lavaman@98.38.249.169)
2021-06-22 01:29:08 +0200 <thyriaen> Hello, i just started out with haskell and wrote my first function - something really strange is happening - i assume it has something to do with being lazy but i do not understand - can someone help me out ?
2021-06-22 01:29:51 +0200 <thyriaen> https://hastebin.com/uduwetocof.apache this is the code i loaded into ghci
2021-06-22 01:30:32 +0200 <thyriaen> Thank you very much - i have found my error ;)
2021-06-22 01:32:29 +0200 <geekosaur> rubber duck debugging at its finest :)
2021-06-22 01:32:33 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3-dev)
2021-06-22 01:33:52 +0200janiczek(~janiczek@89-24-215-117.customers.tmcz.cz) (Ping timeout: 252 seconds)
2021-06-22 01:34:37 +0200 <monochrom> I and my TA once discussed giving out rubber ducks to students.
2021-06-22 01:37:06 +0200 <monochrom> We then also considered the idea of these rubber ducks containing some computer power to decide whether "your question is difficult enough to escalated to the course forum".
2021-06-22 01:37:49 +0200 <monochrom> My TA then correct pointed out that if the algorithm is simply "const no" it's at least 99% accurate. >:)
2021-06-22 01:38:34 +0200dhil(~dhil@195.213.192.47) (Ping timeout: 258 seconds)
2021-06-22 01:39:11 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-06-22 01:39:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Quit: Leaving...)
2021-06-22 01:41:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 01:43:50 +0200xsperry(~as@user/xsperry)
2021-06-22 01:43:52 +0200xsperry(~as@user/xsperry) (Excess Flood)
2021-06-22 01:44:03 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-22 01:44:23 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-22 01:44:23 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-22 01:44:41 +0200xsperry(~as@user/xsperry)
2021-06-22 01:45:54 +0200haltux(~haltux@a89-154-181-47.cpe.netcabo.pt) (Quit: Leaving)
2021-06-22 01:50:18 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 240 seconds)
2021-06-22 01:50:50 +0200renzhi(~xp@modemcable070.17-177-173.mc.videotron.ca)
2021-06-22 01:53:02 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 250 seconds)
2021-06-22 01:55:18 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 01:55:32 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 268 seconds)
2021-06-22 01:56:52 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 01:57:05 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 01:58:41 +0200kayprish(~kayprish@46.240.143.86) (Remote host closed the connection)
2021-06-22 01:59:41 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:00:28 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-06-22 02:00:59 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-22 02:01:13 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:04:00 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:05:34 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:06:23 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-06-22 02:07:52 +0200hmmmas(~chenqisu1@183.217.200.246)
2021-06-22 02:08:33 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:10:06 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:10:34 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
2021-06-22 02:12:12 +0200nineonine(~nineonine@50.216.62.2)
2021-06-22 02:12:37 +0200thyriaen(~thyriaen@45.178.73.238) (Quit: Leaving)
2021-06-22 02:12:48 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:14:22 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:15:52 +0200hololeap(hololeap@user/hololeap) (Quit: Bye)
2021-06-22 02:17:10 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:17:23 +0200tomsmeding(~tomsmedin@2a03:b0c0:0:1010::767:3001) (Quit: ZNC 1.8.2 - https://znc.in)
2021-06-22 02:17:37 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-06-22 02:17:42 +0200tomsmeding(~tomsmedin@tomsmeding.com)
2021-06-22 02:18:43 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:19:09 +0200killsushi_(~killsushi@2607:fea8:3d40:767:f4b9:4189:73f1:3f28)
2021-06-22 02:19:09 +0200killsushi_(~killsushi@2607:fea8:3d40:767:f4b9:4189:73f1:3f28) (Changing host)
2021-06-22 02:19:09 +0200killsushi_(~killsushi@user/killsushi/x-5912268)
2021-06-22 02:20:17 +0200Nahra(~user@static.161.95.99.88.clients.your-server.de) (Remote host closed the connection)
2021-06-22 02:21:04 +0200ddellacosta(~ddellacos@86.106.121.100)
2021-06-22 02:21:36 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:22:25 +0200killsushi(~killsushi@user/killsushi) (Ping timeout: 244 seconds)
2021-06-22 02:23:11 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:25:34 +0200ddellacosta(~ddellacos@86.106.121.100) (Ping timeout: 252 seconds)
2021-06-22 02:25:41 +0200efvincent-007(~efvincent@71.69.232.38)
2021-06-22 02:25:57 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:27:13 +0200tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2021-06-22 02:27:32 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:30:29 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:31:44 +0200lavaman(~lavaman@98.38.249.169)
2021-06-22 02:32:03 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:35:04 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:35:06 +0200acid(~acid@user/acid) (Ping timeout: 264 seconds)
2021-06-22 02:35:15 +0200acid(~acid@user/acid)
2021-06-22 02:35:31 +0200p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.8.2 - https://znc.in)
2021-06-22 02:35:47 +0200p3n(~p3n@217.198.124.246)
2021-06-22 02:35:54 +0200V(~v@anomalous.eu) (Remote host closed the connection)
2021-06-22 02:36:25 +0200efvincent-007(~efvincent@71.69.232.38) (Ping timeout: 246 seconds)
2021-06-22 02:36:29 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-06-22 02:36:37 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:36:53 +0200NieDzejkob(~quassel@195.149.98.3) (Ping timeout: 244 seconds)
2021-06-22 02:37:04 +0200NieDzejkob(~quassel@195.149.98.3)
2021-06-22 02:37:19 +0200V(~v@anomalous.eu)
2021-06-22 02:37:28 +0200is7s(~is7s@2a01:4b00:895f:3d00:3d61:e4ff:2003:3c7) (Ping timeout: 246 seconds)
2021-06-22 02:38:58 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:8de:a8d1:83fb:c4a6) (Read error: Connection reset by peer)
2021-06-22 02:39:36 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:41:09 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:41:42 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-22 02:41:47 +0200hololeap(hololeap@user/hololeap)
2021-06-22 02:42:34 +0200hiruji(~hiruji@2606:6080:1001:18:8d41:9604:d435:36b6) (Ping timeout: 244 seconds)
2021-06-22 02:44:09 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:45:44 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:45:57 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-06-22 02:46:29 +0200lavaman(~lavaman@98.38.249.169)
2021-06-22 02:47:57 +0200ph88(~ph88@2a02:8109:9e00:7e5c:7c55:3c65:74e1:3dc5) (Ping timeout: 268 seconds)
2021-06-22 02:48:34 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:50:07 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:52:10 +0200argento(~argent0@168-227-97-34.ptr.westnet.com.ar) (Ping timeout: 258 seconds)
2021-06-22 02:52:36 +0200delYsid(~user@user/delYsid) (ERC (IRC client for Emacs 27.1.50))
2021-06-22 02:52:55 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:53:57 +0200ddellacosta(~ddellacos@86.106.121.100)
2021-06-22 02:54:29 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 02:57:19 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 02:58:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-22 02:58:41 +0200ddellacosta(~ddellacos@86.106.121.100) (Ping timeout: 258 seconds)
2021-06-22 02:58:51 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 03:00:36 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
2021-06-22 03:00:53 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-22 03:04:16 +0200killsushi_(~killsushi@user/killsushi/x-5912268) (Ping timeout: 244 seconds)
2021-06-22 03:05:50 +0200xff0x(~xff0x@2001:1a81:53f8:8c00:146b:f6fc:d9b4:bcad) (Ping timeout: 268 seconds)
2021-06-22 03:06:05 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 03:07:03 +0200xff0x(~xff0x@2001:1a81:5210:a00:e51a:a5db:7d11:7c5d)
2021-06-22 03:07:22 +0200NieDzejkob(~quassel@195.149.98.3) (Ping timeout: 252 seconds)
2021-06-22 03:07:25 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Ping timeout: 265 seconds)
2021-06-22 03:07:50 +0200NieDzejkob(~quassel@195.149.98.3)
2021-06-22 03:09:45 +0200perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-06-22 03:11:06 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 264 seconds)
2021-06-22 03:17:13 +0200 <qrpnxz> how do i evaluate a value in ghci without printing it, trying to get an effect to occur but it starts to cry if it can't print it
2021-06-22 03:17:37 +0200zebrag(~chris@user/zebrag)
2021-06-22 03:18:06 +0200Feuermagier(~Feuermagi@user/feuermagier)
2021-06-22 03:18:08 +0200 <geekosaur> action >> return () -- ?
2021-06-22 03:18:15 +0200 <Axman6> :t void . evaluate
2021-06-22 03:18:17 +0200 <lambdabot> a -> IO ()
2021-06-22 03:18:40 +0200 <Axman6> @hoogle evaluate
2021-06-22 03:18:41 +0200 <lambdabot> Control.Exception evaluate :: a -> IO a
2021-06-22 03:18:41 +0200 <lambdabot> Control.Exception.Base evaluate :: a -> IO a
2021-06-22 03:18:41 +0200 <lambdabot> GHC.IO evaluate :: a -> IO a
2021-06-22 03:20:54 +0200 <qrpnxz> doesn't work
2021-06-22 03:21:22 +0200 <qrpnxz> had to pull the values out by hand, but them in a list and sequence
2021-06-22 03:21:36 +0200 <qrpnxz> *put
2021-06-22 03:21:45 +0200x_kuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-06-22 03:21:48 +0200 <Axman6> by "doesn't work" you mean "didn't provide enough information to get the answer you needed"
2021-06-22 03:22:23 +0200 <qrpnxz> nope, but if that's what you think alright
2021-06-22 03:23:20 +0200 <Axman6> I can guarantee you what I said does what you said you wanted, but if you need to vully evaluate everything in the entire structure then you might have said that instead. NFData is the class you're after, drom the deepseq package
2021-06-22 03:24:34 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-22 03:27:26 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
2021-06-22 03:27:47 +0200 <qrpnxz> i think IO won't happen unless it touches ghci at some point so it wasn't even an evaluation problem
2021-06-22 03:29:38 +0200nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2021-06-22 03:29:45 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-22 03:29:46 +0200hololeap(hololeap@user/hololeap) (Quit: Bye)
2021-06-22 03:29:53 +0200 <Axman6> right, you didn't say anythign about executing an IO vlaue, you said evaluate a value. all you need then in void yourExpression
2021-06-22 03:29:55 +0200perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.2)
2021-06-22 03:30:02 +0200 <jackdk> Axman6++
2021-06-22 03:30:21 +0200 <Axman6> evaluation and executing are quite different things
2021-06-22 03:30:50 +0200 <qrpnxz> i did say i was trying to get an effect to occur
2021-06-22 03:31:25 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 250 seconds)
2021-06-22 03:32:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-22 03:32:48 +0200 <geekosaur> which is why I suggested the other one, which does the effect but discards the value
2021-06-22 03:33:02 +0200 <geekosaur> so ghci won'[t complain about it
2021-06-22 03:33:22 +0200argento(~argent0@168-227-97-34.ptr.westnet.com.ar)
2021-06-22 03:33:46 +0200 <qrpnxz> well it didn't do the effect
2021-06-22 03:33:52 +0200 <qrpnxz> hence why i said it didn't work
2021-06-22 03:34:56 +0200zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-06-22 03:37:43 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 03:40:01 +0200argento(~argent0@168-227-97-34.ptr.westnet.com.ar) (Quit: leaving)
2021-06-22 03:40:18 +0200 <qrpnxz> unless "the effect" is heating the room lol
2021-06-22 03:42:11 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 252 seconds)
2021-06-22 03:43:19 +0200 <Axman6> well, evaluating an IO expression won't do very much, only executing it will. an IO a is a recipe which, when _executed_ returns an a. _evaluating_ it just forces it, if it is a think, to be evaluated enough to know that its constructor is the IO constructor
2021-06-22 03:44:57 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
2021-06-22 03:45:16 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-22 03:46:08 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 03:47:41 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 03:50:24 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 03:51:28 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
2021-06-22 03:51:52 +0200slack1256(~slack1256@181.203.47.107)
2021-06-22 03:51:56 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 03:54:48 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 03:55:19 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-06-22 03:56:23 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 03:58:35 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-22 03:59:12 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:00:11 +0200bilegeek(~bilegeek@2600:1008:b017:63a6:c26d:d119:faaa:a6d7) (Quit: Leaving)
2021-06-22 04:00:45 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:02:42 +0200xff0x(~xff0x@2001:1a81:5210:a00:e51a:a5db:7d11:7c5d) (Ping timeout: 264 seconds)
2021-06-22 04:03:33 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:04:12 +0200moet(~moet@172.58.22.170)
2021-06-22 04:04:15 +0200xff0x(~xff0x@2001:1a81:5218:4800:8168:2dc2:e054:da2)
2021-06-22 04:04:19 +0200np(~nerdypepp@user/nerdypepper) (Quit: bye)
2021-06-22 04:05:07 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:08:11 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:08:33 +0200nerdypepper(~nerdypepp@user/nerdypepper)
2021-06-22 04:08:50 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Ping timeout: 258 seconds)
2021-06-22 04:09:03 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 04:09:46 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:09:54 +0200FragByte(~christian@user/fragbyte) (Ping timeout: 264 seconds)
2021-06-22 04:10:47 +0200xff0x(~xff0x@2001:1a81:5218:4800:8168:2dc2:e054:da2) (Ping timeout: 252 seconds)
2021-06-22 04:10:47 +0200jakalx(~jakalx@base.jakalx.net) (Ping timeout: 252 seconds)
2021-06-22 04:11:06 +0200farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 264 seconds)
2021-06-22 04:11:12 +0200Feuermagier(~Feuermagi@user/feuermagier) (Read error: Connection reset by peer)
2021-06-22 04:11:20 +0200bjobjo(~bo@user/bjobjo) (Ping timeout: 252 seconds)
2021-06-22 04:11:22 +0200Xe(~cadey@tailscale/xe) (Ping timeout: 272 seconds)
2021-06-22 04:11:40 +0200xff0x(~xff0x@2001:1a81:5218:4800:8168:2dc2:e054:da2)
2021-06-22 04:11:41 +0200Feuermagier(~Feuermagi@user/feuermagier)
2021-06-22 04:11:42 +0200m4lvin(~m4lvin@w4eg.de) (Ping timeout: 264 seconds)
2021-06-22 04:11:42 +0200welterde(welterde@thinkbase.srv.welterde.de) (Ping timeout: 264 seconds)
2021-06-22 04:11:42 +0200yorick(~yorick@user/yorick) (Ping timeout: 264 seconds)
2021-06-22 04:11:44 +0200FragByte(~christian@user/fragbyte)
2021-06-22 04:11:53 +0200nf(~n@monade.li) (Ping timeout: 252 seconds)
2021-06-22 04:12:16 +0200farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
2021-06-22 04:12:18 +0200lisq(~quassel@lis.moe) (Ping timeout: 264 seconds)
2021-06-22 04:12:23 +0200bjobjo(~bo@2a01:79c:cebf:d688::9e6)
2021-06-22 04:12:28 +0200m4lvin(~m4lvin@w4eg.de)
2021-06-22 04:12:29 +0200lisq(~quassel@lis.moe)
2021-06-22 04:12:31 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:12:43 +0200nf(~n@monade.li)
2021-06-22 04:13:07 +0200welterde(welterde@thinkbase.srv.welterde.de)
2021-06-22 04:13:07 +0200Xe(~cadey@tailscale/xe)
2021-06-22 04:13:30 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 264 seconds)
2021-06-22 04:14:03 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:14:50 +0200yorick(~yorick@user/yorick)
2021-06-22 04:16:28 +0200slack1256(~slack1256@181.203.47.107) (Remote host closed the connection)
2021-06-22 04:16:55 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Remote host closed the connection)
2021-06-22 04:17:37 +0200teaSlurper(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-22 04:18:30 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:19:10 +0200 <qrpnxz> :t let i f = f (<*>) id in i $ i $ i $ i i
2021-06-22 04:19:11 +0200 <lambdabot> error:
2021-06-22 04:19:11 +0200 <lambdabot> • Occurs check: cannot construct the infinite type: a0 ~ a0 -> a0
2021-06-22 04:19:12 +0200 <lambdabot> Expected type: (((((((a0 -> a0 -> b0) -> (a0 -> a0) -> a0 -> b0)
2021-06-22 04:21:22 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:22:55 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:25:34 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 04:25:41 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:27:14 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:28:51 +0200killsushi_(~killsushi@user/killsushi/x-5912268)
2021-06-22 04:30:01 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:30:18 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 264 seconds)
2021-06-22 04:31:04 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2021-06-22 04:31:34 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:34:33 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:36:03 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-06-22 04:36:03 +0200FinnElijaGuest1234
2021-06-22 04:36:03 +0200finn_elijaFinnElija
2021-06-22 04:36:06 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:39:03 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:39:15 +0200Guest1234(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 265 seconds)
2021-06-22 04:40:36 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:43:27 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:45:01 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:45:58 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Quit: Leaving)
2021-06-22 04:46:30 +0200stevenxl(~stevenlei@174.128.182.199) (Ping timeout: 265 seconds)
2021-06-22 04:48:01 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:49:36 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:52:36 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:54:10 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 04:56:22 +0200td__(~td@94.134.91.150) (Ping timeout: 258 seconds)
2021-06-22 04:57:07 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 04:57:50 +0200cyclosa(~cyclosa@2603-6011-4a41-8ada-0000-0000-0000-0eaa.res6.spectrum.com) (Quit: computer broke)
2021-06-22 04:57:57 +0200td_(~td@94.134.91.59)
2021-06-22 04:58:42 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-22 05:01:31 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-22 05:02:04 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-22 05:05:29 +0200alx741(~alx741@181.196.68.152) (Quit: alx741)
2021-06-22 05:06:32 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-06-22 05:09:07 +0200hiruji(~hiruji@user/hiruji)
2021-06-22 05:10:56 +0200sm(~user@plaintextaccounting/sm) (ERC (IRC client for Emacs 27.0.50))
2021-06-22 05:11:27 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
2021-06-22 05:11:47 +0200stevenxl(~stevenlei@174.128.182.199)
2021-06-22 05:11:51 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-22 05:12:49 +0200sheepduck(~sheepduck@user/sheepduck) (Remote host closed the connection)
2021-06-22 05:13:32 +0200mikail_(~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf)
2021-06-22 05:16:18 +0200stevenxl(~stevenlei@174.128.182.199) (Ping timeout: 258 seconds)
2021-06-22 05:18:54 +0200hmmmas(~chenqisu1@183.217.200.246) (Quit: Leaving.)
2021-06-22 05:20:18 +0200hammock(~Hammock@2600:1700:19a1:3330::625) (Ping timeout: 240 seconds)
2021-06-22 05:27:03 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-06-22 05:29:04 +0200typesafety(~typesafet@umbreller.kvi.sgsnet.se)
2021-06-22 05:29:15 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-22 05:29:20 +0200typesafety(~typesafet@umbreller.kvi.sgsnet.se) (Client Quit)
2021-06-22 05:34:40 +0200sleblanc(~sleblanc@107.159.26.53)
2021-06-22 05:35:22 +0200beka(~beka@104-244-27-23.static.monkeybrains.net)
2021-06-22 05:37:40 +0200sleblanc(~sleblanc@107.159.26.53) (Client Quit)
2021-06-22 05:37:57 +0200sleblanc(~sleblanc@107.159.26.53)
2021-06-22 05:38:13 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2021-06-22 05:38:16 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-06-22 05:38:19 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-22 05:39:30 +0200Lord_of_Life_Lord_of_Life
2021-06-22 05:40:22 +0200ddellacosta(~ddellacos@86.106.121.100)
2021-06-22 05:40:23 +0200unyu(~pyon@user/pyon) (Quit: WeeChat 3.2)
2021-06-22 05:41:39 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-06-22 05:42:16 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 250 seconds)
2021-06-22 05:42:37 +0200sleblancsebleblanc
2021-06-22 05:42:47 +0200sebleblancsleblnac
2021-06-22 05:42:50 +0200sleblnacsleblanc
2021-06-22 05:49:32 +0200sleblanc(~sleblanc@107.159.26.53) (Changing host)
2021-06-22 05:49:32 +0200sleblanc(~sleblanc@user/sleblanc)
2021-06-22 05:49:52 +0200Guest51(~Guest51@78.155.54.115)
2021-06-22 05:50:54 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-06-22 05:51:37 +0200beka(~beka@104-244-27-23.static.monkeybrains.net) (Remote host closed the connection)
2021-06-22 05:56:23 +0200mikail_(~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Ping timeout: 252 seconds)
2021-06-22 05:59:19 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-22 06:01:38 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-06-22 06:01:44 +0200lavaman(~lavaman@98.38.249.169)
2021-06-22 06:03:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-06-22 06:06:52 +0200moet_(~moet@172.58.27.234)
2021-06-22 06:10:07 +0200moet(~moet@172.58.22.170) (Ping timeout: 265 seconds)
2021-06-22 06:11:02 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-06-22 06:11:02 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-06-22 06:12:59 +0200v01d4lph4(~v01d4lph4@122.160.65.250)
2021-06-22 06:12:59 +0200v01d4lph4(~v01d4lph4@122.160.65.250) (Changing host)
2021-06-22 06:12:59 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-22 06:13:55 +0200teaSlurper(~chris@81.96.113.213)
2021-06-22 06:16:30 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-06-22 06:16:43 +0200juhp(~juhp@128.106.188.66)
2021-06-22 06:19:52 +0200ddellaco_(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-22 06:23:04 +0200ddellacosta(~ddellacos@86.106.121.100) (Ping timeout: 268 seconds)
2021-06-22 06:23:12 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-22 06:28:27 +0200haasn(~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2021-06-22 06:28:57 +0200haasn(~nand@haasn.dev)
2021-06-22 06:30:44 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-06-22 06:36:44 +0200ddellaco_(~ddellacos@ool-44c73aff.dyn.optonline.net) (Remote host closed the connection)
2021-06-22 06:37:13 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-22 06:40:08 +0200Topsi1(~Tobias@dyndsl-095-033-016-151.ewe-ip-backbone.de)
2021-06-22 06:41:01 +0200Topsi(~Tobias@dyndsl-091-249-082-141.ewe-ip-backbone.de) (Ping timeout: 258 seconds)
2021-06-22 06:41:47 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 258 seconds)
2021-06-22 06:46:36 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 268 seconds)
2021-06-22 06:52:49 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 06:54:37 +0200 <dminuoso> 112
2021-06-22 06:57:56 +0200Xnuk(~xnuk@45.76.202.58) (Read error: Connection reset by peer)
2021-06-22 06:58:13 +0200Xnuk(~xnuk@vultr.xnu.kr)
2021-06-22 07:00:13 +0200finsternis(~X@23.226.237.192) (Remote host closed the connection)
2021-06-22 07:03:17 +0200renzhi(~xp@modemcable070.17-177-173.mc.videotron.ca) (Ping timeout: 265 seconds)
2021-06-22 07:10:13 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-22 07:13:21 +0200pottsy(~pottsy@2400:4050:b560:3700:d9ad:59b1:5f34:93cd)
2021-06-22 07:14:53 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 265 seconds)
2021-06-22 07:19:31 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-06-22 07:22:45 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 07:23:17 +0200efvincent-007(~efvincent@71.69.232.38)
2021-06-22 07:24:47 +0200Guest51(~Guest51@78.155.54.115) (Quit: Client closed)
2021-06-22 07:26:42 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 240 seconds)
2021-06-22 07:31:45 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-22 07:34:18 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2021-06-22 07:37:23 +0200deshalb(~deshalb@user/deshalb)
2021-06-22 07:43:30 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:ff00:c813:70d9:31b2:b1b9)
2021-06-22 07:47:41 +0200mpt(~tom@2a00:20:800f:87cc:fcb9:2f31:1e2e:8504)
2021-06-22 07:53:22 +0200mpt(~tom@2a00:20:800f:87cc:fcb9:2f31:1e2e:8504) (Read error: Connection reset by peer)
2021-06-22 07:54:37 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-06-22 07:55:05 +0200wei2912(~wei2912@112.199.250.21)
2021-06-22 07:58:05 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-22 07:59:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-22 07:59:55 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-06-22 08:00:31 +0200efvincent-007(~efvincent@71.69.232.38) (Ping timeout: 246 seconds)
2021-06-22 08:10:48 +0200rookie101(~rookie@207.154.204.166)
2021-06-22 08:11:21 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-22 08:13:19 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-06-22 08:15:26 +0200michalz(~michalz@185.246.204.61)
2021-06-22 08:15:44 +0200nerdypepper(~nerdypepp@user/nerdypepper) (Quit: bye)
2021-06-22 08:16:05 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-06-22 08:17:40 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-22 08:19:04 +0200gehmehgeh(~user@user/gehmehgeh)
2021-06-22 08:19:33 +0200Erutuon(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2021-06-22 08:19:44 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-22 08:19:50 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:f76a:37dd:7d13:fae6)
2021-06-22 08:19:52 +0200nerdypepper(~nerdypepp@user/nerdypepper)
2021-06-22 08:20:11 +0200fef(~thedawn@user/thedawn)
2021-06-22 08:20:14 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
2021-06-22 08:21:13 +0200Erutuon(~Erutuon@user/erutuon) (Client Quit)
2021-06-22 08:21:23 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-22 08:24:29 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-06-22 08:31:22 +0200leeb(~leeb@KD111239153143.au-net.ne.jp)
2021-06-22 08:33:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-06-22 08:34:29 +0200leeb_(~leeb@KD111239158072.au-net.ne.jp) (Ping timeout: 258 seconds)
2021-06-22 08:35:46 +0200sheepduck(~sheepduck@user/sheepduck)
2021-06-22 08:37:50 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-22 08:38:14 +0200fef(~thedawn@user/thedawn)
2021-06-22 08:43:18 +0200elf_fortrez(~elf_fortr@adsl-64-237-239-58.prtc.net)
2021-06-22 08:48:22 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 252 seconds)
2021-06-22 08:49:14 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-22 08:50:35 +0200bontaq`(~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 265 seconds)
2021-06-22 08:50:46 +0200trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-06-22 08:51:04 +0200trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-06-22 08:51:38 +0200trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-06-22 08:52:00 +0200trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-06-22 08:52:12 +0200trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-06-22 08:55:57 +0200elf_fortrez(~elf_fortr@adsl-64-237-239-58.prtc.net) (Quit: Client closed)
2021-06-22 08:57:31 +0200cfricke(~cfricke@user/cfricke)
2021-06-22 08:59:38 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2021-06-22 09:03:06 +0200Nahra(~user@static.161.95.99.88.clients.your-server.de)
2021-06-22 09:03:14 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Remote host closed the connection)
2021-06-22 09:03:51 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-22 09:05:18 +0200chele(~chele@user/chele)
2021-06-22 09:05:49 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-06-22 09:07:30 +0200Xraell(~yourname@45.157.15.145)
2021-06-22 09:07:56 +0200Xraell(~yourname@45.157.15.145) (Client Quit)
2021-06-22 09:08:02 +0200janiczek(~janiczek@89-24-215-117.customers.tmcz.cz)
2021-06-22 09:08:28 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
2021-06-22 09:10:16 +0200bjobjo(~bo@2a01:79c:cebf:d688::9e6) (Changing host)
2021-06-22 09:10:16 +0200bjobjo(~bo@user/bjobjo)
2021-06-22 09:10:19 +0200Xraell(~yourname@45.157.15.145)
2021-06-22 09:10:31 +0200sheepduck(~sheepduck@user/sheepduck) (Remote host closed the connection)
2021-06-22 09:12:40 +0200IvanDru[m]lwe[m]
2021-06-22 09:12:50 +0200mcfilib(sid302703@user/mcfilib)
2021-06-22 09:14:59 +0200Nahra(~user@static.161.95.99.88.clients.your-server.de) (Remote host closed the connection)
2021-06-22 09:15:52 +0200Nahra(~user@static.161.95.99.88.clients.your-server.de)
2021-06-22 09:16:34 +0200moet(~moet@172.58.30.115)
2021-06-22 09:17:50 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-22 09:19:32 +0200moet_(~moet@172.58.27.234) (Ping timeout: 252 seconds)
2021-06-22 09:19:43 +0200mcglk(~mcglk@131.191.49.120) (Ping timeout: 258 seconds)
2021-06-22 09:21:59 +0200haskl(~haskeller@2601:643:897f:561d::af3)
2021-06-22 09:22:26 +0200 <haskl> Has anyone had success with building static binaries using the process outlined here? https://www.tweag.io/blog/2020-09-30-bazel-static-haskell/
2021-06-22 09:28:58 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2021-06-22 09:30:05 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Remote host closed the connection)
2021-06-22 09:30:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-22 09:32:37 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2021-06-22 09:32:38 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Client Quit)
2021-06-22 09:33:10 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-06-22 09:35:22 +0200mcglk(~mcglk@131.191.49.120)
2021-06-22 09:35:53 +0200 <maerwald[m]> I do fully static binaries in an alpine container
2021-06-22 09:36:24 +0200 <maerwald[m]> Not sure why people complicate this
2021-06-22 09:40:55 +0200 <tdammers> I like deploying "fat binaries" to vanilla debian servers
2021-06-22 09:41:31 +0200moet_(~moet@172.58.27.134)
2021-06-22 09:42:57 +0200 <haskl> I've never made a release of Haskell software before but now I'm interested in doing so for a small project. Anyone care to point me in the right direction? I'm using Debian right now. maerwald[m] could you share an example with me? tdammers not sure what that means. I once just used the static flag for GHC on another project of mine but, without going into specifics, I read about some problems that it introduced and it was unstable for some
2021-06-22 09:42:57 +0200 <haskl> users.
2021-06-22 09:44:00 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-22 09:44:38 +0200moet(~moet@172.58.30.115) (Ping timeout: 258 seconds)
2021-06-22 09:44:55 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-06-22 09:45:18 +0200 <maerwald[m]> Just docker run an alpine container, ensure system libs hsve static versions, then build with --ghc-options='-split-sections -optl-static'
2021-06-22 09:45:25 +0200 <maerwald[m]> Done
2021-06-22 09:45:42 +0200 <maerwald[m]> No weird nix problems
2021-06-22 09:46:40 +0200euandreh_(~euandreh@2804:14c:33:9fe5:ee71:32ea:12e0:378c) (Ping timeout: 268 seconds)
2021-06-22 09:47:25 +0200euandreh_(~euandreh@2804:14c:33:9fe5:4732:d8b1:5f78:9a82)
2021-06-22 09:49:20 +0200 <haskl> maerwald[m], thanks for pointing me in the right direction, I'll look into that.
2021-06-22 09:51:05 +0200 <haskl> https://github.com/fossas/haskell-static-alpine This looks great!
2021-06-22 09:51:29 +0200 <maerwald[m]> Don't need that
2021-06-22 09:51:41 +0200 <maerwald[m]> Just normal alpine container
2021-06-22 09:52:53 +0200 <tdammers> haskl: "releasing" and "deploying" are different things. "releasing" just means you upload a source bundle (and, optionally, binaries) to some public repository - for Haskell packages, that would typically be Hackage
2021-06-22 09:54:18 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-22 09:54:25 +0200 <haskl> tdammers, I made a little tool for building gopherholes (it's liek a static site builder, but for the Gopher protocol) and I just want to give non-savvy people a binary they can run to test it out as it's in pre-alpha.
2021-06-22 09:55:03 +0200 <haskl> So yeah, I'm looking to make an alpha release of the software with a static binary.
2021-06-22 09:56:02 +0200 <haskl> maerwald[m], a normal alpine container that's setup with the right version of GHC and cabal? and that's it? you mentioned something about making sure all the system libs are static versions. I'm not sure exactly what yo umean by that.
2021-06-22 09:56:36 +0200 <maerwald[m]> You install ghc and cabal via ghcup and static libraries via apk
2021-06-22 10:02:48 +0200boxscape_(~boxscape_@p4ff0b158.dip0.t-ipconnect.de)
2021-06-22 10:03:35 +0200boxscape_(~boxscape_@p4ff0b158.dip0.t-ipconnect.de) (Changing host)
2021-06-22 10:03:35 +0200boxscape_(~boxscape_@user/boxscape)
2021-06-22 10:04:14 +0200Ferdiran1Ferdirand
2021-06-22 10:04:32 +0200Ferdirand(~somebody@2001:4c78:2012:5000::2) (Changing host)
2021-06-22 10:04:32 +0200Ferdirand(~somebody@user/ferdirand)
2021-06-22 10:08:04 +0200boxscape_(~boxscape_@user/boxscape) (Quit: Connection closed)
2021-06-22 10:09:58 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-06-22 10:11:26 +0200berberman_(~berberman@user/berberman)
2021-06-22 10:12:26 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-22 10:12:54 +0200berberman(~berberman@user/berberman) (Ping timeout: 264 seconds)
2021-06-22 10:13:40 +0200jiribenes(~jiribenes@rosa.jiribenes.com)
2021-06-22 10:14:11 +0200teaSlurper(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-22 10:14:42 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-22 10:15:28 +0200fef(~thedawn@user/thedawn)
2021-06-22 10:18:28 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-22 10:19:03 +0200teaSlurper(~chris@81.96.113.213)
2021-06-22 10:21:20 +0200hendursaga(~weechat@user/hendursaga)
2021-06-22 10:21:40 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Remote host closed the connection)
2021-06-22 10:22:12 +0200allbery_b(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-06-22 10:22:35 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:7821:4ac6:7f63:f8)
2021-06-22 10:23:34 +0200teaSlurper(~chris@81.96.113.213) (Ping timeout: 268 seconds)
2021-06-22 10:28:50 +0200moet_(~moet@172.58.27.134) (Ping timeout: 252 seconds)
2021-06-22 10:29:30 +0200chddr(~Thunderbi@31.148.23.125)
2021-06-22 10:29:44 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
2021-06-22 10:31:38 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 10:32:10 +0200qrpnxz(~qrpnxz@user/qrpnxz) (Ping timeout: 250 seconds)
2021-06-22 10:33:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-22 10:34:18 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-06-22 10:34:52 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net)
2021-06-22 10:36:18 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 264 seconds)
2021-06-22 10:38:15 +0200dhil(~dhil@195.213.192.47)
2021-06-22 10:38:46 +0200 <haskl> maerwald[m], thanks! i'll read into apk as well. this sounds much simpler. i appreciate all the guidance.
2021-06-22 10:39:26 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-06-22 10:43:49 +0200kmein(~weechat@user/kmein) (Quit: ciao kakao)
2021-06-22 10:45:50 +0200kmein(~weechat@user/kmein)
2021-06-22 10:46:48 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-06-22 10:47:10 +0200chddr(~Thunderbi@31.148.23.125) (Ping timeout: 252 seconds)
2021-06-22 10:47:41 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-22 10:48:54 +0200jumper149(~jumper149@80.240.31.34)
2021-06-22 10:50:54 +0200mcglk_(~mcglk@131.191.49.120)
2021-06-22 10:51:56 +0200mcglk(~mcglk@131.191.49.120) (Ping timeout: 252 seconds)
2021-06-22 10:54:13 +0200mcglk(~mcglk@131.191.49.120)
2021-06-22 10:55:41 +0200mcglk(~mcglk@131.191.49.120) (Read error: Connection reset by peer)
2021-06-22 10:56:14 +0200mcglk(~mcglk@131.191.49.120)
2021-06-22 10:56:20 +0200mcglk_(~mcglk@131.191.49.120) (Ping timeout: 252 seconds)
2021-06-22 11:00:53 +0200even4void(even4void@2607:5300:203:3f52::12)
2021-06-22 11:03:13 +0200smitop(~smitop@user/smitop) (Remote host closed the connection)
2021-06-22 11:03:32 +0200yoctocell(~user@h87-96-130-155.cust.a3fiber.se)
2021-06-22 11:04:13 +0200smitop(~smitop@user/smitop)
2021-06-22 11:05:39 +0200fef(~thedawn@user/thedawn)
2021-06-22 11:06:41 +0200qbt(~edun@user/edun)
2021-06-22 11:10:24 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-22 11:10:42 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:69d4:ccfd:e578:282b)
2021-06-22 11:10:51 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-22 11:15:06 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-06-22 11:15:22 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 268 seconds)
2021-06-22 11:17:14 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-06-22 11:19:35 +0200haskl(~haskeller@2601:643:897f:561d::af3) (Changing host)
2021-06-22 11:19:36 +0200haskl(~haskeller@user/haskl)
2021-06-22 11:22:38 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 11:24:25 +0200jneira(~jneira@212.8.115.226)
2021-06-22 11:26:42 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 240 seconds)
2021-06-22 11:29:40 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-22 11:39:11 +0200teaSlurper(~chris@81.96.113.213)
2021-06-22 11:49:14 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-22 11:49:18 +0200deshalb(~deshalb@user/deshalb) (Ping timeout: 268 seconds)
2021-06-22 11:50:22 +0200__monty__(~toonn@user/toonn)
2021-06-22 11:50:31 +0200deshalb(~deshalb@user/deshalb)
2021-06-22 11:54:14 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 268 seconds)
2021-06-22 11:54:18 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-06-22 11:55:56 +0200unyu(~pyon@user/pyon)
2021-06-22 11:58:16 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-22 12:00:49 +0200alp(~alp@163.172.83.213) (Changing host)
2021-06-22 12:00:49 +0200alp(~alp@user/alp)
2021-06-22 12:00:57 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-22 12:10:53 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-22 12:17:30 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.227.207) (Quit: EXIT)
2021-06-22 12:17:49 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.227.207)
2021-06-22 12:18:32 +0200hmmmas(~chenqisu1@183.217.200.246)
2021-06-22 12:21:59 +0200trent2(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
2021-06-22 12:22:24 +0200lavaman(~lavaman@98.38.249.169)
2021-06-22 12:23:09 +0200teaSlurper(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-22 12:23:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 12:27:33 +0200Alex_test(~al_test@178.34.160.156) (Ping timeout: 258 seconds)
2021-06-22 12:27:56 +0200AlexZenon(~alzenon@178.34.160.156) (Ping timeout: 258 seconds)
2021-06-22 12:28:00 +0200 <Las[m]> I have a C library I'm using with that isn't thread-safe, so I was thinking of restricting all interaction with it to one bound thread. Are there any common approaches for this? I was thinking I could perhaps somehow send over the IO actions I want to perform through some channel-like thing and then get the result back after performing it in the other thread.
2021-06-22 12:28:01 +0200teaSlurper(~chris@81.96.113.213)
2021-06-22 12:28:18 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 240 seconds)
2021-06-22 12:28:53 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-22 12:29:32 +0200AlexNoo(~AlexNoo@178.34.160.156) (Ping timeout: 265 seconds)
2021-06-22 12:30:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-22 12:30:37 +0200Morrow(~MorrowM_@147.161.8.246)
2021-06-22 12:31:15 +0200killsushi_(~killsushi@user/killsushi/x-5912268) (Quit: Leaving)
2021-06-22 12:32:45 +0200teaSlurper(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-22 12:33:25 +0200teaSlurper(~chris@81.96.113.213)
2021-06-22 12:33:31 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-22 12:35:16 +0200Meh(~Meh@202.14.120.214)
2021-06-22 12:35:40 +0200MehGuest4839
2021-06-22 12:35:44 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-06-22 12:36:19 +0200Guest4839(~Meh@202.14.120.214) (Client Quit)
2021-06-22 12:37:54 +0200teaSlurper(~chris@81.96.113.213) (Ping timeout: 258 seconds)
2021-06-22 12:45:55 +0200zyklotomic(~ethan@2604:a880:800:10::79f:8001)
2021-06-22 12:46:13 +0200 <zyklotomic> is there syntax sugar for declaring instances for multiple types in one line?
2021-06-22 12:46:40 +0200 <zyklotomic> instead of having to do instance Eq TypeA, newline, instance Eq TypeB
2021-06-22 12:46:50 +0200 <merijn> I don't think there is
2021-06-22 12:46:52 +0200 <zyklotomic> can I like do instance Eq TypeA typeB in one go
2021-06-22 12:46:57 +0200 <zyklotomic> ah i see, just checking, thanks
2021-06-22 12:47:01 +0200mikail_(~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf)
2021-06-22 12:47:04 +0200 <merijn> tbh, I've never really had so many types to define instance on that it was relevant
2021-06-22 12:47:35 +0200 <zyklotomic> yeah it isnt' super necessary, thought it might just potentially make it cleaner
2021-06-22 12:47:40 +0200 <merijn> zyklotomic: If you have an empty isntance declaration you could just tag it onto the type definitiin via deriving, no?
2021-06-22 12:48:40 +0200 <tomsmeding> Las[m]: you may be interested in http://www.vex.net/~trebla/haskell/ghc-conc-ffi.xhtml
2021-06-22 12:48:53 +0200xff0x(~xff0x@2001:1a81:5218:4800:8168:2dc2:e054:da2) (Ping timeout: 252 seconds)
2021-06-22 12:49:20 +0200 <zyklotomic> i'm not entirely sure, not all typeclasses though
2021-06-22 12:49:25 +0200xff0x(~xff0x@2001:1a81:5218:4800:1515:545a:1239:1833)
2021-06-22 12:49:50 +0200 <zyklotomic> merijn: like, iirc, there is an AnyTypeDeriving extension, forgot the exact name
2021-06-22 12:50:41 +0200 <zyklotomic> maybe i'm not understanding correctly, am noob
2021-06-22 12:51:16 +0200kayprish(~kayprish@46.240.143.86)
2021-06-22 12:51:42 +0200 <zyklotomic> -XGeneralizedNewTypeDeriving i think
2021-06-22 12:52:13 +0200 <lortabac> zyklotomic: there is DeriveAnyClass, but it goes in the opposite sense: you can derive multiple classes for a single type
2021-06-22 12:53:11 +0200 <lortabac> also, that extension can be confusing (unless you specify the strategy explicitly with DerivingStrategies)
2021-06-22 12:53:16 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
2021-06-22 12:53:35 +0200 <zyklotomic> you mean GenearilezdNewTypeDeriving?
2021-06-22 12:53:44 +0200 <zyklotomic> by "that extension"
2021-06-22 12:53:50 +0200 <lortabac> DeriveAnyClass
2021-06-22 12:53:56 +0200 <zyklotomic> ah ok
2021-06-22 12:54:55 +0200 <zyklotomic> lortabac, merijn: thanks, the both of you, for your input
2021-06-22 12:55:53 +0200 <zyklotomic> the confusing part makes sense yes, because otherwise it feels too auto-magical
2021-06-22 13:00:11 +0200teaSlurper(~chris@81.96.113.213)
2021-06-22 13:00:52 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-06-22 13:03:36 +0200 <Las[m]> tomsmeding: Thanks! This looks like a nice resouce
2021-06-22 13:03:36 +0200 <Las[m]> resource*
2021-06-22 13:04:18 +0200lavaman(~lavaman@98.38.249.169)
2021-06-22 13:04:20 +0200 <tomsmeding> written by an active member of this channel :)
2021-06-22 13:05:44 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-22 13:06:59 +0200 <Cale> zyklotomic: If it really got serious, it'd be possible to generate a lot of instances like that using TemplateHaskell (but you probably want more than a few)
2021-06-22 13:07:14 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Ping timeout: 265 seconds)
2021-06-22 13:08:00 +0200stevenxl(~stevenlei@174.128.182.215)
2021-06-22 13:08:38 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Quit: ubert)
2021-06-22 13:08:42 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-06-22 13:08:55 +0200 <zyklotomic> Cale: have never dabbled in TemplateHaskell before lol, but yeah my use case right now definitely doesnt justify it
2021-06-22 13:11:01 +0200chddr(~Thunderbi@31.148.23.125)
2021-06-22 13:11:52 +0200teaSlurper(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-22 13:15:12 +0200biggs(~biggs@host-80-43-81-131.as13285.net)
2021-06-22 13:17:48 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-22 13:22:13 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
2021-06-22 13:22:26 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-06-22 13:22:39 +0200Codaraxis(~Codaraxis@user/codaraxis) (Read error: Connection reset by peer)
2021-06-22 13:22:59 +0200Codaraxis(~Codaraxis@user/codaraxis)
2021-06-22 13:25:16 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-22 13:26:28 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Remote host closed the connection)
2021-06-22 13:27:07 +0200hseg(~gesh@185.120.126.29)
2021-06-22 13:27:47 +0200biggs(~biggs@host-80-43-81-131.as13285.net) (Quit: Client closed)
2021-06-22 13:28:08 +0200 <hseg> Hi. Am trying to construct a list, and have the entire expression be an empty list if any of the preconditions fail
2021-06-22 13:28:19 +0200 <hseg> have written two ways: http://ix.io/3qJM
2021-06-22 13:28:31 +0200 <hseg> but neither is aesthetically appealing
2021-06-22 13:29:48 +0200 <hseg> (especially considering these lists occur in an expression context, so I'd have tm:tm':complicated_term:...
2021-06-22 13:30:20 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 252 seconds)
2021-06-22 13:30:24 +0200unyu(~pyon@user/pyon) (Quit: WeeChat 3.2)
2021-06-22 13:31:15 +0200 <Las[m]> tomsmeding: this is a nice resource, but it doesn't describe a way of executing an `IO a` in a specific OS thread, which is what I want
2021-06-22 13:31:31 +0200 <Las[m]> since I want to provide a safe abstraction over the library
2021-06-22 13:32:47 +0200trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) ()
2021-06-22 13:33:00 +0200trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-06-22 13:33:55 +0200trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Client Quit)
2021-06-22 13:34:09 +0200trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-06-22 13:34:42 +0200euandreh_(~euandreh@2804:14c:33:9fe5:4732:d8b1:5f78:9a82) (Ping timeout: 240 seconds)
2021-06-22 13:35:28 +0200 <dminuoso> % let pred = (< 3) in foldrM (\x xs -> if (pred x) then (Just (x:xs)) else Nothing) [] [1,2,2]
2021-06-22 13:35:28 +0200 <yahb> dminuoso: Just [1,2,2]
2021-06-22 13:35:31 +0200 <dminuoso> hseg: This maybe?
2021-06-22 13:35:43 +0200euandreh_(~euandreh@2804:14c:33:9fe5:3fd5:92e4:b3b4:44e0)
2021-06-22 13:35:48 +0200 <dminuoso> Im thinking this can be improved still, just busy with other stuff
2021-06-22 13:37:58 +0200fef(~thedawn@user/thedawn)
2021-06-22 13:38:51 +0200 <merijn> Las[m]: You can't specify a specific OS thread. You can require that a Haskell thread always executes on the *same* OS thread
2021-06-22 13:39:35 +0200 <merijn> Las[m]: i.e. you can say "this haskell thread should always run on the same thread" for cases where you call C code that uses, thread local storage, for example
2021-06-22 13:39:50 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-06-22 13:41:35 +0200awth13(~user@user/awth13) (Remote host closed the connection)
2021-06-22 13:41:53 +0200 <dminuoso> Ah perhaps you could write:
2021-06-22 13:42:06 +0200 <dminuoso> % let pred = (< 3) in foldrM (\x xs -> guard (pred x); Just (x:xs)) [] [1,2,2]
2021-06-22 13:42:06 +0200 <yahb> dminuoso: ; <interactive>:23:52: error: parse error on input `;'
2021-06-22 13:42:13 +0200 <dminuoso> % let pred = (< 3) in foldrM (\x xs -> do { guard (pred x); Just (x:xs) }) [] [1,2,2]
2021-06-22 13:42:13 +0200 <yahb> dminuoso: Just [1,2,2]
2021-06-22 13:42:17 +0200 <dminuoso> This looks kind of nice
2021-06-22 13:42:51 +0200 <Las[m]> merijn: then couldn't I somehow pass over the `IO a` I want to execute to some bound thread over a channel or similar?
2021-06-22 13:43:21 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 244 seconds)
2021-06-22 13:43:25 +0200awth13(~user@user/awth13)
2021-06-22 13:45:09 +0200 <kritzefitz> Las[m], yes you can, exactly as you say. Start a bound thread and pass your IO actions there using a channel.
2021-06-22 13:45:18 +0200Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 264 seconds)
2021-06-22 13:46:21 +0200 <boxscape> dminuoso: MonadComprehensions works nicely with that
2021-06-22 13:46:22 +0200 <boxscape> % let pred = (< 3) in foldrM (\x xs -> [x:xs | pred x]) [] [1,2,2]
2021-06-22 13:46:22 +0200 <yahb> boxscape: [1,2,2]
2021-06-22 13:46:46 +0200 <dminuoso> mmm
2021-06-22 13:46:56 +0200 <dminuoso> Oh, using list monad itself, thats not bad either!
2021-06-22 13:47:00 +0200 <dminuoso> % let pred = (< 1) in foldrM (\x xs -> [x:xs | pred x]) [] [1,2,2]
2021-06-22 13:47:01 +0200 <yahb> dminuoso: *** Exception: user error (mzero)
2021-06-22 13:47:10 +0200 <dminuoso> boxscape: except this is bad. mmm
2021-06-22 13:47:13 +0200 <dminuoso> % :t let pred = (< 1) in foldrM (\x xs -> [x:xs | pred x]) [] [1,2,2]
2021-06-22 13:47:14 +0200 <yahb> dminuoso: (Monad m, Alternative m, Ord a, Num a) => m [a]
2021-06-22 13:47:16 +0200 <boxscape> :/
2021-06-22 13:47:22 +0200 <dminuoso> Oh, this probably defaults to IO
2021-06-22 13:47:36 +0200 <dminuoso> % let pred = (< 1) in foldrM (\x xs -> [x:xs | pred x]) [] [1,2,2] :: Maybe [Int]
2021-06-22 13:47:37 +0200 <yahb> dminuoso: Nothing
2021-06-22 13:47:39 +0200 <dminuoso> Yeah this is good
2021-06-22 13:48:32 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-22 13:49:24 +0200 <boxscape> ah yeah I didn't realize the Just was missing in the output at first
2021-06-22 13:49:57 +0200Feuermagier(~Feuermagi@user/feuermagier)
2021-06-22 13:52:09 +0200kayprish(~kayprish@46.240.143.86) (Remote host closed the connection)
2021-06-22 13:52:12 +0200 <Las[m]> kritzefitz: Thanks! Do you have any recommendations for how I'd get the result back to the calling Haskell thread?
2021-06-22 13:52:36 +0200 <merijn> Las[m]: Oh, there's a simple solution for that
2021-06-22 13:52:42 +0200 <merijn> Well "simple" :p
2021-06-22 13:53:29 +0200 <merijn> Las[m]: Pass an empty MVar along with the IO action and have the thread running it write the result to the empty MVar
2021-06-22 13:53:31 +0200 <boxscape> @pl \x -> [x | True]
2021-06-22 13:53:31 +0200 <lambdabot> return . (| True)
2021-06-22 13:53:54 +0200 <boxscape> that's kind of funny
2021-06-22 13:53:57 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:ff00:c813:70d9:31b2:b1b9) (Ping timeout: 268 seconds)
2021-06-22 13:54:01 +0200 <Las[m]> Ah yeah that is simple, thanks
2021-06-22 13:54:06 +0200 <merijn> boxscape: That's because pl is dumb and doesn't parse Haskell
2021-06-22 13:54:19 +0200 <merijn> Las[m]: Then the original thread can just block on the empty MVar until it's done :)
2021-06-22 13:54:25 +0200 <boxscape> yeah
2021-06-22 13:54:37 +0200 <merijn> It's a super useful trick
2021-06-22 13:55:03 +0200 <Las[m]> Thanks for the help!
2021-06-22 13:55:54 +0200 <dminuoso> merijn: Wait, so automatically running @pl on my edit on save in emacs is a bad idea?
2021-06-22 13:55:54 +0200xlei(znc@pool-68-129-84-118.nycmny.fios.verizon.net) (Read error: Connection reset by peer)
2021-06-22 13:55:59 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-22 13:56:16 +0200 <merijn> dminuoso: For several reasons :p
2021-06-22 13:56:30 +0200fef(~thedawn@user/thedawn)
2021-06-22 13:56:37 +0200 <merijn> Pretty sure that @pl on save is a great way to get lynched by future maintainers
2021-06-22 13:56:37 +0200 <boxscape> I prefer running a macro that runs pl . unpl until a get a fixpoint
2021-06-22 13:57:44 +0200 <dminuoso> merijn: Im sure that running @pl keeps you safe from future maintainers in the first place.
2021-06-22 13:57:53 +0200 <dminuoso> So my life is safe.
2021-06-22 13:58:56 +0200 <maerwald[m]> It's HLint's fault making haskellers believe that caring about pointfree is something inherently idiomatic
2021-06-22 13:59:05 +0200 <dminuoso> boxscape: Sounds great. `let code' = fix (pl . unpl) code in ...`
2021-06-22 13:59:12 +0200 <merijn> HLint is to blame for lots of stuff :p
2021-06-22 13:59:12 +0200 <dminuoso> Profit?
2021-06-22 13:59:36 +0200 <tomsmeding> just like writing in APL is profit, I guess
2021-06-22 13:59:53 +0200 <boxscape> every once in a while running it on a function diverges but you know, that's what makes it fun
2021-06-22 14:00:14 +0200 <dminuoso> tomsmeding: Im sure that if you're capable in APL, you will earn more than the top 5% Haskell earners..
2021-06-22 14:00:44 +0200 <tomsmeding> https://github.com/Co-dfns/Co-dfns/tree/master/cmp
2021-06-22 14:01:04 +0200maroloccio(~marolocci@189.15.9.54)
2021-06-22 14:01:13 +0200 <boxscape> ooh, self-documenting code
2021-06-22 14:01:55 +0200 <maerwald[m]> Yeah, HLint also makes people put newtype everywhere there is only one constructor, thinking that's gonna fix all their space leaks
2021-06-22 14:01:58 +0200Codaraxis(~Codaraxis@user/codaraxis) (Remote host closed the connection)
2021-06-22 14:02:17 +0200Codaraxis(~Codaraxis@user/codaraxis)
2021-06-22 14:02:19 +0200CookE[](~thedawn@user/thedawn)
2021-06-22 14:02:39 +0200 <dminuoso> If you have your ancient APL codebase, then due to lack of programmers you as the developer can dictate your price easily I think.
2021-06-22 14:03:06 +0200 <dminuoso> APL is not like your run-off-the-mill JS clone that you simply teach to your average pythonista
2021-06-22 14:03:20 +0200CookE[](~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-22 14:04:07 +0200 <tomsmeding> maerwald[m]: not all that comes out of hlint is nonsense though. What I'd like, I think, is some way to run hlint in my HLS, but then be able to mark certain notes as "I don't want this" without having to pollute my source with annotations
2021-06-22 14:04:13 +0200xlei(znc@pool-68-129-84-118.nycmny.fios.verizon.net)
2021-06-22 14:04:23 +0200 <tomsmeding> but that's going to be hard to robustly implement
2021-06-22 14:05:34 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-22 14:06:35 +0200 <boxscape> tomsmeding: do you mean "I don't want this type of warning" or "I don't want this specific instance of this warning"?
2021-06-22 14:06:50 +0200 <maerwald[m]> Most of what comes out of hlint is nonsense imo... or just not very useful, like "yoe could have omitted that 'do'"... yeah, so what
2021-06-22 14:07:01 +0200 <tomsmeding> boxscape: this specific instance
2021-06-22 14:07:10 +0200 <boxscape> ah, yeah, that sounds difficult
2021-06-22 14:07:25 +0200 <tomsmeding> yeah I know that you can disable particular notes wholesale; not talking about that
2021-06-22 14:09:06 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-06-22 14:10:11 +0200 <merijn> HLint is great...if your opinions on formatting/writing Haskell overlap for 95% with Neil Mitchell :p
2021-06-22 14:10:29 +0200 <maerwald> Then it tries to tell me that I should avoid `maybe` for golfing reasons
2021-06-22 14:10:30 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-06-22 14:10:46 +0200 <tomsmeding> or replace a non-trivial do block with applicative style :p
2021-06-22 14:12:40 +0200 <maerwald> and then people think it's so useful, they have to include it as ERRORS in their CI, so now you got increased roundtrip times for fixing nonsensical stuff... or remember to run it before pushing
2021-06-22 14:13:13 +0200 <maerwald> Then have annoyieg discussions about why you disabled a suggestion
2021-06-22 14:13:59 +0200 <maerwald> "because it's nonsense" apparently isn't enough :p
2021-06-22 14:14:02 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-22 14:14:11 +0200 <stevenxl> morning folks
2021-06-22 14:16:00 +0200 <maerwald> linters are placebo for code cleanliness
2021-06-22 14:16:57 +0200korayal(~Koray_Al@213.14.171.115) (Quit: WeeChat 3.3-dev)
2021-06-22 14:17:08 +0200korayal(~Koray_Al@213.14.171.115)
2021-06-22 14:17:27 +0200korayal(~Koray_Al@213.14.171.115) (Changing host)
2021-06-22 14:17:27 +0200korayal(~Koray_Al@user/korayal)
2021-06-22 14:17:49 +0200korayal(~Koray_Al@user/korayal) (Client Quit)
2021-06-22 14:17:59 +0200korayal(~Koray_Al@user/korayal)
2021-06-22 14:20:55 +0200korayal(~Koray_Al@user/korayal) (Client Quit)
2021-06-22 14:21:06 +0200korayal(~Koray_Al@user/korayal)
2021-06-22 14:21:17 +0200 <dminuoso> merijn: Yeah this is precisely why I dont also use ormolu.
2021-06-22 14:21:25 +0200 <dminuoso> I dont need someone else dictating their style on me.
2021-06-22 14:21:45 +0200 <dminuoso> stylish-haskell's way of formatting import lists matches what I do anyway, so I use it for nothing but import list formatting
2021-06-22 14:22:42 +0200tomsmeding. o O ( users 1, 3, 4, 5 on this list are non-fans of linters and formatters https://ircbrowse.tomsmeding.com/nicks/lchaskell/all )
2021-06-22 14:23:33 +0200 <tomsmeding> maerwald is a bit further down the list on the old freenode haskell stats :p
2021-06-22 14:25:30 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 14:25:45 +0200chddr(~Thunderbi@31.148.23.125) (Quit: chddr)
2021-06-22 14:29:24 +0200 <merijn> I'm simultaneously sad and glad the old ircbrowse stats died
2021-06-22 14:29:40 +0200 <merijn> because they made me look like a slacker xD
2021-06-22 14:29:48 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-22 14:29:57 +0200Feuermagier_(~Feuermagi@2a02:2488:4211:3400:5def:8486:9e4:b49a)
2021-06-22 14:30:18 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 264 seconds)
2021-06-22 14:30:45 +0200ukari(~ukari@user/ukari)
2021-06-22 14:31:23 +0200 <tomsmeding> merijn: you're still on top in the freenode stats
2021-06-22 14:31:38 +0200 <merijn> Yes
2021-06-22 14:31:43 +0200 <merijn> but not nearly as much as before >.>
2021-06-22 14:32:19 +0200AlexNoo(~AlexNoo@178.34.150.65)
2021-06-22 14:32:43 +0200Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 268 seconds)
2021-06-22 14:33:14 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 14:33:43 +0200Alex_test(~al_test@178.34.150.65)
2021-06-22 14:34:23 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-22 14:34:39 +0200AlexZenon(~alzenon@178.34.150.65)
2021-06-22 14:37:47 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 252 seconds)
2021-06-22 14:38:06 +0200 <boxscape> tomsmeding: I don't use either of those things, so I guess that completes the set
2021-06-22 14:38:13 +0200 <tomsmeding> nice
2021-06-22 14:39:06 +0200 <maerwald> I used to use formatters, but then I realized they're just a form of OCD treatment
2021-06-22 14:39:16 +0200 <tomsmeding> perhaps there is a non-trivial (indirect) causal relationship between "uses IRC" and "doesn't like software to decide code formatting for them"
2021-06-22 14:39:41 +0200 <tomsmeding> where maerwald doesn't count because you use matrix
2021-06-22 14:39:56 +0200 <maerwald> no, I'm on Irc and matrix
2021-06-22 14:40:04 +0200Morrow(~MorrowM_@147.161.8.246) (Remote host closed the connection)
2021-06-22 14:40:21 +0200 <maerwald[m]> maerwald: right
2021-06-22 14:40:22 +0200azeem(~azeem@dynamic-adsl-84-220-246-6.clienti.tiscali.it) (Ping timeout: 252 seconds)
2021-06-22 14:40:22 +0200Morrow(~MorrowM_@147.161.8.246)
2021-06-22 14:40:28 +0200 <tomsmeding> :D
2021-06-22 14:40:34 +0200 <tomsmeding> ok then double
2021-06-22 14:40:46 +0200tomsmedingwonders why you're on both
2021-06-22 14:41:06 +0200 <maerwald> different clients... irc client on mobile can be wonky
2021-06-22 14:41:22 +0200 <tomsmeding> ah yes mobile clients for irc, the swampfest
2021-06-22 14:41:39 +0200 <tomsmeding> freenode has an app now!
2021-06-22 14:42:20 +0200 <maerwald> Revolution IRC works, ish, but it can swallow DMs that I have to recover by logging into my bouncer and grepping through files
2021-06-22 14:42:25 +0200 <maerwald> software. ..
2021-06-22 14:42:46 +0200 <tomsmeding> it can swallow DMs? that's good to know I guess
2021-06-22 14:42:55 +0200 <tomsmeding> also it eats a lot of battery
2021-06-22 14:44:10 +0200 <maerwald> yeah, DM windows get closed after a reconnect or so
2021-06-22 14:44:21 +0200 <maerwald> which is... a lot on mobile
2021-06-22 14:44:32 +0200tomsmedingdoesn't have that problem, perhaps it's some interaction with the bouncer? I'm using znc
2021-06-22 14:44:39 +0200 <maerwald> me too
2021-06-22 14:44:46 +0200 <maerwald> weechat works normal
2021-06-22 14:44:52 +0200 <tomsmeding> ¯\_(ツ)_/¯
2021-06-22 14:45:03 +0200 <maerwald> gg
2021-06-22 14:46:34 +0200mikail__(~mikail@90.212.77.3)
2021-06-22 14:46:58 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-06-22 14:47:51 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it)
2021-06-22 14:49:27 +0200mikail_(~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Ping timeout: 268 seconds)
2021-06-22 14:49:56 +0200 <trcc> Off-topic, but people are usually good to come up with stuff in here: I am to argue in a funding application for an open-source library (paid (very cheap) if commercial use -> money goes to non-for-profit association). How can I argue over big industrial products by e.g. Siemens on anything else than price? A pricey tool can provide 24/7 support, a overwhelming amount of features, great user-interface etc. Any ideas on pote
2021-06-22 14:49:56 +0200 <trcc> ntial ideas?
2021-06-22 14:50:43 +0200 <trcc> No vendor lock-in is one... Open-source is of course another
2021-06-22 14:51:05 +0200 <trcc> but typically such industrial tools supports customization
2021-06-22 14:51:42 +0200Wally(~Wally@dragonbox/forum-staff/wally)
2021-06-22 14:52:00 +0200 <maerwald> you mean why open source is better than. ..what?
2021-06-22 14:53:17 +0200 <trcc> a commercial tool from the point of view of industry.
2021-06-22 14:53:31 +0200 <trcc> anything else to compete on except price?
2021-06-22 14:54:06 +0200 <maerwald> It allows to build an ecosystem of contributors
2021-06-22 14:54:39 +0200 <maerwald> More coverage/users, potentially, for early stage products
2021-06-22 14:55:00 +0200 <trcc> many commercial tools do so as well through plugins
2021-06-22 14:55:22 +0200 <maerwald> Not in the same way, no
2021-06-22 14:55:37 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Read error: Connection reset by peer)
2021-06-22 14:56:15 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-22 14:56:51 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:69d4:ccfd:e578:282b) (Ping timeout: 268 seconds)
2021-06-22 14:56:58 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-22 14:57:09 +0200 <maerwald> Then there's the ethical dimension snd the security dimension. for the latter you can find tons of posts from Bruce Schneier
2021-06-22 14:58:12 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-22 14:58:19 +0200 <trcc> The ethical is an easy one. The security dimension is more tough.
2021-06-22 14:58:29 +0200 <trcc> I will target a bit on the ethical part
2021-06-22 14:58:35 +0200 <maerwald> there's also the trust argument: would you put your money on a proprietary blockchain?
2021-06-22 14:58:38 +0200 <trcc> Can you elaborate on "not in the same way"?
2021-06-22 14:58:44 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-06-22 14:59:06 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-22 14:59:14 +0200 <maerwald> Linux Kernel
2021-06-22 14:59:36 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-22 14:59:49 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net)
2021-06-22 15:00:14 +0200 <maerwald> there's also the "it's more like the science approach " argument
2021-06-22 15:00:53 +0200 <maerwald> not much more so salvage, except marketing those arguments more fancy
2021-06-22 15:01:05 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-06-22 15:01:09 +0200alx741(~alx741@181.196.68.152)
2021-06-22 15:03:11 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Ping timeout: 258 seconds)
2021-06-22 15:04:03 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Remote host closed the connection)
2021-06-22 15:04:20 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-22 15:06:47 +0200 <trcc> hehe ye. Thanks
2021-06-22 15:07:06 +0200hseg(~gesh@185.120.126.29) (Ping timeout: 265 seconds)
2021-06-22 15:08:53 +0200kuribas(~user@ptr-25vy0i89phmaoo2wmls.18120a2.ip6.access.telenet.be)
2021-06-22 15:10:48 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-22 15:11:55 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-06-22 15:12:43 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-22 15:12:46 +0200Wally(~Wally@dragonbox/forum-staff/wally) (https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-06-22 15:13:10 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-22 15:14:09 +0200 <lwe[m]> Hey guys, I’d love to learn Haskell. Can you recommend any books, tutors?
2021-06-22 15:14:18 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 258 seconds)
2021-06-22 15:14:45 +0200 <maerwald> @where learnhaskell
2021-06-22 15:14:45 +0200 <lambdabot> https://wiki.haskell.org/Learning_Haskell
2021-06-22 15:15:06 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-22 15:15:14 +0200 <maerwald> @where cis192
2021-06-22 15:15:14 +0200 <lambdabot> I know nothing about cis192.
2021-06-22 15:15:47 +0200 <maerwald> @where cis194
2021-06-22 15:15:47 +0200 <lambdabot> https://www.seas.upenn.edu/~cis194/spring13/lectures.html
2021-06-22 15:15:58 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-22 15:16:05 +0200 <maerwald> lwe[m]: ^
2021-06-22 15:16:10 +0200 <lwe[m]> Thank you 💕
2021-06-22 15:16:44 +0200 <rawles> It sounds really obvious, but I found with Haskell more than other languages that having my own mini-project to try to realise in code, even if it wasn't the best code, really helped me learn.
2021-06-22 15:16:50 +0200bontaq`(~user@ool-18e47f8d.dyn.optonline.net)
2021-06-22 15:17:03 +0200 <rawles> But I'm still very much a beginner!
2021-06-22 15:17:46 +0200 <lwe[m]> What your pet project is about?
2021-06-22 15:18:14 +0200bontaq`bontaq
2021-06-22 15:18:27 +0200 <rawles> My first ever one was to store and process GPS traces of my favourite hikes.
2021-06-22 15:18:31 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-06-22 15:18:52 +0200 <rawles> I had to think about data structures, and pipelines of functions that would perform the transformations I needed.
2021-06-22 15:19:03 +0200sekun(~sekun@180.190.208.125)
2021-06-22 15:19:33 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-22 15:21:38 +0200 <jumper149> Is it possible to view a servant API in some form of tree?
2021-06-22 15:22:24 +0200 <sekun> This is just a hypothetical question. I've read on Reddit that GHC has accumulated a lot of baggage in the past 30 years of its development. How can this issue be addressed? Is a full rewrite of GHC a reasonable thing, or would it be better to just fix them along the way with the current GHC?
2021-06-22 15:22:48 +0200nerdypepper(~nerdypepp@user/nerdypepper) (Quit: bye)
2021-06-22 15:23:27 +0200hendursaga(~weechat@user/hendursaga) (Quit: hendursaga)
2021-06-22 15:24:18 +0200trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-06-22 15:24:50 +0200trcc(~trcc@130.225.16.16)
2021-06-22 15:25:14 +0200nerdypepper(~nerdypepp@user/nerdypepper)
2021-06-22 15:30:24 +0200 <lyxia> even without whatever baggage GHC is a huge thing. A rewrite would not go well.
2021-06-22 15:30:24 +0200hendursaga(~weechat@user/hendursaga)
2021-06-22 15:30:26 +0200kw(~user@152.1.137.158)
2021-06-22 15:30:36 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 15:30:37 +0200maroloccio(~marolocci@189.15.9.54) (Ping timeout: 246 seconds)
2021-06-22 15:30:55 +0200MorrowM(~MorrowM_@147.161.12.3)
2021-06-22 15:31:19 +0200 <merijn> sekun: What baggage do you imagine could be removed?
2021-06-22 15:32:23 +0200maroloccio(~marolocci@189.15.9.54)
2021-06-22 15:33:10 +0200 <kw> Is it possible to write a function `traverseAlt :: (Alternative m)=> (a -> m b) -> NonEmpty a -> m (NonEmpty b)` , where, for instance, `traverseAlt (const empty)` === `empty` ? Or would that require a `Monad` constraint?
2021-06-22 15:33:39 +0200hmmmas(~chenqisu1@183.217.200.246) (Quit: Leaving.)
2021-06-22 15:33:54 +0200Morrow(~MorrowM_@147.161.8.246) (Ping timeout: 252 seconds)
2021-06-22 15:34:14 +0200 <sekun> merijn: (i'm not sure how to reply in IRC sorry). I'm not sure either. I just started with this language a couple months ago. I just see it get thrown here and there on /r/Haskell
2021-06-22 15:34:50 +0200 <sekun> lyxia: Oh ok. So incremental refactors is the only realistic option?
2021-06-22 15:34:59 +0200 <lyxia> yes
2021-06-22 15:35:46 +0200 <sekun> I see
2021-06-22 15:35:57 +0200qrpnxz(~qrpnxz@user/qrpnxz)
2021-06-22 15:36:02 +0200 <justsomeguy> (Sometimes I wonder why there aren't more Haskell compilers, maybe only covering the subset of Haskell 2010, as opposed to modern Haskell with tons of language extensions.)
2021-06-22 15:36:58 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-22 15:39:02 +0200 <qrpnxz> even w/o extensions it would be pretty hard to make a haskell compiler, but without extentions it would be hard to compete as well
2021-06-22 15:39:27 +0200 <even4void> resp <- 2:5
2021-06-22 15:39:27 +0200 <even4void> idx <- grep("4cat", names(d))[1:12]
2021-06-22 15:39:27 +0200 <even4void> pca <- PCA(d[, idx], graph = FALSE)
2021-06-22 15:39:32 +0200 <lyxia> kw: is the idea that if one element fails in a list of more than one, you still get the others in the result?
2021-06-22 15:39:47 +0200 <even4void> Wrong terminal window -- sorry for the noise!
2021-06-22 15:40:54 +0200chomwitt(~Pitsikoko@athedsl-351576.home.otenet.gr)
2021-06-22 15:41:13 +0200 <[exa]> sekun, justsomeguy: ghc is "too good" for any simple side development to succeed, or even become visible quickly. Many people tried, tbh.
2021-06-22 15:41:25 +0200janiczek(~janiczek@89-24-215-117.customers.tmcz.cz) (Ping timeout: 265 seconds)
2021-06-22 15:41:54 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 265 seconds)
2021-06-22 15:41:56 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:c14c:3118:b974:8ae3)
2021-06-22 15:42:01 +0200li(~li@libera/staff/li) ()
2021-06-22 15:42:19 +0200 <maerwald> You can't even do transformers in haskell 2010, can you?
2021-06-22 15:42:52 +0200 <maerwald> Or maybe not mtl
2021-06-22 15:42:53 +0200qrpnxz(~qrpnxz@user/qrpnxz) (Error from remote client)
2021-06-22 15:42:58 +0200 <[exa]> I kindof expect that we're not getting a different haskell compiler without some significant scientifical development happening, that would e.g. substantiate a completely different type system internals or compilation method
2021-06-22 15:43:15 +0200 <Taneb> maerwald: I think transformers is fine but mtl needs multiparam type classes and fundeps
2021-06-22 15:43:38 +0200 <Taneb> And undecidable instances, too
2021-06-22 15:43:40 +0200thyriaen(~thyriaen@45.178.73.238)
2021-06-22 15:45:03 +0200 <thyriaen> Howdy, friends :: I am going through a tutorial and have solved an exercise - however it feels like i did not really embrace the functional way in my answer : what would be a more ideal way to achive doubleing every 2nd entry from the back ? https://hastebin.com/neholubeke.yaml
2021-06-22 15:45:09 +0200 <tomsmeding> justsomeguy: Helium exists https://github.com/Helium4Haskell/helium
2021-06-22 15:45:40 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-22 15:45:40 +0200hmmmas(~chenqisu1@183.217.200.246)
2021-06-22 15:45:52 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 15:46:08 +0200 <[exa]> thyriaen: generate both possibilities on the way, and return the one that matches once you reach the end
2021-06-22 15:46:09 +0200 <tomsmeding> it has a focus on better-quality type errors
2021-06-22 15:46:11 +0200 <Taneb> thyriaen: I'd have two functions that call each other. One which doubles the odd elements and one which doubles the even elements. Calling "length" every recursive step is generally a sign you're doing something wrong
2021-06-22 15:46:45 +0200 <thyriaen> Taneb, so 2 recursive functions calling eachother alternatingly ?
2021-06-22 15:47:01 +0200 <Taneb> Yeah
2021-06-22 15:47:02 +0200 <thyriaen> Taneb, yeath thats what i thought so too about the length thaths why i came here
2021-06-22 15:47:20 +0200 <thyriaen> ok thanks
2021-06-22 15:47:40 +0200 <sekun> exa: Bummer. Yeah I just checked the Haskell about its compilers, and all the others pretty much ate GHC's dust
2021-06-22 15:48:16 +0200 <thyriaen> Taneb, but the way i see it - that doubles them from the front not form the back
2021-06-22 15:48:35 +0200 <Taneb> thyriaen: oh, hmm
2021-06-22 15:48:58 +0200 <Taneb> thyriaen: I didn't see that. In which case, listen to what [exa] wrote
2021-06-22 15:48:59 +0200qrpnxz(~qrpnxz@user/qrpnxz)
2021-06-22 15:49:06 +0200 <[exa]> sekun: I'd say that technically reproducing SOME haskell isn't even a really complex task now, there are perfect tutorials for everything and type system and runtime approaches are well documented. But you kinda want a haskell that can run the stuff on Hackage, which uses a ton of the tiny extensions
2021-06-22 15:49:19 +0200 <[exa]> which puts QUITE some overhead into the task
2021-06-22 15:49:30 +0200 <thyriaen> [exa], not really sure how to do that
2021-06-22 15:50:12 +0200 <thyriaen> Taneb, reversing the function twice is also bad form, right ?
2021-06-22 15:50:37 +0200 <Taneb> It's better than taking the length every step but yes
2021-06-22 15:50:45 +0200Morrow_(~MorrowM_@147.161.9.235)
2021-06-22 15:51:16 +0200 <[exa]> thyriaen: let's play lego. Try to combine `repeat [id,(*2)]` with `zipWith`, and write a `isEvenLength` that doesn't use `length` because we don't need them ugly integers right?
2021-06-22 15:52:48 +0200 <thyriaen> is repeat a haskell function ?
2021-06-22 15:52:54 +0200 <[exa]> yap
2021-06-22 15:52:54 +0200 <Taneb> Yes
2021-06-22 15:53:27 +0200 <[exa]> you probably won't be able to print the result of this one (unless your ghci has magicks), but you can try `repeat [1,2,3]`
2021-06-22 15:53:43 +0200 <[exa]> actually I meant `cycle`, sorry
2021-06-22 15:54:00 +0200 <[exa]> `cycle [id, (*2)]` or `cycle [1,2,3]`, yeah. :D
2021-06-22 15:54:07 +0200MorrowM(~MorrowM_@147.161.12.3) (Ping timeout: 268 seconds)
2021-06-22 15:55:03 +0200janiczek(~janiczek@89-24-215-117.customers.tmcz.cz)
2021-06-22 15:56:03 +0200trcc(~trcc@130.225.16.16) (Remote host closed the connection)
2021-06-22 15:56:16 +0200 <[exa]> anyway, for the first implementation, I wouldn't object just doing the stuff on a reversed list
2021-06-22 15:56:31 +0200trcc(~trcc@130.225.16.16)
2021-06-22 15:56:45 +0200derelict(~derelict@user/derelict) (Quit: WeeChat 3.2)
2021-06-22 15:57:00 +0200derelict(~derelict@user/derelict)
2021-06-22 15:57:34 +0200vicfred(~vicfred@user/vicfred)
2021-06-22 15:57:54 +0200 <thyriaen> you mean cycle [1,2] right ?
2021-06-22 15:58:05 +0200Feuermagier_(~Feuermagi@2a02:2488:4211:3400:5def:8486:9e4:b49a) (Ping timeout: 252 seconds)
2021-06-22 15:59:14 +0200 <[exa]> yes, that may also be useful
2021-06-22 15:59:40 +0200janiczek(~janiczek@89-24-215-117.customers.tmcz.cz) (Ping timeout: 268 seconds)
2021-06-22 15:59:57 +0200 <thyriaen> [exa], cause with a cycled [1,2] list i can then ZipWith that with * to double every 2nd element
2021-06-22 16:00:09 +0200 <[exa]> yeah
2021-06-22 16:00:53 +0200 <[exa]> with the thing I wrote above, you can save some multiplication-by-1, using `zipWith ($) (repeat [id,(*2)]) yourNums`
2021-06-22 16:01:06 +0200 <thyriaen> $ ?
2021-06-22 16:01:38 +0200 <[exa]> that's the same $ that you use for writing `f 1 (2+3)` as `f 1 $ 2+3`
2021-06-22 16:02:03 +0200 <thyriaen> i have not reached $ yet
2021-06-22 16:02:10 +0200 <[exa]> ah okay worry not then
2021-06-22 16:02:12 +0200trcc(~trcc@130.225.16.16) (Ping timeout: 265 seconds)
2021-06-22 16:02:18 +0200 <thyriaen> yes
2021-06-22 16:02:19 +0200 <[exa]> it just applies function on the left to the parameter on the right
2021-06-22 16:02:26 +0200 <thyriaen> cool
2021-06-22 16:02:38 +0200 <[exa]> really can avoid a lot of )))))))))))))
2021-06-22 16:03:28 +0200 <thyriaen> so if i would write isEvenLength, i would go through the list and return a boolean depending when the list ends
2021-06-22 16:03:29 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-22 16:03:30 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
2021-06-22 16:04:03 +0200 <[exa]> e.g. `pure (f 1 (g 2 3))` can be written as `pure $ f 1 $ g 2 3`
2021-06-22 16:04:05 +0200notzmv(~zmv@user/notzmv)
2021-06-22 16:05:15 +0200 <[exa]> thyriaen: yeah. Note you don't produce the unnecessary Int in the process
2021-06-22 16:06:03 +0200Morrow_(~MorrowM_@147.161.9.235) (Ping timeout: 258 seconds)
2021-06-22 16:06:08 +0200 <thyriaen> [exa], so i my case i have a function toDigitsRev :: Integer -> [Integer] and i can just write reverse $ toDigitsRev [1,2] instead of reverse(toDigitsRev [1,2]) ?
2021-06-22 16:06:33 +0200 <[exa]> yeah that should work
2021-06-22 16:07:03 +0200 <[exa]> (at least if there aren't any more parameters to reverse, which I guess there isn't)
2021-06-22 16:07:12 +0200 <[exa]> (aren't)
2021-06-22 16:07:25 +0200 <thyriaen> [exa], okay thanks - I didn't fully understand how i can put these things together, but let me write up the single functions and fiddle with them a bit
2021-06-22 16:07:36 +0200 <thyriaen> then ill be back if i can still not get the answer
2021-06-22 16:07:58 +0200 <[exa]> ok
2021-06-22 16:08:24 +0200 <[exa]> extra inspiration for avoiding explicit Booleans: compare (tail $ cycle [1,2]) and (id $ cycle [1,2])
2021-06-22 16:08:50 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-06-22 16:08:51 +0200 <thyriaen> is id a keyword ?
2021-06-22 16:09:22 +0200 <[exa]> no, just a normal function that doesn't change the parameter
2021-06-22 16:09:26 +0200 <thyriaen> ok
2021-06-22 16:09:37 +0200 <[exa]> pretty useful for various placeholding and dummy values
2021-06-22 16:09:49 +0200 <nitrix> id x = x
2021-06-22 16:10:22 +0200 <thyriaen> its just the idendity function
2021-06-22 16:10:29 +0200 <[exa]> yes
2021-06-22 16:11:28 +0200 <thyriaen> doesnt cycle need another argument how many times it needs to cycle ?
2021-06-22 16:11:47 +0200janiczek(~janiczek@89-24-215-117.customers.tmcz.cz)
2021-06-22 16:11:48 +0200fendor_(~fendor@178.115.129.107.wireless.dyn.drei.com)
2021-06-22 16:11:56 +0200 <Taneb> thyriaen: nope, it just keeps going
2021-06-22 16:12:10 +0200Xraell(~yourname@45.157.15.145) (Remote host closed the connection)
2021-06-22 16:13:06 +0200 <thyriaen> how can i make it stop T_T cycle 3 [1,2] ?
2021-06-22 16:13:48 +0200 <tdammers> you can just take as much of it as you need
2021-06-22 16:13:58 +0200 <thyriaen> tdammers, haha
2021-06-22 16:14:00 +0200 <nitrix> cycle produces an infinite list but you can take a shorter list from that list.
2021-06-22 16:14:14 +0200fendor(~fendor@91.141.3.62.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-06-22 16:15:01 +0200 <tdammers> I was being serious. Remember that Haskell does non-strict evaluation by default, so just let-binding an expression that would evaluate to an infinitely long list does not actually allocate an infinitely long list in memory, nor does it take infinitely long to bind it
2021-06-22 16:15:17 +0200 <tdammers> that list only gets evaluated as far as is demanded
2021-06-22 16:15:41 +0200 <tdammers> so if you say `take 10 (cycle [1,2])`, it'll evaluate as many list items as necessary to get you the first 10 elements
2021-06-22 16:15:52 +0200safinaskar(~safinaska@109.252.90.89)
2021-06-22 16:15:55 +0200 <thyriaen> tdammers, it was funny because i did not know there was a "take" function and id did sound so natural to just take a few
2021-06-22 16:16:10 +0200 <tdammers> well, yeah, it's called take for a reason
2021-06-22 16:16:15 +0200 <thyriaen> ;p
2021-06-22 16:16:26 +0200 <safinaskar> hi. https://hackage.haskell.org/package/base-4.12.0.0/docs/Control-Applicative.html says that "fmap f x = pure f <*> x" follows from other applicative laws. how to prove this?
2021-06-22 16:16:45 +0200 <nitrix> Alternatively, you could use `replicate`, which accepts a number of times and something to replicate, so `replicate 3 [1,2]`, but that would produce the list [[1,2], [1,2], [1,2]] which you would then have to concatenate them all as [1,2,1,2,1,2] with the function `concat`.
2021-06-22 16:17:10 +0200 <nitrix> % concat $ replicate 3 [1,2]
2021-06-22 16:17:10 +0200 <yahb> nitrix: [1,2,1,2,1,2]
2021-06-22 16:17:38 +0200Sgeo(~Sgeo@user/sgeo)
2021-06-22 16:18:30 +0200 <nitrix> It avoids the little bit of arithmetic of multiplying the cycle count with the cycle length to `take` the right amount.
2021-06-22 16:22:46 +0200 <[exa]> thyriaen: zipWith automagically truncates the longer list for you
2021-06-22 16:22:49 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-06-22 16:23:21 +0200 <[exa]> > zipWith (+) (cycle [1,2]) [1,2,3,4]
2021-06-22 16:23:23 +0200 <lambdabot> [2,4,4,6]
2021-06-22 16:24:04 +0200 <lyxia> safinaskar: \f x -> pure f <*> x satisfies the functor laws and by parametricity there is only one function that satisfies the functor laws.
2021-06-22 16:24:56 +0200 <safinaskar> lyxia: "parametricity" - you mean theorems for free?
2021-06-22 16:25:04 +0200 <lyxia> yes
2021-06-22 16:25:09 +0200 <safinaskar> thanks
2021-06-22 16:26:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 16:27:00 +0200 <kw> `<*>` still has to satisfy the Applicative laws for that to work, though.
2021-06-22 16:27:23 +0200 <lyxia> yeah but the question is about why the docs say "follows from the other applicative laws"
2021-06-22 16:27:23 +0200 <kw> As does `pure` .
2021-06-22 16:28:16 +0200fendor_fendor
2021-06-22 16:30:03 +0200 <kw> Right. I'm just saying that 'It follows from the Applicative laws' by parametricity.' does not explain why that is true.
2021-06-22 16:31:06 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 240 seconds)
2021-06-22 16:31:36 +0200kw(~user@152.1.137.158) (Quit: work)
2021-06-22 16:32:35 +0200finsternis(~X@23.226.237.192)
2021-06-22 16:33:11 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-06-22 16:33:22 +0200trent2(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 244 seconds)
2021-06-22 16:35:27 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-22 16:38:17 +0200 <thyriaen> [exa], neat ! how considerate of zipWith
2021-06-22 16:38:32 +0200safinaskar(~safinaska@109.252.90.89) ()
2021-06-22 16:39:06 +0200 <thyriaen> [exa], but in essence, i have to run length on my initial list first to check which one to take, no ?
2021-06-22 16:39:31 +0200 <thyriaen> or how do i get the oddness of the list without the explict boolean ?
2021-06-22 16:40:10 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.1)
2021-06-22 16:40:33 +0200Guest31(~Guest31@202.166.32.155)
2021-06-22 16:42:41 +0200 <Guest31> is this the correct place to ask beginner questions regarding Haskell? I just started on the fp-course on windows and was facing some difficulty with basic setup
2021-06-22 16:44:12 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Quit: mikoto-chan)
2021-06-22 16:45:09 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 258 seconds)
2021-06-22 16:45:16 +0200 <[exa]> thyriaen: you can return `id` if the length's even or `tail` if the length is odd, and just apply that to the `cycle [1,2]` to conditionally drop the first item
2021-06-22 16:45:48 +0200curiousgay(~curiousgg@178.217.208.8) (Remote host closed the connection)
2021-06-22 16:45:53 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-22 16:46:05 +0200curiousgay(~curiousgg@178.217.208.8)
2021-06-22 16:46:18 +0200 <thyriaen> [exa], yea - but in order to determine that i have to first check if the length is indeed odd or even
2021-06-22 16:46:21 +0200 <thyriaen> i cannot get around that
2021-06-22 16:46:54 +0200hmmmas(~chenqisu1@183.217.200.246) (Quit: Leaving.)
2021-06-22 16:47:23 +0200 <L29Ah> hello, i'm trying to use the new OverloadedRecordDot syntax extension, i've enabled it and dependencies, and now have the following error in irrelevant code:
2021-06-22 16:47:23 +0200 <L29Ah> Not in scope: ‘setField’
2021-06-22 16:47:23 +0200 <L29Ah> 94 | let preTAM = def{salt = salt}
2021-06-22 16:47:28 +0200 <L29Ah> do i need to import something else?
2021-06-22 16:47:58 +0200mikail__(~mikail@90.212.77.3) (Ping timeout: 252 seconds)
2021-06-22 16:50:32 +0200hounded(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com)
2021-06-22 16:50:58 +0200 <hounded> #
2021-06-22 16:51:25 +0200nerdypepper(~nerdypepp@user/nerdypepper) (Quit: bye)
2021-06-22 16:51:26 +0200 <Guest31> i've cloned the fp-course directory and used chocolatey to install make; i've also installed stack and am able to execute stack ghci without issue for example. However if i try make GHCI i get the following error:
2021-06-22 16:51:30 +0200 <Guest31> STACK_YAML="stack.yaml" stack ghci course:lib
2021-06-22 16:51:30 +0200 <Guest31> 'STACK_YAML' is not recognized as an internal or external command,
2021-06-22 16:51:30 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-22 16:51:31 +0200 <Guest31> operable program or batch file.
2021-06-22 16:51:31 +0200 <Guest31> make: *** [Makefile:22: ghci] Error 1
2021-06-22 16:52:24 +0200 <Guest31> if anyone could help with this it would be greatly appreciated; I'm trying to get this to work on a windows 10 machine for reference. Am a haskell beginner trying to do the fp-course
2021-06-22 16:52:42 +0200nerdypepper(~nerdypepp@user/nerdypepper)
2021-06-22 16:52:50 +0200 <Las[m]> This isn't really a solution, but I suggest you'd really do all development through WSL
2021-06-22 16:53:34 +0200derelict(~derelict@user/derelict) (Quit: WeeChat 3.2)
2021-06-22 16:54:24 +0200 <Las[m]> Does anyone know why you can't call into Haskell again from an unsafe foreign call?
2021-06-22 16:54:59 +0200 <jiribenes> Guest31: maybe try first setting the variable, 'SET STACK_YAML="stack.yaml"' and then run 'stack ghci course:lib'?
2021-06-22 16:55:09 +0200 <merijn> Las[m]: Because the capability is locked
2021-06-22 16:56:08 +0200 <Las[m]> merijn: Thanks that makes sense
2021-06-22 16:56:23 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-22 16:57:05 +0200 <Guest31> jiribenes: do you mean setting an environment variable? sorry i'm really new and not sure where i should change this setting
2021-06-22 16:58:21 +0200 <jiribenes> Guest31: try first writting the command 'SET STACK_YAML="stack.yaml"' to the command line
2021-06-22 16:58:32 +0200 <jiribenes> and after that write 'stacj ghci course:lib'
2021-06-22 16:58:42 +0200 <jiribenes> sorry, 'stack ghci course:lib'
2021-06-22 16:58:44 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-22 16:58:54 +0200 <Guest31> Getting project config file from STACK_YAML environment
2021-06-22 16:58:54 +0200 <Guest31> InvalidAbsFile "D:\\Documents\\GitHub\\fp-course\\\"stack.yaml\""
2021-06-22 16:59:11 +0200 <Guest31> i just tried that; it then gives me this error
2021-06-22 16:59:50 +0200 <jiribenes> maybe try setting it without the quote marks, that is 'SET STACK_YAML=stack.yaml'
2021-06-22 17:00:10 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.227.207) (Quit: EXIT)
2021-06-22 17:00:59 +0200 <Guest31> jiribenes: it worked!! thank you so much
2021-06-22 17:03:33 +0200 <Guest31> can I also ask if anyone knows where stack downloads its files? and if its possible to change this. Reading through the documentation it sounded like stack downloads a local copy of ghc for each project? i'm not sure if i understood correctly
2021-06-22 17:04:08 +0200 <Guest31> not really an issue at present; but in general if stack sets up and downloads files for me to do things, i was hoping to check where the downloaded files go
2021-06-22 17:05:25 +0200 <Boarders> Does anyone know if in a stack yaml file if I can overwrite a $everything flag with a $locals flag, e.g. if I pass `-O2` to $everything and -O1 to $locals then which one wins?
2021-06-22 17:08:51 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Remote host closed the connection)
2021-06-22 17:14:42 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:f76a:37dd:7d13:fae6) (Ping timeout: 264 seconds)
2021-06-22 17:15:09 +0200martinjaniczek(~janiczek@89-24-44-164.nat.epc.tmcz.cz)
2021-06-22 17:15:49 +0200janiczek(~janiczek@89-24-215-117.customers.tmcz.cz) (Ping timeout: 258 seconds)
2021-06-22 17:16:11 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-06-22 17:16:57 +0200safinaskar(~safinaska@109.252.90.89)
2021-06-22 17:18:01 +0200Guest31(~Guest31@202.166.32.155) (Quit: Client closed)
2021-06-22 17:20:25 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-06-22 17:20:28 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 17:20:30 +0200sekun(~sekun@180.190.208.125) (Ping timeout: 265 seconds)
2021-06-22 17:20:38 +0200 <safinaskar> % proof :: forall (a :: *). (forall (x :: a). x :~: x) -> (forall (x :: a). x :~: x); proof = error ""
2021-06-22 17:20:38 +0200 <yahb> safinaskar: ; <interactive>:49:93: error:; * Couldn't match expected type `(forall (x :: a). x :~: x) -> forall (x :: a). x :~: x' with actual type `a0'; Cannot instantiate unification variable `a0'; with a type involving polytypes: (forall (x :: a). x :~: x) -> forall (x :: a). x :~: x; * In the expression: error ""; In an equation for `proof': proof = error ""; * Relevant bindings inc
2021-06-22 17:20:48 +0200 <safinaskar> why this gives compilation error?
2021-06-22 17:20:56 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-22 17:21:08 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 17:21:16 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-22 17:22:47 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.227.207)
2021-06-22 17:22:54 +0200ezzieygu1wufezzieyguywuf
2021-06-22 17:23:13 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-06-22 17:23:16 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-22 17:23:31 +0200gentauro(~gentauro@user/gentauro)
2021-06-22 17:25:14 +0200derelict(~derelict@user/derelict)
2021-06-22 17:26:27 +0200 <c_wraith> safinaskar: the error message seems pretty specific "Cannot instantiate unification variable `a0'; with a type involving polytypes:"
2021-06-22 17:27:17 +0200 <c_wraith> safinaskar: that particular case might seem obvious, but the larger technique is not
2021-06-22 17:27:32 +0200 <safinaskar> c_wraith: okey, but how this is possible that (error "") cannot match with (proof)? (error) has type (forall a. String -> a)
2021-06-22 17:27:47 +0200 <safinaskar> c_wraith: so (error "") should match with everything, right?
2021-06-22 17:28:33 +0200 <c_wraith> safinaskar: because it needs to unify the type of (error "") with the type you provided
2021-06-22 17:28:52 +0200 <lyxia> "forall a" does not mean a can literally be anything in existence.
2021-06-22 17:28:52 +0200maroloccio(~marolocci@189.15.9.54) (Quit: Client closed)
2021-06-22 17:29:04 +0200 <c_wraith> safinaskar: and that unification fails because it would require a polytype
2021-06-22 17:29:17 +0200 <lyxia> there is a range of things a can be, and polytypes are not among them.
2021-06-22 17:29:19 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
2021-06-22 17:29:36 +0200 <c_wraith> safinaskar: What version of GHC are you using?
2021-06-22 17:30:40 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Quit: WeeChat 3.1)
2021-06-22 17:30:41 +0200 <safinaskar> c_wraith: 9.2.0.20210422 (latest which can be installed using ghcup)
2021-06-22 17:30:53 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-06-22 17:31:05 +0200 <c_wraith> do you have -XImpredicativeTypes on?
2021-06-22 17:31:13 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Client Quit)
2021-06-22 17:31:27 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-06-22 17:31:58 +0200 <c_wraith> I'm not sure about the limits of the new implementation for it. It *might* be able to handle this case.
2021-06-22 17:32:39 +0200 <safinaskar> c_wraith: lyxia: thanks, what are polytypes?
2021-06-22 17:33:33 +0200 <safinaskar> c_wraith: i didn't have ImpredicativeTypes . now i enabled it, and the code works. thanks!
2021-06-22 17:33:33 +0200martinjaniczek(~janiczek@89-24-44-164.nat.epc.tmcz.cz) (Read error: Connection reset by peer)
2021-06-22 17:34:14 +0200 <c_wraith> a polytype is essentially a type with a forall anywhere other than the top level
2021-06-22 17:34:16 +0200martinjaniczek(~janiczek@89-24-215-117.customers.tmcz.cz)
2021-06-22 17:35:03 +0200 <c_wraith> (I'm sure you could find some counterexamples that you need a more precise definition to deal with, but that's a good starting point)
2021-06-22 17:35:14 +0200 <lyxia> (short for "types with polymorphism")
2021-06-22 17:38:48 +0200 <c_wraith> In any case, -XImpredicativeTypes exists specifically to allow unification to work with polytypes
2021-06-22 17:39:07 +0200 <c_wraith> It has some limits - you can get sophisticated enough that it gives up.
2021-06-22 17:40:01 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Quit: WeeChat 3.1)
2021-06-22 17:40:42 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-06-22 17:41:27 +0200 <monochrom> IIRC 9.2 uses what's on the QuickLook impredicavity paper, so it is fairly well-defined what it tries.
2021-06-22 17:42:17 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-06-22 17:43:45 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 17:43:46 +0200 <c_wraith> yeah, I just don't know what the limits are - I haven't read the paper.
2021-06-22 17:44:00 +0200 <monochrom> Ha nice ghcup knows 9.2 prerelease.
2021-06-22 17:47:52 +0200 <monochrom> The nice thing is if you don't know, but you have had experience and good habits in handwriting type sigs for ordinary Haskell code, you won't be surprised about where you need to handwrite types.
2021-06-22 17:48:18 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 264 seconds)
2021-06-22 17:48:22 +0200 <monochrom> A long way to say "intuitive" but it's a vague and much abused word.
2021-06-22 17:48:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-22 17:48:24 +0200Morrow_(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-06-22 17:53:51 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-06-22 17:55:38 +0200lbseale(~lbseale@user/ep1ctetus)
2021-06-22 17:55:47 +0200Morrow_(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 265 seconds)
2021-06-22 17:56:10 +0200safinaskar(~safinaska@109.252.90.89) ()
2021-06-22 17:59:54 +0200oniko
2021-06-22 18:00:58 +0200fef(~thedawn@user/thedawn)
2021-06-22 18:01:59 +0200 <tomsmeding> % proof :: forall (a :: *). (forall (x :: a). x :~: x) -> (forall (x :: a). x :~: x); proof _ = error ""
2021-06-22 18:01:59 +0200 <yahb> tomsmeding:
2021-06-22 18:02:13 +0200 <tomsmeding> (added a _ argument)
2021-06-22 18:03:47 +0200xff0x(~xff0x@2001:1a81:5218:4800:1515:545a:1239:1833) (Ping timeout: 244 seconds)
2021-06-22 18:04:38 +0200xff0x(~xff0x@2001:1a81:5218:4800:ee:cf49:8e18:79e1)
2021-06-22 18:07:00 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-22 18:07:01 +0200ArsenArsenArsen
2021-06-22 18:07:09 +0200ArsenArsenArsen
2021-06-22 18:07:42 +0200ArsenArsenArsen
2021-06-22 18:07:53 +0200moet(~moet@172.58.35.6)
2021-06-22 18:09:30 +0200pragma-garp
2021-06-22 18:09:34 +0200garppragma-
2021-06-22 18:10:47 +0200_________noodly
2021-06-22 18:10:51 +0200noodly__________
2021-06-22 18:11:01 +0200___________________
2021-06-22 18:12:26 +0200safinaskar(~safinaska@109.252.90.89)
2021-06-22 18:12:39 +0200 <safinaskar> why this code doesn't compile? https://paste.debian.net/1202044/
2021-06-22 18:13:06 +0200 <safinaskar> I see error: "Illegal equational constraint a ~ a (Use GADTs or TypeFamilies to permit this)"
2021-06-22 18:13:20 +0200 <safinaskar> how GADTs and TypeFamilies are related to my code?
2021-06-22 18:14:01 +0200 <Cale> They both need type equalities to work
2021-06-22 18:14:33 +0200 <Cale> It's possible that there ought to be a third extension TypeEqualities that they both imply, but there isn't.
2021-06-22 18:14:47 +0200 <tomsmeding> % proof :: forall (a :: *). (forall (x :: a). x :~: x) -> (forall (x :: a). x :~: x); proof _ = error "" -- safinaskar
2021-06-22 18:14:48 +0200 <yahb> tomsmeding:
2021-06-22 18:14:57 +0200 <tomsmeding> (note the _)
2021-06-22 18:15:51 +0200hrnzHenselierung
2021-06-22 18:15:56 +0200hiruji(~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in)
2021-06-22 18:16:13 +0200hiruji(~hiruji@user/hiruji)
2021-06-22 18:16:16 +0200 <safinaskar> Cale: thanks
2021-06-22 18:16:25 +0200lavaman(~lavaman@98.38.249.169)
2021-06-22 18:16:33 +0200 <safinaskar> tomsmeding: thanks. i already enabled typeimpredicativity, and it works
2021-06-22 18:17:13 +0200hiruji(~hiruji@user/hiruji) (Client Quit)
2021-06-22 18:17:17 +0200hounded_woodstoc(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com)
2021-06-22 18:17:29 +0200hounded_1969(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com)
2021-06-22 18:17:32 +0200hiruji(~hiruji@user/hiruji)
2021-06-22 18:18:11 +0200hiruji(~hiruji@user/hiruji) (Client Quit)
2021-06-22 18:18:29 +0200hiruji(~hiruji@user/hiruji)
2021-06-22 18:18:46 +0200 <thyriaen> i thought that the point of reduce & fold to use it on monoids so it doesnt matter in which order the operation is applied, why is there foldl foldr foldt - when i use it for + for example i dont care bout the order
2021-06-22 18:18:48 +0200hounded_1969(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Client Quit)
2021-06-22 18:20:05 +0200wagle(~wagle@quassel.wagle.io) (Ping timeout: 272 seconds)
2021-06-22 18:23:00 +0200wagle(~wagle@quassel.wagle.io)
2021-06-22 18:23:35 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-06-22 18:23:39 +0200 <Cale> thyriaen: Not necessarily
2021-06-22 18:24:03 +0200 <Cale> There are plenty of cases where the type of the result does not even match the type of elements in the list
2021-06-22 18:24:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-22 18:25:47 +0200safinaskar(~safinaska@109.252.90.89) ()
2021-06-22 18:25:54 +0200safinaskar(~safinaska@109.252.90.89)
2021-06-22 18:25:56 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-06-22 18:26:01 +0200 <safinaskar> why this doesn't compile? https://paste.debian.net/1202047/
2021-06-22 18:27:00 +0200 <Cale> safinaskar: Because 3868 still hasn't gotten merged ;)
2021-06-22 18:27:42 +0200wagle(~wagle@quassel.wagle.io) (Ping timeout: 252 seconds)
2021-06-22 18:27:43 +0200xkuru(~xkuru@user/xkuru)
2021-06-22 18:27:50 +0200 <safinaskar> Cale: please, give a link
2021-06-22 18:27:52 +0200xkuru(~xkuru@user/xkuru) (Remote host closed the connection)
2021-06-22 18:28:01 +0200 <Cale> https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3868/
2021-06-22 18:28:14 +0200xkuru(~xkuru@user/xkuru)
2021-06-22 18:28:31 +0200 <Cale> (I need to update some test outputs, and rebase it right now, as it happens...)
2021-06-22 18:29:21 +0200 <Cale> safinaskar: Note that regardless, pr would be dead code, since you could never actually satisfy its constraint in order to use it
2021-06-22 18:29:38 +0200 <Cale> But it's probable that this should merely be a warning.
2021-06-22 18:30:35 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
2021-06-22 18:31:07 +0200 <Cale> Oh, actually, I'm not even sure 3868 will save you here
2021-06-22 18:31:22 +0200ystael(~ystael@user/ystael) (Ping timeout: 252 seconds)
2021-06-22 18:32:13 +0200 <Cale> Haven't thought much about the case with QuantifiedConstraints...
2021-06-22 18:33:24 +0200 <safinaskar> i changed type to this: "pr :: forall a. (forall b. a ~ b) => Int", and i still get same error
2021-06-22 18:33:48 +0200 <safinaskar> but not this constraint is satisfable!
2021-06-22 18:34:27 +0200 <Cale> That's still not going to be satisfiable... there's no type which is equal to every other type
2021-06-22 18:34:36 +0200wagle(~wagle@quassel.wagle.io)
2021-06-22 18:35:35 +0200 <Cale> Did you just want forall a b. (a ~ b) => Int ? This is merely ambiguous.
2021-06-22 18:35:55 +0200 <Cale> (since a and b are unused by the rest of the type)
2021-06-22 18:36:19 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-22 18:38:14 +0200 <Cale> What behaviour do you get if you turn on AllowAmbiguousTypes by the way?
2021-06-22 18:38:43 +0200Guest75(~Guest75@166.70.242.157)
2021-06-22 18:38:44 +0200 <safinaskar> Cale: "Did you just want forall a b. (a ~ b) => Int" - of course, no. My final goal is to compile this code: https://paste.debian.net/1202048/
2021-06-22 18:39:10 +0200 <safinaskar> Cale: i want to compile it to prove functor law from applicative laws
2021-06-22 18:39:27 +0200 <safinaskar> Cale: i am curious whether this is possible using haskell type system
2021-06-22 18:39:55 +0200 <safinaskar> so now i go through ghc errors which are show when i try to compile this code
2021-06-22 18:40:20 +0200 <Cale> If it was possible, I still wouldn't trust the result :P
2021-06-22 18:40:49 +0200 <safinaskar> Cale: why?
2021-06-22 18:42:42 +0200 <dminuoso> Why is a proof of type inequality not something we can express?
2021-06-22 18:43:28 +0200wagle(~wagle@quassel.wagle.io) (Ping timeout: 252 seconds)
2021-06-22 18:43:33 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-22 18:43:33 +0200 <Cale> Well, maybe that's a little unfair, but we're using a whole bunch of type system features which haven't been around very long, and GHC's type checker is a giant and complicated beast. There's no shortage of weird bugs.
2021-06-22 18:43:42 +0200wagle(~wagle@quassel.wagle.io)
2021-06-22 18:44:10 +0200fef(~thedawn@user/thedawn)
2021-06-22 18:44:44 +0200peterhil_(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-22 18:44:49 +0200 <Cale> dminuoso: You want something like (a :~: b) -> Void ?
2021-06-22 18:45:19 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-06-22 18:45:40 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-22 18:45:52 +0200 <dminuoso> Cale: No, Im just curious why we dont have something like (a :!~: b)
2021-06-22 18:46:01 +0200 <dminuoso> I dont have any acute need, it's just curiosity
2021-06-22 18:46:24 +0200 <Cale> You typically can't do very much with the information that two types are not equal
2021-06-22 18:47:52 +0200 <Cale> Knowing that two types *are* equal lets you apply functions that operate on one of the types to values of the other, for example.
2021-06-22 18:47:57 +0200hexfive(~eric@50.35.83.177)
2021-06-22 18:48:07 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-22 18:48:16 +0200 <Cale> But knowing that they aren't equal doesn't really give you any additional permission that you wouldn't have otherwise had.
2021-06-22 18:49:11 +0200hexfive(~eric@50.35.83.177) (Client Quit)
2021-06-22 18:50:25 +0200 <dminuoso> Cale: Well but at the same time I do have something like (==) so I can express: (a == b) ~ 'False => ...
2021-06-22 18:50:48 +0200wagle(~wagle@quassel.wagle.io) (Ping timeout: 252 seconds)
2021-06-22 18:50:48 +0200 <dminuoso> Is that not the same amount of information?
2021-06-22 18:51:29 +0200 <Cale> I suppose, but what do you do with that?
2021-06-22 18:51:55 +0200wagle(~wagle@quassel.wagle.io)
2021-06-22 18:52:51 +0200 <Cale> For something like a promoted data type, where you're pretending that Haskell is dependently typed and doing some sort of type level computations, doing inequality tests at the type level might make sense.
2021-06-22 18:52:59 +0200 <safinaskar> dminuoso: try to express type inequality using this: (forall x. (a ~ b) => x). this essentially means a is not equal to b
2021-06-22 18:53:28 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 18:53:47 +0200Morrow_(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-06-22 18:54:20 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 258 seconds)
2021-06-22 18:55:13 +0200 <tomsmeding> Cale: perhaps to exclude a particular branch in a case expression?
2021-06-22 18:55:24 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-22 18:55:54 +0200Erutuon(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2021-06-22 18:56:50 +0200Topsi1(~Tobias@dyndsl-095-033-016-151.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-06-22 18:58:43 +0200ph88(~ph88@2a02:8109:9e00:7e5c:7c55:3c65:74e1:3dc5)
2021-06-22 18:58:45 +0200justBull(~justache@user/justache) (Remote host closed the connection)
2021-06-22 18:59:07 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-06-22 18:59:58 +0200justBull(~justache@user/justache)
2021-06-22 18:59:59 +0200 <Cale> tomsmeding: You mean like, reflecting the work of the pattern match checker back into the type system?
2021-06-22 19:00:58 +0200wagle(~wagle@quassel.wagle.io) (Ping timeout: 268 seconds)
2021-06-22 19:01:04 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Ping timeout: 252 seconds)
2021-06-22 19:01:20 +0200wagle(~wagle@quassel.wagle.io)
2021-06-22 19:01:23 +0200oatsot
2021-06-22 19:01:29 +0200otailur
2021-06-22 19:01:31 +0200ailurhugs
2021-06-22 19:01:33 +0200hugsoats
2021-06-22 19:01:38 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-22 19:02:40 +0200 <dminuoso> Cale: So I havent done much type level programming, but I'd have thought that knowing whether type types are equal might be as interesting as knowing that they are not.
2021-06-22 19:02:45 +0200 <dminuoso> Perhaps Im wrong
2021-06-22 19:02:48 +0200 <thyriaen> guys
2021-06-22 19:02:54 +0200 <thyriaen> i think i am in love
2021-06-22 19:02:57 +0200 <tomsmeding> Cale: my point was that theoretically, you might be able to have e.g. data Foo a where { A :: Int -> Foo 'True ; B :: Bool -> Foo 'False } ; foo :: (a !~ 'False) => Foo a -> Int ; foo (A i) = i
2021-06-22 19:03:11 +0200 <tomsmeding> and then the pattern match checker would be fine with that because of the inequality context
2021-06-22 19:03:14 +0200 <thyriaen> why do non-functional languages even exist
2021-06-22 19:03:21 +0200 <tomsmeding> not sure how useful this ability would even be
2021-06-22 19:03:32 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-22 19:04:02 +0200 <tomsmeding> thyriaen: ease of compiler implementation, more control over the compiled form, more natural expression of imperative algorithms, inertia
2021-06-22 19:04:11 +0200 <tomsmeding> not necessarily in that order :p
2021-06-22 19:04:17 +0200 <dminuoso> tomsmeding: Because it took decades before a half way efficient encoding of a lazy functional programming language was found. Imperative languages tend to be simpler to compile into locally good code?
2021-06-22 19:04:36 +0200 <Cale> thyriaen: Because lots of stuff got done before people had any idea how to compile functional programs into a reasonably efficient form, and people kept using those languages because relearning how to program is annoying.
2021-06-22 19:04:41 +0200 <dminuoso> Err thyriaen ^-
2021-06-22 19:05:13 +0200econo(uid147250@user/econo)
2021-06-22 19:05:36 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 19:06:21 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 265 seconds)
2021-06-22 19:06:34 +0200chomwitt(~Pitsikoko@athedsl-351576.home.otenet.gr) (Ping timeout: 252 seconds)
2021-06-22 19:06:38 +0200 <safinaskar> thyriaen: ha-ha. i hate haskell. currently i write my parser lib in haskell and my prover in haskell. The whole reason why i pick haskell is this: because I already wrote a lot of code. :) If I started now, I'd pick rust. because it is impure. and gives full control on speed
2021-06-22 19:08:37 +0200 <mikko> isn't that how it usually goes, every language seems really good until you do something bigger with and then it's too late to change :)
2021-06-22 19:09:17 +0200arjun(~user@user/arjun)
2021-06-22 19:09:59 +0200 <arjun> hi all
2021-06-22 19:10:01 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-06-22 19:10:09 +0200 <tomsmeding> safinaskar: this experimentation with moving stuff to the type level that you're doing would be completely impossible from the start in rust :p
2021-06-22 19:10:25 +0200 <arjun> how do i deal with if this throws an error ?-> https://hackage.haskell.org/package/directory-1.3.6.2/docs/System-Directory.html#v:removeDirectory
2021-06-22 19:10:57 +0200 <safinaskar> tomsmeding: yes, still rust has more benefits
2021-06-22 19:11:29 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
2021-06-22 19:11:32 +0200 <tomsmeding> safinaskar: for your purpose / in your opinion :)
2021-06-22 19:11:36 +0200haveo(~haveo@sl35.iuwt.fr) (Quit: leaving)
2021-06-22 19:11:39 +0200 <Cale> tomsmeding: Which is possibly a point in rust's favour on its own, since it would save him wasting time messing around with fancy types, haha :D
2021-06-22 19:11:46 +0200 <tomsmeding> :D
2021-06-22 19:12:10 +0200 <safinaskar> tomsmeding: also, surprisingly, c++ has dependent types! (but arguments to type-level expressions should be compile-time values)
2021-06-22 19:12:17 +0200jess(~jess@libera/staff/jess) ()
2021-06-22 19:12:36 +0200 <tomsmeding> and rust is getting that same capability (const generics)
2021-06-22 19:12:38 +0200 <Cale> For some value of "has", yeah
2021-06-22 19:13:21 +0200 <dminuoso> GHC Haskell has capabilities too!
2021-06-22 19:13:50 +0200 <tomsmeding> % Control.Concurrent.getNumCapabilities
2021-06-22 19:13:51 +0200 <yahb> tomsmeding: 1
2021-06-22 19:14:28 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-22 19:14:56 +0200curiousgay(~curiousgg@178.217.208.8) (Remote host closed the connection)
2021-06-22 19:14:56 +0200 <tomsmeding> arjun: try 'catch' from Control.Exception
2021-06-22 19:15:12 +0200curiousgay(~curiousgg@178.217.208.8)
2021-06-22 19:15:46 +0200alx741(~alx741@181.196.68.152) (Ping timeout: 268 seconds)
2021-06-22 19:18:11 +0200Guest75(~Guest75@166.70.242.157) (Quit: Ping timeout (120 seconds))
2021-06-22 19:18:51 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-06-22 19:18:51 +0200 <safinaskar> tomsmeding: C++ can be used as a prover! look here: https://godbolt.org/z/MzhedqeKE . I can write more code to show the point, i. e. give some example proofs
2021-06-22 19:20:05 +0200chisui(~chisui@200116b866492700f0ddc72238639ee4.dip.versatel-1u1.de)
2021-06-22 19:20:38 +0200sheepduck(~sheepduck@user/sheepduck)
2021-06-22 19:20:40 +0200 <tomsmeding> hah, neat
2021-06-22 19:20:45 +0200 <chisui> Hey, is there a reason why there are no closed data families?
2021-06-22 19:21:29 +0200 <Cale> The static nature of template instantiation will eventually get in your way trying to do that stuff in C++, and of course the syntax is insanely cumbersome and not really meant for that, but you can do a fair amount.
2021-06-22 19:22:11 +0200 <Cale> chisui: How would that differ from a GADT?
2021-06-22 19:22:42 +0200 <chisui> Cale You can't have the instance be newtypes.
2021-06-22 19:22:55 +0200 <Cale> ah, fair
2021-06-22 19:26:03 +0200haveo(~haveo@sl35.iuwt.fr)
2021-06-22 19:27:20 +0200 <safinaskar> Cale: "What behaviour do you get if you turn on AllowAmbiguousTypes by the way?": my (final) code still gives nearly same error if I enable AllowAmbiguousTypes: https://paste.debian.net/1202054/
2021-06-22 19:28:00 +0200Guest9(~Guest9@43.250.158.34)
2021-06-22 19:28:28 +0200alx741(~alx741@181.196.68.156)
2021-06-22 19:28:49 +0200 <arjun> tomsmeding: i'll do that, thanks!
2021-06-22 19:31:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-22 19:32:17 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.0.1)
2021-06-22 19:33:10 +0200 <Cale> safinaskar: On 3868, your code compiles without warning, but I'm not sure I'm actually happy about that, since an attempt to use proof will result in a type error.
2021-06-22 19:36:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-06-22 19:36:40 +0200kuribas(~user@ptr-25vy0i89phmaoo2wmls.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-06-22 19:37:00 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 252 seconds)
2021-06-22 19:41:46 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Ping timeout: 252 seconds)
2021-06-22 19:42:32 +0200azeem(~azeem@176.201.6.138)
2021-06-22 19:45:53 +0200thyriaen(~thyriaen@45.178.73.238) (Quit: Leaving)
2021-06-22 19:47:08 +0200safinaskar(~safinaska@109.252.90.89) ()
2021-06-22 19:47:25 +0200notzmv(~zmv@user/notzmv)
2021-06-22 19:49:23 +0200safinaskar(~safinaska@109.252.90.89)
2021-06-22 19:51:34 +0200 <safinaskar> is there any other uses for GADTs except for writing type checkers and provers?
2021-06-22 19:53:27 +0200 <dminuoso> No, they were built for that sole usage. They are forbidden for all other things like modelling ASTs
2021-06-22 19:53:47 +0200 <dminuoso> (that was sarcasm, by the way)
2021-06-22 19:56:06 +0200azeem(~azeem@176.201.6.138) (Read error: Connection reset by peer)
2021-06-22 19:56:26 +0200arjun(~user@user/arjun) (Ping timeout: 258 seconds)
2021-06-22 19:56:38 +0200 <safinaskar> dminuoso: "modelling ASTs" - this is type checking, again. is there any example where GADTs can be used for AST modeling, but not for type checking?
2021-06-22 19:56:48 +0200 <dminuoso> this is not type checking.
2021-06-22 19:58:10 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it)
2021-06-22 19:58:48 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-06-22 20:00:00 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-22 20:00:07 +0200 <tomsmeding> safinaskar: probably no, but "provers" is very general
2021-06-22 20:00:42 +0200__monty__SirJection
2021-06-22 20:00:49 +0200 <tomsmeding> e.g. a compiler can represent the AST of the program being compiled with a GADT; by doing so, the act of writing the compiler using that data type proves that all compiler passes are type-correct with respect to the language being compiled
2021-06-22 20:00:58 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-22 20:01:10 +0200SirJection__monty__
2021-06-22 20:02:08 +0200 <tomsmeding> it's a partial version of dependent typing, so I guess it's similar answers as the same question for "dependent types" would have
2021-06-22 20:02:23 +0200 <safinaskar> ok
2021-06-22 20:06:28 +0200 <dminuoso> tomsmeding: re "type-correct" - Im not sure that really holds.
2021-06-22 20:07:29 +0200 <tomsmeding> for a narrow enough definition of "type-correct" :)
2021-06-22 20:07:34 +0200vicfred(~vicfred@user/vicfred) (Ping timeout: 268 seconds)
2021-06-22 20:07:40 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-22 20:07:48 +0200 <tomsmeding> you know that the output of the compiler pass is valid in the object type system
2021-06-22 20:08:07 +0200 <tomsmeding> but this says precious little about actual semantical correctness of the pass
2021-06-22 20:08:21 +0200 <dminuoso> Sure, but you could still have a separate type system imposing additional constraints, like maybe there's polymorphism that the GADTs dont express or phantom types maybe
2021-06-22 20:08:32 +0200dsf(~dsf@cpe-66-75-56-205.san.res.rr.com) (Quit: Konversation terminated!)
2021-06-22 20:08:45 +0200dsf(~dsf@cpe-66-75-56-205.san.res.rr.com)
2021-06-22 20:08:46 +0200 <tomsmeding> right, if there are type system features that the GADT doesn't express, you don't prove anything about that
2021-06-22 20:08:49 +0200martinjaniczek(~janiczek@89-24-215-117.customers.tmcz.cz) (Quit: WeeChat 3.2)
2021-06-22 20:12:00 +0200 <Cale> safinaskar: GADTs are rather good for protocols, because you can index a "query" type by the type of response you'll receive back.
2021-06-22 20:12:37 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-22 20:13:58 +0200 <Cale> You can also use fairly simple GADTs along with DMap to have "extensible records" of a sort -- the GADT values become like "structured field labels"
2021-06-22 20:15:49 +0200TranquilEcho(~grom@user/tranquilecho)
2021-06-22 20:17:43 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-22 20:19:10 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-06-22 20:19:10 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-06-22 20:19:12 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Remote host closed the connection)
2021-06-22 20:19:18 +0200altern(~altern@altern.corbina.com.ua)
2021-06-22 20:19:48 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 20:20:19 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it)
2021-06-22 20:20:21 +0200 <maerwald> Do we have a pure haskell implementation of `findmnt`?
2021-06-22 20:22:49 +0200Xe_(~cadey@tailscale/xe)
2021-06-22 20:22:51 +0200Xe(~cadey@tailscale/xe) (Killed (zirconium.libera.chat (Nickname regained by services)))
2021-06-22 20:22:51 +0200Xe_Xe
2021-06-22 20:23:48 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 244 seconds)
2021-06-22 20:24:50 +0200 <safinaskar> ok, thanks
2021-06-22 20:25:42 +0200mcglk(~mcglk@131.191.49.120) (Quit: (seeya))
2021-06-22 20:26:03 +0200mcglk(~mcglk@131.191.49.120)
2021-06-22 20:26:29 +0200 <safinaskar> maerwald: you mean linux util findmnt? it essentially reads from /proc/mounts (and /proc/self/mountinfo) and adds some formatting
2021-06-22 20:27:23 +0200ph88(~ph88@2a02:8109:9e00:7e5c:7c55:3c65:74e1:3dc5) (Ping timeout: 268 seconds)
2021-06-22 20:28:13 +0200ph88(~ph88@2a02:8109:9e00:7e5c:7c55:3c65:74e1:3dc5)
2021-06-22 20:28:49 +0200 <maerwald> yes
2021-06-22 20:31:28 +0200 <safinaskar> maerwald: i think this is trivial to write haskell program which converts that two files to findmnt output
2021-06-22 20:31:37 +0200 <maerwald> Also, it does a little more than that
2021-06-22 20:31:55 +0200ArsenArsenArsen
2021-06-22 20:32:11 +0200 <maerwald> Yeah, I know I can code everything myself
2021-06-22 20:36:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 20:37:19 +0200curiousgay(~curiousgg@178.217.208.8) (Remote host closed the connection)
2021-06-22 20:37:30 +0200curiousgay(~curiousgg@178.217.208.8)
2021-06-22 20:40:03 +0200 <__monty__> Does anyone know where I can find Okasaki's Maxiphobic heaps paper from 2005? Came across a dead link, http://www.eecs.usma.edu/webs/people/okasaki/sigcse05.pdf
2021-06-22 20:42:49 +0200 <shachaf> That's a nice paper.
2021-06-22 20:43:03 +0200 <shachaf> The title is "Alternatives to Two Classic Data Structures", that should help you find it.
2021-06-22 20:43:24 +0200 <shachaf> It looks like Google has links? If not I have a copy.
2021-06-22 20:44:11 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2021-06-22 20:44:37 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-06-22 20:44:45 +0200hounded_woodstoc(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Quit: Leaving)
2021-06-22 20:44:55 +0200 <__monty__> shachaf: Ah, thanks, I thought "Maxphobic heaps" was the title.
2021-06-22 20:44:58 +0200 <__monty__> <3
2021-06-22 20:45:40 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl)
2021-06-22 20:45:54 +0200DkHmmEbpohxS(~DkHmmEbpo@88.155.49.35)
2021-06-22 20:45:54 +0200 <DkHmmEbpohxS> 1I8eRA.ChAT 15 4 Sc4M, C0M3 8ACk T0 frEenodE
2021-06-22 20:45:55 +0200DkHmmEbpohxS(~DkHmmEbpo@88.155.49.35) (Client Quit)
2021-06-22 20:48:01 +0200 <chisui> are there any resources on what `magicDict` does? I saw it in the internals of `GHC.TypeNats` and I'm it seems really magic.
2021-06-22 20:52:10 +0200 <chisui> Ok, found something https://ghc-compiler-notes.readthedocs.io/en/latest/notes/compiler/basicTypes/MkId.hs.html
2021-06-22 20:52:34 +0200 <tomsmeding> chisui: also check out this email thread: https://mail.haskell.org/pipermail/ghc-devs/2021-April/019833.html
2021-06-22 20:55:28 +0200 <lyxia> chisui: it's also being replaced with withDict, and there are some notes about this new version https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/HsToCore/Expr.hs#L1307
2021-06-22 20:56:12 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
2021-06-22 20:56:54 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2021-06-22 20:57:18 +0200altern(~altern@altern.corbina.com.ua) (Ping timeout: 252 seconds)
2021-06-22 20:59:18 +0200curiousgay(~curiousgg@178.217.208.8) (Remote host closed the connection)
2021-06-22 20:59:47 +0200curiousgay(~curiousgg@178.217.208.8)
2021-06-22 20:59:47 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-22 21:00:33 +0200sheepduck(~sheepduck@user/sheepduck) (Read error: Connection reset by peer)
2021-06-22 21:02:56 +0200 <maerwald> safinaskar: https://hackage.haskell.org/package/mountpoints-1.0.2/docs/System-MountPoints.html
2021-06-22 21:03:19 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-22 21:03:24 +0200MoC(~moc@user/moc)
2021-06-22 21:03:45 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-22 21:04:16 +0200dhil(~dhil@195.213.192.47) (Ping timeout: 252 seconds)
2021-06-22 21:04:28 +0200 <geekosaur> if you want portability, it won't be there; every system has its own way to record mount points
2021-06-22 21:05:09 +0200 <geekosaur> linux does it one way, freebsd another, darwin a third
2021-06-22 21:05:58 +0200 <chisui> tomsmeding, lyxia: Thanks, that's some deep magic
2021-06-22 21:06:34 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-22 21:07:47 +0200Alex_test(~al_test@178.34.150.65) (Quit: ;-)
2021-06-22 21:08:16 +0200AlexZenon(~alzenon@178.34.150.65) (Quit: ;-)
2021-06-22 21:08:25 +0200moet_(~moet@172.58.27.140)
2021-06-22 21:08:46 +0200tzar_bomba(~tzar_bomb@78-56-41-78.static.zebra.lt)
2021-06-22 21:09:27 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-06-22 21:10:04 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4)
2021-06-22 21:11:36 +0200moet(~moet@172.58.35.6) (Ping timeout: 252 seconds)
2021-06-22 21:15:31 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-22 21:16:34 +0200AlexZenon(~alzenon@178.34.150.65)
2021-06-22 21:16:59 +0200wrunt(~ajc@vmx14030.hosting24.com.au) (Ping timeout: 272 seconds)
2021-06-22 21:17:08 +0200 <maerwald> geekosaur: "Works on: Linux, BSD, Mac OS X, Android"
2021-06-22 21:17:45 +0200 <geekosaur> the utility may, the files it reads don't
2021-06-22 21:18:17 +0200dhil(~dhil@80.208.56.181)
2021-06-22 21:18:19 +0200 <maerwald> did you read the implementation?
2021-06-22 21:18:29 +0200Alex_test(~al_test@178.34.150.65)
2021-06-22 21:18:32 +0200wrunt(~ajc@vmx14030.hosting24.com.au)
2021-06-22 21:18:58 +0200vicfred(~vicfred@user/vicfred)
2021-06-22 21:18:58 +0200 <davean> geekosaur: i'm confused - what are you talking about?
2021-06-22 21:19:36 +0200 <geekosaur> there's a linux-commpatible /proc inplementation for freebsd but it's not mounted by default and is mounted in a different place when it is (BSD /proc is different)
2021-06-22 21:19:57 +0200 <maerwald> it uses libmount.h
2021-06-22 21:20:01 +0200 <davean> Yah
2021-06-22 21:20:09 +0200 <davean> I have no idea why you're mentioning that geekosaur
2021-06-22 21:20:34 +0200zeenk(~zeenk@2a02:2f04:a00e:6e00:d401:4c92:fecc:16f9)
2021-06-22 21:20:42 +0200 <davean> geekosaur: it says nothing about /proc
2021-06-22 21:20:47 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-22 21:21:18 +0200 <geekosaur> <safinaskar> maerwald: you mean linux util findmnt? it essentially reads from /proc/mounts (and /proc/self/mountinfo) and adds some formatting
2021-06-22 21:21:20 +0200 <davean> sorry, theres one comment about the C implimentation
2021-06-22 21:21:32 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-22 21:22:18 +0200 <geekosaur> plus I've written such tilities (granted, over a decade ago) and had to do something different on every system
2021-06-22 21:22:23 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-06-22 21:22:39 +0200 <davean> geekosaur: right, but it uses libmount.h
2021-06-22 21:22:48 +0200 <geekosaur> some of which hopefully nobody cares about any more (looking at you hp/ux)
2021-06-22 21:22:50 +0200 <davean> which does the different thing on different systems
2021-06-22 21:23:38 +0200 <maerwald> the implementation looks portable
2021-06-22 21:23:51 +0200 <davean> geekosaur: I'm a little confused if you're paying attention to this conversation or not
2021-06-22 21:23:59 +0200 <davean> we keep saying "its not the thing you keep claiming it is"
2021-06-22 21:24:59 +0200fendor(~fendor@178.115.129.107.wireless.dyn.drei.com) (Remote host closed the connection)
2021-06-22 21:25:03 +0200 <maerwald> but... is libmount.h in POSIX? Can't find it
2021-06-22 21:25:36 +0200 <davean> maerwald: Its uh, well theres a few versions of it
2021-06-22 21:25:48 +0200 <davean> maerwald: and its SysV
2021-06-22 21:26:04 +0200 <davean> yah, thats complicated
2021-06-22 21:26:14 +0200 <davean> sorry, the functions
2021-06-22 21:26:18 +0200 <davean> so hence libmount.h
2021-06-22 21:26:26 +0200 <maerwald> It seems to be bundled
2021-06-22 21:26:34 +0200 <davean> ight
2021-06-22 21:27:07 +0200qbt(~edun@user/edun) (Ping timeout: 268 seconds)
2021-06-22 21:27:13 +0200 <maerwald> and I can't read it on my phone... since it's an obscure git repo :p
2021-06-22 21:27:42 +0200fendor(~fendor@178.115.129.107.wireless.dyn.drei.com)
2021-06-22 21:28:55 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-22 21:32:12 +0200Guest9(~Guest9@43.250.158.34) (Quit: Connection closed)
2021-06-22 21:32:20 +0200ec(~ec@gateway/tor-sasl/ec)
2021-06-22 21:32:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-22 21:34:11 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-06-22 21:34:22 +0200MoC(~moc@user/moc)
2021-06-22 21:35:07 +0200 <maerwald> So it seems it uses /etc/mtab and falls back to /proc on android
2021-06-22 21:36:06 +0200dhil(~dhil@80.208.56.181) (Ping timeout: 258 seconds)
2021-06-22 21:39:28 +0200wrunt(~ajc@vmx14030.hosting24.com.au) (Ping timeout: 252 seconds)
2021-06-22 21:40:32 +0200Deide(~Deide@wire.desu.ga)
2021-06-22 21:40:32 +0200Deide(~Deide@wire.desu.ga) (Changing host)
2021-06-22 21:40:32 +0200Deide(~Deide@user/deide)
2021-06-22 21:41:14 +0200 <maerwald> mtab is specified by glibc
2021-06-22 21:41:34 +0200 <maerwald> https://www.gnu.org/software/libc/manual/html_node/Mount-Information.html
2021-06-22 21:42:37 +0200wrunt(~ajc@vmx14030.hosting24.com.au)
2021-06-22 21:44:44 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-22 21:47:32 +0200 <__monty__> Anyone know what "PFDS on SSDs for performance reasons" might refer to? The accompanying url is useless, http://rethinkdb.com/jobs/ It must be something to do with functional data structures.
2021-06-22 21:47:37 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-06-22 21:48:53 +0200 <shachaf> I would guess "purely functional data structure".
2021-06-22 21:49:38 +0200 <tdammers> that, or "Primary Flight Displays"
2021-06-22 21:49:43 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-22 21:51:28 +0200dhil(~dhil@195.213.192.47)
2021-06-22 21:51:45 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3-dev)
2021-06-22 21:55:15 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-06-22 21:57:12 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-22 21:57:15 +0200nilof(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-22 21:57:26 +0200nilof(~olofs@90-227-86-119-no542.tbcn.telia.com) (Remote host closed the connection)
2021-06-22 21:59:18 +0200 <tchakka> ... what is the currently recommended way of generating random numbers? Is StdGen still bad?
2021-06-22 22:00:11 +0200 <dminuoso> First you have to explain what kind of randomness you want
2021-06-22 22:00:41 +0200moet_(~moet@172.58.27.140) (Quit: leaving)
2021-06-22 22:01:05 +0200notzmv(~zmv@user/notzmv)
2021-06-22 22:01:09 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-22 22:02:39 +0200blackfield(~blackfiel@85.255.4.218)
2021-06-22 22:04:55 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-06-22 22:05:04 +0200Kobold(~koboldchi@12.18.150.83)
2021-06-22 22:05:14 +0200juhp(~juhp@128.106.188.66) (Ping timeout: 258 seconds)
2021-06-22 22:05:16 +0200 <Cajun> how about cryptographic-level randomness?
2021-06-22 22:05:18 +0200 <tchakka> Of the pseudo-variety >_> My current use-case does not care about cryptographic security one way or the other. It's pretty much a shuffling algorithm and a "pick one from a set of X" thingy.
2021-06-22 22:05:49 +0200 <dminuoso> tchakka: Also, you might be happy to find out that many of the old issues were addressed: https://github.com/haskell/random/pull/61
2021-06-22 22:05:53 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-06-22 22:06:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-06-22 22:06:37 +0200 <tchakka> Oooh!
2021-06-22 22:07:35 +0200juhp(~juhp@128.106.188.66)
2021-06-22 22:09:50 +0200 <lyxia> yes, now it's "use random"
2021-06-22 22:11:28 +0200 <tchakka> Then I will gladly use that, until I need something fancy and/or I suddenly know what I'm doing.
2021-06-22 22:12:06 +0200derelict(~derelict@user/derelict) (Ping timeout: 244 seconds)
2021-06-22 22:13:34 +0200mc47(~mc47@xmonad/TheMC47)
2021-06-22 22:14:36 +0200 <sclv> random is actually really good and fancy now, under the hood
2021-06-22 22:14:49 +0200 <sclv> so even for Most Uses of Most People that know what they're doing, its the right choice
2021-06-22 22:16:39 +0200gehmehgeh(~user@user/gehmehgeh)
2021-06-22 22:16:40 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Remote host closed the connection)
2021-06-22 22:18:41 +0200pavonia(~user@user/siracusa)
2021-06-22 22:19:02 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 258 seconds)
2021-06-22 22:24:00 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-22 22:24:12 +0200awth13(~user@user/awth13) (Ping timeout: 252 seconds)
2021-06-22 22:27:13 +0200themc47(~mc47@xmonad/TheMC47)
2021-06-22 22:29:50 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 265 seconds)
2021-06-22 22:32:16 +0200deshalb(~deshalb@user/deshalb) (Quit: leaving)
2021-06-22 22:32:39 +0200mc47(~mc47@xmonad/TheMC47)
2021-06-22 22:34:06 +0200themc47(~mc47@xmonad/TheMC47) (Ping timeout: 252 seconds)
2021-06-22 22:39:14 +0200peterhil_(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-06-22 22:39:51 +0200peterhil_(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-22 22:42:00 +0200Kobold(~koboldchi@12.18.150.83) (Quit: Leaving)
2021-06-22 22:43:21 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-06-22 22:46:32 +0200safinaskar(~safinaska@109.252.90.89) ()
2021-06-22 22:47:25 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru)
2021-06-22 22:48:17 +0200 <safinaskar> geekosaur: so you wrote portable utils for various systems, including hp/ux? it's cool. and you did it in time when hp/ux was relevant?
2021-06-22 22:48:29 +0200 <geekosaur> yes
2021-06-22 22:49:26 +0200 <dsal> Is there a way to ask hoogle what instances of X it knows?
2021-06-22 22:50:46 +0200 <safinaskar> geekosaur: how to know which unixes are relevant and which are not? maybe there is some hypothetical site with regularly updated list "this systems are relevant"? :)
2021-06-22 22:51:13 +0200derelict(~derelict@user/derelict)
2021-06-22 22:51:19 +0200curiousgay(~curiousgg@178.217.208.8) (Remote host closed the connection)
2021-06-22 22:51:26 +0200 <geekosaur> linux more or less killed off commercial unix
2021-06-22 22:51:34 +0200curiousgay(~curiousgg@178.217.208.8)
2021-06-22 22:52:14 +0200 <geekosaur> (unfortunately since linux often is the worst or near worst implementation of many things)
2021-06-22 22:53:08 +0200 <maerwald> And has a dictator who celebrates rudeness :p
2021-06-22 22:54:31 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-22 22:55:52 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru) ()
2021-06-22 22:56:32 +0200nvmd(~nvmd@user/nvmd) (Ping timeout: 268 seconds)
2021-06-22 22:57:24 +0200 <sclv> dsal: sadly, not that i know of
2021-06-22 22:58:14 +0200nvmd(~nvmd@user/nvmd)
2021-06-22 22:58:17 +0200 <dsal> Kind of odd. I'll just do a lock haddock. :)
2021-06-22 23:03:21 +0200nf(~n@monade.li) (Quit: Fairfarren.)
2021-06-22 23:03:51 +0200nf(~n@monade.li)
2021-06-22 23:04:32 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-22 23:05:12 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-22 23:06:14 +0200 <gentauro> glguy: I saw this message "two week two hour rule". Does it mean that when I go on a 3 week holiday, my IRC account will be removed?
2021-06-22 23:06:34 +0200derelict(~derelict@user/derelict) (Ping timeout: 258 seconds)
2021-06-22 23:08:09 +0200 <ChaiTRex> gentauro: No: https://github.com/Libera-Chat/libera-chat.github.io/commit/cf52115#commitcomment-52513840
2021-06-22 23:08:29 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 258 seconds)
2021-06-22 23:09:08 +0200 <glguy> gentauro: have you been using your whole account longer than 2 hours so far?
2021-06-22 23:09:57 +0200nf(~n@monade.li) (Quit: Fairfarren.)
2021-06-22 23:10:09 +0200nf(~n@monade.li)
2021-06-22 23:10:24 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net) (Remote host closed the connection)
2021-06-22 23:10:47 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 258 seconds)
2021-06-22 23:12:09 +0200mc47(~mc47@xmonad/TheMC47)
2021-06-22 23:12:45 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-22 23:12:56 +0200mikail__(~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf)
2021-06-22 23:16:21 +0200lavaman(~lavaman@98.38.249.169)
2021-06-22 23:20:06 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 265 seconds)
2021-06-22 23:20:45 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-06-22 23:24:01 +0200derelict(~derelict@user/derelict)
2021-06-22 23:29:58 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-22 23:33:22 +0200curiousggay_(~curiousgg@178.217.208.8)
2021-06-22 23:34:09 +0200 <gentauro> yes
2021-06-22 23:34:21 +0200 <gentauro> I use it with a machine (ssh+screen)
2021-06-22 23:34:46 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-06-22 23:35:24 +0200 <gentauro> ChaiTRex: thx :)
2021-06-22 23:35:42 +0200curiousgay(~curiousgg@178.217.208.8) (Ping timeout: 258 seconds)
2021-06-22 23:36:06 +0200aostiles(uid505622@id-505622.stonehaven.irccloud.com)
2021-06-22 23:37:51 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-06-22 23:38:33 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-22 23:39:03 +0200SoF(~skius@user/skius) (Quit: Ping timeout (120 seconds))
2021-06-22 23:39:47 +0200SoF(~skius@user/skius)
2021-06-22 23:46:34 +0200lavaman(~lavaman@98.38.249.169)
2021-06-22 23:46:57 +0200mikail_(~mikail@90.212.77.3)
2021-06-22 23:47:43 +0200derelict(~derelict@user/derelict) (Ping timeout: 268 seconds)
2021-06-22 23:49:26 +0200mikail__(~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Ping timeout: 244 seconds)
2021-06-22 23:49:30 +0200haskl(~haskeller@user/haskl) (Ping timeout: 264 seconds)
2021-06-22 23:51:18 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-22 23:55:38 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 244 seconds)
2021-06-22 23:57:31 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
2021-06-22 23:59:22 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-06-22 23:59:26 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 268 seconds)
2021-06-22 23:59:44 +0200michalz(~michalz@185.246.204.61) (Remote host closed the connection)