2021/11/23

2021-11-23 00:00:31 +0100DNH(~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597)
2021-11-23 00:00:36 +0100 <[itchyjunk]> @where paste
2021-11-23 00:00:36 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2021-11-23 00:01:11 +0100 <arahael> monochrom: i ultimately want to make static binaries, which means musl.
2021-11-23 00:01:28 +0100 <arahael> and i would prefer not to have to set up and maintain a cross compiler.
2021-11-23 00:01:32 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-11-23 00:01:34 +0100 <[itchyjunk]> my function g seems to be the place where it all goes wrong
2021-11-23 00:01:35 +0100 <[itchyjunk]> https://paste.tomsmeding.com/hngcugQu
2021-11-23 00:02:51 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
2021-11-23 00:03:12 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 00:03:20 +0100 <[itchyjunk]> does any of it makes sense?
2021-11-23 00:03:28 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-23 00:03:38 +0100 <[itchyjunk]> maybe time for a break, it might magically come to me later
2021-11-23 00:03:40 +0100 <monochrom> In the then branch, "helper (f2 n)" gives you a tuple.
2021-11-23 00:03:53 +0100 <monochrom> In the else branch, "f1 n" gives you a single number.
2021-11-23 00:04:01 +0100 <monochrom> Which one do you want?
2021-11-23 00:04:06 +0100aliosablack(~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) (Ping timeout: 245 seconds)
2021-11-23 00:04:11 +0100 <[itchyjunk]> ahhhh
2021-11-23 00:04:20 +0100 <monochrom> Or did you just forgot a recursive call to g in the then branch.
2021-11-23 00:04:51 +0100 <[itchyjunk]> i want f2 ( helper ( f2 n) )
2021-11-23 00:05:30 +0100 <[itchyjunk]> i think it should all be one recursive line once i figure this out xD i was hoping building it up one line at a time like this would make my brain figure it out
2021-11-23 00:05:38 +0100 <monochrom> f2 doesn't want a tuple either.
2021-11-23 00:06:13 +0100 <maerwald> arahael: ask in #ghc if someone has bootstrapped a musl aarch64 GHC
2021-11-23 00:06:17 +0100 <zero> [itchyjunk]: type signatures/annotations are your friend
2021-11-23 00:06:21 +0100 <monochrom> TBH I am surprised that it is not simply "then f2 n else f1 n"
2021-11-23 00:06:41 +0100 <monochrom> or "then g (f2 n) else f1 n"
2021-11-23 00:07:10 +0100 <zero> @type divMod
2021-11-23 00:07:11 +0100 <lambdabot> Integral a => a -> a -> (a, a)
2021-11-23 00:07:13 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-11-23 00:07:21 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-11-23 00:07:24 +0100 <monochrom> f2 already uses helper, so what's "helper (f2 n)" doing there?
2021-11-23 00:07:26 +0100 <arahael> maerwald: thanks for the tip! will do that in a moment.
2021-11-23 00:07:31 +0100 <jle`> using parseGenericPackageDescription seems to drop the library/executable/etc. portions of the cabal file and only gets the top level metadata
2021-11-23 00:07:34 +0100 <jle`> i wonder if i'm missing something
2021-11-23 00:07:51 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
2021-11-23 00:09:51 +0100 <dsal> [itchyjunk]: it's pretty important to think about the type signature first, I find. It might seem "harder" but it gets you there sooner and with better error messages.
2021-11-23 00:10:39 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-11-23 00:10:41 +0100 <EvanR> yeah there's probably a reason the type signature doesn't go after the code xD
2021-11-23 00:11:16 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 00:12:16 +0100 <jle`> ah it's under CondLibrary
2021-11-23 00:12:39 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2021-11-23 00:13:06 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-11-23 00:13:41 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-11-23 00:14:15 +0100qwedfg(~qwedfg@user/qwedfg) (Read error: Connection reset by peer)
2021-11-23 00:15:46 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
2021-11-23 00:15:46 +0100xff0x(~xff0x@2001:1a81:52ae:a700:2e71:8ba4:bf99:ed92) (Ping timeout: 245 seconds)
2021-11-23 00:16:47 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 00:16:47 +0100xff0x(~xff0x@2001:1a81:52ae:a700:790f:4bf3:6d42:a0ab)
2021-11-23 00:17:28 +0100ubert(~Thunderbi@p548c9fcb.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2021-11-23 00:17:41 +0100qwedfg(~qwedfg@user/qwedfg)
2021-11-23 00:18:10 +0100ubert(~Thunderbi@p200300ecdf0ba2d77c1bfff2a135bb9e.dip0.t-ipconnect.de)
2021-11-23 00:18:16 +0100ubert(~Thunderbi@p200300ecdf0ba2d77c1bfff2a135bb9e.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-11-23 00:19:44 +0100alzgh(alzgh@user/alzgh) (Remote host closed the connection)
2021-11-23 00:21:41 +0100Midjak(~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
2021-11-23 00:22:22 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2021-11-23 00:24:56 +0100alzgh(alzgh@user/alzgh)
2021-11-23 00:28:30 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-23 00:31:42 +0100xff0x(~xff0x@2001:1a81:52ae:a700:790f:4bf3:6d42:a0ab) (Remote host closed the connection)
2021-11-23 00:31:58 +0100xff0x(~xff0x@2001:1a81:52ae:a700:8aec:b385:dec1:cc56)
2021-11-23 00:32:27 +0100jinsun__(~quassel@user/jinsun)
2021-11-23 00:32:39 +0100max22-(~maxime@2a01cb0883359800a5783feecd0598ff.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-11-23 00:32:51 +0100cosimone`(~user@5.170.240.253)
2021-11-23 00:33:03 +0100pfurla(~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…)
2021-11-23 00:34:06 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 245 seconds)
2021-11-23 00:34:12 +0100pwug(~pwug@user/pwug) (Ping timeout: 268 seconds)
2021-11-23 00:34:30 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 260 seconds)
2021-11-23 00:36:12 +0100hippoid_(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 00:36:36 +0100pfurla(~pfurla@2804:14d:5c81:4104:2d7f:4f3b:6a60:c865)
2021-11-23 00:37:49 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-11-23 00:42:44 +0100sprout(~quassel@2a02:a467:ccd6:1:5cca:96d9:7234:6761) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-11-23 00:44:11 +0100 <[itchyjunk]> alright, i'll do types first
2021-11-23 00:44:19 +0100 <[itchyjunk]> i generally seem to always get the signature wrong :P
2021-11-23 00:44:33 +0100 <[itchyjunk]> the ghci has negatively reinforced my brain to avoid it
2021-11-23 00:45:49 +0100 <geekosaur> work on the signatures, then
2021-11-23 00:45:56 +0100 <[itchyjunk]> ;_;
2021-11-23 00:46:10 +0100 <geekosaur> once you can express an appropriate signature, the function may well "write itself"
2021-11-23 00:46:35 +0100 <[itchyjunk]> ah, i'll stop avoiding signatures !
2021-11-23 00:47:01 +0100Jing(~hedgehog@2604:a840:3::1094) (Remote host closed the connection)
2021-11-23 00:47:36 +0100Jing(~hedgehog@2604:a840:3::1094)
2021-11-23 00:47:48 +0100 <monochrom> You can let us take a look at your candidate type sig and invite comments.
2021-11-23 00:51:48 +0100 <jle`> type signatures are like automatic rubber ducks
2021-11-23 00:53:15 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-23 00:54:56 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-23 00:58:16 +0100acidjnk(~acidjnk@p200300d0c7271e823d8ddc81d8ce7005.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-11-23 00:58:35 +0100vysn(~vysn@user/vysn) (Ping timeout: 250 seconds)
2021-11-23 01:01:35 +0100random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
2021-11-23 01:02:08 +0100 <[itchyjunk]> If I want a function f to take a list containing type Int, do stuff and return an Int to me, my signature should be f :: [Int] -> Int right?
2021-11-23 01:02:16 +0100 <monochrom> Yes.
2021-11-23 01:03:37 +0100 <[itchyjunk]> If head gives me the first element of a list and tail gives me a list without the head, i could `f [n] = head([n]) * (f tail([n]))`, couldn't I?
2021-11-23 01:04:03 +0100edwardk(sid47016@haskell/developer/edwardk) (Ping timeout: 264 seconds)
2021-11-23 01:04:11 +0100 <dsal> That's a bit confusing. You probably meant `f n`
2021-11-23 01:04:18 +0100 <dsal> > head [1]
2021-11-23 01:04:20 +0100 <lambdabot> 1
2021-11-23 01:04:54 +0100gaze___(sid387101@id-387101.helmsley.irccloud.com)
2021-11-23 01:04:54 +0100 <monochrom> > tail [1]
2021-11-23 01:04:55 +0100 <lambdabot> []
2021-11-23 01:05:23 +0100 <dsal> > head []
2021-11-23 01:05:24 +0100 <lambdabot> *Exception: Prelude.head: empty list
2021-11-23 01:05:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 01:05:39 +0100 <dsal> best to avoid head altogether.
2021-11-23 01:05:47 +0100 <monochrom> And an example that really says "[n]".
2021-11-23 01:05:58 +0100 <monochrom> > let n = 1 in head([n])
2021-11-23 01:05:59 +0100 <lambdabot> 1
2021-11-23 01:06:06 +0100 <monochrom> > let n = 1 in tail([n])
2021-11-23 01:06:07 +0100 <lambdabot> []
2021-11-23 01:06:14 +0100 <dsal> [itchyjunk]: Your function is defined only for lists that contain exactly one number.
2021-11-23 01:06:58 +0100 <[itchyjunk]> oh
2021-11-23 01:07:14 +0100edwardk(sid47016@haskell/developer/edwardk)
2021-11-23 01:07:18 +0100T_S_(sid501726@id-501726.uxbridge.irccloud.com)
2021-11-23 01:09:48 +0100 <dsal> SPJ is joining Epic Games? That seems odd.
2021-11-23 01:10:46 +0100 <[itchyjunk]> hum, in theory that idea would have worked but head doesn't like empty list unfortunately
2021-11-23 01:10:58 +0100 <dsal> [itchyjunk]: which that?
2021-11-23 01:11:16 +0100 <dsal> It was specified to work only if there's exactly one item in a list.
2021-11-23 01:11:36 +0100 <[itchyjunk]> f n = head n * (f tail n)
2021-11-23 01:11:43 +0100 <dsal> Ah. Yeah, don't use head. :)
2021-11-23 01:11:58 +0100 <dsal> Also, at some point you need to terminate. You can just make an extra function head for `f [] = ...`
2021-11-23 01:12:00 +0100 <monochrom> head n * f (tail n)
2021-11-23 01:12:11 +0100 <monochrom> And also yeah, what to do with the empty list?
2021-11-23 01:12:18 +0100 <dsal> I don't know what the answer should be for an empty list, though.
2021-11-23 01:12:24 +0100 <monochrom> And then, overall, just use pattern matching.
2021-11-23 01:13:00 +0100 <dsal> `f [] = answerWithEmptyList` `f (x:xs) = x * f xs`
2021-11-23 01:13:38 +0100 <dsal> This is a catamorphism. Earlier you were making an anamorphism. Can't keep up!
2021-11-23 01:14:22 +0100 <[itchyjunk]> Don't I declare a signature `f :: [Int] -> Int` ? let me post the error
2021-11-23 01:15:06 +0100 <[itchyjunk]> https://paste.tomsmeding.com/4BHzQHrh
2021-11-23 01:15:24 +0100 <[itchyjunk]> Does previous declarations of f linger on and cause issue?
2021-11-23 01:15:49 +0100 <dsal> Not enough context.
2021-11-23 01:15:50 +0100 <monochrom> Did you merely enter "f :: [Int] -> Int" at the ghci prompt? Please don't.
2021-11-23 01:16:08 +0100 <[itchyjunk]> Yes I was being lazy this time :S
2021-11-23 01:16:21 +0100 <dsal> Laziness will cost you a lot of time and make everything harder.
2021-11-23 01:16:28 +0100 <dsal> It's the thunk cost fallacy.
2021-11-23 01:16:30 +0100 <monochrom> Please put complete code in a file and use :load or :reload
2021-11-23 01:16:31 +0100 <EvanR> you can only use head if you know the list isn't empty
2021-11-23 01:16:34 +0100 <EvanR> which happens
2021-11-23 01:16:55 +0100 <monochrom> There is a way to enter multi-line code at the ghci prompt. But it doesn't scale. I refuse to teach it.
2021-11-23 01:17:17 +0100 <monochrom> (What happens if you need to go back 5 lines and change something?)
2021-11-23 01:17:32 +0100 <dsal> I can't even hit an up arrow in ghci.
2021-11-23 01:18:35 +0100 <monochrom> (And the XY problem of "how do I save this ghci session because I entered 100000 lines of code at the prompt".)
2021-11-23 01:18:53 +0100 <dsal> "DO NOT REBOOT"
2021-11-23 01:19:30 +0100 <[itchyjunk]> in case of empty list, just pretend it's 1?
2021-11-23 01:19:31 +0100 <[itchyjunk]> https://paste.tomsmeding.com/EtJmtzZ8
2021-11-23 01:19:44 +0100 <dsal> At work one day someone was talking about a legacy system that they worked on that required a custom keyboard because whoever did it made a physical macro system in the physical keyboard itself and nobody could figure out what it did.
2021-11-23 01:19:54 +0100 <dsal> [itchyjunk]: You need to put the empty one first.
2021-11-23 01:20:03 +0100 <[itchyjunk]> oh
2021-11-23 01:20:11 +0100 <dsal> Also, your parenthesis are weird. :p
2021-11-23 01:20:32 +0100forell(~forell@user/forell) (Ping timeout: 240 seconds)
2021-11-23 01:21:14 +0100 <dsal> `f n = head(n) * (f (tail n) )` is just `f n = head n * f (tail n)` Or `f (x:xs) = x * f xs`
2021-11-23 01:21:19 +0100 <[itchyjunk]> Right i was going to ask about that, math way of writing it would be head(n) * tail(f(n)) right?
2021-11-23 01:21:31 +0100 <dsal> No, those parens are confusing, especially the way you have them spaced.
2021-11-23 01:22:13 +0100 <dsal> It works, but it's probably going to get confusing fast when you try to make a function that needs more than one input.
2021-11-23 01:22:41 +0100 <dsal> > let plus a b = a + b in plus(1)(2)
2021-11-23 01:22:42 +0100 <lambdabot> 3
2021-11-23 01:23:04 +0100 <[itchyjunk]> x:xs would add x to the list xs and give me a new list right? but somehow you're extracting the first element of a list and passing whats remaining
2021-11-23 01:23:16 +0100Guest|86(~Guest|86@49.34.109.242)
2021-11-23 01:23:22 +0100 <dsal> No, it's taking the head of the list and naming it x, and then taking the tail of the list and naming it xs.
2021-11-23 01:23:30 +0100 <dsal> It's destructuring the list.
2021-11-23 01:23:34 +0100 <[itchyjunk]> so a space after each function and if its nested function, a parenthesis for the nest?
2021-11-23 01:23:48 +0100 <[itchyjunk]> ahh
2021-11-23 01:23:52 +0100 <geekosaur> there is a difference between patterns and expressions. but they look the same
2021-11-23 01:24:05 +0100 <dsal> They're kind of symmetrical.
2021-11-23 01:24:11 +0100 <geekosaur> because they're doing the same thing "in reverse" from each other
2021-11-23 01:24:19 +0100 <[itchyjunk]> ah
2021-11-23 01:25:12 +0100 <dsal> The parens are to group things. You need `(tail n)` because the alternative would be passing a function named `tail` to your function `f` and that's not the type it takes.
2021-11-23 01:25:38 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-23 01:25:50 +0100 <[itchyjunk]> ah
2021-11-23 01:28:22 +0100 <Guest|86> A noob question. GHCup tui shows my GHC version at 8.10.7 and there is a recommended tag attached is well. Should I stick it with it or update to GHC 9.2.1? I installed all this to get Darcs version control. I don't have any specific user scenario beside that.
2021-11-23 01:28:44 +0100 <dsal> Can't you just install darcs?
2021-11-23 01:29:01 +0100 <dsal> nix-shell -p darcs # :)
2021-11-23 01:29:10 +0100 <sm> Guest|86: no, 8.10.7 is fine
2021-11-23 01:29:39 +0100 <Guest|86> dsal are no binaries for Linux there. What is nix-shell?
2021-11-23 01:29:59 +0100 <dsal> A (really great) can of worms.
2021-11-23 01:30:10 +0100 <dsal> It provides me darcs on macos and linux.
2021-11-23 01:30:32 +0100 <Guest|86> sm Okay. Thank you for the info my friend.
2021-11-23 01:31:14 +0100 <Guest|86> dsal Where can I get that can of worms?
2021-11-23 01:31:38 +0100 <dsal> https://nixos.org -- you can probably run just the nix stuff on your local system.
2021-11-23 01:31:57 +0100 <dsal> It's used for a lot of dev environments because of things like "I just want to install darcs"
2021-11-23 01:32:14 +0100 <sm> if we must speak of nix.. https://ianthehenry.com/posts/how-to-learn-nix is really good
2021-11-23 01:32:29 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-23 01:32:42 +0100nuh^(~nuh@68.101.63.101) (Remote host closed the connection)
2021-11-23 01:33:02 +0100 <sm> (not for you Guest|86, don't let me distract your from your goal)
2021-11-23 01:33:21 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2021-11-23 01:34:05 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-11-23 01:35:15 +0100 <Guest|86> Ah, a package manager? sm That definitely doesn't look like it's for me as the author states on the line no.3 "Five years later, I’m still running NixOS. And I still have no idea how it works." ;)
2021-11-23 01:35:38 +0100 <geekosaur> that makes most people :þ
2021-11-23 01:35:49 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-23 01:35:54 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-23 01:36:20 +0100 <geekosaur> tbh I'd use cabal (or stack but I personally don't like stack)
2021-11-23 01:36:26 +0100 <sm> Guest|86: smart. Ignore dsal :)
2021-11-23 01:36:58 +0100 <geekosaur> you can get either one via ghcup tui and then it's "cabal install darcs" (or "stack install darcs")
2021-11-23 01:37:06 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-11-23 01:38:40 +0100 <Guest|86> @sm Who is dsal? I don't know him! ;) Jokin'
2021-11-23 01:38:40 +0100lambdabotbeats up Who is dsal? I don't know him! ;) Jokin'
2021-11-23 01:39:14 +0100int-eeyes lambdabot suspiciously
2021-11-23 01:39:20 +0100 <geekosaur> @botsmack
2021-11-23 01:39:20 +0100 <lambdabot> :)
2021-11-23 01:39:21 +0100 <sm> it seems darcs is best packaged for stackage lts-16.31 (ghc 8.8.4). But this should work:
2021-11-23 01:39:21 +0100 <sm> stack --resolver lts-18.17 install darcs constraints-0.12 cryptonite-0.27
2021-11-23 01:39:51 +0100 <Guest|86> geekosaur I installed it via cabal. dacs is really cool.
2021-11-23 01:39:54 +0100 <sm> but I imagine stack would probably install it's own copy of ghc 8.10.7
2021-11-23 01:39:56 +0100fernand(~fernand@179.156.35.4)
2021-11-23 01:40:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-11-23 01:40:05 +0100 <sm> Guest|86: seriously ? that was fast
2021-11-23 01:40:13 +0100 <int-e> @list slap
2021-11-23 01:40:13 +0100 <lambdabot> slap provides: slap smack
2021-11-23 01:40:26 +0100 <geekosaur> you didn't know that?
2021-11-23 01:40:40 +0100 <int-e> Does that work because `sm` is a unique prefix, maybe? I thought the editing distance cut-off was 2.
2021-11-23 01:40:51 +0100burnsidesLlama(~burnsides@dhcp168-042.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-23 01:40:53 +0100 <monochrom> Yeah sounds like it.
2021-11-23 01:41:29 +0100 <Guest|86> sm I installed it a month back. Just ran GHCup for the kicks and noticed the updates and came here crying for help ;)
2021-11-23 01:41:44 +0100 <int-e> Eh it's a mystery for another day. I may also be misremembering.
2021-11-23 01:41:46 +0100 <sm> it sounds like you already have current darcs then ?
2021-11-23 01:41:49 +0100 <monochrom> Although, I didn't know that "@smack" exists. Now I have ideas...
2021-11-23 01:41:54 +0100 <monochrom> @snack monochrom
2021-11-23 01:41:54 +0100lambdabothits monochrom with a hammer, so they breaks into a thousand pieces
2021-11-23 01:42:13 +0100 <int-e> @slurp lambdabot
2021-11-23 01:42:13 +0100lambdabotputs on her slapping gloves, and slaps lambdabot
2021-11-23 01:42:16 +0100 <Guest|86> sm Yes, A happy Darcs user.
2021-11-23 01:42:20 +0100 <monochrom> \∩/ Large Monochrom Collider
2021-11-23 01:43:10 +0100 <sm> great! sounds like you're all set
2021-11-23 01:43:25 +0100 <sm> are you a https://hub.darcs.net user ?
2021-11-23 01:44:04 +0100 <Guest|86> This nix-shell mentioned by dsal seems pretty much like a long lost brother of Guix => https://guix.gnu.org/
2021-11-23 01:44:23 +0100 <geekosaur> they're closely related, yes
2021-11-23 01:44:30 +0100 <geekosaur> guix is more or less gnu nix
2021-11-23 01:44:50 +0100 <sm> but nix has so much more mindshare
2021-11-23 01:44:55 +0100 <geekosaur> except guix uses guile/scheme instead of a custom language for its derivations
2021-11-23 01:44:58 +0100hiruji(~hiruji@user/hiruji) (Read error: Connection reset by peer)
2021-11-23 01:45:25 +0100forell(~forell@user/forell)
2021-11-23 01:45:25 +0100 <Guest|86> sm No I am familiar with darcs hub but I a yet to try it. Currently using Darcs exclusively for my solo pet projects.
2021-11-23 01:45:37 +0100 <sm> nice
2021-11-23 01:47:09 +0100 <Guest|86> sm So I only upgrade GHC when GHCup puts recommended tag beside the higher version?
2021-11-23 01:47:33 +0100 <sm> there's no need to upgrade it until you need the newer version for something
2021-11-23 01:47:54 +0100 <sm> but sure, keeping the recommended one installed seems good
2021-11-23 01:49:31 +0100 <sm> some things you build would require ghc 8.10+ now. But darcs moves at a slower pace.
2021-11-23 01:49:56 +0100cosimone`(~user@5.170.240.253) (Ping timeout: 245 seconds)
2021-11-23 01:50:17 +0100 <sm> well, that sounds like a criticism. Darcs has good support for a wide range of ghc versions.
2021-11-23 01:50:52 +0100 <geekosaur> moving at a slower pace than ghc is not necessarily a bad thing, given that ghc can move pretty violently
2021-11-23 01:51:08 +0100 <sm> yup
2021-11-23 01:51:13 +0100 <geekosaur> much of the ecosystem hasn't caught up to any ghc9, for example
2021-11-23 01:51:40 +0100 <sm> in effect ghc major releases are really preview releases it seems
2021-11-23 01:51:59 +0100 <geekosaur> well, any x.x.1 seems to be
2021-11-23 01:52:14 +0100fernand(~fernand@179.156.35.4) (Quit: Connection closed)
2021-11-23 01:52:27 +0100fernand(~fernand@179.156.35.4)
2021-11-23 01:53:56 +0100 <Guest|86> sm Okay! Cool! Thank you so very much sm geekosaur and dsal for bearing with my noob questions and helping me out. Wishing you all a great week ahead.
2021-11-23 01:55:21 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 245 seconds)
2021-11-23 01:56:13 +0100Guest|86(~Guest|86@49.34.109.242) (Quit: Guest|86)
2021-11-23 02:00:11 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-11-23 02:00:18 +0100mmhat(~mmh@55d44c37.access.ecotel.net) (Quit: WeeChat 3.3)
2021-11-23 02:08:52 +0100connrs(~connrs@user/connrs) (Read error: Connection reset by peer)
2021-11-23 02:09:23 +0100connrs(~connrs@user/connrs)
2021-11-23 02:10:27 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-23 02:14:26 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2021-11-23 02:14:55 +0100 <[itchyjunk]> If `(x:xs)` means first element and rest of the list, why doesn't it mean first and second element of a tuple?
2021-11-23 02:15:45 +0100 <geekosaur> becuase tuples aren't lists
2021-11-23 02:15:55 +0100 <geekosaur> (x,y) destructs a 2-tuple
2021-11-23 02:16:01 +0100 <[itchyjunk]> ahh
2021-11-23 02:16:24 +0100 <geekosaur> but this does not generalize to 3-tuples, for example: you need (x,y,z) there
2021-11-23 02:16:33 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-23 02:16:36 +0100betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Ping timeout: 245 seconds)
2021-11-23 02:16:45 +0100 <[itchyjunk]> that makes sense
2021-11-23 02:17:26 +0100 <dsal> You can also do `(x:y:xs)` but that won't match if you don't have at least two items in your list.
2021-11-23 02:17:53 +0100 <dsal> I list is a thing followed by a list. Sometimes there's an empty item at the end.
2021-11-23 02:18:01 +0100 <dsal> I spelled A wrong.
2021-11-23 02:20:55 +0100 <energizer> in some languages the first parameter of foldl is (a -> b -> a) and in others it's (a -> b -> b). this is annoying and i dont see any reason for it. is there some history behind this?
2021-11-23 02:21:59 +0100 <monochrom> I don't know that history, but my understanding of human nature says big endian vs little endian all over again.
2021-11-23 02:22:42 +0100 <geekosaur> my understanding is haskell follows natural associativity, other languages prefer consistency or other things
2021-11-23 02:23:00 +0100 <dsal> The good news is that don't use foldl probably.
2021-11-23 02:23:41 +0100 <dsal> I use foldr most of the time and it wants the current value which I call x and the accumulator value which I call o so I just have to remember foldr is xo
2021-11-23 02:23:46 +0100 <energizer> dont use foldl is only for haskell i think
2021-11-23 02:24:06 +0100 <dsal> It's not definitely always correct in Haskell, either.
2021-11-23 02:24:16 +0100 <monochrom> Well, it's "don't use foldr" in other languages so there.
2021-11-23 02:24:39 +0100 <dibblego> what other language?
2021-11-23 02:24:57 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2021-11-23 02:25:28 +0100hiruji(~hiruji@user/hiruji)
2021-11-23 02:25:28 +0100 <energizer> (foldl (lambda (new old) (cons new old)) '() (list 1 2 3)) ;; '(3 2 1)
2021-11-23 02:25:39 +0100 <monochrom> Have you also surveyed how many people do Church encoding of the natural numbers as "\z s -> s (s z)", how many do "\s z -> s (s z)", and how many take the stance "but zero is not a natural number"?
2021-11-23 02:26:12 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
2021-11-23 02:26:31 +0100 <monochrom> which is the equivalent of big endian, little endian, and "I don't eat eggs".
2021-11-23 02:26:52 +0100jbox(~jbox@user/jbox)
2021-11-23 02:27:56 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-11-23 02:36:37 +0100jushur(~human@user/jushur) (Quit: ¯\_(ツ)_/¯)
2021-11-23 02:38:27 +0100 <[itchyjunk]> I think i have a slightly better grasp of my task. i know how to extract the first and last digit. i think it's extracting all the digits along the way but I am not sure. :x
2021-11-23 02:38:51 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 264 seconds)
2021-11-23 02:39:32 +0100 <[itchyjunk]> https://paste.tomsmeding.com/9NOa8oz6
2021-11-23 02:39:40 +0100 <[itchyjunk]> I have even snuck some recursion in there.
2021-11-23 02:41:14 +0100 <dsal> You can't get to the last element of a list without going through the list.
2021-11-23 02:41:39 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2021-11-23 02:42:08 +0100 <dsal> [itchyjunk]: Why does `g` take a tuple?
2021-11-23 02:42:34 +0100[_](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-23 02:42:48 +0100 <[_]> oops, internet issue
2021-11-23 02:42:58 +0100 <[_]> well it's not a list, last digit of some n in N
2021-11-23 02:43:14 +0100 <[_]> for first digit? if it's 12345, i can get the 5 and 1
2021-11-23 02:43:20 +0100 <dsal> Yeah, I'm not entirely sure what the goal is. I can only read what the code does. ;)
2021-11-23 02:43:34 +0100 <[_]> i just need to store each iteration to end up with [1,2,3,4,5]
2021-11-23 02:43:39 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-11-23 02:43:46 +0100 <[_]> goal is to xyz -> [x,y,z]
2021-11-23 02:44:44 +0100 <[_]> awe
2021-11-23 02:44:52 +0100 <[_]> i had a thought but didn't pan out
2021-11-23 02:44:55 +0100 <dsal> Not entirely sure what you mean. What's the divMod for?
2021-11-23 02:45:33 +0100 <[_]> well i need mod to extract each digit. but then i won't know when to stop. so the idea was to use divMod to get (x,y) and stop when x is 0
2021-11-23 02:46:09 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-11-23 02:46:09 +0100 <dsal> Well, [x] is a list with only one item in it, so that'd be the last one.
2021-11-23 02:46:39 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 264 seconds)
2021-11-23 02:46:55 +0100 <dsal> I don't quite get what the tuple is for.
2021-11-23 02:47:24 +0100 <dsal> I keep thinking about how I'd do that which is not how I'd tell someone how to do it. heh
2021-11-23 02:48:12 +0100 <[_]> yeah this isn't the best way probably but i feel like its a way enough
2021-11-23 02:48:27 +0100 <[_]> right, i'm getting the last (first) digit only
2021-11-23 02:48:57 +0100 <[_]> i need a way to say, take the last list i was using instead of start with a new empty list and append it i think
2021-11-23 02:50:07 +0100 <[_]> oh maybe i pass the list along as a parameter possibly, but that complicates the signature
2021-11-23 02:50:42 +0100 <dsal> Well, the easiest thing to consider is special casing the first item and then just looking for the last. The problem is that you've got a lot of weird room for partiality.
2021-11-23 02:51:17 +0100DNH(~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) (Quit: Textual IRC Client: www.textualapp.com)
2021-11-23 02:51:51 +0100 <dsal> If you didn't have to worry about empty lists, it'd be slightly easier.
2021-11-23 02:54:26 +0100 <dsal> This is roughly impossible to read, but something like this:
2021-11-23 02:54:27 +0100 <dsal> > let fnl (x:xs) = let go [l] = (x,l); go (_:xs) = go xs in go (x:xs) in fnl [1..11]
2021-11-23 02:54:28 +0100 <lambdabot> (1,11)
2021-11-23 02:54:34 +0100 <dsal> But it's not defined for empty lists.
2021-11-23 02:55:25 +0100 <[_]> hmm my starting digits isn't a list it's just some random number
2021-11-23 02:59:01 +0100 <dsal> > fmap digitToInt . show $ 146432
2021-11-23 02:59:02 +0100 <lambdabot> [1,4,6,4,3,2]
2021-11-23 02:59:36 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-23 03:00:03 +0100 <[_]> :O
2021-11-23 03:01:36 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2021-11-23 03:01:54 +0100 <monochrom> [startingdigit] is a list.
2021-11-23 03:04:02 +0100jkaye(~jkaye@2601:281:8300:7530:c25c:6460:bfbf:33d6) (Ping timeout: 240 seconds)
2021-11-23 03:04:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-23 03:04:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-23 03:04:24 +0100wroathe(~wroathe@user/wroathe)
2021-11-23 03:05:16 +0100unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
2021-11-23 03:09:53 +0100Clint(~Clint@user/clint) (Ping timeout: 250 seconds)
2021-11-23 03:10:01 +0100Clint(~Clint@user/clint)
2021-11-23 03:10:09 +0100hiruji`(~hiruji@2606:6080:1002:4:88e7:e893:3692:25d2)
2021-11-23 03:11:51 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2021-11-23 03:13:39 +0100hiruji(~hiruji@user/hiruji) (Ping timeout: 264 seconds)
2021-11-23 03:16:28 +0100learner-monad(~ehanneken@user/learner-monad) (Quit: WeeChat 3.3)
2021-11-23 03:18:25 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-23 03:28:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-23 03:32:51 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2021-11-23 03:35:54 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2021-11-23 03:36:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 03:36:58 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-11-23 03:38:27 +0100Cajun(~Cajun@user/cajun)
2021-11-23 03:41:10 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 260 seconds)
2021-11-23 03:41:51 +0100xff0x(~xff0x@2001:1a81:52ae:a700:8aec:b385:dec1:cc56) (Ping timeout: 264 seconds)
2021-11-23 03:42:08 +0100jollygood2(~bc8165b6@217.29.117.252)
2021-11-23 03:43:15 +0100xff0x(~xff0x@2001:1a81:52f2:7200:d4ab:2c51:aa8:c20a)
2021-11-23 03:43:30 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2021-11-23 03:43:59 +0100 <[_]> wait a second, starting digit is a list?
2021-11-23 03:44:30 +0100 <c_wraith> that's not what monochrom said
2021-11-23 03:44:37 +0100 <[_]> oh
2021-11-23 03:44:57 +0100fernand(~fernand@179.156.35.4) (Quit: Connection closed)
2021-11-23 03:45:30 +0100 <jollygood2> > let digits 0 = []; digits x = mod x 10 : digits (div x 10) in digits 123
2021-11-23 03:45:32 +0100 <lambdabot> [3,2,1]
2021-11-23 03:45:50 +0100 <jollygood2> just reverse the result, and possibly also handle negative input and 0
2021-11-23 03:46:24 +0100fernand(~fernand@179.156.35.4)
2021-11-23 03:48:01 +0100lavaman(~lavaman@98.38.249.169)
2021-11-23 03:48:29 +0100 <[_]> hmm
2021-11-23 03:49:11 +0100 <monochrom> [3] is a list.
2021-11-23 03:49:13 +0100haruhimywife[m](~kmatrixth@2001:470:69fc:105::1:3b2f)
2021-11-23 03:49:18 +0100 <monochrom> 3 may be your starting digit.
2021-11-23 03:52:26 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-11-23 03:56:26 +0100random-jellyfish(~random-je@user/random-jellyfish)
2021-11-23 03:58:52 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-11-23 03:59:43 +0100 <dsal> oooh, is that what you're trying to do with divMod?
2021-11-23 04:01:09 +0100 <[_]> yes lol
2021-11-23 04:01:22 +0100 <[_]> idk if i should abandom what i was doing or not now
2021-11-23 04:01:38 +0100 <dsal> Nah, do your thing. I just didn't understand what divMod was doing there. heh
2021-11-23 04:01:59 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2021-11-23 04:02:42 +0100hololeap(~hololeap@user/hololeap)
2021-11-23 04:06:57 +0100 <jollygood2> [_] sorry for spoiling it!
2021-11-23 04:08:50 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-11-23 04:09:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-23 04:10:24 +0100 <[_]> naw all good, i'm doing something much weirder haha
2021-11-23 04:10:29 +0100 <[_]> i'll poke at it more tomorrow
2021-11-23 04:16:38 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
2021-11-23 04:20:50 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-23 04:21:48 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-11-23 04:21:48 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-11-23 04:21:48 +0100finn_elijaFinnElija
2021-11-23 04:24:38 +0100mbuf(~Shakthi@27.58.141.80)
2021-11-23 04:25:31 +0100Feuermagier_(~Feuermagi@154.28.188.153)
2021-11-23 04:28:09 +0100 <sm> what's the deal with happy failing to build because it can't find happy, again ?
2021-11-23 04:28:17 +0100 <sm> eg: https://github.com/simonmichael/hledger/runs/4294639782?check_suite_focus=true#step:14:1512
2021-11-23 04:28:33 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 268 seconds)
2021-11-23 04:28:35 +0100 <sm> I just started seeing this recently. It looks pretty dumb. Recently I fixed it locally by installing happy first from outside the project directory. Someone here told me to add build-tools: happy to .cabal, I think ?
2021-11-23 04:32:04 +0100 <sm> haskell tools are annoying >:|
2021-11-23 04:32:11 +0100img(~img@user/img)
2021-11-23 04:34:06 +0100hippoid_(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds)
2021-11-23 04:34:27 +0100nabaiste^(~nabaiste@68.101.63.101)
2021-11-23 04:34:44 +0100gdown(~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
2021-11-23 04:36:10 +0100zaquest(~notzaques@5.130.79.72)
2021-11-23 04:36:33 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 04:38:58 +0100[_](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-23 04:43:15 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2021-11-23 04:43:45 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-11-23 04:44:29 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2021-11-23 04:45:13 +0100ian`(~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection)
2021-11-23 04:47:54 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
2021-11-23 04:49:25 +0100td_(~td@94.134.91.148) (Ping timeout: 256 seconds)
2021-11-23 04:50:02 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-11-23 04:51:09 +0100td_(~td@94.134.91.203)
2021-11-23 04:59:55 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-23 05:00:23 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
2021-11-23 05:00:43 +0100cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50)
2021-11-23 05:00:48 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-23 05:02:15 +0100waleee(~waleee@h-82-196-111-63.NA.cust.bahnhof.se)
2021-11-23 05:03:09 +0100 <sm> answer: a packaging bug in the recent happy release, avoid it by using happy 1.20
2021-11-23 05:03:46 +0100fernand(~fernand@179.156.35.4) (Ping timeout: 260 seconds)
2021-11-23 05:05:38 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-23 05:11:36 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-11-23 05:13:24 +0100notzmv(~zmv@user/notzmv)
2021-11-23 05:18:02 +0100alzgh(alzgh@user/alzgh) (Remote host closed the connection)
2021-11-23 05:29:39 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 256 seconds)
2021-11-23 05:38:28 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-23 05:39:52 +0100Nolrai2(~Nolrai2@c-76-27-202-218.hsd1.or.comcast.net)
2021-11-23 05:41:01 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-23 05:42:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-23 05:42:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-23 05:42:42 +0100wroathe(~wroathe@user/wroathe)
2021-11-23 05:46:05 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-11-23 05:47:15 +0100benin(~benin@183.82.179.164) (Ping timeout: 264 seconds)
2021-11-23 05:47:51 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2021-11-23 05:48:18 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2021-11-23 05:51:21 +0100benin(~benin@183.82.179.164)
2021-11-23 05:53:05 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com)
2021-11-23 06:00:22 +0100Codaraxis(~Codaraxis@user/codaraxis)
2021-11-23 06:00:46 +0100Pent(sid313808@id-313808.lymington.irccloud.com) (Ping timeout: 245 seconds)
2021-11-23 06:03:18 +0100Pent(sid313808@id-313808.lymington.irccloud.com)
2021-11-23 06:06:30 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 06:09:22 +0100fernand(~fernand@179.156.35.4)
2021-11-23 06:09:39 +0100waleee(~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
2021-11-23 06:10:13 +0100deadmarshal(~deadmarsh@95.38.112.23)
2021-11-23 06:12:35 +0100 <sm> well, it's not all rosy in rust land: cargo install tries to build 200 packages, number 160 fails, and next time it rebuilds them all again
2021-11-23 06:12:47 +0100 <sm> also, just one at a time. I wonder why.
2021-11-23 06:14:51 +0100deadmarshal(~deadmarsh@95.38.112.23) (Ping timeout: 264 seconds)
2021-11-23 06:17:47 +0100catern(~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) (Ping timeout: 264 seconds)
2021-11-23 06:22:02 +0100puke(~puke@user/puke) (Quit: puke)
2021-11-23 06:22:12 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-11-23 06:24:28 +0100fernand(~fernand@179.156.35.4) (Ping timeout: 268 seconds)
2021-11-23 06:26:15 +0100whatsupdoc(uid509081@hampstead.irccloud.com)
2021-11-23 06:28:29 +0100jinsun__jinsun
2021-11-23 06:31:56 +0100reumeth(~reumeth@user/reumeth)
2021-11-23 06:33:43 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2021-11-23 06:33:47 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-11-23 06:33:53 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-11-23 06:34:58 +0100pfurla(~pfurla@2804:14d:5c81:4104:2d7f:4f3b:6a60:c865) (Ping timeout: 265 seconds)
2021-11-23 06:37:37 +0100Nolrai2(~Nolrai2@c-76-27-202-218.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-11-23 06:40:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-11-23 06:41:47 +0100reumeth(~reumeth@user/reumeth) (Ping timeout: 250 seconds)
2021-11-23 06:44:59 +0100random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
2021-11-23 06:46:58 +0100deadmarshal(~deadmarsh@95.38.112.23)
2021-11-23 06:50:31 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-23 06:55:22 +0100jinsun__(~quassel@user/jinsun)
2021-11-23 06:59:11 +0100jinsun___(~quassel@user/jinsun)
2021-11-23 06:59:37 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 268 seconds)
2021-11-23 07:00:55 +0100jinsun(~quassel@user/jinsun)
2021-11-23 07:01:39 +0100jinsun__(~quassel@user/jinsun) (Ping timeout: 264 seconds)
2021-11-23 07:02:42 +0100lavaman(~lavaman@98.38.249.169)
2021-11-23 07:04:03 +0100jinsun___(~quassel@user/jinsun) (Ping timeout: 264 seconds)
2021-11-23 07:04:50 +0100pfurla(~pfurla@2804:14d:5c81:4104:1430:118d:f25f:43fa)
2021-11-23 07:06:55 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-11-23 07:08:55 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-11-23 07:11:45 +0100 <arahael> I've got the x86_64 version of haskell installed and working, but it's x86_64, and I want the arm version... How do I get the ARM version using ghcup?
2021-11-23 07:19:29 +0100phma_(phma@2001:5b0:211b:e388:ee5a:511e:22c4:3b06)
2021-11-23 07:21:12 +0100lagash(lagash@lagash.shelltalk.net) (Ping timeout: 268 seconds)
2021-11-23 07:21:53 +0100a1paca(~a1paca@user/a1paca) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-23 07:21:59 +0100lagash(lagash@lagash.shelltalk.net)
2021-11-23 07:22:12 +0100a1paca(~a1paca@user/a1paca)
2021-11-23 07:22:32 +0100phma(phma@2001:5b0:211b:e388:ee5a:511e:22c4:3b06) (Ping timeout: 240 seconds)
2021-11-23 07:26:13 +0100 <arahael> Well, that was easy. I had to remove my ~/.ghcup and do it again.
2021-11-23 07:27:17 +0100sm2n(~sm2n@user/sm2n) (Quit: Leaving)
2021-11-23 07:27:57 +0100 <arahael> *so much faster*. :)
2021-11-23 07:28:41 +0100deadmarshal_(~deadmarsh@95.38.113.89)
2021-11-23 07:29:58 +0100aliosablack(~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374)
2021-11-23 07:30:53 +0100aliosablack(~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-11-23 07:30:55 +0100deadmarshal(~deadmarsh@95.38.112.23) (Ping timeout: 256 seconds)
2021-11-23 07:31:11 +0100chomwitt(~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374)
2021-11-23 07:32:27 +0100lavaman(~lavaman@98.38.249.169)
2021-11-23 07:38:38 +0100phma_phma
2021-11-23 07:40:15 +0100 <arahael> Still some warts, though, for instance "Warning: Couldn't figure out LLVM version!" when attempting to compile various libraries such as reflection or semigroups.
2021-11-23 07:40:58 +0100 <arahael> https://gist.github.com/arafangion/34176990e73ecbdf90139df68d0de627
2021-11-23 07:41:24 +0100 <arahael> That's for a straight: cabal install sdl2 --lib
2021-11-23 07:42:35 +0100sm2n(~sm2n@user/sm2n)
2021-11-23 07:43:04 +0100 <arahael> Added as a comment what happens when I just cabal init, then cabal build.
2021-11-23 07:44:28 +0100 <arahael> Ah... Found the issue. :( My llvm version is too new: Apple clang version 13.0.0 (clang-1300.0.29.3)
2021-11-23 07:46:22 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-23 07:48:41 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-11-23 07:49:56 +0100 <arahael> Nevermind that, it's working perfectly. My GHC was too old, even though I had just installed it.
2021-11-23 07:57:22 +0100gnyeki(~gnyeki@li578-216.members.linode.com) (Ping timeout: 260 seconds)
2021-11-23 07:57:30 +0100gnyeki(~gnyeki@li578-216.members.linode.com)
2021-11-23 08:02:12 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4)
2021-11-23 08:03:08 +0100deadmarshal_(~deadmarsh@95.38.113.89) (Ping timeout: 268 seconds)
2021-11-23 08:03:59 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-23 08:05:34 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-11-23 08:11:38 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-11-23 08:12:43 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-11-23 08:25:12 +0100mei(~mei@user/mei) (Read error: Connection reset by peer)
2021-11-23 08:26:05 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-23 08:27:30 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:d444:3bcd:ae33:7f0)
2021-11-23 08:27:51 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-11-23 08:30:09 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-23 08:33:34 +0100catern(~sbaugh@cpe-98-7-229-235.nyc.res.rr.com)
2021-11-23 08:36:44 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-23 08:37:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 08:39:49 +0100 <[exa]> Hecate: yeah, the "monolith" part defines a niche which is not even remotely a target of everyone (esp. tool devs and unixy people)
2021-11-23 08:42:26 +0100xff0x(~xff0x@2001:1a81:52f2:7200:d4ab:2c51:aa8:c20a) (Ping timeout: 245 seconds)
2021-11-23 08:44:33 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-23 08:46:52 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 08:47:52 +0100xff0x(~xff0x@2001:1a81:52f2:7200:812:ece5:6349:588e)
2021-11-23 08:52:13 +0100 <Hecate> [exa]: well I'd say it's a precondition to what I said :P
2021-11-23 08:53:34 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-23 08:57:26 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 245 seconds)
2021-11-23 09:03:31 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 09:06:27 +0100NiKaN(sid385034@helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 09:07:20 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-11-23 09:08:30 +0100NemesisD(sid24071@lymington.irccloud.com) (Ping timeout: 268 seconds)
2021-11-23 09:09:10 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-23 09:09:38 +0100jollygood2(~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-11-23 09:10:15 +0100NiKaN(sid385034@helmsley.irccloud.com)
2021-11-23 09:10:21 +0100jackdk(sid373013@cssa/jackdk) (Ping timeout: 245 seconds)
2021-11-23 09:11:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-23 09:11:35 +0100jackdk(sid373013@cssa/jackdk)
2021-11-23 09:11:51 +0100aarchi(sid486183@uxbridge.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 09:11:51 +0100acertain(sid470584@hampstead.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 09:11:51 +0100glowcoil(sid3405@tinside.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 09:12:35 +0100edwardk(sid47016@haskell/developer/edwardk) (Ping timeout: 250 seconds)
2021-11-23 09:12:53 +0100acertain(sid470584@id-470584.hampstead.irccloud.com)
2021-11-23 09:13:39 +0100dmj`(sid72307@hampstead.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 09:13:41 +0100mrianbloom(sid350277@id-350277.ilkley.irccloud.com) (Ping timeout: 245 seconds)
2021-11-23 09:14:15 +0100tapas(sid467876@ilkley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 09:14:51 +0100idnar(sid12240@debian/mithrandi) (Ping timeout: 264 seconds)
2021-11-23 09:14:53 +0100NemesisD(sid24071@lymington.irccloud.com)
2021-11-23 09:15:15 +0100dmj`(sid72307@id-72307.hampstead.irccloud.com)
2021-11-23 09:15:27 +0100elvishjerricco(sid237756@helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 09:15:39 +0100glowcoil(sid3405@id-3405.tinside.irccloud.com)
2021-11-23 09:15:46 +0100edwardk(sid47016@haskell/developer/edwardk)
2021-11-23 09:16:03 +0100sclv(sid39734@haskell/developer/sclv) (Ping timeout: 264 seconds)
2021-11-23 09:16:26 +0100aarchi(sid486183@id-486183.uxbridge.irccloud.com)
2021-11-23 09:16:52 +0100mrianbloom(sid350277@id-350277.ilkley.irccloud.com)
2021-11-23 09:17:25 +0100idnar(sid12240@debian/mithrandi)
2021-11-23 09:17:39 +0100tapas(sid467876@id-467876.ilkley.irccloud.com)
2021-11-23 09:17:50 +0100elvishjerricco(sid237756@id-237756.helmsley.irccloud.com)
2021-11-23 09:17:58 +0100sclv(sid39734@haskell/developer/sclv)
2021-11-23 09:19:47 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
2021-11-23 09:19:53 +0100statusbot3(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2021-11-23 09:28:15 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-23 09:28:43 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2021-11-23 09:29:00 +0100 <dminuoso> Do you folks make use of global IORefs in edge cases to save time and ergonomics?
2021-11-23 09:29:01 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-23 09:29:44 +0100 <dminuoso> So far I have resisted every temptation and rather managed (semi-)global dependencies via a lot of boilerplate argument passing, or by using ReaderT - but Im writing a test suite at the moment where I cant trivially use ReaderT
2021-11-23 09:29:50 +0100michalz(~michalz@185.246.204.40)
2021-11-23 09:29:51 +0100 <dminuoso> And argument passing would become very annoying
2021-11-23 09:30:29 +0100 <c_wraith> the only times I've wanted a global mutable ref that I didn't find a better approach was when working with FFI to really poorly-written C libraries
2021-11-23 09:30:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 09:31:51 +0100dminuosowishes hunit was written polymorphically over MonadUnliftIO :(
2021-11-23 09:32:22 +0100 <dminuoso> c_wraith: Interesting, how does that come into play with C libraries?
2021-11-23 09:33:16 +0100 <c_wraith> usually creating an MVar to act as a mutex because the C library was written to fail when used in concurrent environments
2021-11-23 09:35:08 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-11-23 09:35:40 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-23 09:40:34 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 265 seconds)
2021-11-23 09:41:01 +0100whatsupdoc(uid509081@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-23 09:41:44 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-23 09:43:57 +0100kritzefitz(~kritzefit@debian/kritzefitz) (Ping timeout: 265 seconds)
2021-11-23 09:45:55 +0100kritzefitz(~kritzefit@debian/kritzefitz)
2021-11-23 09:46:12 +0100 <jackdk> dminuoso: I have been tempted to do this when I was first learning haskell, but have never done so. I don't feel tempted any more.
2021-11-23 09:46:34 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-23 09:47:17 +0100 <[exa]> dminuoso: time to free monads? :D
2021-11-23 09:49:18 +0100ph88(~ph88@2a02:8109:9e00:71d0:8486:2f47:1ad1:518f)
2021-11-23 09:53:31 +0100fef(~thedawn@user/thedawn)
2021-11-23 09:53:41 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 245 seconds)
2021-11-23 09:56:29 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-11-23 09:57:44 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-23 10:00:42 +0100 <jzsinatra> When you make software with Haskell, do you usually make whole software with haskell, or do you use some other language for example for GUI?
2021-11-23 10:02:14 +0100cfricke(~cfricke@user/cfricke)
2021-11-23 10:03:51 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-23 10:05:03 +0100__monty__(~toonn@user/toonn)
2021-11-23 10:05:14 +0100 <jle`> recently i've been doing my gui's in purescript
2021-11-23 10:05:14 +0100 <dminuoso> jzsinatra: For our problem domain, if we need to interact with other software we do it via FFI or via defined JSON based APIs.
2021-11-23 10:05:22 +0100 <[exa]> jzsinatra: depends on the software. I do mostly commandline & small networking tools where 100% haskell is okay, only sometimes calling C/C++ code for performance
2021-11-23 10:05:39 +0100 <dminuoso> jzsinatra: So in case of one API that is exposed to a web, we have even a separate django wrapper around our haskell based API
2021-11-23 10:06:01 +0100 <jle`> but there are a lot of nice native haskell ui libs too
2021-11-23 10:07:26 +0100Guest9226(~Guest92@178-78-205-86.customers.ownit.se)
2021-11-23 10:07:46 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-11-23 10:08:51 +0100sus(zero@user/zeromomentum) (Quit: the lounge - https://webirc.envs.net)
2021-11-23 10:09:20 +0100sus(zero@user/zeromomentum)
2021-11-23 10:09:39 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-23 10:13:34 +0100 <jzsinatra> Very interesting.Thanks for the replies. I myself do develop some engineering related calculations tools for our team. Last time I did use GTK bindings for a data analysis software. For my current project I do have thought about alternatives. What I really like about Haskell, is that it allows me to think in the "equation domain".
2021-11-23 10:14:15 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2021-11-23 10:17:01 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 10:17:28 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2021-11-23 10:17:28 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-11-23 10:17:31 +0100allbery_bgeekosaur
2021-11-23 10:18:45 +0100pfurla(~pfurla@2804:14d:5c81:4104:1430:118d:f25f:43fa) (Quit: gone to sleep. ZZZzzz…)
2021-11-23 10:21:08 +0100mc47(~mc47@xmonad/TheMC47)
2021-11-23 10:24:48 +0100kuribas(~user@ptr-25vy0iagc74l4rb6r6j.18120a2.ip6.access.telenet.be)
2021-11-23 10:26:12 +0100hendi(sid489601@lymington.irccloud.com) (Ping timeout: 268 seconds)
2021-11-23 10:26:15 +0100gonz_____(sid304396@lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 10:27:07 +0100hendi(sid489601@id-489601.lymington.irccloud.com)
2021-11-23 10:27:46 +0100acidjnk(~acidjnk@p200300d0c7271e823d8ddc81d8ce7005.dip0.t-ipconnect.de)
2021-11-23 10:29:30 +0100gonz_____(sid304396@id-304396.lymington.irccloud.com)
2021-11-23 10:30:48 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-23 10:38:24 +0100 <kritzefitz> There is this list of presumably dangerous Haskell functions (link follows) that among other things lists -XTupleSections as dangerous. I have trouble understanding the point made in that list and always found TupleSections quite harmless. Can someone speak from their experience of TupleSections and maybe enlighten me what is so dangerous about them?
2021-11-23 10:38:28 +0100 <kritzefitz> Link: https://github.com/NorfairKing/haskell-dangerous-functions#--language-tuplesections--
2021-11-23 10:39:35 +0100 <merijn> kritzefitz: People have weird and idiosyncratic beliefs
2021-11-23 10:39:58 +0100 <merijn> You wanna know the best part?
2021-11-23 10:40:12 +0100 <kritzefitz> Sure.
2021-11-23 10:40:27 +0100 <dminuoso> This is not a list of "presumably dangerous functions", its a list of things the author dislikes.
2021-11-23 10:40:45 +0100 <merijn> ah, wait, my ghci has TupleSections turned on by default, nevermind :p
2021-11-23 10:40:58 +0100 <dminuoso> This behavior of pumping out personal opinions as "facts" and "best practices" is really silly
2021-11-23 10:41:36 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 245 seconds)
2021-11-23 10:41:57 +0100 <dminuoso> The only thing that annoys me about TupleSections is that it isn't part of standard haskell already.
2021-11-23 10:42:08 +0100 <merijn> word
2021-11-23 10:42:10 +0100 <yushyin> ;)
2021-11-23 10:42:25 +0100 <merijn> the one function on that last I *truly* agree with is forkProcess
2021-11-23 10:43:10 +0100 <merijn> oh, the main argument for that is a reddit link to me ranting about it :D
2021-11-23 10:43:19 +0100 <merijn> Good
2021-11-23 10:43:19 +0100 <yushyin> gz? :D
2021-11-23 10:43:35 +0100 <merijn> I aspire to Dijkstra-immortality
2021-11-23 10:43:55 +0100 <merijn> If anyone is slightly terrified of me ranting at them any time they type fork() in their code, that's enough for me
2021-11-23 10:44:08 +0100 <kritzefitz> Thanks for clarifying! I was recently asked to remove TupleSections from default-extensions during a review, because of its appearance on that list and didn't want to dismiss that without investigating if there is some real argument against TupleSections.
2021-11-23 10:47:15 +0100rubin55(sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 10:47:15 +0100SanchayanMaity(sid478177@hampstead.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 10:47:15 +0100bjs(sid190364@user/bjs) (Ping timeout: 264 seconds)
2021-11-23 10:47:36 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2021-11-23 10:47:40 +0100 <maerwald> kritzefitz: lol
2021-11-23 10:47:51 +0100jackdk(sid373013@cssa/jackdk) (Ping timeout: 264 seconds)
2021-11-23 10:47:51 +0100sa(sid1055@tinside.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 10:48:02 +0100rubin55(sid175221@id-175221.hampstead.irccloud.com)
2021-11-23 10:48:23 +0100jackdk(sid373013@cssa/jackdk)
2021-11-23 10:48:24 +0100cbarrett(sid192934@helmsley.irccloud.com) (Ping timeout: 268 seconds)
2021-11-23 10:48:30 +0100 <yushyin> kritzefitz: TupleSections is also part of GHC2021
2021-11-23 10:48:54 +0100 <merijn> I mean, that list actually argues "any function using division" as dangerous, so...
2021-11-23 10:49:36 +0100SanchayanMaity(sid478177@id-478177.hampstead.irccloud.com)
2021-11-23 10:49:48 +0100sa(sid1055@id-1055.tinside.irccloud.com)
2021-11-23 10:49:54 +0100cbarrett(sid192934@id-192934.helmsley.irccloud.com)
2021-11-23 10:50:11 +0100bjs(sid190364@user/bjs)
2021-11-23 10:51:02 +0100 <kritzefitz> Yeah, on closer inspection that list seems to contain quite some perls.
2021-11-23 10:51:15 +0100 <maerwald> kritzefitz: if that was during an *interview* I'd tell them I'm not interested anymore :p
2021-11-23 10:51:22 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-11-23 10:51:49 +0100 <maerwald> too bad I can't dislike on github
2021-11-23 10:52:29 +0100 <kritzefitz> maerwald: no interview, it was a code review on Github. The reviewer immediately backed off, when I questioned the request, but I didn't want to skip this opportunity to potentially learn something new.
2021-11-23 10:52:57 +0100 <merijn> kritzefitz: oh, double skepticism for code review on github by people you don't know
2021-11-23 10:53:21 +0100 <merijn> I've had peope replace all my foreign imports with unsafe foreign imports in a PR before "because they're faster"
2021-11-23 10:53:50 +0100 <maerwald> merijn: they also cause silent memory corruption on mac... like, all the time
2021-11-23 10:54:30 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-11-23 10:56:46 +0100 <merijn> maerwald: I use a bunch of unsafe imports on mac and never had an issue. Is that on Intel? And which version?
2021-11-23 10:57:14 +0100aman(~aman@user/aman)
2021-11-23 10:58:21 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-11-23 10:58:36 +0100 <maerwald> I mean non-capi in general
2021-11-23 10:58:52 +0100 <maerwald> it breaks with CPP tricks
2021-11-23 10:58:59 +0100 <maerwald> because headers are ignored
2021-11-23 11:00:45 +0100fef(~thedawn@user/thedawn)
2021-11-23 11:03:49 +0100atwm(~andrew@178.197.234.40)
2021-11-23 11:04:12 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 11:06:25 +0100 <kuribas> Some guy removed all version bounds in my .cabal "because it stopped him from compiling".
2021-11-23 11:06:29 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-23 11:07:07 +0100 <kuribas> I didn't merge obviously.
2021-11-23 11:07:36 +0100 <yushyin> pity
2021-11-23 11:08:19 +0100 <kuribas> yushyin: it didn't contain anything else useful...
2021-11-23 11:10:45 +0100 <Rembane_> Good yolo PR
2021-11-23 11:11:13 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-23 11:11:39 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-23 11:12:44 +0100aman(~aman@user/aman) (Remote host closed the connection)
2021-11-23 11:13:02 +0100 <merijn> maerwald: oh, sure, but I usually only use my own C code in FFI
2021-11-23 11:13:08 +0100aman(~aman@user/aman)
2021-11-23 11:14:09 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-11-23 11:14:56 +0100atwm(~andrew@178.197.234.40)
2021-11-23 11:15:44 +0100atwm(~andrew@178.197.234.40) ()
2021-11-23 11:20:49 +0100sprout(~quassel@2a02:a467:ccd6:1:5cca:96d9:7234:6761)
2021-11-23 11:21:05 +0100aman(~aman@user/aman) (Ping timeout: 268 seconds)
2021-11-23 11:22:28 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-23 11:26:21 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4)
2021-11-23 11:27:13 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-11-23 11:27:46 +0100atwm(~andrew@178.197.234.40)
2021-11-23 11:28:21 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 11:28:25 +0100jinsun__(~quassel@user/jinsun)
2021-11-23 11:28:35 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-23 11:29:29 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-23 11:31:03 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-23 11:31:23 +0100atwm(~andrew@178.197.234.40)
2021-11-23 11:31:39 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 264 seconds)
2021-11-23 11:31:52 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving)
2021-11-23 11:31:57 +0100 <dminuoso> servant generic question. Say I have a record of routes `data MyAPI f = MyAPI { route1 :: f :- ... }, and some wrapper `type API = "api" :> "v1" :> ToServantApi MyAPI`, how can I run a server with `API` instead?
2021-11-23 11:34:51 +0100 <dminuoso> For clients its obvious since `client` takes a proxy, but the generics server code demands a record instead https://hackage.haskell.org/package/servant-server-0.18.3/docs/Servant-Server-Generic.html#v:gener…
2021-11-23 11:35:35 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-23 11:35:55 +0100cls(~cls@chalk.lubutu.com) (Quit: leaving)
2021-11-23 11:35:58 +0100Guest9226(~Guest92@178-78-205-86.customers.ownit.se) (Quit: Client closed)
2021-11-23 11:43:03 +0100glguy_(x@libera/staff/glguy)
2021-11-23 11:43:25 +0100glguy(x@libera/staff/glguy) (Read error: Connection reset by peer)
2021-11-23 11:46:01 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-23 11:48:27 +0100xff0x(~xff0x@2001:1a81:52f2:7200:812:ece5:6349:588e) (Ping timeout: 264 seconds)
2021-11-23 11:49:47 +0100mmhat(~mmh@55d42af1.access.ecotel.net)
2021-11-23 11:50:23 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 11:55:00 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 268 seconds)
2021-11-23 12:01:31 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-11-23 12:01:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-23 12:02:09 +0100atwm(~andrew@178.197.234.40) (Quit: WeeChat 3.3)
2021-11-23 12:02:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 12:04:03 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 264 seconds)
2021-11-23 12:04:32 +0100atwm(~andrew@178.197.234.40)
2021-11-23 12:04:52 +0100 <idnar> kritzefitz: hah, I have every one of those extensions on
2021-11-23 12:05:07 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 12:05:52 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 12:06:36 +0100burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-11-23 12:09:05 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-23 12:09:48 +0100atwm(~andrew@178.197.234.40)
2021-11-23 12:13:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-11-23 12:13:50 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 12:13:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 12:14:06 +0100atwm(~andrew@178.197.234.40)
2021-11-23 12:17:28 +0100 <arahael> Oh, stack's weird. I should stop using it, ever had this error on nix?
2021-11-23 12:17:37 +0100 <arahael> arahael@nixos ~/s/dynip [1]> stack --system-ghc build
2021-11-23 12:17:39 +0100 <arahael> I don't know how to install GHC on your system configuration, please install manually
2021-11-23 12:17:48 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 12:18:04 +0100atwm(~andrew@178.197.234.40)
2021-11-23 12:18:05 +0100 <maerwald> arahael: nothing works correctly inside nix, except nix
2021-11-23 12:18:08 +0100 <maerwald> :p
2021-11-23 12:18:24 +0100 <dminuoso> Ah I think I finally figured the servant bit out
2021-11-23 12:18:32 +0100 <arahael> maerwald: I can't argue that! :D
2021-11-23 12:18:37 +0100 <arahael> Against that, rather.
2021-11-23 12:19:03 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 12:19:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-23 12:19:17 +0100 <arahael> maerwald: I made the mistake of trying to rebuild an old project, back when I was using stack.
2021-11-23 12:19:34 +0100 <arahael> stack has nix integration? Awesome. No, not awesome. Really bad. Shockingly bad.
2021-11-23 12:19:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 12:19:43 +0100 <arahael> Stopped using it, but it was working fine, until I upgraded nix.
2021-11-23 12:19:59 +0100 <maerwald> try: stack --system-ghc --no-install-ghc
2021-11-23 12:20:20 +0100 <maerwald> it'll probably tell you there is no ghc
2021-11-23 12:20:45 +0100xff0x(~xff0x@2001:1a81:52f2:7200:812:ece5:6349:588e)
2021-11-23 12:20:48 +0100 <arahael> Yeah, it told me to try using --system-ghc, or --install-ghc.
2021-11-23 12:21:05 +0100 <arahael> I've got it using a shell.nix, though. And shell.nix clearly defines one.
2021-11-23 12:21:27 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-11-23 12:21:29 +0100 <maerwald> did you try the command?
2021-11-23 12:21:48 +0100 <arahael> > stack --system-ghc --no-install-ghc build
2021-11-23 12:21:50 +0100 <lambdabot> error: Variable not in scope: stack
2021-11-23 12:21:51 +0100 <arahael> No compiler found, expected minor version match with ghc-8.6.5 (x86_64) (based on resolver setting in /home/arahael/src/dynip/stack.yaml).
2021-11-23 12:22:17 +0100 <maerwald> do you have `ghc-8.6.5` in scope?
2021-11-23 12:22:22 +0100pfurla(~pfurla@201.17.118.230)
2021-11-23 12:22:33 +0100 <arahael> No, so it has to be named like that?
2021-11-23 12:22:35 +0100 <maerwald> yes
2021-11-23 12:22:56 +0100 <maerwald> and GHC makes sure that's the case
2021-11-23 12:23:02 +0100 <maerwald> so it's nix fault
2021-11-23 12:26:09 +0100 <dminuoso> Is there a cute way to launch ghci in some arbitrary spot and have it behave as some nice repl?
2021-11-23 12:27:09 +0100 <dminuoso> What Im thinking of, is launching my program inside GHCi, but with some sort of IO action that will cause GHCi to stop and wait for input
2021-11-23 12:28:59 +0100 <arahael> maerwald: I'm thinking I need to de-stack'ify this project, it's just too hard to figure out how to figure out stack and nix. I should convert it to plain cabal.
2021-11-23 12:29:24 +0100 <arahael> maerwald: It's just so weird because stack claims to support nix, and yet, almost every single time, stack's idea of what ghc versions shoudl exist... Don't.
2021-11-23 12:29:43 +0100 <maerwald> there's no way to reasonably support nix
2021-11-23 12:29:52 +0100 <arahael> maerwald: It should either support nix, or not at all.
2021-11-23 12:30:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-23 12:30:47 +0100 <arahael> I get conflicted about nix - the philosophy seems nice, but... I've used it on-and-off for over 2 years now. And I still have no idea what I'm doing with it.
2021-11-23 12:30:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 12:31:39 +0100lagash(lagash@lagash.shelltalk.net) (Ping timeout: 264 seconds)
2021-11-23 12:32:42 +0100 <maerwald> there's an easy way to figure out if a project has a completely broken build system: if the README instructs you to use nix.
2021-11-23 12:33:17 +0100 <maerwald> e.g. ghcjs :p
2021-11-23 12:33:45 +0100 <arahael> Ha. Yeah, crazy thing is, this system _is_ nixos.
2021-11-23 12:33:50 +0100 <arahael> And it's still impossible.
2021-11-23 12:34:21 +0100 <arahael> Actually nixos is quite nice, but man, the language is complicated.
2021-11-23 12:34:22 +0100 <maerwald> Even nix followers don't use NixOS as their primary OS anymore
2021-11-23 12:34:37 +0100atwm(~andrew@178.197.234.40)
2021-11-23 12:34:37 +0100 <arahael> Yeah, I've already been thinking of moving away from it.
2021-11-23 12:37:54 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 12:38:34 +0100atwm(~andrew@178.197.234.40)
2021-11-23 12:39:11 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-23 12:39:28 +0100gentauro(~gentauro@user/gentauro)
2021-11-23 12:41:07 +0100fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-11-23 12:42:28 +0100fr33domlover(~fr33@2.55.141.188)
2021-11-23 12:50:26 +0100enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2021-11-23 12:52:03 +0100atwm(~andrew@178.197.234.40) (Ping timeout: 264 seconds)
2021-11-23 12:56:02 +0100 <albet70> what's a linked list?
2021-11-23 12:56:32 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-11-23 12:56:41 +0100 <merijn> maerwald: I have a much easier heuristic
2021-11-23 12:56:45 +0100 <merijn> maerwald: "const True"
2021-11-23 12:57:09 +0100 <merijn> Every project I joined in my life had entirely broken build systems when I started, because no one seems to care
2021-11-23 12:57:47 +0100fef(~thedawn@user/thedawn)
2021-11-23 12:58:06 +0100 <geekosaur> the build systen's usually an afterthought, something to be endured to get to the good parts
2021-11-23 12:59:04 +0100atwm(~andrew@178.197.234.40)
2021-11-23 12:59:07 +0100 <merijn> I spent *a lot* (well, it felt like that initially) of effort on the build system for my phd codebase and never regretted it
2021-11-23 12:59:26 +0100 <merijn> In 6 years I've had, maybe, 4 times where things broke down (which I then quickly fixed)
2021-11-23 12:59:52 +0100 <merijn> But as soon as you tolerate *any* breakage to the build system, you're doomed forever
2021-11-23 12:59:55 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 13:00:12 +0100atwm(~andrew@178.197.234.40)
2021-11-23 13:01:27 +0100 <Cajun> albet70: linked list = a form of list (collection, if you like) that has an object/thing and a pointer to the memory address to the next thing (or a thunk in haskell's case). this indirection is why linked lists arent used, but sometimes these lists can be entirely removed during compilation and optimization
2021-11-23 13:01:44 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-11-23 13:03:09 +0100benin(~benin@183.82.179.164) (Quit: Ping timeout (120 seconds))
2021-11-23 13:03:26 +0100 <arahael> merijn: I'm inclined to agree. I'm one of those people who keep flitting from system to system, and they're all sucky once you go around the edges. As maerwald said, nix only works with nix. Same is true for pretty much everything.
2021-11-23 13:03:28 +0100benin(~benin@183.82.179.164)
2021-11-23 13:03:31 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 13:03:39 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-11-23 13:04:11 +0100atwm(~andrew@178.197.234.40)
2021-11-23 13:06:23 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 13:06:34 +0100 <arahael> I gave up with stack, incidentially. The shell.nix seems to have everythign I need, so I ended up going in and just doing a cabal build directly. stack was giving me no benefit. Lets see how the build goes.
2021-11-23 13:07:09 +0100atwm(~andrew@178.197.234.40)
2021-11-23 13:08:37 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-23 13:09:25 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 13:12:59 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-23 13:14:39 +0100 <albet70> "🟢 Cajun :albet70: linked list = a form of list (collection, if you like) that has an object/thing and a pointer to the memory address to the next thing (or a thunk in haskell's case). this indirection is why linked lists arent used, but sometimes these lists can be entirely removed during compilation and optimization", an object and a pointer in a list? they are different type?
2021-11-23 13:14:51 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 264 seconds)
2021-11-23 13:15:16 +0100 <arahael> Yep. WOrked perfectly. Zero benefit to stack.
2021-11-23 13:16:32 +0100 <Cajun> imagine in an object of thealbet70: linked list there is the thing you want (lets say candy) and something pointing you to more things you want (so more candy). you first get the first thing then follow the pointers onwards until you hit your next piece, and so on. you as the user of the linked list dont see this pointer, but behind the scenes its
2021-11-23 13:16:32 +0100 <Cajun> there and its why it is so slow
2021-11-23 13:16:55 +0100 <Cajun> there is a good (but albeit long winded) computerphile video about linked lists you should watch
2021-11-23 13:17:14 +0100 <Cajun> s/but albeit/albeit
2021-11-23 13:17:41 +0100 <tomsmeding> albet70: https://www.alphacodingskills.com/imgfiles/linked-list.PNG
2021-11-23 13:18:33 +0100 <Cajun> yeah that, its far easier with an image
2021-11-23 13:18:42 +0100atwm(~andrew@178.197.234.40)
2021-11-23 13:19:12 +0100 <Cajun> arrays are just better most of the time, but if the intermediate list can be entirely removed then default lists are quite good
2021-11-23 13:22:12 +0100 <Cajun> and if you want to dive into the really cool array representation rabbit hole, `massiv` (newer) or `repa` (older) should be a good starting point. they are arrays that have delayed representations which can be removed during compilation
2021-11-23 13:23:12 +0100 <Cajun> though sadly there arent many resources which talk about these forms of delayed arrays, which is really strange
2021-11-23 13:24:24 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-11-23 13:24:48 +0100abrantesasf(~abrantesa@187.36.170.211)
2021-11-23 13:25:24 +0100 <arahael> merijn: What's your favorite build system, btw? Though I suspect most of them are fine, as long as they're kept perfect.
2021-11-23 13:25:58 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-23 13:27:27 +0100atwm(~andrew@178.197.234.40) (Quit: WeeChat 3.3)
2021-11-23 13:27:42 +0100atwm(~andrew@178.197.234.40)
2021-11-23 13:27:48 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 13:33:04 +0100 <merijn> arahael: At the moment it is still "carefully handcrafted (g)make"
2021-11-23 13:33:28 +0100 <arahael> You keep it simple. Nice.
2021-11-23 13:33:33 +0100 <merijn> I'm looking for an excuse to play with Shake, but pragmatically gmake is the most reasonable
2021-11-23 13:33:36 +0100 <merijn> arahael: hah
2021-11-23 13:33:40 +0100 <merijn> No I don't :p
2021-11-23 13:34:01 +0100 <arahael> Heh. I sometimes think of making myself a monorepo, or at least, a master repo that builds everything I have.
2021-11-23 13:34:31 +0100arjun(~user@user/arjun)
2021-11-23 13:34:34 +0100 <arahael> And I sometimes consider shake as the build system - I used to consider using nix for this, but nix has proven to be too complex.
2021-11-23 13:34:38 +0100 <merijn> arahael: I actually have makefiles fetching repos for me :p
2021-11-23 13:34:41 +0100 <Cajun> whats gmake compared to make? is it just gnu make? but i thought gnu make was the only form of make..?
2021-11-23 13:34:43 +0100 <arahael> merijn: Nice.
2021-11-23 13:35:04 +0100 <arahael> Cajun: There's a lot of different makes, including microsoft's, borland's, bsd's...
2021-11-23 13:35:08 +0100 <merijn> Cajun: The make on BSD, Solaris, and some other platforms are *not* GNU make
2021-11-23 13:35:22 +0100 <merijn> And the make interface/grammar is...rather underspecified
2021-11-23 13:35:28 +0100 <arahael> Cajun: Default make for a long time for me was borland make. Which I tried to ignore. :)
2021-11-23 13:35:46 +0100 <Cajun> now im scared of the world of make lol
2021-11-23 13:35:53 +0100 <merijn> So rather than limiting myself to a barebones, underspecified format it's easier to simply say "GNU make"
2021-11-23 13:36:15 +0100 <arahael> merijn: You'll still need the gnu tools, too, I guess - but that's relatively easy to install these days, I suspect.
2021-11-23 13:36:32 +0100 <hpc> step 1 - use linux, step 2 - there is no step 2 :D
2021-11-23 13:36:44 +0100 <merijn> Cajun: I mean, the general target, dependency, recipe formula is the same, but POSIX make doesn't standardise: conditionals, no built in functions, etc.
2021-11-23 13:36:54 +0100 <merijn> Only a limited form of automatic variables
2021-11-23 13:36:57 +0100 <merijn> hpc: Never >.<
2021-11-23 13:36:57 +0100 <arahael> I sometimes think of using nix as my build system, but... The more I learn nix, the more I realise what it wants to do, and the more I wonder: Why don't they just use haskell?
2021-11-23 13:37:15 +0100 <merijn> arahael: You just need GNU make, tbh. And that's easily installed anywhere
2021-11-23 13:37:31 +0100 <hpc> yeah, nix is perpetually on my list
2021-11-23 13:37:33 +0100 <merijn> It's already on most/all unix systems and even on BSD it's easy to install, since many ports rely on it
2021-11-23 13:37:34 +0100 <Cajun> isnt there something for nix with haskell? i remember hearing that tossed around here a while back
2021-11-23 13:37:56 +0100 <arahael> Cajun: In practice it's a stinking mess, in my experience. Everything is super complex.
2021-11-23 13:37:59 +0100 <merijn> oh, no include in POSIX make either
2021-11-23 13:38:10 +0100 <hpc> getting a good rpm/deb setup might be better in practice
2021-11-23 13:38:26 +0100 <arahael> Cajun: Just now, I've given up trying to figure out how to use a different ghc in a nix shell.nix for cabal, and that's supposed to be one of the easiest things to do with it!
2021-11-23 13:38:33 +0100 <merijn> arahael: The trick I rely on a lot now is combination of including makefiles and makefiles generated via make
2021-11-23 13:38:57 +0100atwm(~andrew@178.197.234.40) (Read error: Connection reset by peer)
2021-11-23 13:39:18 +0100 <merijn> arahael: The crucial part is to abandon the heretical (yet mainstream) ways of "recursively invoking make"
2021-11-23 13:39:20 +0100Everything(~Everythin@37.115.210.35)
2021-11-23 13:39:22 +0100 <merijn> That way lies madness
2021-11-23 13:39:39 +0100 <merijn> If any of your recipes ever invokes make, you done fucked up
2021-11-23 13:39:56 +0100 <__monty__> arahael: `haskell.compiler.ghcXYZ.ghcWithPackages [...]`?
2021-11-23 13:40:10 +0100 <arahael> merijn: How do you include makefiles, especially makefiles generated via make?
2021-11-23 13:40:27 +0100 <arahael> __monty__: Yeah, thing is, I needed it in *stack*'s shell.nix.
2021-11-23 13:40:46 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 260 seconds)
2021-11-23 13:41:13 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-11-23 13:41:54 +0100 <__monty__> arahael: The stack repo doesn't seem to have a shell.nix?
2021-11-23 13:42:11 +0100 <merijn> arahael: GNU make will, if you include a non-existent file it has a recipe for, run the recipe for that file, then rerun the original invocation
2021-11-23 13:42:13 +0100 <arahael> __monty__: https://docs.haskellstack.org/en/v1.2.0/nix_integration/#using-a-custom-shellnix-file
2021-11-23 13:42:23 +0100 <merijn> arahael: So it effectively JIT generates the makefiles you're including
2021-11-23 13:42:32 +0100 <arahael> merijn: That's nifty.
2021-11-23 13:42:40 +0100phma(phma@2001:5b0:211b:e388:ee5a:511e:22c4:3b06) (Read error: Connection reset by peer)
2021-11-23 13:42:43 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 13:43:24 +0100 <arahael> At work I've used Fake and Rake, not so bad, though people have a tendency to make the build too complex.
2021-11-23 13:43:28 +0100phma(phma@2001:5b0:212a:9168:d8ac:a312:b259:ce6e)
2021-11-23 13:44:28 +0100 <hpc> language-specific make packages are never as good as the real thing imo
2021-11-23 13:44:28 +0100 <merijn> the setup in my phd repo is a bit hack-y (but can't be arsed to change it, because it Just Works). For work I wrote a new thing from scratch with some actual documentation but it's...hard for some people to wrap their head around it :p
2021-11-23 13:44:29 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
2021-11-23 13:44:30 +0100 <arahael> I still want to play with shake, though, so I'll probably go with that - my difficulty with getting haskell on my Rpi3 (musl based distro) gives me a small pause, but I reckon that if I don't have haskell on the system, then most of my personal projects won't build anyway.
2021-11-23 13:44:55 +0100 <arahael> merijn: People struggle with declarative systems for some reason.
2021-11-23 13:45:22 +0100 <merijn> arahael: Well, it's more that I'm incredibly demanding and throwing more complicated things at the problem to make it "work how I want"
2021-11-23 13:45:25 +0100 <arahael> merijn: I found Rake pretty good, as an example, but people ended up trying to use it as an imperative build language, with hacks on hacks. Just became big and complex fast.
2021-11-23 13:45:43 +0100 <arahael> Hmm, maybe.
2021-11-23 13:45:46 +0100 <merijn> Which is: 1) no recursive make invocations, 2) make in any random sub directory should do something sensible
2021-11-23 13:46:01 +0100 <merijn> It requires a bit of galaxy brain thinking to make those two work :p
2021-11-23 13:46:23 +0100 <arahael> merijn: I seemed to understand it the moment you mentioned that gnu-specific make feature.
2021-11-23 13:47:33 +0100m1dnight(~christoph@christophe.dev) (Quit: WeeChat 3.1)
2021-11-23 13:47:43 +0100 <merijn> arahael: So I have a Makefile in every dir (for case 2), but it always ties into the main one via include and hackery
2021-11-23 13:48:13 +0100m1dnight(~christoph@christophe.dev)
2021-11-23 13:48:22 +0100 <merijn> arahael: I include everything from the main one: https://github.com/merijn/Belewitte/blob/master/Makefile and then have a few "composable" ones that are used for the rest: https://github.com/merijn/Belewitte/tree/master/makefiles
2021-11-23 13:48:22 +0100 <arahael> You're starting to loose me a bit there~
2021-11-23 13:48:22 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-23 13:48:31 +0100 <__monty__> arahael: I assume you've tried providing a default value for the ghc argument? I'm not sure how that interacts with stack though tbqh.
2021-11-23 13:49:21 +0100 <arahael> __monty__: And that's the trouble. How would you find out? There's no compile step to statically check for you. There's no type holes. There's... Not even any documentation.
2021-11-23 13:49:41 +0100atwm(~andrew@178.197.234.40)
2021-11-23 13:49:56 +0100xff0x(~xff0x@2001:1a81:52f2:7200:812:ece5:6349:588e) (Ping timeout: 245 seconds)
2021-11-23 13:50:05 +0100 <arahael> __monty__: As for the default, yeah, trouble is, the default produces a compiler called 'ghc', which has two problems: 1) It's not called ghc-8.6.5, and 2) It's the wrong version.
2021-11-23 13:50:06 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-23 13:50:06 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-23 13:50:36 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-23 13:50:40 +0100 <arahael> Blegh. And my local haskell is broken. I should get to bed, nearly midnight and all. Bleghness.
2021-11-23 13:50:58 +0100 <__monty__> No, I meant something like, after moving the nixpkgs import up, `{ghc ? pkgs.haskell.compiler.ghcXYZ}: ...`
2021-11-23 13:51:09 +0100 <arahael> That is, my ghc on my mac is now broken. My LLVM's too new.
2021-11-23 13:51:30 +0100img(~img@user/img)
2021-11-23 13:51:52 +0100 <arahael> __monty__: That's the other thing, I've never quite understood that. How does it know what pkgs is?
2021-11-23 13:52:02 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 260 seconds)
2021-11-23 13:52:22 +0100 <arahael> __monty__: There's simply too much *magic* in nix. Sometimes it's pkgs, sometimes it's <nixpkgs>, and those angle-brackets are *part* of the name, and sometimes it's who knows what.
2021-11-23 13:52:52 +0100boxscape_(~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de)
2021-11-23 13:53:28 +0100 <__monty__> arahael: Because of the `with`, you open up the attrset you import nixpkgs, feed it `{}`, get an attrset and then open that up to put all of its attributes in scope.
2021-11-23 13:53:41 +0100 <arahael> __monty__: I've even got a patch accepted in nix's documentation, correcting the way people run stuff inside a nix shell, using some obscure bash features: eval ${foo:foo} (from memory)
2021-11-23 13:54:08 +0100 <__monty__> I think you'd benefit from reading the Nix pills. These are very syntax-level issues.
2021-11-23 13:54:23 +0100 <arahael> __monty__: I've read them about 4 times already over the past 2 years.
2021-11-23 13:55:17 +0100 <__monty__> Hmm, I wonder why it isn't sticking? The angle brackets are special syntax. They mean "Take the identifier in between <>, look it up in the NIX_PATH, set in your environment, and substitute the value."
2021-11-23 13:55:20 +0100 <merijn> __monty__: Well, maybe if they didn't make the syntax and surface level suck so much, I could consider actually recommending it to my colleagues >.<
2021-11-23 13:55:23 +0100 <arahael> __monty__: Despite being quite good at ruby, python, haskell (imho!), Go, Swift, C#... Something about nix just escapes me.
2021-11-23 13:55:59 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 250 seconds)
2021-11-23 13:56:20 +0100 <merijn> __monty__: Instead I find myself telling colleagues: Hey! This Nix idea would work *really* well for all the problems we're having...if it was actually usable by mere mortals...
2021-11-23 13:56:34 +0100 <__monty__> arahael: pkgs is just an attribute of the nixpkgs attrset you get. It's a little special in that it contains itself.
2021-11-23 13:56:47 +0100 <arahael> __monty__: Try parsing that sentence.
2021-11-23 13:56:55 +0100 <__monty__> merijn: Guix is close to Nix-but-with-nice-UX.
2021-11-23 13:57:34 +0100 <merijn> __monty__: So why aren't people pushing that?
2021-11-23 13:57:37 +0100 <__monty__> arahael: Which sentence? It's just a recursive data structure like `ones = 1 : ones`.
2021-11-23 13:57:47 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 13:57:57 +0100 <arahael> __monty__: I'm trying to parse it like this: "pkgs is... an attribute. It contians itself".
2021-11-23 13:58:09 +0100 <__monty__> merijn: Various reasons. The GNU stance on software freedom being the main pragmatic one.
2021-11-23 13:58:20 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-23 13:59:08 +0100 <merijn> __monty__: So does it actually have much besides GNU stuff in it? :p
2021-11-23 13:59:43 +0100img(~img@user/img)
2021-11-23 14:00:35 +0100 <arahael> __monty__: So what's the result of `head pkgs`, tehn?
2021-11-23 14:00:38 +0100 <arahael> *then
2021-11-23 14:00:53 +0100 <arahael> __monty__: See, I like to *know* what things need to be, not hack things and magically guess what they should be.
2021-11-23 14:02:09 +0100 <arahael> Things fall apart in *freaking weird* ways, and nobody knows whhy.
2021-11-23 14:03:27 +0100 <arahael> Consider the build phases - the one part of nix I think I understand: You can enter a nix shell, and you'll either need to run the various *phases, or you'll need to *eval* the various phases. It's weird.
2021-11-23 14:03:34 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-23 14:03:49 +0100Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-11-23 14:04:03 +0100jinsun__jinsun
2021-11-23 14:04:07 +0100 <__monty__> arahael: No, pkgs isn't a list. I just gave the simplest recursive data structure I could think of as an example.
2021-11-23 14:05:28 +0100 <__monty__> merijn: Anything with an FSF-approved license AFAIK? There's also an effort to package whatever HPC setups tend to need. (And there's a non-free packages repo but hush hush. And don't you dare ask for help with any problems encountered there.)
2021-11-23 14:05:42 +0100 <arahael> __monty__: I'm confused why shell.nix is even a function in the first place.
2021-11-23 14:06:08 +0100 <merijn> __monty__: Right, so that immediately renders it useless to me
2021-11-23 14:06:19 +0100 <__monty__> arahael: Just so you can customize it when entering a nix-shell.
2021-11-23 14:06:49 +0100 <arahael> __monty__: I wouldn't even know how. Luckily it's well documented! See the link I gave you? It says this: The buildStackProject utility function is documented in the Nixpkgs manual.
2021-11-23 14:06:57 +0100 <arahael> __monty__: But when I click on that link, it's nowhere to be seen.
2021-11-23 14:07:03 +0100 <__monty__> merijn: Didn't you want to use it as a build system? I'm not sure why you need lots of unfree dependencies.
2021-11-23 14:07:28 +0100 <merijn> __monty__: Because scientists use all sorts of shitty proprietary obscure bullshit
2021-11-23 14:07:57 +0100 <__monty__> arahael: That's an unfortunate consequence of the haskell infra documentation being move to https://haskell4nix.readthedocs.io/ because they wanted to be able to iterate on it faster.
2021-11-23 14:08:09 +0100 <merijn> __monty__: If I didn't have to be able to work with "proprietary, 15 year old undocumented nonsense", Nix wouldn't seem so appealing
2021-11-23 14:08:11 +0100 <arahael> __monty__: See, that doesn't help me.
2021-11-23 14:08:13 +0100 <__monty__> merijn: Those might fit the HPC project though.
2021-11-23 14:08:40 +0100 <arahael> __monty__: Infact, I don't think I've seen that page.
2021-11-23 14:09:31 +0100 <__monty__> You can find it via the Haskell section in the Nixpkgs manual. I agree it's bad for discoverability. But I don't have time to maintain the docs so whoever does gets to decide where they're hosted.
2021-11-23 14:09:49 +0100 <arahael> __monty__: Yet another reason nix isn't that useful in practice.
2021-11-23 14:10:02 +0100 <arahael> __monty__: You have to be "in the know" to understand it
2021-11-23 14:10:19 +0100 <__monty__> UX being terrible doesn't mean it's not useful.
2021-11-23 14:11:10 +0100 <arahael> __monty__: A terrible UX isn't so bad if the docs are good.
2021-11-23 14:11:21 +0100 <arahael> The trouble is it's not just the UX that's terrible.
2021-11-23 14:11:37 +0100 <__monty__> Docs are part of UX imo.
2021-11-23 14:11:39 +0100 <haruhimywife[m]> hello! just testing to see if anyone can read this, chatting from the matrix bridge
2021-11-23 14:11:50 +0100 <arahael> __monty__: Perhaps.
2021-11-23 14:12:00 +0100 <arahael> __monty__: It's consistently terrible, then! :)
2021-11-23 14:12:01 +0100 <merijn> __monty__: If I can't get anyone I work with to use it because the UX is terrible, then it is, in fact, not useful :)
2021-11-23 14:12:08 +0100 <arahael> ^^ That!
2021-11-23 14:12:16 +0100atwm(~andrew@178.197.234.40) (Quit: WeeChat 3.3)
2021-11-23 14:12:33 +0100atwm(~andrew@178.197.234.40)
2021-11-23 14:13:49 +0100 <arahael> And for various reasons, nix is really only usable on glibc-based linux systems.
2021-11-23 14:14:06 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 14:14:12 +0100 <merijn> And even things with terrible UX that do have people using them can be terrible enough to not be useful
2021-11-23 14:14:19 +0100 <merijn> (looking at you, git >.>)
2021-11-23 14:14:42 +0100 <arahael> Hey, git's useful!
2021-11-23 14:14:58 +0100 <merijn> arahael: If you're a masochist or stockholm syndromed >.>
2021-11-23 14:15:03 +0100 <geekosaur> the U in UX does not mean useful
2021-11-23 14:15:07 +0100 <arahael> merijn: My previous VCS was perforce.
2021-11-23 14:15:37 +0100 <geekosaur> oy
2021-11-23 14:15:41 +0100 <geekosaur> you may get a pass
2021-11-23 14:15:43 +0100atwm(~andrew@178.197.234.40)
2021-11-23 14:16:22 +0100 <__monty__> I use Nix on macOS so I have to disagree about only being useful on glibc Linux.
2021-11-23 14:16:47 +0100 <arahael> __monty__: I tried Nix on High Sierra. It was OK, but it kept breaking.
2021-11-23 14:17:04 +0100 <__monty__> merijn: But Guix's UX isn't terrible. It's worth checking out if the only reason you're reluctant to use Nix is the lacking UX.
2021-11-23 14:17:23 +0100 <arahael> __monty__: At teh end of the day, nix is just a build system.
2021-11-23 14:17:50 +0100 <dminuoso> __monty__: I think Guix'x UX is terrible.
2021-11-23 14:17:51 +0100dminuososhrugs
2021-11-23 14:18:26 +0100 <__monty__> I never said it was better than sliced bread, arahael. If it doesn't work for you then ditch it.
2021-11-23 14:18:28 +0100 <arahael> __monty__: Anyway, so which pill do I need to read to understand how to write a shell.nix file for stack, such that I get ghc-8.6.5?
2021-11-23 14:18:33 +0100 <merijn> You can pry Mercurial from my cold, dead, shriveled hands >.>
2021-11-23 14:19:05 +0100 <__monty__> arahael: That's not what I meant. The Nix pills would explain what the <> syntax is about. And with/inherit/attrset/etc.
2021-11-23 14:19:11 +0100 <merijn> Unless you magicced the whole world into finally innnovating and moving on to something like Pijul, then it goes right into the trash
2021-11-23 14:19:21 +0100 <arahael> __monty__: The thing is, I have a task I want to achieve.
2021-11-23 14:19:23 +0100Topsi(~Tobias@dyndsl-095-033-021-206.ewe-ip-backbone.de)
2021-11-23 14:19:33 +0100 <arahael> __monty__: The obscurity of the nix system is interferring with that task.
2021-11-23 14:19:58 +0100burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-23 14:20:17 +0100 <arahael> __monty__: All I wanted to do was 'stack build'! As I have done every couple of months for the past 3 years!
2021-11-23 14:20:38 +0100 <arahael> (Unfortunately, I've updated my channels)
2021-11-23 14:21:35 +0100 <__monty__> arahael: And I'm only trying to help with that task. Move the nixpkgs import up, and add `? pkgs.haskell.compiler.ghcXYZ` after the ghc argument, see if that does what you want. The if it does and you want to understand better why it does, we can talk.
2021-11-23 14:21:46 +0100atwm(~andrew@178.197.234.40) (Quit: WeeChat 3.3)
2021-11-23 14:22:42 +0100 <arahael> __monty__: Yeah, considering it's past midnight I'm not goign to do that at the moment but I've taken note of the suggesetion. I did earlier try *adding* another import, though, which didn't work at all. I forget the error.
2021-11-23 14:23:15 +0100jbox(~jbox@user/jbox) (Ping timeout: 264 seconds)
2021-11-23 14:25:27 +0100 <arahael> I remember having a multi-hour investigation where I tried having a shell.nix and a default.nix include the same nix files. It was a disaster.
2021-11-23 14:25:29 +0100 <__monty__> Probably a syntax issue. Import is an expression in Nix, not a statement.
2021-11-23 14:26:24 +0100 <__monty__> Not sure why that would be hard. Usually shell.nix uses default.nix though, maybe you introduced some circularity?
2021-11-23 14:26:52 +0100 <arahael> I don't recall that being mentioned in the docs.
2021-11-23 14:27:21 +0100 <dminuoso> My main beef with nix and haskell is the part where they dont go well together. :(
2021-11-23 14:27:27 +0100jackdk(sid373013@cssa/jackdk) (Ping timeout: 264 seconds)
2021-11-23 14:27:30 +0100 <arahael> dminuoso: Which is all the parts. :(
2021-11-23 14:27:34 +0100 <dminuoso> Realistically you have to use haskell.nix if you dont want to go insane
2021-11-23 14:27:37 +0100bjs(sid190364@user/bjs) (Ping timeout: 250 seconds)
2021-11-23 14:27:51 +0100 <arahael> dminuoso: Yeah, and I generally try to figure things out "from scratch". And I go insane.
2021-11-23 14:28:13 +0100 <arahael> Heck. I spent a week trying to figure out why 'unpack_phase' didn't work as it was documented to.
2021-11-23 14:28:17 +0100jackdk(sid373013@cssa/jackdk)
2021-11-23 14:28:21 +0100 <dminuoso> arahael: The problem isnt lack of documentation
2021-11-23 14:28:22 +0100bjs(sid190364@user/bjs)
2021-11-23 14:28:22 +0100arjun(~user@user/arjun) (ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
2021-11-23 14:28:34 +0100 <dminuoso> It's rather that haskellPackages has some fundamentally broken sides to it.
2021-11-23 14:28:58 +0100 <arahael> dminuoso: I've noticed that _most_ of the sub-ecosystems in nix have broken stuff to it like that.
2021-11-23 14:29:10 +0100 <dminuoso> Dunno
2021-11-23 14:29:18 +0100 <dminuoso> arahael: As broken and evil as doJailbreak?
2021-11-23 14:29:30 +0100 <dminuoso> That thing doesnt just exist to please users, its used in haskellPackages in a multitude of packages
2021-11-23 14:29:38 +0100 <dminuoso> And that has some severe implications
2021-11-23 14:29:47 +0100 <arahael> Ah, maybe haskell's stuff is even worse.
2021-11-23 14:30:05 +0100hiruji`(~hiruji@2606:6080:1002:4:88e7:e893:3692:25d2) (Read error: Connection reset by peer)
2021-11-23 14:31:03 +0100 <arahael> As an example, I've yet to figure out how to use python *and* haskell *and* something else in teh same build, because they tend to have mutually exclusive buildShitWithShit.
2021-11-23 14:33:45 +0100hiruji(~hiruji@user/hiruji)
2021-11-23 14:36:11 +0100wei2912(~wei2912@116.88.103.128)
2021-11-23 14:36:30 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-11-23 14:36:34 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
2021-11-23 14:37:15 +0100xff0x(~xff0x@2001:1a81:52f2:7200:e03c:a5df:843b:e9fd)
2021-11-23 14:38:13 +0100yuri(~yuri@nat-0-31.msu.umos.ru)
2021-11-23 14:38:46 +0100 <arahael> __monty__: Don't get me wrong, I'm just tired. Perhaps next week I'll have another hour to go through this again.
2021-11-23 14:39:29 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 14:40:18 +0100 <arahael> Though frankly, I might just try that new website and ignore stack. Stack's broken, imho.
2021-11-23 14:42:16 +0100 <arahael> merijn: I hope I didn't annoy people too much - G'night!
2021-11-23 14:42:28 +0100 <__monty__> If it's for development, haskell.nix is really the much better option.
2021-11-23 14:42:45 +0100 <arahael> __monty__: Yeah, it's for dev.
2021-11-23 14:43:01 +0100 <arahael> I just wanted to stack build, and stack install, and then get to bed 2 hours ago
2021-11-23 14:43:09 +0100 <__monty__> The Haskell infra in Nixpkgs suffers from trying to provide *every* package on Hackage but with the Stackage model of having everything build together. And that's simply not possible.
2021-11-23 14:43:36 +0100 <__monty__> arahael: Fair warning though, haskell.nix also has documentation bumps in the road : )
2021-11-23 14:44:14 +0100 <arahael> __monty__: Yeah, well, hoepfully those are on edge cases. I'm just quite annoyed where stack has *explicit* support for nix, and it can't even get the compiler right.
2021-11-23 14:44:43 +0100 <arahael> And not only that, it still broke completely because of an unrelated channel update I did who knows when however many months ago.
2021-11-23 14:45:08 +0100 <__monty__> That channel bump probably had a different default GHC version.
2021-11-23 14:45:16 +0100 <arahael> Oh, it did.
2021-11-23 14:45:22 +0100 <arahael> But not only that, but it no-longer had ghc865.
2021-11-23 14:46:00 +0100 <arahael> My approach before was to randomly try different stackage versions until I magically got one that has a matching ghc.
2021-11-23 14:46:03 +0100 <arahael> Build, get to bed.
2021-11-23 14:46:20 +0100 <arahael> Well, I guess I'll pin all the things.
2021-11-23 14:46:31 +0100hiruji(~hiruji@user/hiruji) (Read error: Connection reset by peer)
2021-11-23 14:47:55 +0100azimut_(~azimut@gateway/tor-sasl/azimut)
2021-11-23 14:48:52 +0100 <arahael> __monty__: This was my attempt to to that: https://stackoverflow.com/a/56180220/52273
2021-11-23 14:49:22 +0100 <arahael> __monty__: Which I had to modify quite a bit because it turns out that a lot has changed since... 2 years ago.
2021-11-23 14:49:22 +0100hiruji(~hiruji@user/hiruji)
2021-11-23 14:50:24 +0100 <arahael> __monty__: Which brings up another point - all these .nix files are so crazy different. Sometimes they're a function. Sometimes they're not. Sometimes they're called as part of a buildPackage, and I've learned that I can't use nixpkg's themselves as a reference because a lot of their stuff only works within nixpkgs.
2021-11-23 14:51:17 +0100 <__monty__> Yes, that's the flipside to Nix being a DSL rather than just key-value configuration.
2021-11-23 14:52:00 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-11-23 14:52:06 +0100 <arahael> __monty__: Somehow, I don't have this issue with... Pretty much any other system I've used (though I've not used Guix)
2021-11-23 14:53:08 +0100nabaiste^(~nabaiste@68.101.63.101) ()
2021-11-23 14:53:40 +0100 <arahael> Actually I do recall *one* other build system I've found almost as difficult.
2021-11-23 14:54:04 +0100 <__monty__> Well, it's not as if make can't get complicated. Have you ever seen GHC's make build system?
2021-11-23 14:54:48 +0100 <arahael> __monty__: No, but here's the thing. I can understand make. Ah, just remembered the other build system I found complex: Gradle.
2021-11-23 14:54:52 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-23 14:55:00 +0100burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-11-23 14:55:09 +0100 <arahael> But Grable's just badly documented. It's possible to figure out
2021-11-23 14:55:25 +0100chenjf(~chenjf@104.208.72.114)
2021-11-23 14:55:31 +0100 <__monty__> I doubt you'd say you can understand make after looking at GHC's make build system : )
2021-11-23 14:55:45 +0100 <arahael> Doesn't GHC's make system also use shake?
2021-11-23 14:56:22 +0100 <arahael> Hell. I Understand *xcode*'s build system.
2021-11-23 14:56:31 +0100 <__monty__> No, Hadrian is a build system implemented in parallel because the make build system got so complicated.
2021-11-23 14:56:46 +0100alx741(~alx741@186.178.108.244) (Quit: alx741)
2021-11-23 14:57:03 +0100alx741(~alx741@186.178.108.244)
2021-11-23 14:57:04 +0100 <arahael> Ok, well, this Hadrian... Do non-GHC-core-devs need to know it?
2021-11-23 14:57:26 +0100 <arahael> Does any other system use it?
2021-11-23 14:57:38 +0100 <arahael> If the answer's no, then I'd say it's complexity is somewhat contained.
2021-11-23 14:58:03 +0100 <__monty__> Not AFAIK. I assume other project would spin their own version of a Shake build system. Just like how I don't expect GCC's make build system to be reused.
2021-11-23 14:58:14 +0100 <arahael> Yeah. By contrast, nix...
2021-11-23 14:58:38 +0100chenjf(~chenjf@104.208.72.114) (Client Quit)
2021-11-23 14:58:47 +0100 <__monty__> Nix's goal is very different though. They're trying to package all the software out there in a declarative way.
2021-11-23 14:59:38 +0100 <arahael> Yeah, they were originally trying to do it portably, too, but so far they only have it working *in a pragmatic sense*, in glibc-linux, and sure, macos.
2021-11-23 15:01:03 +0100burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 264 seconds)
2021-11-23 15:01:43 +0100atwm(~andrew@178.197.234.40)
2021-11-23 15:02:20 +0100 <arahael> Ok, I'm getting to bed, and I'm leaving this in a tab for my future reference: https://stackoverflow.com/a/56305341/52273 - A lot of lines just to pin a single ghc version, but it seems clearer.
2021-11-23 15:03:25 +0100 <arahael> __monty__: Thanks for listening, even if I wasn't in a particularly good mood. Thanks.
2021-11-23 15:03:28 +0100 <arahael> G'night!
2021-11-23 15:03:49 +0100 <arahael> __monty__: (I appreciate it)
2021-11-23 15:04:16 +0100 <__monty__> np
2021-11-23 15:04:55 +0100hiruji(~hiruji@user/hiruji) (Read error: Connection reset by peer)
2021-11-23 15:06:24 +0100boxscape_(~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de) (Quit: Connection closed)
2021-11-23 15:06:45 +0100deadmarshal(~deadmarsh@95.38.113.89) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-23 15:07:09 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 15:08:06 +0100atwm(~andrew@178.197.234.40) (Quit: WeeChat 3.3)
2021-11-23 15:08:06 +0100pfurla(~pfurla@201.17.118.230) (Read error: Connection reset by peer)
2021-11-23 15:08:37 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d52:bf34:226e:199c)
2021-11-23 15:10:17 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-23 15:11:39 +0100reumeth(~reumeth@user/reumeth)
2021-11-23 15:14:18 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-23 15:14:30 +0100siers(~ij@user/ij) (Quit: ZNC 1.8.1 - https://znc.in)
2021-11-23 15:14:38 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-23 15:16:07 +0100siers(~ij@user/ij)
2021-11-23 15:18:43 +0100lexi-lambda(sid92601@id-92601.hampstead.irccloud.com)
2021-11-23 15:19:03 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Ping timeout: 264 seconds)
2021-11-23 15:20:00 +0100jkaye(~jkaye@c-71-205-220-154.hsd1.co.comcast.net)
2021-11-23 15:20:36 +0100atwm(~andrew@178.197.234.40)
2021-11-23 15:21:27 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 264 seconds)
2021-11-23 15:22:40 +0100ph88^(~ph88@ip5f5af068.dynamic.kabel-deutschland.de)
2021-11-23 15:23:51 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 276 seconds)
2021-11-23 15:25:15 +0100atwm(~andrew@178.197.234.40) (Client Quit)
2021-11-23 15:25:17 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-11-23 15:25:35 +0100atwm(~andrew@178.197.234.40)
2021-11-23 15:26:11 +0100ph88(~ph88@2a02:8109:9e00:71d0:8486:2f47:1ad1:518f) (Ping timeout: 245 seconds)
2021-11-23 15:26:47 +0100hiruji(~hiruji@user/hiruji)
2021-11-23 15:33:11 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-23 15:33:11 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-23 15:33:11 +0100wroathe(~wroathe@user/wroathe)
2021-11-23 15:35:46 +0100yuri(~yuri@nat-0-31.msu.umos.ru) (Ping timeout: 245 seconds)
2021-11-23 15:35:56 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d52:bf34:226e:199c) (Quit: gone to sleep. ZZZzzz…)
2021-11-23 15:36:10 +0100yuri(~yuri@nat-0-31.msu.umos.ru)
2021-11-23 15:38:20 +0100obs\(~obscur1ty@156.192.160.204)
2021-11-23 15:38:20 +0100obs\(~obscur1ty@156.192.160.204) (Changing host)
2021-11-23 15:38:20 +0100obs\(~obscur1ty@user/obs/x-5924898)
2021-11-23 15:38:59 +0100pfurla(~pfurla@201.17.118.230)
2021-11-23 15:41:19 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
2021-11-23 15:41:56 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-11-23 15:45:23 +0100atwm(~andrew@178.197.234.40) (Quit: WeeChat 3.3)
2021-11-23 15:45:31 +0100zer0bitz(~zer0bitz@dsl-hkibng31-54fabc-15.dhcp.inet.fi)
2021-11-23 15:46:12 +0100tomboy64(~tomboy64@user/tomboy64) (Quit: Off to see the wizard.)
2021-11-23 15:46:42 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 15:49:11 +0100tomboy64(~tomboy64@user/tomboy64)
2021-11-23 15:50:59 +0100lagash(lagash@lagash.shelltalk.net)
2021-11-23 15:53:05 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 15:54:31 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 245 seconds)
2021-11-23 15:55:03 +0100tnks(sid412124@helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 15:58:14 +0100tnks(sid412124@id-412124.helmsley.irccloud.com)
2021-11-23 15:59:26 +0100max22-(~maxime@2a01cb0883359800cde23c9f8e51e66f.ipv6.abo.wanadoo.fr)
2021-11-23 16:01:29 +0100atwm(~weechat@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-23 16:03:07 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-23 16:06:53 +0100atwm(~weechat@19-193-28-81.ftth.cust.kwaoo.net) (Quit: WeeChat 3.3)
2021-11-23 16:07:10 +0100atwm(~weechat@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-23 16:07:15 +0100Sgeo(~Sgeo@user/sgeo)
2021-11-23 16:08:19 +0100atwm(~weechat@19-193-28-81.ftth.cust.kwaoo.net) (Client Quit)
2021-11-23 16:09:25 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-23 16:10:04 +0100pfurla(~pfurla@201.17.118.230) (Quit: gone to sleep. ZZZzzz…)
2021-11-23 16:10:51 +0100 <maerwald[m]> "Declarative"
2021-11-23 16:11:08 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-11-23 16:14:45 +0100obs\(~obscur1ty@user/obs/x-5924898) (Leaving)
2021-11-23 16:24:10 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 260 seconds)
2021-11-23 16:26:06 +0100wroathe(~wroathe@user/wroathe)
2021-11-23 16:26:37 +0100cfricke(~cfricke@user/cfricke)
2021-11-23 16:31:10 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-11-23 16:32:06 +0100shryke(~shryke@91.103.43.254)
2021-11-23 16:33:56 +0100 <shryke> How do you deal with code like 'fmap (fmap getFirst) . businessLogicHere . fmap (fmap (fmap First))'? It does not seem too great for readability...
2021-11-23 16:34:06 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-23 16:34:46 +0100 <maralorn> Is there a reasonable way to use a concrete monad like (ReaderT env IO) in a way that a) ghc always knows it’s this monad and can optimize accordingly and b) I can restrict the capabilities of a function by the type signature?
2021-11-23 16:34:55 +0100 <shryke> coerce does not work here, no newtypes
2021-11-23 16:35:38 +0100 <[exa]> shryke: make the wrap into a function so that you can write it as `runOnFirst bussinesLogicHere`
2021-11-23 16:36:06 +0100 <[exa]> also there might be a lensy version of that :]
2021-11-23 16:36:09 +0100 <dminuoso> shryke: businessLogicHere transforms the shape?
2021-11-23 16:36:18 +0100 <dminuoso> Or did you miss one layer of fmap on the left hand side?
2021-11-23 16:36:37 +0100 <shryke> [exa]: Sorry, I was a bit unclear about my beef with this code - that triple 'fmap' bugs me
2021-11-23 16:36:44 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2021-11-23 16:36:55 +0100 <dminuoso> shryke: As a short gap you can write fmap3 = fmap . fmap . fmap
2021-11-23 16:37:09 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-11-23 16:37:27 +0100 <shryke> dminuoso: it changes the shape, yes. Essentially, businessLogic is 'foldr1 (liftA2 mappend)'
2021-11-23 16:37:29 +0100 <dminuoso> Though Id try and use a newtype wrapper here potentially, then you can use stuff like `ala`
2021-11-23 16:37:34 +0100 <dminuoso> Mmm
2021-11-23 16:37:50 +0100 <dminuoso> Then `fmap2 getFirst . businessLogicHere . fmap3 First`
2021-11-23 16:38:50 +0100 <shryke> I fear that lens-like solution would be on the same level of unreadability
2021-11-23 16:39:45 +0100 <[exa]> shryke: the internal-est functor is actually a foldable or traversable right?
2021-11-23 16:41:11 +0100acidjnk(~acidjnk@p200300d0c7271e823d8ddc81d8ce7005.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-11-23 16:41:30 +0100 <shryke> exa: both, actually=)
2021-11-23 16:42:03 +0100 <shryke> dminuoso: I'll write down that fmap2/3 idea, thanks
2021-11-23 16:44:41 +0100 <[exa]> shryke: if businessLogic actually requires the whole 3 levels of functors then the fmap3/fmap2 is probably the easiest way; if it's somehow separable, lensing the way through could look nice (with e.g. State that allows you to carry some information through the whole structure)
2021-11-23 16:45:56 +0100 <[exa]> the main question is if the 1st and 2nd levels of fmap can be joined together somehow, i.e. if there's something in the bussinessLogicHere (such as traverse) that could be fused with them
2021-11-23 16:50:42 +0100 <shryke> exa: Sorry, I do not quite understand your idea about separation and fusing =(
2021-11-23 16:51:05 +0100 <shryke> selectFirst :: Applicative m => NonEmpty (m (Validation (NonEmpty e) a)) -> m (Validation (NonEmpty e) a)
2021-11-23 16:51:07 +0100 <shryke> selectFirst = fmap (fmap getFirst) . foldr1 (liftA2 (<>)) . fmap (fmap (fmap First))
2021-11-23 16:51:34 +0100 <shryke> That's the whole code, with Validation coming from validate-selective
2021-11-23 16:57:01 +0100rubin55(sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 245 seconds)
2021-11-23 16:57:22 +0100rubin55(sid175221@id-175221.hampstead.irccloud.com)
2021-11-23 16:58:27 +0100wei2912(~wei2912@116.88.103.128) (Quit: Lost terminal)
2021-11-23 16:58:44 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:d444:3bcd:ae33:7f0) (Quit: WeeChat 2.8)
2021-11-23 16:59:13 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-23 17:00:11 +0100ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2) (Quit: You have been kicked for being idle)
2021-11-23 17:03:57 +0100S11001001(sid42510@ilkley.irccloud.com) (Ping timeout: 268 seconds)
2021-11-23 17:04:03 +0100mustafa(sid502723@rockylinux/releng/mustafa) (Ping timeout: 264 seconds)
2021-11-23 17:04:06 +0100hendi(sid489601@id-489601.lymington.irccloud.com) (Ping timeout: 245 seconds)
2021-11-23 17:04:31 +0100idnar(sid12240@debian/mithrandi) (Ping timeout: 245 seconds)
2021-11-23 17:04:50 +0100ProofTechnique(sid79547@id-79547.ilkley.irccloud.com) (Read error: Connection reset by peer)
2021-11-23 17:04:55 +0100cbarrett(sid192934@id-192934.helmsley.irccloud.com) (Ping timeout: 250 seconds)
2021-11-23 17:04:56 +0100lexi-lambda(sid92601@id-92601.hampstead.irccloud.com) (Ping timeout: 245 seconds)
2021-11-23 17:05:21 +0100elvishjerricco(sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 245 seconds)
2021-11-23 17:05:47 +0100S11001001(sid42510@5.254.36.60)
2021-11-23 17:05:51 +0100rubin55(sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 260 seconds)
2021-11-23 17:05:59 +0100glowcoil(sid3405@id-3405.tinside.irccloud.com) (Read error: Connection reset by peer)
2021-11-23 17:06:01 +0100mustafa(sid502723@rockylinux/releng/mustafa)
2021-11-23 17:06:12 +0100aarchi(sid486183@id-486183.uxbridge.irccloud.com) (Ping timeout: 265 seconds)
2021-11-23 17:06:13 +0100sa(sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 250 seconds)
2021-11-23 17:06:17 +0100ProofTechnique(sid79547@5.254.36.60)
2021-11-23 17:06:18 +0100gonz_____(sid304396@id-304396.lymington.irccloud.com) (Read error: Connection reset by peer)
2021-11-23 17:06:18 +0100enemeth79(sid309041@lymington.irccloud.com) (Read error: Connection reset by peer)
2021-11-23 17:06:27 +0100sa1_(sid7690@id-7690.ilkley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 17:06:27 +0100saolsen(sid26430@lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 17:06:27 +0100scav(sid309693@helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 17:06:43 +0100glowcoil(sid3405@id-3405.tinside.irccloud.com)
2021-11-23 17:06:53 +0100gonz_____(sid304396@id-304396.lymington.irccloud.com)
2021-11-23 17:06:55 +0100enemeth79(sid309041@id-309041.lymington.irccloud.com)
2021-11-23 17:06:58 +0100sa(sid1055@id-1055.tinside.irccloud.com)
2021-11-23 17:07:01 +0100tapas(sid467876@id-467876.ilkley.irccloud.com) (Ping timeout: 245 seconds)
2021-11-23 17:07:01 +0100edwardk(sid47016@haskell/developer/edwardk) (Ping timeout: 245 seconds)
2021-11-23 17:07:01 +0100typetetris(sid275937@id-275937.tinside.irccloud.com) (Ping timeout: 245 seconds)
2021-11-23 17:07:02 +0100SrPx(sid108780@uxbridge.irccloud.com) (Ping timeout: 268 seconds)
2021-11-23 17:07:10 +0100hendi(sid489601@id-489601.lymington.irccloud.com)
2021-11-23 17:07:26 +0100bw(sid2730@user/betawaffle) (Ping timeout: 245 seconds)
2021-11-23 17:07:26 +0100teehemkay(sid14792@id-14792.lymington.irccloud.com) (Ping timeout: 245 seconds)
2021-11-23 17:07:38 +0100elvishjerricco(sid237756@id-237756.helmsley.irccloud.com)
2021-11-23 17:07:38 +0100rubin55(sid175221@id-175221.hampstead.irccloud.com)
2021-11-23 17:07:40 +0100typetetris(sid275937@id-275937.tinside.irccloud.com)
2021-11-23 17:07:41 +0100aarchi(sid486183@id-486183.uxbridge.irccloud.com)
2021-11-23 17:07:44 +0100cbarrett(sid192934@id-192934.helmsley.irccloud.com)
2021-11-23 17:07:48 +0100sa1_(sid7690@id-7690.ilkley.irccloud.com)
2021-11-23 17:07:57 +0100SanchayanMaity(sid478177@id-478177.hampstead.irccloud.com) (Ping timeout: 250 seconds)
2021-11-23 17:08:11 +0100lexi-lambda(sid92601@id-92601.hampstead.irccloud.com)
2021-11-23 17:08:16 +0100bw(sid2730@user/betawaffle)
2021-11-23 17:08:18 +0100teehemkay(sid14792@id-14792.lymington.irccloud.com)
2021-11-23 17:08:33 +0100tapas(sid467876@id-467876.ilkley.irccloud.com)
2021-11-23 17:08:40 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-23 17:08:40 +0100idnar(sid12240@debian/mithrandi)
2021-11-23 17:08:44 +0100saolsen(sid26430@id-26430.lymington.irccloud.com)
2021-11-23 17:08:46 +0100edwardk(sid47016@haskell/developer/edwardk)
2021-11-23 17:08:57 +0100SrPx(sid108780@id-108780.uxbridge.irccloud.com)
2021-11-23 17:09:10 +0100scav(sid309693@id-309693.helmsley.irccloud.com)
2021-11-23 17:09:12 +0100SanchayanMaity(sid478177@id-478177.hampstead.irccloud.com)
2021-11-23 17:11:16 +0100tv(~tv@user/tv) (Read error: Connection reset by peer)
2021-11-23 17:11:48 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-23 17:16:11 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-11-23 17:16:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-11-23 17:16:52 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-23 17:20:57 +0100lavaman(~lavaman@98.38.249.169)
2021-11-23 17:23:01 +0100juhp(~juhp@128.106.188.82) (Remote host closed the connection)
2021-11-23 17:25:21 +0100sa(sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 245 seconds)
2021-11-23 17:25:39 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-11-23 17:25:39 +0100aristid(sid1599@id-1599.uxbridge.irccloud.com) (Ping timeout: 264 seconds)
2021-11-23 17:27:32 +0100sa(sid1055@id-1055.tinside.irccloud.com)
2021-11-23 17:28:23 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-23 17:28:48 +0100aristid(sid1599@id-1599.uxbridge.irccloud.com)
2021-11-23 17:28:49 +0100tv(~tv@user/tv)
2021-11-23 17:30:27 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
2021-11-23 17:33:11 +0100puke(~puke@user/puke)
2021-11-23 17:34:32 +0100burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-11-23 17:35:09 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2021-11-23 17:38:08 +0100qwedfg(~qwedfg@user/qwedfg) (Quit: ZNC - https://znc.in)
2021-11-23 17:39:01 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-23 17:39:14 +0100glguy_glguy
2021-11-23 17:39:31 +0100qwedfg(~qwedfg@user/qwedfg)
2021-11-23 17:40:16 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 17:40:57 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
2021-11-23 17:41:11 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d52:bf34:226e:199c)
2021-11-23 17:44:24 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-23 17:49:47 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 17:52:30 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 17:55:24 +0100viluon(uid453725@id-453725.helmsley.irccloud.com)
2021-11-23 17:57:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-23 17:57:58 +0100 <viluon> hi, I'm trying to heap-profile a program. It runs for about 5 minutes without profiling, for about 2 hours 45 minutes with profiling. One profiled run just finished (`+RTS -p -h`) and the profiles I got from it claim the program only ran for 224 seconds. The heap profile also ranges over only 3 GB of memory when max RSS was 10 GB (sustained, not a sudden spike). This is pretty frustrating, where did the profiling data go?
2021-11-23 17:58:08 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d52:bf34:226e:199c) (Quit: gone to sleep. ZZZzzz…)
2021-11-23 17:58:30 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-11-23 18:00:23 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4)
2021-11-23 18:00:46 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-11-23 18:06:27 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-11-23 18:07:47 +0100 <zero> i have ~/.cabal/store/ghc-8.10.4 and ~/.cabal/store/ghc-8.10.7 do i need them both?
2021-11-23 18:08:07 +0100 <sclv> zero you need whichever one corresponds to the ghc you're using
2021-11-23 18:08:20 +0100 <sclv> if you upgraded ghc and plan to never ever use the older one again you can remove the old store
2021-11-23 18:08:40 +0100 <zero> thanks
2021-11-23 18:08:45 +0100 <zero> just making sure
2021-11-23 18:10:36 +0100enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2021-11-23 18:11:15 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 264 seconds)
2021-11-23 18:12:20 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-11-23 18:13:33 +0100 <[exa]> viluon: it might help to increase -V and take a smaller blob of data for initial profiling
2021-11-23 18:13:42 +0100 <sshine> zero, it is safe to remove any of them, but compiling will take longer on the next project that depends on the one you delete. :)
2021-11-23 18:15:03 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d52:bf34:226e:199c)
2021-11-23 18:15:44 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-23 18:15:53 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-23 18:16:16 +0100 <zero> no trouble, i am cleaning my disk and don't need the older version
2021-11-23 18:18:02 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-23 18:18:02 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-23 18:18:02 +0100wroathe(~wroathe@user/wroathe)
2021-11-23 18:18:12 +0100 <dsal> I'm super scared to do a `nix-store collect-garbage` at this point. heh
2021-11-23 18:18:40 +0100 <dsal> /nix on my laptop is about 105GB
2021-11-23 18:19:56 +0100 <shapr> dsal: that's pretty good, I think I cleaned 500 gb last time I ran gc
2021-11-23 18:20:05 +0100shaprchecks size of /nix
2021-11-23 18:20:22 +0100 <dsal> I've got a ton of x86_64 stuff there I'm not using anymore.
2021-11-23 18:20:29 +0100 <dsal> I might run it just to cause misery for me today.
2021-11-23 18:20:59 +0100servytor(uid525486@id-525486.hampstead.irccloud.com)
2021-11-23 18:21:51 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-11-23 18:24:46 +0100tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Remote host closed the connection)
2021-11-23 18:25:00 +0100tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
2021-11-23 18:25:58 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-23 18:29:03 +0100haruhimywife[m]fsckskye[m]
2021-11-23 18:32:19 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2021-11-23 18:34:59 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d52:bf34:226e:199c) (Quit: gone to sleep. ZZZzzz…)
2021-11-23 18:35:52 +0100Jing(~hedgehog@2604:a840:3::1094) (Remote host closed the connection)
2021-11-23 18:36:40 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-23 18:36:51 +0100Jing(~hedgehog@2604:a840:3::105f)
2021-11-23 18:38:18 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-11-23 18:41:26 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4)
2021-11-23 18:45:49 +0100yuri(~yuri@nat-0-31.msu.umos.ru) (Ping timeout: 256 seconds)
2021-11-23 18:46:03 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2021-11-23 18:47:25 +0100oxide(~lambda@user/oxide)
2021-11-23 18:49:58 +0100 <dsal> LOL. /nix is under 9GB now.
2021-11-23 18:50:48 +0100 <dsal> Oh nice, and now my things don't build.
2021-11-23 18:51:57 +0100 <shapr> mine is 233gb
2021-11-23 18:52:03 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-11-23 18:53:19 +0100lavaman(~lavaman@98.38.249.169)
2021-11-23 18:53:38 +0100 <dsal> There were two libraries that my ghc depends on that were missing. That's kind of interesting. Luckily, the error messages make it easy to understand exactly what needed to be fixed.
2021-11-23 18:53:48 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 276 seconds)
2021-11-23 18:54:05 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 18:54:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-23 18:54:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-23 18:54:16 +0100wroathe(~wroathe@user/wroathe)
2021-11-23 18:54:39 +0100 <dsal> libgmp and libffi in particular
2021-11-23 18:56:04 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-11-23 18:57:21 +0100 <zero> o.o
2021-11-23 18:57:43 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-23 18:58:30 +0100zerocaresses his 13GiB disk
2021-11-23 18:58:58 +0100Guest17(~Guest17@wificampus-097109.grenet.fr)
2021-11-23 18:59:06 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-11-23 19:00:12 +0100mbuf(~Shakthi@27.58.141.80) (Quit: Leaving)
2021-11-23 19:05:42 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 19:06:20 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-11-23 19:06:47 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-11-23 19:07:46 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-23 19:09:57 +0100Topsi(~Tobias@dyndsl-095-033-021-206.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-11-23 19:11:32 +0100nvmd(~nvmd@user/nvmd)
2021-11-23 19:13:09 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-23 19:13:14 +0100gaff(~gaff@49.207.223.179)
2021-11-23 19:15:01 +0100 <gaff> compare x y | x == y = EQ, | x <= y = LT, otherwise = GT. why does it use `<=` instead of just `<'?
2021-11-23 19:15:55 +0100 <geekosaur> because that allows the other comparison functions to be defined in terms of <=, ==, and negation
2021-11-23 19:16:08 +0100 <geekosaur> the minimal definition of Ord is either <= or compare
2021-11-23 19:16:31 +0100 <geekosaur> (not sure the other funxtions *are* defined that way currently, but.)
2021-11-23 19:16:54 +0100 <EvanR> raising the question of why (<=) is in that rol^
2021-11-23 19:17:08 +0100 <EvanR> er, why <= and not < is used in this way
2021-11-23 19:17:18 +0100fr33domlover(~fr33@2.55.141.188) (Ping timeout: 260 seconds)
2021-11-23 19:17:28 +0100hololeap_(~hololeap@user/hololeap)
2021-11-23 19:17:38 +0100 <gaff> EvanR: yeah
2021-11-23 19:17:51 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-23 19:17:51 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-23 19:18:22 +0100 <gaff> geekosaur: which are the "other" comparison functions? you mean stuff like <, >, etc?
2021-11-23 19:18:34 +0100 <geekosaur> yes
2021-11-23 19:18:44 +0100 <EvanR> LTE gives the algebraic property that x LTE x, for what thats worth
2021-11-23 19:19:57 +0100 <gaff> EvanR: i am not sure i understand what you just said about algebraic property
2021-11-23 19:20:02 +0100 <EvanR> you could be working with something that supports LTE and not equality test
2021-11-23 19:20:46 +0100 <EvanR> or its technically challenging to tell the difference
2021-11-23 19:21:55 +0100 <sm> g'day all. PSA for vs code haskell users: disable Outline: Show Modules to hide imports in outline pane and make it more useful
2021-11-23 19:23:20 +0100 <sm> and while I'm here.. if you have TH in your project, stick with hls 1.4.0 a little longer till 1.5.1 arrives
2021-11-23 19:23:20 +0100 <EvanR> haskell people like partial orders, and for the comparison to be a partial order, x must be less than or equal to itself
2021-11-23 19:23:49 +0100 <EvanR> unlike <
2021-11-23 19:25:27 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-11-23 19:25:53 +0100 <monochrom> <= vs < is once again just another big endian vs little endian, or whether 0 is a natural number.
2021-11-23 19:26:02 +0100 <gaff> geekosaur: suppose i defined compare using <. i could still define other comparison operators using compare. i am not sure i see the problem.
2021-11-23 19:26:22 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-23 19:26:51 +0100 <monochrom> BTW there is also disagreement on whether "positive" means >0 or >=0.
2021-11-23 19:27:18 +0100 <EvanR> relations like <= come in more situations than < or ==, it's more general
2021-11-23 19:27:31 +0100 <geekosaur> gaff, at this point I suspect it has to do with what EvanR said about partial orders. you're assuming a total order
2021-11-23 19:27:54 +0100hololeap(~hololeap@user/hololeap)
2021-11-23 19:28:00 +0100 <gaff> for example x <=y = (compare x y == EQ) || (compare x y == LT)
2021-11-23 19:28:13 +0100 <geekosaur> if it's a partial order, compare defined with <= should be strictly more defined than with <. I think.
2021-11-23 19:28:15 +0100hololeap_(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-23 19:28:34 +0100 <EvanR> yeah it's useful esp with laziness
2021-11-23 19:28:39 +0100 <geekosaur> partial orders are not particularly intuitive
2021-11-23 19:28:53 +0100 <geekosaur> we assume any ordering relation is total
2021-11-23 19:29:14 +0100 <gaff> sorry, what do you mean by "partial" order?
2021-11-23 19:29:42 +0100 <EvanR> an example is the substring relation
2021-11-23 19:29:55 +0100 <EvanR> "abc" <= "abcde"
2021-11-23 19:30:09 +0100 <EvanR> but "abc" isn't related to "def" one way or the other
2021-11-23 19:30:35 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-11-23 19:30:35 +0100 <EvanR> i should say, prefix relation, which lets you quit checking early
2021-11-23 19:30:52 +0100Everything(~Everythin@37.115.210.35) (Quit: leaving)
2021-11-23 19:31:03 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Ping timeout: 264 seconds)
2021-11-23 19:31:52 +0100 <gaff> so what exactly is "partial" about it? you mean you only need to check things partially?
2021-11-23 19:32:25 +0100 <geekosaur> it's not defined in some cases
2021-11-23 19:32:25 +0100 <EvanR> not every pair of strings are related, or ordered wrt each other... aka some pairs of "incomparable"
2021-11-23 19:32:43 +0100 <EvanR> er, are incomparable
2021-11-23 19:32:45 +0100 <geekosaur> with respect to prefixes, "abc" is not in any way related to "def"
2021-11-23 19:33:12 +0100 <gaff> ok
2021-11-23 19:33:31 +0100 <EvanR> kind of doesn't apply to Ord because you expect an answer for every pair of strings xD
2021-11-23 19:33:34 +0100 <geekosaur> so the prefix relation is only a partial orderingt
2021-11-23 19:33:48 +0100 <gaff> so you define a minimal set of comparisions, rather than a comprehensive or exhaustive one?
2021-11-23 19:33:57 +0100 <sshine> lexicographical order is a full ordering
2021-11-23 19:34:04 +0100 <gaff> ok
2021-11-23 19:35:39 +0100 <sshine> gaff, another example of something that has a partial order is a lattice: https://i.stack.imgur.com/eSqlI.png
2021-11-23 19:36:03 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 19:36:24 +0100 <EvanR> since Ord is probably expecting total order (x <= y or y <= x for all x and y), this is all probably nonsense. But partial orders come up so much that the designers may led that bleed into the API xD
2021-11-23 19:36:27 +0100ph88^(~ph88@ip5f5af068.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2021-11-23 19:37:29 +0100 <gaff> EvanR: yeah, thanks for saying that because i was wondering how what you said about partial ordering matches up with my question on compare
2021-11-23 19:37:40 +0100 <EvanR> > ((0/0) <= 1, 1 <= (0/0) -- except for this
2021-11-23 19:37:41 +0100 <reumeth> geekosaur: I got further with my JSON fuzz thing. Now I'm stuck because I seem to be missing something that looks like mapM for a HashMap. Is there such a thing?
2021-11-23 19:37:42 +0100 <lambdabot> <hint>:1:43: error:
2021-11-23 19:37:42 +0100 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2021-11-23 19:37:49 +0100 <EvanR> > ((0/0) <= 1, 1 <= (0/0)) -- except for this
2021-11-23 19:37:50 +0100 <lambdabot> (False,False)
2021-11-23 19:38:27 +0100 <geekosaur> ok, the Report says Ord is total
2021-11-23 19:38:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 19:39:18 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-23 19:39:29 +0100 <sshine> I actually thought this conversation started from Rust's std::cmp::PartialOrd :)
2021-11-23 19:39:47 +0100 <monochrom> Partial order can be equivalently defined in terms of <. The axioms are: < is irreflexive and transitive. <= is not the only way to think of partial orders.
2021-11-23 19:40:00 +0100 <geekosaur> reumeth, mapM is traverse and HashMap has a Traversable instance
2021-11-23 19:40:22 +0100 <gaff> so just to clear up, is there any real reason why compare is defined using <=?
2021-11-23 19:40:26 +0100 <geekosaur> (mapM is kind of historical)
2021-11-23 19:40:27 +0100 <monochrom> No.
2021-11-23 19:40:27 +0100 <EvanR> it may be that <= is simpler in constructive
2021-11-23 19:40:30 +0100 <sshine> gaff, https://doc.rust-lang.org/std/cmp/trait.PartialOrd.html -- so Maybe Ordering.
2021-11-23 19:40:43 +0100 <EvanR> or I'm just cargo culting
2021-11-23 19:40:51 +0100 <gaff> ok
2021-11-23 19:40:53 +0100 <gaff> ha
2021-11-23 19:40:55 +0100 <sshine> gaff, my guess is: because classic algorithms textbooks use <=... at least, that's where I started doing <= by default. :-P
2021-11-23 19:41:08 +0100 <monochrom> Just another big endian vs little endian.
2021-11-23 19:41:15 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
2021-11-23 19:41:17 +0100 <geekosaur> this is another of those instances where you'd like to be able to hunt down the original Haskell designers and ask why, in other words
2021-11-23 19:41:24 +0100 <reumeth> geekosaur: Wow, I'm so stupid that I didn't realize that. Now it works, thanks!
2021-11-23 19:41:33 +0100 <sshine> yeah, as long as you have a convention, your thingies are gonna end up on the expected side of the balanced tree.
2021-11-23 19:41:35 +0100 <EvanR> irreflexive involves a negative assertion which are trickier in constructive settings
2021-11-23 19:41:50 +0100 <gaff> ok ... complicated origins lost in the mists of time ... poetic
2021-11-23 19:41:53 +0100 <monochrom> <= is more convenient in denotational semantics. This affects Haskell, some Haskellers use denotational semantics to design and use Haskell.
2021-11-23 19:41:58 +0100 <reumeth> I think I got tripped up because I had to use HashMap.map for the normal map, so I expected a HashMap.mapM
2021-11-23 19:42:11 +0100 <monochrom> But < is more convenient when you work with well-founded induction.
2021-11-23 19:42:35 +0100 <gaff> monochrom: i see
2021-11-23 19:43:14 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4)
2021-11-23 19:43:32 +0100 <monochrom> I also bet that laziness doesn't favour either one. Where there is no lazy algorithm for <, I bet you there is also none for <=.
2021-11-23 19:44:07 +0100 <EvanR> if you don't care if something's equal or not, that's automatically making the problem less specific
2021-11-23 19:44:26 +0100 <EvanR> you won't need to check for NOT equal
2021-11-23 19:44:35 +0100 <EvanR> as stipulated in <
2021-11-23 19:45:03 +0100 <gaff> yeah
2021-11-23 19:45:04 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 19:45:15 +0100 <monochrom> That sounds very nice. Except there is no example.
2021-11-23 19:45:39 +0100 <EvanR> testing string prefixes?
2021-11-23 19:45:56 +0100 <EvanR> as opposed to is prefix but not also equal
2021-11-23 19:46:42 +0100 <monochrom> For finite strings both <= and < can be done.
2021-11-23 19:46:54 +0100 <monochrom> For infinite strings both <= and < can non-terminate.
2021-11-23 19:47:21 +0100 <AWizzArd> What is TypeInType for? Is this just a shortcut so that I don't explicitly have to use the PolyKinds, DataKinds and KindSignatures extensions?
2021-11-23 19:47:47 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-23 19:48:11 +0100 <monochrom> <= still needs to wait for one string to end before saying "yes". This is no better than <.
2021-11-23 19:48:21 +0100 <EvanR> yeah
2021-11-23 19:49:03 +0100 <EvanR> in well founded induction, does this "not (a < a)" even come up... if not I wonder what the relevant property is
2021-11-23 19:49:13 +0100 <geekosaur> AWizzArd, not quite. TypeInType simplifies types, kinds, etc. these days it's on by default iirc
2021-11-23 19:49:52 +0100 <Franciman> it's cool, it's only side effect is that it makes the logic inconsistent
2021-11-23 19:49:56 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-23 19:49:57 +0100 <Franciman> but who gares!
2021-11-23 19:49:59 +0100 <geekosaur> you could say it's a compiler simplification that originally was conditionally enabled for testing, but these days is conditionally disableable in case of portability issues
2021-11-23 19:50:25 +0100 <geekosaur> probably it'll go away at some point because there's no reason to carry the old kind system forward any more
2021-11-23 19:50:26 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
2021-11-23 19:51:03 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-23 19:51:23 +0100 <geekosaur> it does iirc make things like PolyKinds easier to implement
2021-11-23 19:51:45 +0100 <AWizzArd> geekosaur: could you list one example of what TypeInType is doing which is *not* available when PolyKinds, DataKinds and KindSignatures are turned on?
2021-11-23 19:52:00 +0100 <monochrom> Well-founded induction: To prove forall x. P(x), prove this: forall x. (forall w. if w<x then P(w)) implies P(x)
2021-11-23 19:52:02 +0100 <AWizzArd> So anything additional that it adds on top of those?
2021-11-23 19:52:12 +0100 <geekosaur> uh, how does that question follow from what I said?
2021-11-23 19:52:53 +0100 <geekosaur> TypeInType is a prerequisite for those, not an extension to them
2021-11-23 19:53:10 +0100 <EvanR> i see, so w not equal x is critical for that to get started
2021-11-23 19:57:52 +0100 <geekosaur> AWizzArd, absent TypeInType ghc's kind system is too limited to do things like PolyKinds or DataKinds. with it, we can start talking about those meaningfully
2021-11-23 19:58:49 +0100 <monochrom> Is the logic inconsistent? Or is the meta-logic inconsistent?
2021-11-23 19:59:25 +0100 <monochrom> The meta-logical inconsistency is in reading "X -> Y" as "X implies Y", for example.
2021-11-23 19:59:33 +0100max22-(~maxime@2a01cb0883359800cde23c9f8e51e66f.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds)
2021-11-23 20:00:00 +0100 <monochrom> If you read it as "X implies Y provided non-bottom prerequisites" then it's fine.
2021-11-23 20:00:04 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Quit: Leaving)
2021-11-23 20:00:22 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-23 20:00:46 +0100gaff(~gaff@49.207.223.179) ()
2021-11-23 20:01:33 +0100 <monochrom> Ugh missed the opportunity to be a badass.
2021-11-23 20:01:47 +0100 <monochrom> If you read it as "X implies Y provided non-bottom prerequisites" then the inconsistency disappears in a puff of logic. >:)
2021-11-23 20:02:16 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 20:03:08 +0100 <AWizzArd> geekosaur: okay, so it’s more like foundational to the others if I understand you correctly.
2021-11-23 20:03:15 +0100 <geekosaur> yes
2021-11-23 20:03:18 +0100 <hskpractice> is it possible to, in ghci, get `Maybe`s Functor instance definition?
2021-11-23 20:03:26 +0100 <hskpractice> :info "instance Functor Maybe" or something
2021-11-23 20:03:57 +0100 <geekosaur> with the old kind system, the only basic kind was * and you could only use parentheses and arrows to make more complex kinds
2021-11-23 20:03:58 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 260 seconds)
2021-11-23 20:04:15 +0100 <geekosaur> and you couldn't actually talk about kind variables, they were only used internally, iirc
2021-11-23 20:04:31 +0100 <geekosaur> TypeInType means "reuse the type system as the kind system"
2021-11-23 20:04:45 +0100 <geekosaur> so now you get the full power of the type system to describe kinds as well
2021-11-23 20:04:50 +0100 <monochrom> hskpractice: No, generally ghci does not show or even know source code.
2021-11-23 20:05:24 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-23 20:08:04 +0100emf(~emf@2620:10d:c090:400::5:14a4)
2021-11-23 20:10:45 +0100burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-23 20:11:11 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-11-23 20:11:14 +0100 <hskpractice> monochrom: ok, thanks
2021-11-23 20:11:43 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-23 20:12:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-11-23 20:12:44 +0100 <geekosaur> for many things there's only compiled code available anyway, so not really anything to show
2021-11-23 20:12:57 +0100 <geekosaur> you'd need a copy of the source sitting on disk somewhere
2021-11-23 20:14:06 +0100ubert(~Thunderbi@p200300ecdf0ba2dd58f8dc088e4eca94.dip0.t-ipconnect.de)
2021-11-23 20:14:25 +0100 <geekosaur> the ecosystem is slowly moving toward making stuff like that possible but you'd still need to e.g. have the base package source sitting around, when it's normally only the binary library
2021-11-23 20:14:35 +0100alzgh(~alzgh@user/alzgh)
2021-11-23 20:15:33 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702)
2021-11-23 20:16:15 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 260 seconds)
2021-11-23 20:17:03 +0100hippoid_(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 20:18:57 +0100hippoid_(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Client Quit)
2021-11-23 20:19:10 +0100hippoid_(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-23 20:19:12 +0100 <Sqaure> im working on a Miso webapp with Servant server. If i want to download a yaml file from the client app, whats the easier path. Some servant client call. Built in function in Miso? Built in client in Ghcjs?
2021-11-23 20:19:29 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 250 seconds)
2021-11-23 20:19:41 +0100 <zero> @src Maybe
2021-11-23 20:19:41 +0100 <lambdabot> data Maybe a = Nothing | Just a
2021-11-23 20:19:58 +0100ubert(~Thunderbi@p200300ecdf0ba2dd58f8dc088e4eca94.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-11-23 20:20:20 +0100econo(uid147250@user/econo)
2021-11-23 20:20:39 +0100 <geekosaur> zero, remember that @src is a manual compilation and contains lies
2021-11-23 20:20:55 +0100hippoid_(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Client Quit)
2021-11-23 20:21:01 +0100 <geekosaur> @src Functor Maybe
2021-11-23 20:21:01 +0100 <lambdabot> Source not found. You speak an infinite deal of nothing.
2021-11-23 20:21:13 +0100 <geekosaur> @src Maybe fmap
2021-11-23 20:21:13 +0100 <lambdabot> fmap _ Nothing = Nothing
2021-11-23 20:21:13 +0100 <lambdabot> fmap f (Just a) = Just (f a)
2021-11-23 20:21:28 +0100 <geekosaur> gotta remember how to use that hack :þ
2021-11-23 20:21:57 +0100 <geekosaur> there used to be a way to hook lambdabot into ghci but it's long bitrotted
2021-11-23 20:23:32 +0100 <zero> that's what i was after
2021-11-23 20:23:34 +0100 <monochrom> Not really lies, but certainly can become out of date or unoptimized.
2021-11-23 20:24:09 +0100 <zero> hskpractice: you can use @src like this, minding the caveat or
2021-11-23 20:24:33 +0100 <monochrom> Not a concern for academic purposes though.
2021-11-23 20:24:40 +0100 <zero> search for the amazing haskell-docs-cli
2021-11-23 20:24:54 +0100ph88(~ph88@2a02:8109:9e00:71d0:980f:fceb:aad:f12)
2021-11-23 20:26:05 +0100 <monochrom> Perhaps @src also serves a good purpose of meta-education. That just because you find something on the Internet doesn't mean you can blindly believe it.
2021-11-23 20:26:59 +0100 <monochrom> But really, even @src is already more competent and honest than most bloggers.
2021-11-23 20:27:10 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-23 20:28:21 +0100emf(~emf@2620:10d:c090:400::5:14a4) (Quit: emf)
2021-11-23 20:28:36 +0100fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-11-23 20:28:51 +0100Guest75(~Guest75@host-176-37-53-221.b025.la.net.ua)
2021-11-23 20:28:57 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2021-11-23 20:30:09 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-23 20:31:24 +0100 <dsal> Does anyone else ever wonder why I'm the only one who writes decent code?
2021-11-23 20:34:08 +0100 <int-e> No, never.
2021-11-23 20:34:26 +0100 <dsal> haha
2021-11-23 20:34:51 +0100jgeerds(~jgeerds@55d45b75.access.ecotel.net)
2021-11-23 20:35:26 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-23 20:39:43 +0100Guest75(~Guest75@host-176-37-53-221.b025.la.net.ua) (Ping timeout: 256 seconds)
2021-11-23 20:40:46 +0100max22-(~maxime@2a01cb088335980087bf2fbe3da00994.ipv6.abo.wanadoo.fr)
2021-11-23 20:45:29 +0100xkuru(~xkuru@user/xkuru)
2021-11-23 20:46:48 +0100burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-11-23 20:47:03 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-23 20:48:02 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-11-23 20:50:00 +0100mreh(~mreh@2a00:23c7:2803:ef00:2cfc:8111:4bd9:f4d7)
2021-11-23 20:51:27 +0100burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 264 seconds)
2021-11-23 20:53:36 +0100 <mreh> Has anyone found a way to speed up builds on the official haskell docker image? Is there a way somehow I could warm the cabal cache in a layer?
2021-11-23 20:54:34 +0100 <Rembane_> \o/ Cachix! \o/
2021-11-23 20:54:42 +0100 <dsal> Is there a less dumb way to write `const x <$> v` -- I have a functor and just want to replace the thing.
2021-11-23 20:54:57 +0100 <tomsmeding> :t (<$)
2021-11-23 20:54:58 +0100 <lambdabot> Functor f => a -> f b -> f a
2021-11-23 20:54:59 +0100 <mreh> dsal: <$
2021-11-23 20:55:24 +0100 <dsal> Ah, yeah. I knew there was a thing and my brain just wasn't smart enough to remember. :)
2021-11-23 20:55:51 +0100 <dsal> :t ($>)
2021-11-23 20:55:51 +0100burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-11-23 20:55:52 +0100 <mreh> Rembane_: I'm using stack
2021-11-23 20:55:52 +0100 <lambdabot> error:
2021-11-23 20:55:52 +0100 <lambdabot> • Variable not in scope: $>
2021-11-23 20:55:52 +0100 <lambdabot> • Perhaps you meant one of these:
2021-11-23 20:56:08 +0100 <monochrom> Wait, I am the only one who writes decent code!
2021-11-23 20:56:12 +0100 <tomsmeding> :t (Data.Functor.$>)
2021-11-23 20:56:13 +0100 <lambdabot> Functor f => f a -> b -> f b
2021-11-23 20:56:45 +0100 <mreh> I tried to use (<<) the other day. Doesn't exist in base, but (=<<) does.
2021-11-23 20:56:47 +0100Cajun(~Cajun@user/cajun)
2021-11-23 20:56:51 +0100 <dsal> Yeah, $> looks pretty good in this spot.
2021-11-23 20:57:03 +0100 <mreh> :t <<
2021-11-23 20:57:04 +0100 <lambdabot> error: parse error on input ‘<<’
2021-11-23 20:57:11 +0100 <mreh> :t (<<)
2021-11-23 20:57:12 +0100 <lambdabot> error:
2021-11-23 20:57:12 +0100 <lambdabot> • Variable not in scope: <<
2021-11-23 20:57:12 +0100 <lambdabot> • Perhaps you meant one of these:
2021-11-23 20:57:46 +0100 <tomsmeding> :t (<*)
2021-11-23 20:57:47 +0100 <lambdabot> Applicative f => f a -> f b -> f a
2021-11-23 20:57:52 +0100 <tomsmeding> works for monads too :)
2021-11-23 20:58:04 +0100 <monochrom> But wrong effect order.
2021-11-23 20:58:05 +0100 <tomsmeding> also (>>) = (*>)
2021-11-23 20:58:17 +0100 <tomsmeding> monochrom: depends on who you ask
2021-11-23 20:59:00 +0100 <tomsmeding> I'd say one can argue for either order; the situation is different for (=<<), where only one order is sensibly implementable
2021-11-23 20:59:52 +0100 <monochrom> I don't argue. I use experience to Bayesian-infer what the next person expects.
2021-11-23 20:59:53 +0100echoreply(~echoreply@45.32.163.16)
2021-11-23 21:00:16 +0100 <monochrom> Experience is that more likely a person looking for << is looking for flip (>>)
2021-11-23 21:00:54 +0100 <monochrom> Everything can be argued.
2021-11-23 21:01:01 +0100 <monochrom> Well, almost everything.
2021-11-23 21:01:42 +0100 <monochrom> Should Ord use < instead of <= for one way for minimal completion? That can be argued, as shown earlier.
2021-11-23 21:01:59 +0100 <monochrom> Should a CPU use big endian or little endian? One can argue.
2021-11-23 21:03:47 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-23 21:04:27 +0100 <mreh> I think I was trying to use it with Reader.
2021-11-23 21:04:49 +0100 <mreh> Applying the result to an argument, looks more like function composition
2021-11-23 21:06:08 +0100 <tomsmeding> monochrom: you could well be right that most people expect 'flip (>>)' :)
2021-11-23 21:08:24 +0100juhp(~juhp@128.106.188.82)
2021-11-23 21:12:20 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-23 21:12:21 +0100 <zero> j alacritty
2021-11-23 21:12:35 +0100 <zero> ignore that
2021-11-23 21:12:43 +0100 <maerwald> zero: I can't
2021-11-23 21:12:51 +0100tomsmedinglooks at zero
2021-11-23 21:14:17 +0100monochrom(~trebla@216.138.220.146) (Ping timeout: 256 seconds)
2021-11-23 21:14:57 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-23 21:16:27 +0100zerouninstalls alacritty
2021-11-23 21:16:36 +0100 <tomsmeding> :(
2021-11-23 21:16:42 +0100 <maerwald> what will you use instead?
2021-11-23 21:17:01 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-23 21:17:20 +0100monochrom(trebla@216.138.220.146)
2021-11-23 21:17:29 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-23 21:18:57 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-23 21:19:25 +0100 <zero> kitty?
2021-11-23 21:19:29 +0100zerohides
2021-11-23 21:19:33 +0100 <dminuoso> kitty has quite the maintainer behind it.
2021-11-23 21:19:39 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-23 21:20:30 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-11-23 21:21:32 +0100 <dminuoso> Sadly in the terminal domain there's a rule: wide TERM compatibility, performance and ligatures. pick any two you like.
2021-11-23 21:22:45 +0100Guest17(~Guest17@wificampus-097109.grenet.fr) (Ping timeout: 256 seconds)
2021-11-23 21:25:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-23 21:25:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-23 21:25:12 +0100wroathe(~wroathe@user/wroathe)
2021-11-23 21:26:02 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-11-23 21:27:23 +0100emf(~emf@2620:10d:c090:400::5:824c)
2021-11-23 21:27:51 +0100gaff(~gaff@49.207.223.179)
2021-11-23 21:28:03 +0100mc47(~mc47@xmonad/TheMC47)
2021-11-23 21:29:18 +0100gaff(~gaff@49.207.223.179) (Remote host closed the connection)
2021-11-23 21:36:48 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2021-11-23 21:36:59 +0100jgeerds(~jgeerds@55d45b75.access.ecotel.net) (Ping timeout: 260 seconds)
2021-11-23 21:37:06 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection)
2021-11-23 21:38:51 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2021-11-23 21:40:21 +0100 <dsal> Is there a generic name for an n-functor?
2021-11-23 21:41:13 +0100betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-11-23 21:46:50 +0100 <awpr> like a generalization of Bifunctor to any n instead of just 2? in category theory, I'd say that's just "functor", since the Haskell Bifunctor is just a curried form of functors Hask x Hask -> Hask
2021-11-23 21:48:15 +0100 <awpr> I don't know of a generalization in Haskell terminology, though -- Haskell struggles a bit with talking about collections of types with different numbers of type parameters
2021-11-23 21:49:12 +0100michalz(~michalz@185.246.204.40) (Remote host closed the connection)
2021-11-23 21:49:20 +0100 <awpr> and things get a bit awkward if you try to uncurry it and make the objects of a product category into a single kind
2021-11-23 21:49:38 +0100yuri(~yuri@85.89.126.31)
2021-11-23 21:50:17 +0100 <dsal> The thing I made is a functor because exactly one field can change types. But if there's more than one thing, I can make it a bifunctor, solving the problem once and for all.
2021-11-23 21:50:41 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
2021-11-23 21:51:05 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-23 21:52:40 +0100 <awpr> I wouldn't be too surprised if someone had defined a Trifunctor class somewhere. it probably doesn't go much further than that, though
2021-11-23 21:54:17 +0100 <awpr> I've also played with the convention of Functor instances on e.g. `newtype Arg3 f a b c = Arg3 (f c a b)` to carry functionality of mapping over other type parameters. it was a bit clunky, though
2021-11-23 21:54:28 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 21:54:45 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 21:54:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-23 21:54:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-23 21:54:56 +0100wroathe(~wroathe@user/wroathe)
2021-11-23 21:55:01 +0100viluon(uid453725@id-453725.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-23 21:55:31 +0100 <awpr> with more than 2, maybe just giving them explicit names as Traversals is the way to go
2021-11-23 21:58:25 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 21:58:44 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 21:58:49 +0100 <tomsmeding> dsal: https://paste.tomsmeding.com/Qtjm3Kcn
2021-11-23 21:58:54 +0100 <tomsmeding> this is 99% in jest
2021-11-23 21:59:22 +0100 <tomsmeding> maybe the tuple instances should not be recursive, hm
2021-11-23 21:59:30 +0100 <monochrom> Need more of this on April 1st :)
2021-11-23 21:59:31 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2021-11-23 21:59:40 +0100 <dsal> Heh. Yeah, I try to avoid jokes because I've rolled out too many things I meant as a joke.
2021-11-23 21:59:42 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2021-11-23 21:59:59 +0100 <dsal> Functor makes a ton of sense for this. bifunctor starts making less sense. trifunctor would be super weird.
2021-11-23 22:00:15 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d52:bf34:226e:199c)
2021-11-23 22:00:44 +0100zer0bitz(~zer0bitz@dsl-hkibng31-54fabc-15.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-11-23 22:00:46 +0100 <dsal> The use case is a type that has a bunch of settings for an app, where some settings are parsed from the environment in one form, but then need some IO stuff to resolve them into their final form. With one, it's not very confusing. Once there are a few, there's a pretty special thing needing to be in place.
2021-11-23 22:00:47 +0100 <tomsmeding> awpr's suggestion of making a traversal for each of the addressable elements is probably a good way to actually do this
2021-11-23 22:00:50 +0100 <dsal> i.e., fmap itself isn't very useful.
2021-11-23 22:00:51 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d52:bf34:226e:199c) (Client Quit)
2021-11-23 22:00:56 +0100 <monochrom> Maybe you can try "multi-variable functor", but I haven't checked that mathematicians actually say it, I only saw "multi-variable adjoint functor" but it has an additional "adjoint".
2021-11-23 22:01:03 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-11-23 22:01:37 +0100 <Cajun> that AllFmap thing looks a lot like `Lens'`
2021-11-23 22:02:10 +0100tomsmedingwouldn't know
2021-11-23 22:02:48 +0100Pickchea(~private@user/pickchea)
2021-11-23 22:02:55 +0100 <dsal> `Lens` is actually kind of the right thing once I have three or four of these.
2021-11-23 22:02:59 +0100 <awpr> hmm, that actually sounds a bit like a use case for "higher-kinded data"
2021-11-23 22:03:23 +0100 <dsal> In *practice* there are really two types, but the variables make a lot of other states popular.
2021-11-23 22:03:24 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-11-23 22:03:38 +0100 <awpr> if all the config fields undergo the same kind of extra IO stuff, that is
2021-11-23 22:03:54 +0100 <dsal> I defined a type alias for the "input" type and another for the "output" type. But with more variables, it starts to get harder to think about.
2021-11-23 22:03:58 +0100nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-11-23 22:04:28 +0100 <dsal> awpr: In this case, there's basically `FilePath -> IO x` and then the `Settings FilePath -> Settings x`
2021-11-23 22:04:57 +0100 <dsal> The latter is `$>` in practice, but some hand waving occurs first.
2021-11-23 22:05:31 +0100 <dsal> awpr: What do you mean by higher-kinded data? Most of the words I type are in a language I don't actually understand.
2021-11-23 22:07:03 +0100 <awpr> generally the approach of writing types like `data Config f = Config { cfgInputFile :: f FilePath, cfgSizeLimit :: f Int, cfgDoOptionalThing :: f Bool }` and then being able to operate over all the `f` wrappers uniformly
2021-11-23 22:07:11 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2021-11-23 22:07:20 +0100 <dsal> Ooh. yeah, that's neat.
2021-11-23 22:07:35 +0100 <awpr> like if you wanted to parse command-line flags into `Config Maybe` and then merge it with defaults to get `Config Identity`
2021-11-23 22:07:54 +0100 <dsal> I saw jle` do something like this with barbie once and it was kind of magic.
2021-11-23 22:08:02 +0100 <awpr> yeah, that's one of the libraries for this
2021-11-23 22:08:28 +0100 <awpr> there's also Ed Kmett's library `hkd` and my library `ten`, and probably some others I'm forgetting
2021-11-23 22:08:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-23 22:09:18 +0100 <dsal> If I can convince people that having two types that are almost identical except for one field and then a function to copy the fields from one to another and then testing that you did that right with hand-written examples first, then maybe I can move onto fancier stuff. heh
2021-11-23 22:09:27 +0100ph88(~ph88@2a02:8109:9e00:71d0:980f:fceb:aad:f12) (Ping timeout: 264 seconds)
2021-11-23 22:10:32 +0100 <awpr> yeah if this is the place that bans even basic usage of lenses for being too complicated, there's not a lot of hope for HKD-like things
2021-11-23 22:10:44 +0100pavonia(~user@user/siracusa)
2021-11-23 22:10:50 +0100 <awpr> also not sure it's even applicable here, after seeing more details
2021-11-23 22:13:43 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 22:14:00 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 22:14:40 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2021-11-23 22:17:25 +0100oxide(~lambda@user/oxide) (Quit: oxide)
2021-11-23 22:18:47 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-23 22:20:27 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 22:20:44 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 22:21:18 +0100gay(~gay@77-120-141-90.kha.volia.net)
2021-11-23 22:21:41 +0100sprout_(~quassel@2a02:a467:ccd6:1:b412:3d19:27cf:5d37)
2021-11-23 22:21:43 +0100gayGuest8402
2021-11-23 22:22:05 +0100jgeerds(~jgeerds@55d45b75.access.ecotel.net)
2021-11-23 22:22:09 +0100reumeth(~reumeth@user/reumeth) (Ping timeout: 268 seconds)
2021-11-23 22:22:53 +0100acidjnk(~acidjnk@p200300d0c7271e75119700900401854f.dip0.t-ipconnect.de)
2021-11-23 22:23:04 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d52:bf34:226e:199c)
2021-11-23 22:23:58 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Quit: ERC (IRC client for Emacs 27.1))
2021-11-23 22:24:19 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2021-11-23 22:25:12 +0100sprout(~quassel@2a02:a467:ccd6:1:5cca:96d9:7234:6761) (Ping timeout: 265 seconds)
2021-11-23 22:26:45 +0100DNH(~DNH@2a02:8108:1100:16d8:5c1e:444:cdf3:4e4)
2021-11-23 22:28:38 +0100safinaskar(~quassel@109-252-90-143.nat.spd-mgts.ru)
2021-11-23 22:28:43 +0100zava1(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
2021-11-23 22:30:13 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-11-23 22:30:47 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2021-11-23 22:32:18 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-23 22:33:26 +0100zava1zava
2021-11-23 22:35:58 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 22:36:10 +0100nautical(~nautical@2601:602:900:1630::396f)
2021-11-23 22:36:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 22:36:42 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.3)
2021-11-23 22:37:30 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1)
2021-11-23 22:38:01 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.3)
2021-11-23 22:38:48 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-11-23 22:40:28 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 22:40:46 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 22:42:27 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 22:42:27 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Ping timeout: 264 seconds)
2021-11-23 22:42:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-23 22:42:43 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 22:44:37 +0100zincy_(~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47)
2021-11-23 22:46:46 +0100 <safinaskar> Is there some (text or binary) data exchage format for arbitrary data (with libraries for working with this format) with the following properties: 1) it should be typed 2) it should be possible to attach type to data 3) it should have feature similar to protobuf's "dynamic_message.h", i. e. the library for dealing with format should allow working with typed (!) data when the type is not known beforehand (i. e. in compile time). I. e.
2021-11-23 22:46:46 +0100 <safinaskar> the library should allow read type from file, then read data itself from file and then work with this data 4) the format should allow natural encoding of haskell/rust algebraic data types 5) library for rust should exist. Okey, now I will tell about considered alternatives. Protobuf satisfies all this points except for "4". Protobuf's oneofs are always optional. I. e. it is not possible to represent "Enum A{B(i32), C(f64)}" in protobuf
2021-11-23 22:46:47 +0100 <safinaskar> , you have to represent "Option<A>" instead. Also, rust libraries are unfinished. As well as I understand the only rust library, which satisfies point "3", is rust's crate "protobuf", but afaik its dynamic features appeared very recently, in 3.0.0-alpha release, i. e. not even in stable yet. XML, json etc will not go, because they are not typed. Flatbuffers seem not to have point "3". Flexbuffers are not typed
2021-11-23 22:47:31 +0100 <safinaskar> my question is about rust, of course, but i ask it in #haskell, because afaik haskell people love everything typed, so i assume haskellers already have such data format in wide use
2021-11-23 22:50:47 +0100deadmarshal(~deadmarsh@95.38.113.89)
2021-11-23 22:54:36 +0100ph88(~ph88@2a02:8109:9e00:71d0:980f:fceb:aad:f12)
2021-11-23 22:54:52 +0100 <sshine> safinaskar, you mention protobuf. have you looked at competing alternatives to protobuf? (sorry to not give a constructive answer. and yes, I think your assumption warrants crossposting.)
2021-11-23 22:54:56 +0100deadmarshal(~deadmarsh@95.38.113.89) (Ping timeout: 245 seconds)
2021-11-23 22:55:05 +0100lavaman(~lavaman@98.38.249.169)
2021-11-23 22:55:47 +0100 <hskpractice> what's the fancy term for, for instance, "Just 1"? an applied value/data constructor
2021-11-23 22:56:48 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-11-23 22:56:50 +0100 <safinaskar> sshine: i looked at flatbuffers and flexbuffers. I didn't look at other alternatives yet (there are a lot of then)
2021-11-23 22:56:53 +0100 <safinaskar> *of them
2021-11-23 22:59:28 +0100 <monochrom> hskpractice: We don't have a special term for those. We just say value, like 42.
2021-11-23 22:59:40 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-23 22:59:51 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-11-23 23:00:09 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-23 23:01:06 +0100 <monochrom> The general principle is that we find that noting the actual types are more useful than dichotomies like "function vs not function", "involves a data constructor vs not involving a data constructor", etc.
2021-11-23 23:01:57 +0100 <dsal> Are there times where it's useful to distinguish a data constructor from another function?
2021-11-23 23:02:29 +0100 <monochrom> Yes, when writing patterns in pattern matching. "f (Just x) = ..." is legal, "f (sin x) = ..." is illegal.
2021-11-23 23:02:45 +0100 <monochrom> Fortunately, that's the only time.
2021-11-23 23:03:05 +0100 <monochrom> Goes a long way to show that even that dichotomy is almost useless.
2021-11-23 23:03:41 +0100atwm_(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-23 23:03:47 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Remote host closed the connection)
2021-11-23 23:03:55 +0100 <monochrom> IIRC this is not true in SML though. "map Just [1,2,3]" is legal in Haskell, illegal in SML, you have to write your own lambda.
2021-11-23 23:03:57 +0100 <dsal> Ah. That's "the other direction" though.
2021-11-23 23:04:02 +0100atwm_(~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Client Quit)
2021-11-23 23:04:21 +0100 <awpr> GHC's optimizations care about constructors, too -- they're willing to "duplicate work" by inlining constructor applications, because the work involved is trivial, but that's not necessarily the case for arbitrary functions
2021-11-23 23:04:28 +0100 <monochrom> However! GHC core and STG do make that distinction.
2021-11-23 23:04:33 +0100zebrag(~chris@user/zebrag)
2021-11-23 23:04:40 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-23 23:04:45 +0100 <awpr> (although you can CONLIKE them to tell GHC to treat them like constructors for inlining purposes)
2021-11-23 23:05:17 +0100 <monochrom> GHC is nice to compile your "map Just" to "map (\x -> Just x)" so you don't have to do it yourself.
2021-11-23 23:06:50 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Client Quit)
2021-11-23 23:07:20 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-23 23:08:20 +0100 <DigitalKiwi> does dhall fit what safinaskar needs? i don't know it well enough to know if it hits all of the points
2021-11-23 23:09:29 +0100 <geekosaur> dhall's a configuration language, not really a data exchange format. and fails (3) and (5)
2021-11-23 23:11:36 +0100 <DigitalKiwi> what is a config if not an exchange of data
2021-11-23 23:12:12 +0100 <DigitalKiwi> https://github.com/Nadrieril/dhall-rust
2021-11-23 23:12:13 +0100 <geekosaur> it's a limited kind of data exchange
2021-11-23 23:12:33 +0100 <geekosaur> one of the limits is it tends to be pretty static
2021-11-23 23:12:45 +0100 <geekosaur> whereas (3) means it needs to be dynamic
2021-11-23 23:13:19 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-23 23:13:32 +0100 <DigitalKiwi> isn't that what String and Any are for :D
2021-11-23 23:13:39 +0100chomwitt(~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) (Ping timeout: 264 seconds)
2021-11-23 23:17:46 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 23:18:01 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Remote host closed the connection)
2021-11-23 23:18:04 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 23:19:33 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-23 23:19:48 +0100zincy_(~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47) (Remote host closed the connection)
2021-11-23 23:20:13 +0100zincy_(~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47)
2021-11-23 23:20:22 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-11-23 23:21:31 +0100 <dsal> I'm going to be annoyed shortly when this code that's clearly superior is rejected because I used `foldMap` which is deigned bad because it's not strict.
2021-11-23 23:22:23 +0100 <dsal> I'm folding like 5 things once at startup. This is not worth worrying about.
2021-11-23 23:22:45 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-23 23:22:55 +0100 <monochrom> I agree with you.
2021-11-23 23:23:14 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Client Quit)
2021-11-23 23:23:19 +0100 <awpr> could always just use foldMap' to avoid confrontation, esp. if it doesn't matter
2021-11-23 23:23:48 +0100 <monochrom> Small minds optimize cold spots. Medium minds optimize hot spots. Great minds optimize the big picture.
2021-11-23 23:25:02 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-23 23:25:31 +0100 <dsal> Yeah, the thing says to use foldMap' instead. But foldMap is in Prelude so I don't have to go find it an import it to satisfy a dumb rule.
2021-11-23 23:25:59 +0100 <awpr> just sneak in a `foldMap' = foldMap` somewhere :)
2021-11-23 23:26:22 +0100 <monochrom> Yes! Put that at the end of the file.
2021-11-23 23:26:52 +0100 <monochrom> In the long run I think you should look for another job...
2021-11-23 23:27:12 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Remote host closed the connection)
2021-11-23 23:27:14 +0100 <dsal> haha
2021-11-23 23:27:27 +0100 <monochrom> Your coworkers sound like they deserve to lose all competent people and sink.
2021-11-23 23:27:27 +0100 <geekosaur> let 'em hire another golang programmer
2021-11-23 23:27:38 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-23 23:27:51 +0100 <dsal> One of the people ramping up here is a gopher.
2021-11-23 23:28:03 +0100 <dsal> The Great Opinionated One is kind of interesting.
2021-11-23 23:28:36 +0100 <dsal> I at least shoved a TupleSections through because he couldn't make an argument against it. Though (,) is technically different from (:) in a few ways, it's silly to treat it differently.
2021-11-23 23:28:51 +0100 <dsal> I like things that are easy to use when you're dumb even if you don't understand all the details.
2021-11-23 23:30:32 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Remote host closed the connection)
2021-11-23 23:31:24 +0100 <dsal> The cool thing about worrying about lazy folds is my actual next big thing here is folding postgres tables. postgresql-simple's fold is lazy.
2021-11-23 23:33:04 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 23:33:21 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 23:33:55 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
2021-11-23 23:34:02 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-23 23:35:07 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-11-23 23:37:02 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 23:37:08 +0100sluigi(~sluigi@2603-900a-1600-ba00-413a-d0a0-1d2f-7111.inf6.spectrum.com)
2021-11-23 23:37:19 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 23:37:46 +0100 <sluigi> long shot but anyone know dex? i wrote a dex function: "def sumColumns (xs:a=>b=>c) : b=>c = for j. sum for i. xs.i.j" but it's not working with error "Type error:Couldn't synthesize a class dictionary for: (Add c)"
2021-11-23 23:38:09 +0100 <sluigi> curious if anyone might know what's going on here
2021-11-23 23:39:42 +0100 <arahael> I'm trying to install packages using cabal on macos, but I've got some obscure issues related to eg, "fatal error: 'ffitarget_arm64.h' file not found", how do I resolve this? (The command I'm using is 'cabal install shake')
2021-11-23 23:39:45 +0100 <awpr> sounds like the type of `sumColumns` probably needs to mention that constraint. I don't know the particular Dex syntax for it, though
2021-11-23 23:40:11 +0100 <awpr> "constraint" being `Add c`, that is
2021-11-23 23:43:16 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 23:43:33 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 23:45:13 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 23:45:13 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2021-11-23 23:45:31 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 23:47:11 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-23 23:47:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-23 23:48:19 +0100 <sluigi> ah yeah that helped, thanks
2021-11-23 23:49:22 +0100 <dsal> muahaha. The thing that blocks `foldMap` in hlint is looking specifically for `Data.Foldable.foldMap` and doesn't care about `Prelude.foldMap` which is totally a different thing.
2021-11-23 23:49:56 +0100jbox(~jbox@user/jbox)
2021-11-23 23:51:02 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com)
2021-11-23 23:53:52 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2021-11-23 23:55:57 +0100jinsun__(~quassel@user/jinsun)
2021-11-23 23:59:10 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 260 seconds)