2021/11/25

2021-11-25 00:00:15 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-25 00:00:21 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-11-25 00:00:53 +0100 <dibblego> jackdk: http://www.e-pig.org/
2021-11-25 00:03:40 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Remote host closed the connection)
2021-11-25 00:05:53 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 250 seconds)
2021-11-25 00:07:41 +0100machinedgod(~machinedg@142.169.78.187)
2021-11-25 00:07:59 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 00:11:39 +0100 <[itchyjunk]> I am now back where I left. I have partially figured out out, and the only issue is the last digit!
2021-11-25 00:12:02 +0100 <[itchyjunk]> g (f 1247)
2021-11-25 00:12:02 +0100 <[itchyjunk]> [7,4,2]
2021-11-25 00:12:34 +0100 <[itchyjunk]> idk how to adjoin the 1 to "the same list"
2021-11-25 00:12:37 +0100max22-(~maxime@2a01cb0883359800180cddb567bc39f4.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-11-25 00:12:44 +0100 <[itchyjunk]> @where paste
2021-11-25 00:12:44 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2021-11-25 00:14:51 +0100TranquilEcho(~grom@user/tranquilecho) (Ping timeout: 260 seconds)
2021-11-25 00:15:00 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-25 00:15:32 +0100TranquilEcho(~grom@user/tranquilecho)
2021-11-25 00:18:08 +0100 <monochrom> g (f 1247) ++ [1] ?
2021-11-25 00:19:57 +0100 <monochrom> I wonder if you're just missing how to design recursive algorithms, which is covered in my course notes: http://www.cs.utoronto.ca/~trebla/CSCC24-2021-Summer/01-haskell-basic.html#synev
2021-11-25 00:21:24 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-25 00:21:33 +0100 <monochrom> I wonder if you're just missing how to design recursive algorithms, which is covered in my course notes: http://www.cs.utoronto.ca/~trebla/CSCC24-2021-Summer/01-haskell-basic.html#synev
2021-11-25 00:21:39 +0100 <[itchyjunk]> Sorry, crappy computer.
2021-11-25 00:21:41 +0100 <[itchyjunk]> https://paste.tomsmeding.com/Sb6IPzLM
2021-11-25 00:22:13 +0100 <[itchyjunk]> In the case of (0,y), i wanted to adjoin y to the list the other case was working on, if that makes sense
2021-11-25 00:22:26 +0100 <monochrom> Why is it not "g (0,y) = [y]" very simply?
2021-11-25 00:23:02 +0100 <monochrom> And see my course notes mentioned above for creating recursive algorithms generally.
2021-11-25 00:23:09 +0100 <[itchyjunk]> that works /o\ idk why it works
2021-11-25 00:23:27 +0100 <[itchyjunk]> ah that link was for me, okay will check out now
2021-11-25 00:23:30 +0100 <RobotMicrowave> I have a question. Is it possible to recreate the IO monad? Like, making a custom IO monad and substitute the STD?
2021-11-25 00:23:48 +0100 <RobotMicrowave> The main would still be IO (), of course
2021-11-25 00:24:01 +0100burnsidesLlama(~burnsides@dhcp168-032.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-25 00:24:03 +0100 <int-e> > 1247 `divMod` 10
2021-11-25 00:24:04 +0100 <lambdabot> (124,7)
2021-11-25 00:24:05 +0100 <monochrom> No, IO has to be provided by the compiler/interpreter, it is not user-definable in Haskell.
2021-11-25 00:24:08 +0100 <RobotMicrowave> Rephrasing: "Is the IO monad special to the compiler?"
2021-11-25 00:24:09 +0100 <int-e> > 1 `divMod` 10
2021-11-25 00:24:11 +0100 <lambdabot> (0,1)
2021-11-25 00:24:18 +0100 <monochrom> Yes it has to be special.
2021-11-25 00:24:20 +0100 <dibblego> not the monad, the data type
2021-11-25 00:24:32 +0100 <c_wraith> RobotMicrowave: the monad instance is totally normal. the data type is special
2021-11-25 00:24:33 +0100burnsidesLlama(~burnsides@dhcp168-032.wadham.ox.ac.uk)
2021-11-25 00:24:40 +0100 <RobotMicrowave> Damn! I've lost 1 week trying to implement my own IO
2021-11-25 00:24:51 +0100 <RobotMicrowave> >:(
2021-11-25 00:24:53 +0100 <monochrom> Well if the type is special then the monad instance is special too.
2021-11-25 00:24:57 +0100 <int-e> [itchyjunk]: so if you can't figure out for input 1247, maybe try figuring out what happens for 1.
2021-11-25 00:25:08 +0100 <c_wraith> RobotMicrowave: it's best to erase the phrase "IO monad" from your lexicon. It makes you think the wrong thing is special.
2021-11-25 00:25:17 +0100 <c_wraith> RobotMicrowave: IO is special. Monad is just normal haskell.
2021-11-25 00:25:20 +0100srk_(~sorki@user/srk)
2021-11-25 00:25:56 +0100unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Quit: Leaving)
2021-11-25 00:26:41 +0100jkaye(~jkaye@2601:281:8300:7530:2d14:c2ec:d957:4121) (Ping timeout: 250 seconds)
2021-11-25 00:26:51 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2021-11-25 00:26:53 +0100 <RobotMicrowave> ok
2021-11-25 00:26:53 +0100 <monochrom> Anyway, if someone says "I want to use your algorithm to compute the digits of 4" then it's g (f 4) = g (0, 4) and "clearly" the desired answer is [4] so why not g (0, 4) = [4] as a base case.
2021-11-25 00:27:39 +0100srk(~sorki@user/srk) (Ping timeout: 265 seconds)
2021-11-25 00:28:02 +0100srk_srk
2021-11-25 00:28:37 +0100 <monochrom> This is why I advocate that beginners should think algebra not control flow.
2021-11-25 00:29:01 +0100 <monochrom> In algebra, if the correct answer is sin(x+y), you write "sin(x+y)". THE END.
2021-11-25 00:29:07 +0100burnsidesLlama(~burnsides@dhcp168-032.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-11-25 00:29:13 +0100 <[itchyjunk]> for input 1, i want g ( f 1) to return [1]
2021-11-25 00:29:28 +0100 <[itchyjunk]> ah, i guess g (0,y) = [y] comes from the base case itself
2021-11-25 00:29:44 +0100 <dibblego> think algebra
2021-11-25 00:29:51 +0100 <monochrom> None of those "how do I initialize a variable to x then add y then sin it" control flow thinking.
2021-11-25 00:30:54 +0100 <monochrom> I mean, if you were in an assembly language course, sure.
2021-11-25 00:30:58 +0100Moyst_(~moyst@user/moyst) (Ping timeout: 260 seconds)
2021-11-25 00:31:23 +0100 <int-e> now... do we want the digits of 0 to be [0] or []...
2021-11-25 00:31:28 +0100 <[itchyjunk]> Yes, i like this approach (i think). has the sideeffect to teaching me Coq along the way maybe :D
2021-11-25 00:31:34 +0100 <int-e> that's what would keep me up at night
2021-11-25 00:31:57 +0100machinedgod(~machinedg@142.169.78.187) (Ping timeout: 256 seconds)
2021-11-25 00:32:03 +0100 <EvanR> humanity bumbled to this point for a long time thinking the digits of 0 are []
2021-11-25 00:32:07 +0100 <[itchyjunk]> i think I would? 01 = [0,1] seems okay
2021-11-25 00:32:20 +0100 <[itchyjunk]> oh
2021-11-25 00:32:48 +0100Moyst_(~moyst@user/moyst)
2021-11-25 00:37:37 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-11-25 00:37:42 +0100 <arahael> I've attempted to use a cabal.project to override a hackage package, with the following line: packages: *.cabal ../foundation/basement/*.cabal
2021-11-25 00:37:55 +0100 <arahael> However, when I rebuild my project, it still seems to use hackage's basement and not the local one I've checked out?
2021-11-25 00:38:05 +0100 <arahael> (That's the entire contents fo my cabal.project)
2021-11-25 00:40:11 +0100 <dsal> "I'm more in favor of following the standard." "What's 'the standard'?" [links to his own code which he defines as a standard]
2021-11-25 00:40:25 +0100 <RobotMicrowave> At least i learned haskell, I've failed to make my own IO because it was impossible. But it was fun
2021-11-25 00:40:46 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8)
2021-11-25 00:40:49 +0100 <geekosaur> dsal, that place is a trainwreck. bail.
2021-11-25 00:41:01 +0100 <c_wraith> you can make your own IO-like thing that happens to use IO behind the scenes
2021-11-25 00:41:19 +0100 <monochrom> I use recursion to define iteration.
2021-11-25 00:41:30 +0100 <monochrom> I use iteration to define recursion, too. >:)
2021-11-25 00:42:05 +0100 <monochrom> But Kleene trumped me. He used minimization to define recursion.
2021-11-25 00:42:21 +0100 <int-e> [itchyjunk]: well your g (f 0) produces [0] and the question is... is that the behavior you want or not?
2021-11-25 00:42:46 +0100 <monochrom> But Church trumped him. Church used untyped lambda calculus to get it all.
2021-11-25 00:42:56 +0100 <[itchyjunk]> It was till you questioned about him.. Now I have no idea @_@
2021-11-25 00:43:01 +0100 <int-e> [itchyjunk]: assuming you fixed it by defining g (0,y) = [y]
2021-11-25 00:43:08 +0100 <[itchyjunk]> not him, it!
2021-11-25 00:43:17 +0100 <[itchyjunk]> Yes, i did that
2021-11-25 00:43:22 +0100 <monochrom> I think [0] is acceptable.
2021-11-25 00:43:57 +0100 <int-e> well, we're lacking a specification
2021-11-25 00:44:30 +0100 <monochrom> If you know who will be judging the correctness of your code, ask them.
2021-11-25 00:44:43 +0100 <[itchyjunk]> ah, god..
2021-11-25 00:44:54 +0100 <monochrom> If you don't know... why are you in this programming business in the first place?!
2021-11-25 00:45:17 +0100 <[itchyjunk]> I was trying to learn some math at somepoint and one thing lead to another
2021-11-25 00:45:39 +0100 <monochrom> OK so you are the judge, so you decide.
2021-11-25 00:46:35 +0100 <monochrom> All conventions and standards are made by humans. You may as well be one such human for once.
2021-11-25 00:47:02 +0100Jing(~hedgehog@2604:a840:3::105f) (Remote host closed the connection)
2021-11-25 00:47:09 +0100[itchyjunk]looks at int-e for judgement
2021-11-25 00:47:35 +0100 <int-e> way to shirk responsibility
2021-11-25 00:47:43 +0100int-edisapproves
2021-11-25 00:47:50 +0100Jing(~hedgehog@2604:a840:3::105f)
2021-11-25 00:47:58 +0100burnsidesLlama(~burnsides@dhcp168-032.wadham.ox.ac.uk)
2021-11-25 00:47:59 +0100 <jackdk> a mathematically-literate colleague of mine once seriously entertained someone's "okay, let's say 1=2" quip by working through the consequences
2021-11-25 00:48:13 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-11-25 00:48:34 +0100 <geekosaur> isn't that the zero ring?
2021-11-25 00:48:49 +0100 <monochrom> Does it mean writing a PhD thesis on the zero ring? >:)
2021-11-25 00:49:09 +0100 <jackdk> quite possibly. any part of my maths education that couldn't be translated into typeclasses has rusted away
2021-11-25 00:49:19 +0100 <int-e> geekosaur: hey maybe it's just a semiring
2021-11-25 00:49:33 +0100wagle(~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2021-11-25 00:49:44 +0100 <Axma59590> jackdk: surely it's the opposite of this: https://www.youtube.com/watch?v=lfP8dx2TdEM
2021-11-25 00:50:08 +0100wagle(~wagle@quassel.wagle.io)
2021-11-25 00:50:20 +0100 <monochrom> Oh hey there is an xkcd for that, too!
2021-11-25 00:50:39 +0100 <monochrom> https://xkcd.com/816/
2021-11-25 00:51:06 +0100 <Axma59590> Classic
2021-11-25 00:51:10 +0100Axma59590Axman6
2021-11-25 00:51:15 +0100 <monochrom> The hover line is golden.
2021-11-25 00:51:15 +0100 <Axman6> oh my
2021-11-25 00:51:18 +0100 <jackdk> Axma59590: Who are you and what did you do with the real Axman6?
2021-11-25 00:51:27 +0100 <jackdk> Axman5.99999999
2021-11-25 00:51:47 +0100 <Axman6> interest rates man
2021-11-25 00:51:49 +0100 <monochrom> jackdk: The point is that 59590=6 so it's OK!
2021-11-25 00:52:11 +0100 <jackdk> monochrom: This is what happens when I IRC on one cup of tea. Time to fix that.
2021-11-25 00:52:17 +0100 <Axman6> I invested my 6 in bitcoin, it went up two ordered of magnitude, but when I cashed out it dropped and I broke even
2021-11-25 00:52:44 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-25 00:52:54 +0100 <Axman6> orders*
2021-11-25 00:55:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-25 00:55:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-25 00:55:07 +0100wroathe(~wroathe@user/wroathe)
2021-11-25 00:55:29 +0100zer0bitz(~zer0bitz@2001:2003:f6bc:f00:4c2d:8074:ff8b:55dd) (Ping timeout: 250 seconds)
2021-11-25 00:55:35 +0100hiredman(~hiredman@frontier1.downey.family) (Ping timeout: 264 seconds)
2021-11-25 01:02:00 +0100nautical(~nautical@2601:602:900:1630::396f)
2021-11-25 01:05:21 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-11-25 01:08:05 +0100 <arahael> Hmm, still having difficulty overriding a hackage package using cabal. Is my only option to run a local hackage server?
2021-11-25 01:08:31 +0100 <arahael> I've tried specifying both packages, and optional-packages, in my cabal.project file.
2021-11-25 01:09:26 +0100 <sclv> the cabal.project route should work
2021-11-25 01:09:37 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 01:10:12 +0100 <arahael> Yeah, trouble is, it's not. I'm not sure why. I mean, I've literally just created a cabal.project file that has "packages: ../foundation/basement/*.cabal" in it, it doesn't make any difference...
2021-11-25 01:10:13 +0100 <sclv> just unpack the repo in the same tarball as the project and add its cabal in the packages stanza
2021-11-25 01:10:32 +0100 <sclv> arahael: i suspect its the relative path causing the issue
2021-11-25 01:10:47 +0100 <geekosaur> relative paths work for me?
2021-11-25 01:10:55 +0100 <sclv> ok then nevermind?
2021-11-25 01:10:56 +0100 <arahael> sclv: Really? The docs use relative paths as an exmaple.
2021-11-25 01:11:06 +0100 <sclv> it was a shot in the dark
2021-11-25 01:11:08 +0100 <sclv> lmao
2021-11-25 01:11:13 +0100 <arahael> Ah, fair enough. :)
2021-11-25 01:11:14 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Remote host closed the connection)
2021-11-25 01:11:18 +0100pfurla(~pfurla@2804:14d:5c81:4104:d22:12b7:6d7c:fb3c)
2021-11-25 01:11:27 +0100 <geekosaur> packages: ./ X11/ xmonad/ xmonad-contrib/
2021-11-25 01:11:33 +0100 <sclv> i do know there's some corners of cabal where we don't always have them working right
2021-11-25 01:11:35 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-11-25 01:11:41 +0100 <geekosaur> overriding all three from hackage because I use local checkouts
2021-11-25 01:11:55 +0100 <sclv> er by relative i meant with ..
2021-11-25 01:11:56 +0100 <geekosaur> (will need to add at least one more soonish)
2021-11-25 01:12:00 +0100 <geekosaur> ah
2021-11-25 01:12:21 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2021-11-25 01:12:26 +0100 <sclv> the default directory functions don't resolve that properly without some extra calls iirc
2021-11-25 01:12:52 +0100 <arahael> sclv: The provided example in the docs is literally: packages: */*.cabal ../{foo,bar}/
2021-11-25 01:13:19 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 01:13:21 +0100 <sclv> the other shot in the dark is to delete the *.cabal bit
2021-11-25 01:13:28 +0100 <sclv> all i can tell you is that its worked for me just fine
2021-11-25 01:13:49 +0100 <sclv> assuming A) a new enough cabal and B) using v2- commands, just to be clear
2021-11-25 01:14:25 +0100 <arahael> sclv: When I do that, "cabal build" stops working at all because the current project I'm in doesn't exist anymore.
2021-11-25 01:14:49 +0100 <sclv> arahael: did you add also _your project_ explicitly to the packages file?
2021-11-25 01:14:56 +0100 <sclv> or er stanza, you know what i mean
2021-11-25 01:15:09 +0100 <arahael> sclv: What does "explicit" mean in this case?
2021-11-25 01:15:27 +0100 <sclv> like geekosaur posted: you need a "./" in there or the like
2021-11-25 01:15:50 +0100 <arahael> sclv: It's picking up the local .cabal file just fine, though?
2021-11-25 01:16:08 +0100 <sclv> ok then what did you mean "the current project I'm in doesn't exist anymore"
2021-11-25 01:16:41 +0100 <arahael> Working: packages: *.cabal ../foundation/basement/*.cabal
2021-11-25 01:16:55 +0100 <arahael> Not working: packages: ../foundation/basement/*.cabal
2021-11-25 01:16:59 +0100 <sclv> right
2021-11-25 01:17:02 +0100 <sclv> that's as designed
2021-11-25 01:17:03 +0100 <arahael> Unfortunately, it's failing to prioritise the basement *over* the hackage.
2021-11-25 01:17:12 +0100 <arahael> basement also exists in hackage.
2021-11-25 01:17:22 +0100 <sclv> right, it should always prefer local
2021-11-25 01:17:27 +0100 <sclv> unless you have version bounds that prevent it
2021-11-25 01:17:41 +0100 <sclv> calling -v might give a hint
2021-11-25 01:17:51 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-25 01:18:38 +0100 <arahael> It's creating dist-newstyle/build/aarch64-osx/ghc-9.2.1/basement-0.0.12/build
2021-11-25 01:18:57 +0100mreh(~mreh@2a00:23c7:2803:ef00:841c:a322:61f5:4ad9) (Ping timeout: 256 seconds)
2021-11-25 01:19:00 +0100 <sclv> ok, so it _is_ building it?
2021-11-25 01:19:11 +0100 <arahael> Yeah, but again, I'm 99.9999% certain it's creating it from hackage.
2021-11-25 01:19:28 +0100 <sclv> why
2021-11-25 01:19:36 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-11-25 01:20:25 +0100 <arahael> sclv: Because the specific bug I'm trying to avoid is still there.
2021-11-25 01:20:37 +0100 <arahael> (And the version I've checked out is supposed to fix it)
2021-11-25 01:20:39 +0100 <sclv> i suggest you change the local one in an incredibly obvious way
2021-11-25 01:20:44 +0100 <sclv> like make it build wrongly
2021-11-25 01:20:49 +0100 <sclv> or print some debug spew
2021-11-25 01:21:23 +0100 <arahael> I'll delete the function outright that causes the bug, then...
2021-11-25 01:22:07 +0100 <sclv> oh also if you're not using basement directly, but its some dep of a dep, i don't think the local one will get picked up by all your deps
2021-11-25 01:22:34 +0100 <sclv> like you can't just "patch in" a single package at the root of your dep tree with this approach
2021-11-25 01:22:37 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-25 01:23:13 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-25 01:23:16 +0100 <arahael> Yeah, it's a dep of a dep, but interestingly, deleting that function outright produced a warning that a function does not have an accompanying binding, which makes sense as I just deleted that binding.
2021-11-25 01:23:37 +0100 <sclv> so i think what'll happen is it'll still try to build it as part of your project
2021-11-25 01:23:38 +0100 <arahael> But it's a dep of a dep, why do you think that wouldn't be expected to work?
2021-11-25 01:23:41 +0100 <sclv> it just won't use it
2021-11-25 01:23:41 +0100Moyst_(~moyst@user/moyst) (Ping timeout: 245 seconds)
2021-11-25 01:23:45 +0100sm2n_sm2n
2021-11-25 01:23:49 +0100 <sclv> just my understanding of how cabal innards work
2021-11-25 01:23:59 +0100 <arahael> Blegh. So how do I tell cabal to just replace the darn thing?
2021-11-25 01:24:26 +0100 <sclv> you need to pull in everything in the transitive dep tree as well, or use a local repo to override
2021-11-25 01:24:34 +0100 <sclv> which is not necc a hackage server in full
2021-11-25 01:24:38 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-25 01:24:43 +0100 <sclv> you can do a "filesystem repo" which is much simpler to setup
2021-11-25 01:24:47 +0100Moyst_(~moyst@user/moyst)
2021-11-25 01:24:52 +0100 <arahael> I've literally cloned that basement repo.
2021-11-25 01:24:59 +0100 <arahael> "git clone", even.
2021-11-25 01:25:02 +0100 <sclv> right
2021-11-25 01:25:07 +0100 <sclv> i mean instead of a "local hackage server"
2021-11-25 01:25:15 +0100 <sclv> you can do a "filesystem package repository"
2021-11-25 01:25:31 +0100 <sclv> its still a pita to set up, but a bit less completely so
2021-11-25 01:25:38 +0100 <arahael> That sounds like quite a bit of work, yeah.
2021-11-25 01:25:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 01:26:02 +0100 <arahael> Especially for one package which, in all likelihood, is only temporarily broken.
2021-11-25 01:26:32 +0100 <sclv> also if this is the patch for 9.2.1 then you can add the head.hackage repo which should have it fixed already
2021-11-25 01:26:56 +0100 <arahael> This is that patch! How do I add the head.hackage repo?
2021-11-25 01:27:01 +0100 <sclv> https://ghc.gitlab.haskell.org/head.hackage/
2021-11-25 01:27:25 +0100 <arahael> Doesn't that replace all the other packages I happen to have as well, though?
2021-11-25 01:27:38 +0100 <arahael> Because I really only want that one package to be replaced...
2021-11-25 01:27:40 +0100 <sclv> it only replaces the other ones with head.hackage packates
2021-11-25 01:27:42 +0100 <sclv> er patches
2021-11-25 01:27:50 +0100 <sclv> but all those packages are for 9.2.1 compat as well
2021-11-25 01:28:15 +0100Feuermagier_(~Feuermagi@213.178.26.41)
2021-11-25 01:30:46 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 245 seconds)
2021-11-25 01:31:42 +0100lavaman(~lavaman@98.38.249.169)
2021-11-25 01:32:12 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-25 01:33:00 +0100econo(uid147250@user/econo)
2021-11-25 01:33:39 +0100 <arahael> That does seem to work, so it sounds like cabal.project (alone) won't do what I want, I _have_ to use a different hackage instance, and I can either set up a local hackage, or use head.hackage since it has the changes I need?
2021-11-25 01:34:58 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
2021-11-25 01:35:10 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-11-25 01:35:59 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-25 01:36:30 +0100Lord_of_Life_Lord_of_Life
2021-11-25 01:36:41 +0100drdo(~drdo@roach0.drdo.eu)
2021-11-25 01:36:49 +0100hiredman(~hiredman@frontier1.downey.family)
2021-11-25 01:39:14 +0100 <arahael> Yeah, now I have this bug: https://github.com/haskell/network/issues/497#issuecomment-840641725
2021-11-25 01:39:36 +0100 <arahael> I really only want that one package, so I think my last and only remaining option is to start a local hackage?
2021-11-25 01:39:55 +0100 <sclv> or vendor the full dep tree
2021-11-25 01:40:46 +0100 <arahael> Doesn't cabal flatten the package name namespace though? It feels a bit odd I have to vendor the whole tree.
2021-11-25 01:41:44 +0100 <arahael> I suppose if I'm vendoring the whole tree, I'm probably back to the point where I might as well have a local hackage. :(
2021-11-25 01:41:46 +0100DNH(~DNH@2a02:8108:1100:16d8:a418:17da:6b4f:5fc3) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-25 01:42:17 +0100zebrag(~chris@user/zebrag)
2021-11-25 01:42:34 +0100zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-11-25 01:44:54 +0100 <monochrom> https://cabal.readthedocs.io/en/3.6/installing-packages.html#local-no-index-repositories
2021-11-25 01:45:30 +0100 <arahael> monochrom: I'd prefer to use .git repos instead of tarballs, how am I supposed to patch a tarball?
2021-11-25 01:46:08 +0100zebrag(~chris@user/zebrag)
2021-11-25 01:46:42 +0100 <monochrom> I don't know. But I unpacked, patched, repacked.
2021-11-25 01:50:22 +0100EvanR_(~evan@2600:1700:ba69:10:5c7c:46a9:5e48:ea)
2021-11-25 01:51:27 +0100TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-11-25 01:53:22 +0100 <arahael> How do you keep track of your patches? I'm not using haskell every day.
2021-11-25 01:53:44 +0100 <arahael> (My day-to-day job is in Swift, so when I'm doing this, I'm like: Ok, how do I build this thing again, this one's a cabal build, right...)
2021-11-25 01:54:02 +0100EvanR(~evan@user/evanr) (Ping timeout: 240 seconds)
2021-11-25 01:54:45 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-11-25 01:55:03 +0100 <monochrom> I have only patched once. But I keep the patched source tree somewhere else.
2021-11-25 01:55:34 +0100 <arahael> Do you check out every git repo, and convert each of those to the corresonding .tar.gz?
2021-11-25 01:56:19 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702)
2021-11-25 01:56:25 +0100 <monochrom> I downloaded once from hackage. It's just "cabal sdist" when I'm ready.
2021-11-25 01:56:41 +0100atwm(~andrew@19-193-28-81.ftth.cust.kwaoo.net) (Ping timeout: 268 seconds)
2021-11-25 01:56:44 +0100 <Axman6> :t \f -> f <&> putStr
2021-11-25 01:56:45 +0100 <lambdabot> Functor f => f String -> f (IO ())
2021-11-25 01:56:56 +0100 <arahael> monochrom: Hmm? I've never looked at 'cabal sdist'.
2021-11-25 01:57:10 +0100 <arahael> monochrom: Don't you have to download every single package that is touched by the project?
2021-11-25 01:57:30 +0100 <monochrom> I have only done one package.
2021-11-25 01:58:03 +0100 <arahael> monochrom: But as sclv was poitning out, I'd need to vendor the entire tree?
2021-11-25 01:58:17 +0100 <arahael> And if I'm using a local hackage, I'd need to have every package my project touches, right?
2021-11-25 01:58:45 +0100 <arahael> A hackage server is a repository of *all* packages you'd want to pull from hackage, right?
2021-11-25 01:58:47 +0100 <monochrom> "local no-index repo" ≠ "packages: foo.cabal etc" stanza
2021-11-25 01:59:13 +0100drdo(~drdo@roach0.drdo.eu) (Ping timeout: 256 seconds)
2021-11-25 01:59:20 +0100 <sclv> a local repo can override only a single package
2021-11-25 01:59:42 +0100iteratee_(~kyle@162.218.222.107)
2021-11-25 01:59:43 +0100 <sclv> vendoring the whole tree is only for the packages stanza
2021-11-25 01:59:45 +0100 <monochrom> I am not setting up any "server".
2021-11-25 02:00:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-25 02:01:04 +0100 <arahael> monochrom: Oh, interesting, so you really only have the one .tar.gz (at least, you would in my scenario). That's feasible.
2021-11-25 02:01:21 +0100 <arahael> How do I ensure that this "local no-index repo" gets prioritised over any other hackage server I might have?
2021-11-25 02:01:39 +0100 <monochrom> I don't imagine that s/1/10/ would make a big deal.
2021-11-25 02:02:02 +0100 <arahael> monochrom: I was worried it was more like 100 or 500 packages.
2021-11-25 02:02:33 +0100 <monochrom> I did this to tf-random.
2021-11-25 02:02:38 +0100iteratee(~kyle@162.218.222.107) (Ping timeout: 256 seconds)
2021-11-25 02:03:02 +0100 <monochrom> And nothing needs to be done to things that tf-random depends on, or things that depend on tf-random.
2021-11-25 02:03:09 +0100 <monochrom> NOTHING.
2021-11-25 02:03:25 +0100 <arahael> That's exactly what I want! So I think I indeed need to do that "local no-index repo" thing.
2021-11-25 02:03:50 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-25 02:07:00 +0100 <arahael> Needing an absolute path sucks slightly, but it's OK.
2021-11-25 02:08:53 +0100RobotMicrowave(~user@2804:d41:c2b2:be00:2926:cba1:14b8:da8b) (ERC 5.4.1 (IRC client for GNU Emacs 27.2))
2021-11-25 02:09:31 +0100jgeerds(~jgeerds@55d45b75.access.ecotel.net) (Ping timeout: 245 seconds)
2021-11-25 02:09:34 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-11-25 02:09:55 +0100 <arahael> (I've assumed a cabal.project must be in the project's root)
2021-11-25 02:10:33 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-25 02:12:51 +0100acidjnk_new(~acidjnk@p200300d0c7271e17949910e638228d35.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-11-25 02:16:13 +0100 <arahael> On reflection, that's probably even better because whatever bugs we want to fix should be upstreamed... So once upstream has a new version, then depending on the version bounds I'd then automatically end up using that.
2021-11-25 02:16:33 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 02:16:39 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-25 02:16:54 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-11-25 02:22:03 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-11-25 02:22:15 +0100 <arahael> I think I'll generate the cabal.project file as part of my monorepo build script, so that it matches the current system filesystem, and to have it generate that .tar.gz file as well.
2021-11-25 02:24:26 +0100machinedgod(~machinedg@24.105.81.50)
2021-11-25 02:24:52 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-11-25 02:31:31 +0100Moyst_(~moyst@user/moyst) (Ping timeout: 256 seconds)
2021-11-25 02:33:02 +0100Moyst_(~moyst@user/moyst)
2021-11-25 02:44:23 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 02:50:00 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-11-25 02:55:23 +0100dsrt^(~dsrt@68.101.63.101) (Ping timeout: 260 seconds)
2021-11-25 02:57:23 +0100Guest75(~Guest75@host-176-37-53-221.b025.la.net.ua)
2021-11-25 02:58:07 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-25 02:58:57 +0100lechner(~lechner@debian/lechner) (Ping timeout: 268 seconds)
2021-11-25 02:59:37 +0100mmhat(~mmh@55d43159.access.ecotel.net) (Quit: WeeChat 3.3)
2021-11-25 02:59:53 +0100lechner(~lechner@debian/lechner)
2021-11-25 02:59:58 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-25 03:00:15 +0100Guest75(~Guest75@host-176-37-53-221.b025.la.net.ua) (Client Quit)
2021-11-25 03:00:48 +0100 <arahael> Hmm, so, I have: basement-0.0.12.tar.gz in my local packages dir, and I've modified this so that there's an extra space in the specific line that fails to build.
2021-11-25 03:01:11 +0100 <arahael> But when I build my project, even after explicitly running 'cabal update', and after ensuring that the local cabal.project exists and refers to the local packages dir,
2021-11-25 03:01:31 +0100 <arahael> it still has the _original_ line failing in the error message, so it's still not actually using my particular basement.
2021-11-25 03:02:58 +0100 <arahael> Yep, just unpacked the locally packaged file, it absolutely does have that space in it, yet that space is missing.
2021-11-25 03:03:15 +0100 <arahael> This means that my build is still, somehow, pulling in hackage's basement. (Not using that head.hackage thing anymore, though)
2021-11-25 03:04:41 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-11-25 03:05:21 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 245 seconds)
2021-11-25 03:05:52 +0100 <arahael> monochrom: So how did that work for you, with tf-random?
2021-11-25 03:07:53 +0100lechner(~lechner@debian/lechner) (Ping timeout: 250 seconds)
2021-11-25 03:09:07 +0100lechner(~lechner@debian/lechner)
2021-11-25 03:12:26 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 260 seconds)
2021-11-25 03:13:23 +0100zebrag(~chris@user/zebrag)
2021-11-25 03:13:32 +0100 <arahael> Why is it "extracting" basement not from my local packages, but from .cabal/packages/hackage.haskell.org/basement/0.0.12/basement-0.0.12.tar.gz ?
2021-11-25 03:14:50 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 03:16:38 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-25 03:17:25 +0100 <hololeap> /usr/lib64/x86_64-linux-ghc-9.2.1/libHSscientific-0.3.7.0-LT8myiDeJKLLdLSFvANXhn-ghc9.2.1.so
2021-11-25 03:17:38 +0100 <hololeap> what does this string signify? LT8myiDeJKLLdLSFvANXhn
2021-11-25 03:18:17 +0100burnsidesLlama(~burnsides@dhcp168-032.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-25 03:18:49 +0100burnsidesLlama(~burnsides@client-8-72.eduroam.oxuni.org.uk)
2021-11-25 03:19:06 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-11-25 03:19:42 +0100 <arahael> What if I were to delete my cached package directly, manually? How should I do this "properly"?
2021-11-25 03:20:21 +0100 <arahael> hololeap: I assume that's a hash of some sort - not sure what the hash is of, though.
2021-11-25 03:22:51 +0100burnsidesLlama(~burnsides@client-8-72.eduroam.oxuni.org.uk) (Ping timeout: 245 seconds)
2021-11-25 03:26:18 +0100arahaelcan't find it specified anywhere, how cabal chooses a package where multiple repos have the same version.
2021-11-25 03:26:40 +0100 <arahael> I think I have two options: Manually delete the package from my cache of hackage.org, or bump the version in my local directory.
2021-11-25 03:27:00 +0100 <arahael> (And then specify: --allow-newer=basement in my build)
2021-11-25 03:27:24 +0100pfurla_(~pfurla@2804:14d:5c81:4104:65d6:5a05:6048:8ed9)
2021-11-25 03:27:49 +0100 <sclv> there’s a setting to order package repos. But if you have it built already i think it won’t kick in
2021-11-25 03:28:22 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 260 seconds)
2021-11-25 03:28:25 +0100 <monochrom> I put my "repository my-local-repository \n url: file+noindex:///..." in my $HOME/.cabal/config. I have not tried putting it in cabal.project.
2021-11-25 03:28:28 +0100 <arahael> Hmm, so if I'm adding or changing my repos, I should delete ~/.cabal and repeat 'cabal update'?
2021-11-25 03:28:41 +0100 <arahael> monochrom: Oh! So that's the global cabal.project?
2021-11-25 03:29:00 +0100 <monochrom> There is no global cabal.project.
2021-11-25 03:29:08 +0100 <monochrom> Since there is no global "project".
2021-11-25 03:29:10 +0100 <arahael> But this setting's only for cabal.projecct?
2021-11-25 03:29:11 +0100Skyfire(~pyon@user/pyon) (Ping timeout: 268 seconds)
2021-11-25 03:29:37 +0100 <arahael> Ah, I see the docs not mentioning that, not sure where I made that mistake.
2021-11-25 03:29:44 +0100 <hololeap> geekosaur: do you know what that string I mentioned signifies?
2021-11-25 03:29:50 +0100 <monochrom> Obsession with "project"s?
2021-11-25 03:30:21 +0100Moyst_(~moyst@user/moyst) (Ping timeout: 245 seconds)
2021-11-25 03:30:21 +0100pfurla(~pfurla@2804:14d:5c81:4104:d22:12b7:6d7c:fb3c) (Ping timeout: 245 seconds)
2021-11-25 03:30:30 +0100 <monochrom> I do notice that everyone is obsessed with "project"s when, really, the cabal user guide states very explicitly that the basic unit on hackage is package.
2021-11-25 03:30:49 +0100 <sclv> active-repositories is the stanza to order repo lookup https://cabal.readthedocs.io/en/3.4/cabal-project.html#cfg-field-active-repositories
2021-11-25 03:32:04 +0100 <arahael> monochrom: Well, it's now grabbing the correct package!
2021-11-25 03:32:38 +0100 <arahael> monochrom: I think it was because I was previously in https://cabal.readthedocs.io/en/3.6/cabal-project.html#specifying-the-local-packages
2021-11-25 03:33:00 +0100 <arahael> monochrom: And when I was shown the direct link to local no-index packages, I didn't scroll up to see that it was a different file.
2021-11-25 03:33:06 +0100Moyst_(~moyst@user/moyst)
2021-11-25 03:33:13 +0100 <arahael> (So my fault, really, but wow. Confusing.)
2021-11-25 03:33:50 +0100pfurla_(~pfurla@2804:14d:5c81:4104:65d6:5a05:6048:8ed9) (Quit: Textual IRC Client: www.textualapp.com)
2021-11-25 03:35:22 +0100pfurla(~pfurla@2804:14d:5c81:4104:2061:ecca:f442:134c)
2021-11-25 03:39:15 +0100xff0x(~xff0x@2001:1a81:5337:5300:b447:8c77:1877:d5ca) (Ping timeout: 260 seconds)
2021-11-25 03:39:43 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 260 seconds)
2021-11-25 03:41:04 +0100xff0x(~xff0x@2001:1a81:5377:a800:360f:89df:3dda:3328)
2021-11-25 03:45:53 +0100pfurla(~pfurla@2804:14d:5c81:4104:2061:ecca:f442:134c) (Quit: Textual IRC Client: www.textualapp.com)
2021-11-25 03:47:31 +0100pfurla(~pfurla@2804:14d:5c81:4104:155f:731:f6ca:82cf)
2021-11-25 03:48:54 +0100viluon(uid453725@id-453725.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-25 03:50:52 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-25 03:50:52 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-25 03:50:52 +0100wroathe(~wroathe@user/wroathe)
2021-11-25 03:51:20 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-11-25 03:56:30 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 04:01:11 +0100hiruji(~hiruji@user/hiruji) (Ping timeout: 250 seconds)
2021-11-25 04:04:28 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 04:07:26 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2021-11-25 04:08:01 +0100emf(~emf@2620:10d:c090:400::5:2b81) (Ping timeout: 268 seconds)
2021-11-25 04:08:22 +0100emf(~emf@c-73-97-137-43.hsd1.wa.comcast.net)
2021-11-25 04:10:42 +0100emf(~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Client Quit)
2021-11-25 04:17:10 +0100lavaman(~lavaman@98.38.249.169)
2021-11-25 04:18:10 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 04:22:13 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-25 04:23:36 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-11-25 04:24:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-25 04:24:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-25 04:24:26 +0100wroathe(~wroathe@user/wroathe)
2021-11-25 04:25:21 +0100td_(~td@muedsl-82-207-238-097.citykom.de) (Ping timeout: 245 seconds)
2021-11-25 04:27:27 +0100td_(~td@94.134.91.22)
2021-11-25 04:29:23 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-25 04:30:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-25 04:30:54 +0100Moyst_(~moyst@user/moyst) (Ping timeout: 260 seconds)
2021-11-25 04:33:10 +0100Moyst_(~moyst@user/moyst)
2021-11-25 04:33:50 +0100dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-11-25 04:38:31 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2021-11-25 04:41:31 +0100gaff(~gaff@49.207.202.59)
2021-11-25 04:41:37 +0100gaff(~gaff@49.207.202.59) (Client Quit)
2021-11-25 04:42:41 +0100dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-11-25 04:45:39 +0100benin2(~benin@183.82.179.164)
2021-11-25 04:47:10 +0100benin(~benin@183.82.179.164) (Ping timeout: 260 seconds)
2021-11-25 04:47:10 +0100benin2benin
2021-11-25 04:48:10 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2021-11-25 04:49:22 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2021-11-25 04:51:29 +0100econo(uid147250@user/econo)
2021-11-25 04:54:58 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 05:02:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-25 05:02:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-25 05:02:20 +0100wroathe(~wroathe@user/wroathe)
2021-11-25 05:03:15 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-11-25 05:03:47 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-25 05:09:18 +0100vito(sid1962@user/vito) (Read error: Connection reset by peer)
2021-11-25 05:09:27 +0100vito(sid1962@user/vito)
2021-11-25 05:16:38 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 05:19:58 +0100Lycurgus(~juan@98.4.112.204)
2021-11-25 05:21:14 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-11-25 05:23:19 +0100pfurla(~pfurla@2804:14d:5c81:4104:155f:731:f6ca:82cf) (Quit: gone to sleep. ZZZzzz…)
2021-11-25 05:26:49 +0100waleee(~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
2021-11-25 05:30:40 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 05:32:17 +0100Moyst_(~moyst@user/moyst) (Ping timeout: 256 seconds)
2021-11-25 05:32:33 +0100mbuf(~Shakthi@122.174.170.222)
2021-11-25 05:33:18 +0100Moyst_(~moyst@user/moyst)
2021-11-25 05:35:58 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-11-25 05:37:23 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 250 seconds)
2021-11-25 05:42:49 +0100pfurla(~pfurla@2804:14d:5c81:4104:155f:731:f6ca:82cf)
2021-11-25 05:50:57 +0100slowButP1esent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-11-25 05:53:03 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 05:54:31 +0100pfurla(~pfurla@2804:14d:5c81:4104:155f:731:f6ca:82cf) (Quit: gone to sleep. ZZZzzz…)
2021-11-25 05:59:07 +0100 <arahael> #haskell has been very quiet. is it holidays somewhere?
2021-11-25 05:59:29 +0100 <dolio> Yeah, major holiday tomorrow in the US.
2021-11-25 05:59:33 +0100 <arahael> sclv: forgot to respond - thanks for that!
2021-11-25 05:59:40 +0100 <arahael> dolio: oh? which one?
2021-11-25 05:59:48 +0100 <dolio> Thanksgiving.
2021-11-25 06:00:32 +0100 <arahael> ah, interesting - harvest day.
2021-11-25 06:05:06 +0100 <dsal> It's the day we celebrate our white ancestors coming to the US by spreading plague to our families.
2021-11-25 06:05:31 +0100octeep[m](~octeepoct@2001:470:69fc:105::1:3dbf)
2021-11-25 06:06:26 +0100mbuf(~Shakthi@122.174.170.222) (Quit: Leaving)
2021-11-25 06:07:30 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Remote host closed the connection)
2021-11-25 06:11:30 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-11-25 06:12:02 +0100 <arahael> oh? wikipedia seemed to suggest it was related to the harvest? i only read the intro paragraphs though.
2021-11-25 06:13:44 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-11-25 06:16:27 +0100johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Quit: ZNC - http://znc.in)
2021-11-25 06:19:09 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving)
2021-11-25 06:22:22 +0100zaquest(~notzaques@5.130.79.72)
2021-11-25 06:25:01 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
2021-11-25 06:25:16 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2021-11-25 06:26:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 06:31:05 +0100fr33domlover_(~fr33@2.55.143.230) (Ping timeout: 268 seconds)
2021-11-25 06:32:11 +0100Moyst_(~moyst@user/moyst) (Ping timeout: 250 seconds)
2021-11-25 06:33:08 +0100Moyst_(~moyst@user/moyst)
2021-11-25 06:33:20 +0100reumeth(~reumeth@user/reumeth)
2021-11-25 06:38:55 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-25 06:39:06 +0100reumeth(~reumeth@user/reumeth) (Ping timeout: 245 seconds)
2021-11-25 06:42:47 +0100Skyfire(~pyon@user/pyon)
2021-11-25 06:45:42 +0100abraham(~abraham@143.244.185.86)
2021-11-25 06:53:46 +0100Guest3953spider
2021-11-25 06:54:16 +0100spiderGuest42
2021-11-25 06:54:20 +0100Guest42spider__
2021-11-25 07:00:18 +0100mbuf(~Shakthi@122.174.170.222)
2021-11-25 07:00:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-25 07:03:09 +0100JimL(~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 268 seconds)
2021-11-25 07:06:18 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-25 07:08:02 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-25 07:09:35 +0100JimL(~quassel@89-162-2-132.fiber.signal.no)
2021-11-25 07:13:46 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2021-11-25 07:14:56 +0100monochrom(trebla@216.138.220.146) (Ping timeout: 245 seconds)
2021-11-25 07:17:31 +0100monochrom(trebla@216.138.220.146)
2021-11-25 07:18:28 +0100Moyst_(~moyst@user/moyst) (Remote host closed the connection)
2021-11-25 07:19:03 +0100 <mjrosenb> Does ghcjs support HasCallStack?
2021-11-25 07:19:22 +0100 <mjrosenb> I added that into a function which should definitely be on the call stack when an error is thrown
2021-11-25 07:19:34 +0100 <mjrosenb> but the error message makes no mention of said function.
2021-11-25 07:24:55 +0100Moyst(~moyst@user/moyst)
2021-11-25 07:26:44 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-11-25 07:29:57 +0100zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-11-25 07:32:13 +0100Moyst(~moyst@user/moyst) (Ping timeout: 250 seconds)
2021-11-25 07:33:26 +0100chomwitt(~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374)
2021-11-25 07:33:39 +0100Moyst(~moyst@user/moyst)
2021-11-25 07:34:46 +0100jzsinatra(~jzsinatra@88-114-238-31.elisa-laajakaista.fi) (Ping timeout: 260 seconds)
2021-11-25 07:35:00 +0100jzsinatra(~jzsinatra@88-114-238-31.elisa-laajakaista.fi)
2021-11-25 07:47:27 +0100michalz(~michalz@185.246.204.58)
2021-11-25 07:54:44 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-11-25 08:02:20 +0100theproffesor(~theproffe@user/theproffesor) (Quit: Leaving)
2021-11-25 08:03:16 +0100 <arahael> I assume it does.
2021-11-25 08:07:26 +0100arahaelregrets using amazonka.
2021-11-25 08:07:34 +0100 <jackdk> hm?
2021-11-25 08:07:34 +0100theproffesor(~theproffe@user/theproffesor)
2021-11-25 08:08:19 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 08:09:08 +0100 <arahael> jackdk: Yeah - I'm in conflict hell, it has a pretty narrow set of versions it likes for aeson, and does not work at all with aeson 2.x
2021-11-25 08:11:16 +0100 <jackdk> arahael: are you using the version from hackage? github master at least has a 1.6.2 upper bound. I haven't tried doing an allow-newer: on aeson to see if it works with 2.0 yet
2021-11-25 08:11:59 +0100 <arahael> jackdk: There's active tickets that show aeson 2.x isn't even on amazonka's radar.
2021-11-25 08:12:13 +0100 <arahael> jackdk: They'll get to 2.x once amazonka gets to 2.0
2021-11-25 08:12:59 +0100 <jackdk> arahael: I know. I've been driving it. If you want to test it with aeson-2.0 I can at least promise a prompt PR review
2021-11-25 08:13:36 +0100 <jackdk> but my first priority is helping get the past ~three years of service updates etc out the door
2021-11-25 08:13:51 +0100 <arahael> jackdk: Unfortunately I can't isolate it just yet. I'm still just trying to get it to satisfy version bounds again. I'm currently seeing messages like:
2021-11-25 08:13:58 +0100 <arahael> > Failed to build network-3.1.2.5 because it depends on network-3.1.2.5 which itself failed to build.
2021-11-25 08:13:59 +0100 <lambdabot> <hint>:1:100: error:
2021-11-25 08:13:59 +0100 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2021-11-25 08:14:21 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-11-25 08:14:46 +0100arahaelkeeps forgetting that lambdabot uses the email-form of quoting.
2021-11-25 08:14:52 +0100 <jackdk> @botsnack
2021-11-25 08:14:52 +0100 <lambdabot> :)
2021-11-25 08:15:05 +0100 <jackdk> can you constrain aeson < 1.6 for now or is that unacceptable?
2021-11-25 08:15:49 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:bdf3:903c:8a82:6328)
2021-11-25 08:17:21 +0100lavaman(~lavaman@98.38.249.169)
2021-11-25 08:18:01 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-25 08:19:15 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan)
2021-11-25 08:19:43 +0100 <arahael> That may well be working. Now for a failure in Attoparsec...
2021-11-25 08:20:01 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 256 seconds)
2021-11-25 08:22:08 +0100 <arahael> I guess this is what I get for being on a bleeding edge haskell! :) (Well, not really bleeding edge, but it seems 9.2.1 made quite some breaking changes.)
2021-11-25 08:22:15 +0100gdown(~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
2021-11-25 08:22:33 +0100 <arahael> Finally I have it failing on aeson itself. But it seems to be using aeson-1.2.1.0
2021-11-25 08:22:50 +0100 <arahael> Not sure why it's settled on such an old version - how do I find out why it selected that version?
2021-11-25 08:23:35 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-11-25 08:26:12 +0100 <jackdk> you could set a newer version in cabal.project.freeze and see why and how it fails to solve?
2021-11-25 08:26:29 +0100 <jackdk> is this a public project?
2021-11-25 08:26:42 +0100Jing(~hedgehog@2604:a840:3::105f) (Remote host closed the connection)
2021-11-25 08:27:37 +0100Jing(~hedgehog@115.207.50.95)
2021-11-25 08:27:49 +0100 <arahael> I can make it public, let me just check if I've put in any passwords... ;)
2021-11-25 08:27:57 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 08:28:21 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-25 08:29:05 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-25 08:29:32 +0100 <arahael> It's already public: https://github.com/arafangion/auslansocial
2021-11-25 08:29:38 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 08:30:12 +0100 <arahael> I'm attempting to randomly try a whole pile of --allow-newer stuff along with a few packages in a local hackage to apply patches manually.
2021-11-25 08:30:35 +0100 <arahael> Local package has 9.2.1 patches applied for: basement-0.0.12.tar.gz cryptonite-0.29.tar.gz memory-0.16.0.tar.gz
2021-11-25 08:31:29 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-25 08:32:07 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 08:33:21 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 08:33:45 +0100 <arahael> It previously worked fine, but I was using an x86_64 build of haskell, and an older ghc, at that. But now I've switched to an arm64 version of ghc and all that - and sometime in the past 5 months I must've updated my local LLVM (part of xcode) so that it's version 13 - which is too new for the current haskell and makes me need to use 9.2.1
2021-11-25 08:35:09 +0100 <arahael> As you've probably surmised, I don't really know what I'm doing at the moment :)
2021-11-25 08:35:14 +0100 <jackdk> okay, so you're forced to use 9.2.1 because you're on aarch64 because you're on an M1 mac and your new xcode updated llvm?
2021-11-25 08:36:10 +0100 <arahael> Yes. :)
2021-11-25 08:37:13 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-25 08:37:17 +0100 <arahael> If this was a production build or if I was on a deadline, I'd have just grabbed an older xcode, I guess, and then xcode-select'ed that version.
2021-11-25 08:37:22 +0100 <jackdk> okay. I'm on x86_64-linux and I've got a couple of things I need to wrap up before I clock off work. Let me see if I can get a GHC 9.2.1 and have a play.
2021-11-25 08:37:29 +0100fr33domlover(~fr33@2.55.21.191)
2021-11-25 08:37:29 +0100 <arahael> But I'm taking this as an opportunity to learn... Everything...
2021-11-25 08:38:00 +0100 <jackdk> complete with cross-architectural detours!
2021-11-25 08:38:03 +0100 <arahael> jackdk: Please don't make me make you be late for work! :)
2021-11-25 08:38:23 +0100 <jackdk> she'll be right mate
2021-11-25 08:39:07 +0100 <arahael> And yeah, indeed! Oh! And on top of all that, I'm learning Shake, which seeems to be a pretty nifty build system, I like it. I was thinking that maybe I should make it so that I can build all my various unmaintained private crap in teh same way, consistently...
2021-11-25 08:40:10 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-11-25 08:42:43 +0100 <arahael> I suspect there's no way I can build this with all these packages until Amazonka updates to aeson 2.x
2021-11-25 08:43:04 +0100Pickchea(~private@user/pickchea)
2021-11-25 08:43:15 +0100 <tomsmeding> more forks :)
2021-11-25 08:43:22 +0100 <jackdk> pls no
2021-11-25 08:44:19 +0100 <arahael> Heh, actually if I urgently needed to get this building, I'd probably more likely strip amazonka out, and maybe shell in aws-cli instead.
2021-11-25 08:44:53 +0100 <jackdk> I've done that too, in places >_>
2021-11-25 08:45:07 +0100 <arahael> I've never liked the various amazon SDK's :(
2021-11-25 08:45:15 +0100 <arahael> third party or otherwise.
2021-11-25 08:45:23 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-25 08:45:23 +0100 <arahael> They're just too freaking huge.
2021-11-25 08:45:41 +0100 <jackdk> someone (probably me) is going to have to write proper sts:AssumeRole at some point
2021-11-25 08:46:36 +0100 <arahael> I don't think I've needed that. In the past actually I just wrote my own binding to the specific AWS services I needed.
2021-11-25 08:46:43 +0100 <jackdk> like you can do it, but you have to do it manually. I'd love for it to be supported by the default env stuff
2021-11-25 08:47:27 +0100 <jackdk> and by manually I mean going through amazonka-sts, pulling the key/sessionid/etc from teh response and then constructing a new Env
2021-11-25 08:47:47 +0100 <arahael> THat's over my head a bit, I'm just doing dead simple S3. ;)
2021-11-25 08:48:34 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 08:48:38 +0100 <arahael> Well, plus cloudflare invalidations.
2021-11-25 08:53:10 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-25 08:57:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 08:58:54 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8)
2021-11-25 09:03:28 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-11-25 09:07:15 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702)
2021-11-25 09:14:00 +0100 <arahael> Hmm, just opened a new ticket on an unrelated project: https://github.com/erikd/language-javascript/issues/132
2021-11-25 09:14:50 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 09:15:52 +0100nautical(~nautical@2601:602:900:1630::396f) (Quit: WeeChat 3.3)
2021-11-25 09:17:46 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Remote host closed the connection)
2021-11-25 09:18:24 +0100 <arahael> How do I find out why I'm pulling in a particular dependency?
2021-11-25 09:18:25 +0100 <tomsmeding> arahael: there is a ∉ in that file
2021-11-25 09:18:34 +0100 <tomsmeding> only non-ascii character I think
2021-11-25 09:18:45 +0100 <arahael> tomsmeding: Why don't they just fix it?
2021-11-25 09:18:50 +0100 <tomsmeding> ¯\_(ツ)_/¯
2021-11-25 09:19:11 +0100 <tomsmeding> shouldn't break though, looks like a normal utf8 encoded thing
2021-11-25 09:19:32 +0100 <arahael> Yeah, I'm not sure what's happening, I mean, I've set the locale. That fixed it for everyone else.
2021-11-25 09:19:48 +0100 <arahael> And it's why I explictly showed how I used the locale there.
2021-11-25 09:20:19 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-25 09:20:33 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 250 seconds)
2021-11-25 09:20:39 +0100 <arahael> I'm not even sure why this other project is using language-javascript in the first place, though.
2021-11-25 09:21:07 +0100chele(~chele@user/chele)
2021-11-25 09:21:07 +0100 <tomsmeding> they thought their library was too stable
2021-11-25 09:22:05 +0100 <arahael> The last commit to that project is 2 years ago.
2021-11-25 09:23:02 +0100 <tomsmeding> see? they didn't have the manpower to actually change the code and thereby make it unstable, so they just used javascript instead
2021-11-25 09:23:10 +0100 <tomsmeding> /s obviously
2021-11-25 09:23:21 +0100 <arahael> Heh. :)
2021-11-25 09:23:31 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea)
2021-11-25 09:23:49 +0100 <arahael> Clearly the answer is to get rid of it - I think I might play some nethack for a while first, though. Been pretty flat out with meetings and Swift code.
2021-11-25 09:23:55 +0100Unhammer(~Unhammer@user/unhammer)
2021-11-25 09:24:15 +0100 <arahael> Then I should find out how to figure out why the project's pulling it in in the first place!
2021-11-25 09:24:38 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Client Quit)
2021-11-25 09:24:44 +0100 <jackdk> there is a way to get cabal to cough up a plan.json, I can't remember what it is
2021-11-25 09:24:53 +0100 <tomsmeding> dist-newstyle/cache/plan.json
2021-11-25 09:25:41 +0100 <tomsmeding> lists configured dependencies of each package in your dependency tree; no nice graph but should at least show where language-javascript is coming from
2021-11-25 09:25:42 +0100 <dminuoso> jackdk: You can call cabal-lib I guess?
2021-11-25 09:26:03 +0100 <tomsmeding> also `cabal-plan dot`
2021-11-25 09:26:35 +0100 <dminuoso> Im not sure whether cabal-exe allows to do nothing but produce a build plan
2021-11-25 09:26:56 +0100 <arahael> Uhh? Nothing depends on it!
2021-11-25 09:27:02 +0100 <tomsmeding> :D
2021-11-25 09:27:41 +0100 <arahael> There's only one mention of 'language-javascript' in that entire file, which means nothing depends on it.
2021-11-25 09:28:01 +0100 <tomsmeding> lol
2021-11-25 09:28:12 +0100 <arahael> Weird.
2021-11-25 09:28:32 +0100mc47(~mc47@xmonad/TheMC47)
2021-11-25 09:28:38 +0100 <tomsmeding> also no hits of lngg-jvscrpt?
2021-11-25 09:28:55 +0100arahaellooks at tomsmeding weirdly.
2021-11-25 09:28:55 +0100 <tomsmeding> no idea why that would happen, but I saw it in your issue
2021-11-25 09:29:14 +0100 <arahael> There's several hits...
2021-11-25 09:29:25 +0100 <tomsmeding> but relevant ones?
2021-11-25 09:29:33 +0100 <arahael> That makes no sense, I thought you were being sarcastic, I mean, "of course javascript would chop off the vowels".
2021-11-25 09:29:40 +0100 <tomsmeding> :')
2021-11-25 09:30:16 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 09:31:24 +0100 <arahael> Why do so many of these chop off the vowels!?
2021-11-25 09:31:31 +0100 <tomsmeding> I have absolutely no idea
2021-11-25 09:31:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-25 09:31:56 +0100 <tomsmeding> also, ‽
2021-11-25 09:32:18 +0100 <arahael> It's being pulled in via yesod-static -> hjsmn -> lngg-jvscrpt
2021-11-25 09:32:31 +0100 <arahael> I guess that makes sense.
2021-11-25 09:32:41 +0100 <arahael> Another reason to chop off yesod, too!
2021-11-25 09:32:46 +0100 <arahael> (But not today)
2021-11-25 09:33:06 +0100 <tomsmeding> right
2021-11-25 09:34:42 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 260 seconds)
2021-11-25 09:35:26 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com)
2021-11-25 09:37:49 +0100arahaelhopes jackdk has gone to work.
2021-11-25 09:38:13 +0100 <jackdk> oh no I finished work for the day, I'm LARPing the cabal constraint solver
2021-11-25 09:38:20 +0100max22-(~maxime@2a01cb0883359800d4d6b02a2c3bac5a.ipv6.abo.wanadoo.fr)
2021-11-25 09:39:01 +0100 <jackdk> I'm hitting packages that say "build-depends: base > 4.x && < 5", but then break on GHC9 :(
2021-11-25 09:39:43 +0100 <tomsmeding> send thanks to stack
2021-11-25 09:41:00 +0100 <arahael> Yeah, looking at all this has been *eyeopening* to me.
2021-11-25 09:41:29 +0100 <jackdk> I think it's really rude to build LTS snapshots based on a claim of "these packages build together", informed by dependency information on hackage, and then write tooling that defaults to generating crap dependency information
2021-11-25 09:42:42 +0100 <arahael> Maybe this is part of the reason I'm having so much trouble with GHC9.
2021-11-25 09:43:23 +0100 <arahael> Basically not one of my personal, unmaintained, bitrotten projects has survived the transition to GHC9. :(
2021-11-25 09:43:51 +0100 <arahael> (And most of them were originally stack projects, but... I'm very tired of stack, and am basically trying to pretend I never used it)
2021-11-25 09:44:04 +0100 <jackdk> I use `cabal gen-bounds` and advance them carefully. But yeah GHC9 seems to be rough for a bunch of people
2021-11-25 09:44:39 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-11-25 09:44:48 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-11-25 09:44:51 +0100 <arahael> I also have an ffi bug as well, but I'm working around that by explicitly passing an -I include flag for a random libffi on the system.
2021-11-25 09:45:10 +0100 <arahael> I hope that'll be fixed in 9.2.2, or something.
2021-11-25 09:45:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 09:47:15 +0100acidjnk_new(~acidjnk@p200300d0c7271e17949910e638228d35.dip0.t-ipconnect.de)
2021-11-25 09:49:17 +0100 <arahael> So I've been starting using Shake in a monorepo, hope that doesn't bite me.
2021-11-25 09:51:03 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 09:52:10 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 09:55:06 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2021-11-25 09:57:41 +0100fr33domlover(~fr33@2.55.21.191) (Ping timeout: 268 seconds)
2021-11-25 09:58:44 +0100machinedgod(~machinedg@24.105.81.50)
2021-11-25 10:01:37 +0100 <jackdk> arahael: I regret to say that you'll be genuinely stuck until amazonka support aeson-2.0: aeson-1.5.6 tries to declare an instance for Data.Semigroup.Option, which went away in base-4.16
2021-11-25 10:02:22 +0100 <arahael> jackdk: I'm had a hunch that was going to be the case, but I had no idea why. How on earth did you find that out?
2021-11-25 10:03:18 +0100 <jackdk> I gave up on aeson-1.5.6.0 for some reason that I forget, and tried to allow aeson ^>= 2.0 using allow-newer in cabal.project. Then I saw the aeson build failure
2021-11-25 10:03:37 +0100 <arahael> Ah, so you used painful experience.
2021-11-25 10:04:09 +0100 <arahael> i think in the next couple of months by which I'll probably need this, I'll either be lucky and amazonka then supports it - and hopefully that's not the only issue - or I strip out amazonka.
2021-11-25 10:05:04 +0100 <jackdk> I have a cabal.project file that I'll pastebin to you because it'll show you some tricks for pinning/working around people being sloppy with bounds
2021-11-25 10:05:04 +0100 <Hecate> we can petition amazonka and offer our help
2021-11-25 10:05:34 +0100 <arahael> jackdk: Thanks!
2021-11-25 10:05:44 +0100rkrishnan(~user@122.172.141.170)
2021-11-25 10:06:01 +0100 <jackdk> arahael: why ghc 9.2.1? I know it's good to follow the latest to keep up to date, but is there anything you particularly need?
2021-11-25 10:06:19 +0100 <arahael> jackdk: It needs to support both aarch64 and llvm 13+.
2021-11-25 10:06:26 +0100 <jackdk> oh yeah that's right
2021-11-25 10:06:29 +0100 <Hecate> https://github.com/brendanhay/amazonka/issues/680
2021-11-25 10:06:48 +0100 <jackdk> Hecate: I wrote that issue.
2021-11-25 10:07:03 +0100 <Hecate> oh you are endgame!
2021-11-25 10:08:23 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-11-25 10:08:42 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-25 10:08:52 +0100 <arahael> Oh, btw, I really enjoyed using amazonka when I first discovered it. I just don't today, but when I found it, I liked it. I just wish AWS's SDK's weren't generally huge.
2021-11-25 10:09:12 +0100 <jackdk> tell jeff to stop releasing a zillion services every week
2021-11-25 10:09:23 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-11-25 10:09:25 +0100 <arahael> Right, and with subtle wacky variations.
2021-11-25 10:09:44 +0100 <arahael> Just make it so that we can feasibly write our own bindings or support *consistent* conventions or something!
2021-11-25 10:11:09 +0100martin02(~silas@141.84.69.76)
2021-11-25 10:12:12 +0100 <arahael> They shouldn't basically require a unique authentication system. Even if it was slapping a Swagger interface on everything that'd be an improvement.
2021-11-25 10:12:34 +0100 <jackdk> cloud control api is an improvement in that regard, at least for CRUDL
2021-11-25 10:13:11 +0100mei(~mei@user/mei) (Read error: Connection reset by peer)
2021-11-25 10:13:16 +0100 <arahael> I'm not familiar with that!
2021-11-25 10:13:54 +0100 <jackdk> only came out this year -- https://aws.amazon.com/blogs/aws/announcing-aws-cloud-control-api/
2021-11-25 10:15:17 +0100 <arahael> At a glance, that looks pretty good.
2021-11-25 10:15:56 +0100 <arahael> Any drawbacks that you forsee?
2021-11-25 10:16:04 +0100 <arahael> I notice they don't seem to have complete coverage.
2021-11-25 10:16:26 +0100 <jackdk> I haven't looked at it in depth but at a glance it seemed pretty close to CloudFormation property specifications, which are occasionally pretty frustrating to write
2021-11-25 10:16:54 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
2021-11-25 10:17:04 +0100 <arahael> There's a lot of that across the stack, though.
2021-11-25 10:17:27 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-25 10:18:14 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8)
2021-11-25 10:19:31 +0100 <arahael> jackdk: Did I miss your cabal.project suggestions? I can't find them.
2021-11-25 10:20:01 +0100CiaoSen(~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-11-25 10:20:03 +0100 <jackdk> no you didn't. I thought I'd have one more crack before giving up
2021-11-25 10:20:27 +0100 <jackdk> arahel: Drop this in teh root of your repo: https://www.irccloud.com/pastebin/gDUSgcxb/cabal.project
2021-11-25 10:20:43 +0100 <jackdk> Ignore the --sha256 comments -those are because I was using haskell.nix
2021-11-25 10:21:44 +0100mmhat(~mmh@55d42d28.access.ecotel.net)
2021-11-25 10:21:45 +0100 <arahael> Ah, I also use nix, though not for this at the moment. I'm in very much a love/hate situation with nix, and this week more on the hate side as you may have noticed.
2021-11-25 10:22:07 +0100 <jackdk> it can do that to you, yeah
2021-11-25 10:22:16 +0100 <arahael> This looks simpler, thanks for this. I was using a local no-index hackage repo to override... Three of these.
2021-11-25 10:22:31 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Ping timeout: 250 seconds)
2021-11-25 10:22:36 +0100 <jackdk> yeah don't do that. source-repository-package stanzas are waaayyy easier
2021-11-25 10:23:23 +0100 <arahael> For sure - and more isolated to the specific project.
2021-11-25 10:23:29 +0100 <arahael> I like this, thanks heaps for that!
2021-11-25 10:24:07 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-25 10:24:26 +0100 <arahael> Incidentially, those sha256 lines... Is there a particular way you generate those? Usually I'd just invent a sha256. ("aaa" - yep, that's a sha256. Lets try that), wait for nix to complain, "aaa is not sha256-r/fFlrgF3KbD/yaFKNW2ORJepUB2/UDEegYnV/WPodQ", then I copy that in and it's all good.
2021-11-25 10:25:04 +0100 <jackdk> that's exactly what I did. `M-: (dotimes (i 52) (insert ?0))` in emacs
2021-11-25 10:26:02 +0100 <arahael> Nice.
2021-11-25 10:26:09 +0100 <arahael> I'll stick with "aaa". :)
2021-11-25 10:26:23 +0100 <jackdk> because it makes you want to scream?
2021-11-25 10:26:34 +0100arahaelreminds jackdk of his love-hate relationship with nix.
2021-11-25 10:31:24 +0100 <jackdk> mostly love, tbh.
2021-11-25 10:32:01 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-25 10:33:21 +0100 <arahael> Do you use it at work?
2021-11-25 10:33:35 +0100 <jackdk> yes
2021-11-25 10:33:40 +0100 <arahael> I think that might be why.
2021-11-25 10:33:55 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-11-25 10:33:59 +0100 <arahael> I basically fight with nix once every other week or so, and only ever on my home system, an hour after I should've gone to bed.
2021-11-25 10:34:27 +0100 <arahael> My big rant here the other day was basically 1-2 hours after I should've been in bed. :(
2021-11-25 10:34:44 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8)
2021-11-25 10:35:06 +0100 <arahael> (At work, we're always in xcode, so there's relatively little need for nix. We've got a whole bunch of dependency problems, but nix won't solve those.)
2021-11-25 10:39:23 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 10:43:24 +0100jgeerds(~jgeerds@55d45b75.access.ecotel.net)
2021-11-25 10:44:02 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-11-25 10:44:31 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 245 seconds)
2021-11-25 10:47:14 +0100cfricke(~cfricke@user/cfricke)
2021-11-25 10:48:51 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2021-11-25 10:49:06 +0100fr33domlover(~fr33@2.55.21.191)
2021-11-25 10:56:23 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea)
2021-11-25 10:56:48 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Client Quit)
2021-11-25 10:59:13 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea)
2021-11-25 10:59:41 +0100ubert(~Thunderbi@p200300ecdf0ba227e6b318fffe838f33.dip0.t-ipconnect.de)
2021-11-25 11:04:02 +0100 <dminuoso> The main problem with nix is gaining the level of expertise that you dont mind the rough edges anymore.
2021-11-25 11:04:06 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 245 seconds)
2021-11-25 11:04:15 +0100 <dminuoso> It has a relatively deep initial investment cost
2021-11-25 11:04:18 +0100fr33domlover(~fr33@2.55.21.191) (Ping timeout: 260 seconds)
2021-11-25 11:04:52 +0100 <dminuoso> If you intend to use nix at your job, you better have one or two experts that can deal with all the bizarre nonsense you might encounter.
2021-11-25 11:09:19 +0100 <arahael> That, too, yeah.
2021-11-25 11:09:42 +0100 <arahael> I'm super wary of introducing it for that reason.
2021-11-25 11:09:55 +0100 <arahael> (And besides, again, it wouldn't work for us, because we use macos)
2021-11-25 11:10:16 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Remote host closed the connection)
2021-11-25 11:10:40 +0100 <arahael> I should probably be more specific: We use xcode there, I don't think we can viably nixify the various xcode and dependencies for iOS projects.
2021-11-25 11:14:01 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 11:20:47 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 260 seconds)
2021-11-25 11:25:12 +0100acidjnk(~acidjnk@p200300d0c7271e17fcc20a5d4f804d59.dip0.t-ipconnect.de)
2021-11-25 11:25:50 +0100 <dminuoso> You probably can *shrugs*
2021-11-25 11:27:16 +0100 <Franciman> dminuoso: have you had a chance to review guix too?
2021-11-25 11:28:28 +0100 <dminuoso> No.
2021-11-25 11:28:43 +0100acidjnk_new(~acidjnk@p200300d0c7271e17949910e638228d35.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-11-25 11:28:57 +0100 <Franciman> I am no expert, but to me it seems it has a better UX
2021-11-25 11:29:00 +0100 <Franciman> and saner defaults
2021-11-25 11:29:21 +0100acidjnk_new(~acidjnk@p200300d0c7271e1739bc3d1dda3deba6.dip0.t-ipconnect.de)
2021-11-25 11:29:27 +0100 <Franciman> and it encourages free software
2021-11-25 11:29:27 +0100acidjnk(~acidjnk@p200300d0c7271e17fcc20a5d4f804d59.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-11-25 11:29:59 +0100DNH(~DNH@2a02:8108:1100:16d8:a418:17da:6b4f:5fc3)
2021-11-25 11:29:59 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-11-25 11:30:40 +0100 <dminuoso> Not sure how NixOS does not encourage free software *shrug*
2021-11-25 11:30:56 +0100 <dminuoso> I havent heard many positive things from other NixOS users so far
2021-11-25 11:31:54 +0100 <dminuoso> Plus nix/nixos has matured really well in terms of integration, package availability and maintainership
2021-11-25 11:32:12 +0100 <dminuoso> Think nixpkgs is the most active repository on all of github right now?
2021-11-25 11:33:54 +0100 <Franciman> dminuoso: NixOS officially packages software that is non free
2021-11-25 11:33:58 +0100 <Franciman> that's encouraging its use
2021-11-25 11:34:08 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-25 11:34:36 +0100 <dminuoso> Im not sure about encouragement, to be honest.
2021-11-25 11:34:42 +0100 <dminuoso> This seems to be a religious topic for some I guess.
2021-11-25 11:35:00 +0100 <dminuoso> Absolutely nothing in all of nixos nudges you towards using it. In fact, you cant even install non-free software without explicitly enabling it.
2021-11-25 11:35:26 +0100 <Franciman> you are right
2021-11-25 11:35:36 +0100 <Franciman> I would have been best sayin: it does not discourage it
2021-11-25 11:35:39 +0100 <Franciman> that's a fact
2021-11-25 11:35:50 +0100 <Franciman> while guix actively discourages non free software
2021-11-25 11:35:52 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-25 11:35:53 +0100 <dminuoso> It discourages it by fact of not allowing you install it out of the box?
2021-11-25 11:35:58 +0100 <dminuoso> So its not a fact.
2021-11-25 11:36:08 +0100 <Franciman> and not allowing to talk about it in its mailing list, irc
2021-11-25 11:36:09 +0100 <Franciman> etc
2021-11-25 11:36:13 +0100 <Franciman> so you get no support for it
2021-11-25 11:36:26 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-25 11:36:30 +0100 <Franciman> they don't give support if you have problems with non free software
2021-11-25 11:36:38 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 11:36:45 +0100 <dminuoso> not allowing to talk about proprietary software is getting quite religious now. :)
2021-11-25 11:37:32 +0100 <dminuoso> I think you're conflating "discouraging" with "making it as hard as possible"
2021-11-25 11:37:34 +0100 <Franciman> I don't care
2021-11-25 11:37:46 +0100 <Franciman> why?
2021-11-25 11:37:50 +0100 <dminuoso> NixOS discourages proprietary software by fact of not allowing you to install any unless you explicitly set an option.
2021-11-25 11:38:23 +0100 <Franciman> I see
2021-11-25 11:38:44 +0100 <Franciman> so, Guix works harder to make you use free software
2021-11-25 11:38:48 +0100 <Franciman> also
2021-11-25 11:38:52 +0100 <dminuoso> That sounds reasonable
2021-11-25 11:38:53 +0100 <Franciman> non free software is not propertary
2021-11-25 11:39:02 +0100 <dminuoso> Or rather not reasonable, but sounds more correct
2021-11-25 11:39:32 +0100 <dminuoso> Not sure what the distinction there is
2021-11-25 11:39:59 +0100 <dminuoso> I always believed proprietary and non-free to be synonyms *shrugs*
2021-11-25 11:40:00 +0100 <Franciman> it's better discovered on your own
2021-11-25 11:40:13 +0100 <Franciman> when you sign for vscode things
2021-11-25 11:40:46 +0100 <dminuoso> If VSCode wants to attach special meaning to those words fine
2021-11-25 11:40:57 +0100 <dminuoso> But they're not the authority on the meaning of words
2021-11-25 11:41:11 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-11-25 11:42:39 +0100 <Franciman> I wouldn't say firefox is propertary
2021-11-25 11:42:46 +0100 <Franciman> yet it is not free software
2021-11-25 11:43:11 +0100 <dminuoso> What is the distinction you are trying to make?
2021-11-25 11:43:42 +0100 <dminuoso> What is non-free about firefox?
2021-11-25 11:43:53 +0100 <Franciman> I don't do the distinction
2021-11-25 11:44:15 +0100 <dminuoso> You just did
2021-11-25 11:44:21 +0100 <dminuoso> 11:42:47 Franciman | yet it is not free software
2021-11-25 11:44:21 +0100 <Franciman> it's the Free Software Foundation definition
2021-11-25 11:44:24 +0100 <Franciman> *shrugs*
2021-11-25 11:44:54 +0100 <Hecate> free software or open governance?
2021-11-25 11:44:57 +0100 <Hecate> two very different things
2021-11-25 11:45:36 +0100 <dminuoso> You're just leaving bits for me to guess
2021-11-25 11:45:41 +0100 <dminuoso> So Im not sure what you are referring to
2021-11-25 11:45:47 +0100 <Franciman> I thought it was a common knowledge
2021-11-25 11:45:50 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 11:45:50 +0100 <Franciman> ok
2021-11-25 11:45:52 +0100 <Franciman> one second
2021-11-25 11:46:32 +0100 <Franciman> https://www.gnu.org/philosophy/free-sw.html.en
2021-11-25 11:46:55 +0100 <merijn> How is Firefox non-free according to that definition?
2021-11-25 11:46:59 +0100 <Franciman> the users have the freedom to run, copy, distribute, study, change and improve the software.
2021-11-25 11:47:09 +0100 <Franciman> roughly this is the meaning
2021-11-25 11:47:15 +0100 <Franciman> and firefox doesn't allow you to distribute firefox
2021-11-25 11:47:20 +0100 <merijn> Franciman: It does
2021-11-25 11:47:24 +0100 <Franciman> one second
2021-11-25 11:47:26 +0100 <Franciman> holy hell
2021-11-25 11:47:29 +0100 <Franciman> so fast
2021-11-25 11:47:29 +0100 <merijn> It doesn't allow you to use the *name* firefox
2021-11-25 11:47:35 +0100 <Franciman> indeed
2021-11-25 11:47:42 +0100 <Franciman> that's a violation
2021-11-25 11:47:48 +0100 <dminuoso> No its not.
2021-11-25 11:47:49 +0100 <merijn> No
2021-11-25 11:47:52 +0100 <Franciman> holy hell
2021-11-25 11:47:54 +0100 <Franciman> one second
2021-11-25 11:48:00 +0100 <dminuoso> Its about distributing the *software*, not the trademark.
2021-11-25 11:48:06 +0100 <merijn> The *software* can be distributed just fine
2021-11-25 11:48:25 +0100 <merijn> You cannot randomly take a trademark of someone else and use that.
2021-11-25 11:48:37 +0100 <merijn> That is, however, not a restriction on the software
2021-11-25 11:48:41 +0100 <dminuoso> While I agree that the mozilla foundation has a lot of highly questionable practices, and they're not the moral pillar of the software community by far, firefox is by all accounts free software.
2021-11-25 11:48:44 +0100 <Franciman> Mozilla has found a clever way to take away freedom 2 ("The freedom to redistribute copies so you can help your neighbor") using trademark law instead of using copyright law.
2021-11-25 11:48:55 +0100 <merijn> Franciman: Untruee
2021-11-25 11:48:55 +0100 <Franciman> so you can't redistribute copies
2021-11-25 11:49:05 +0100 <merijn> Franciman: You *can* distribute copies, just not using the name firefox
2021-11-25 11:49:11 +0100 <Franciman> that's not firefox then
2021-11-25 11:49:21 +0100 <dminuoso> You're being silly now.
2021-11-25 11:49:27 +0100 <Franciman> honstly
2021-11-25 11:49:29 +0100 <Franciman> I don't care
2021-11-25 11:49:35 +0100 <Franciman> I am explaing some others point of view
2021-11-25 11:49:48 +0100 <Franciman> it's free software foundation that is arguing this
2021-11-25 11:49:50 +0100 <Franciman> not me
2021-11-25 11:50:00 +0100 <dminuoso> Where does the FSF argue that firefox is not free software based on this?
2021-11-25 11:50:09 +0100 <merijn> Mozilla's doing *exactly* what trademark law was created for: Preventing user confusion by ensuring you know *who* is behind a product
2021-11-25 11:50:20 +0100 <merijn> Franciman: Citation of FSF arguing against firefox being free please
2021-11-25 11:50:40 +0100 <Franciman> I quoted you
2021-11-25 11:50:45 +0100 <dminuoso> Where is that quote from?
2021-11-25 11:50:52 +0100 <merijn> Franciman: You didn't?
2021-11-25 11:50:54 +0100 <Franciman> https://libreplanet.org/wiki/Libre_Browsers_Libre_Formats
2021-11-25 11:50:57 +0100 <Franciman> it's from here
2021-11-25 11:51:01 +0100 <dminuoso> That is not the FSF
2021-11-25 11:51:09 +0100 <dminuoso> That's some random authors opinion
2021-11-25 11:51:11 +0100 <Franciman> https://libreplanet.org/wiki/Libre_Browsers_Libre_Formats#Browsers_that_might_or_might_not_be_free
2021-11-25 11:51:25 +0100 <Franciman> lol dminuoso can you stop being ridiculous and watch the bottom of the website?
2021-11-25 11:51:27 +0100 <dminuoso> Or maybe
2021-11-25 11:51:29 +0100 <merijn> Franciman: That's not an FSF site
2021-11-25 11:51:30 +0100 <dminuoso> Mm
2021-11-25 11:51:34 +0100 <Franciman> same merijn
2021-11-25 11:51:50 +0100 <Franciman> if you want to attack me
2021-11-25 11:51:52 +0100 <Franciman> please say so
2021-11-25 11:52:05 +0100 <Franciman> you don't even seem to want to look at what I link
2021-11-25 11:52:15 +0100 <dminuoso> It's certainly an FSF funded project
2021-11-25 11:52:21 +0100 <dminuoso> But its not the same as being the FSF itself
2021-11-25 11:52:26 +0100 <Franciman> you just keep saying it's not true
2021-11-25 11:53:36 +0100 <jackdk> That page links to a statement by Brett Smith, who at time of posting was a "License Compliance Engineer" at the FSF, if his signature is to be believed: https://lists.nongnu.org/archive/html/gnu-linux-libre/2011-08/msg00014.html
2021-11-25 11:55:06 +0100 <dminuoso> Thanks, jackdk
2021-11-25 11:55:17 +0100 <Franciman> it's not trueee
2021-11-25 11:55:20 +0100 <Franciman> it's not trueee
2021-11-25 11:55:22 +0100 <Franciman> it's not trueee
2021-11-25 11:55:26 +0100 <Franciman> screw that
2021-11-25 11:55:29 +0100 <Franciman> bye
2021-11-25 11:55:37 +0100 <Franciman> thanks jackdk
2021-11-25 11:56:41 +0100 <Franciman> where is merijn now?
2021-11-25 11:56:57 +0100 <Franciman> what do you think about this?
2021-11-25 11:57:32 +0100 <Hecate> I hope merijn is doing something more fulfilling
2021-11-25 11:57:32 +0100 <dminuoso> It's an interesting proposition, and I can see where they are coming from.
2021-11-25 11:57:54 +0100chomwitt(~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) (Ping timeout: 260 seconds)
2021-11-25 11:58:31 +0100 <merijn> merijn is back in his video conference meeting for work, which probably doesn't quote as more fulfilling than arguing on the internet :p
2021-11-25 11:59:01 +0100 <Hecate> hahaha
2021-11-25 11:59:27 +0100 <Franciman> this explains why you didn't open the links
2021-11-25 11:59:34 +0100 <Franciman> and kept saying it's not fsf
2021-11-25 11:59:53 +0100 <dminuoso> No, the issue is just that you expected us to prove your point for you
2021-11-25 12:00:07 +0100 <Franciman> that's what you assumed, tbf
2021-11-25 12:00:15 +0100 <Franciman> I linked a website by fsf and you said, this is not fsf
2021-11-25 12:00:18 +0100 <dminuoso> If you had just started out with the link jackdk had shown, all would have been simpler.
2021-11-25 12:00:21 +0100 <dminuoso> It was not FSF
2021-11-25 12:00:25 +0100 <Franciman> yeah sure
2021-11-25 12:00:25 +0100 <merijn> I somehwat agree with Brett that re-distributing unmodified Firefox using the name could be fine, but I disagree with him that's sufficient to violate the free rights
2021-11-25 12:00:28 +0100 <Franciman> *shrugs*
2021-11-25 12:00:29 +0100 <dminuoso> It was a website of a project *funded* by FSF
2021-11-25 12:00:58 +0100 <merijn> I opened libreplanet, read the firefox part, but I can't be arsed to go over the entire page and see if they are or aren't funded by the FSF
2021-11-25 12:01:19 +0100 <Franciman> but you can be arsed to say it's not fsf
2021-11-25 12:01:22 +0100 <dminuoso> And even if they are funded, their opinion might not necessarily match the FSFs opinion
2021-11-25 12:01:27 +0100 <dminuoso> It's not FSF.
2021-11-25 12:01:30 +0100 <Franciman> it is
2021-11-25 12:01:32 +0100 <dminuoso> No its not.
2021-11-25 12:01:40 +0100 <Franciman> *shrugs* *shrugs*
2021-11-25 12:01:47 +0100 <Franciman> ok
2021-11-25 12:02:07 +0100 <dminuoso> If the FSF funds a project, that project is not automagically part of the FSF.
2021-11-25 12:02:16 +0100 <dminuoso> either way
2021-11-25 12:02:30 +0100 <dminuoso> Not interested in continuing here
2021-11-25 12:02:45 +0100 <merijn> Franciman: Yes, because saying that takes 5 seconds. Anyway, this discussion seems mostly pointless. Brett says "unmodified firefox should be allowed to be distributed under the Firefox name, but requiring a name change on modification is fine"
2021-11-25 12:03:01 +0100 <Franciman> it's not
2021-11-25 12:03:14 +0100 <Franciman> I mean
2021-11-25 12:03:17 +0100 <Franciman> it's not the FSF
2021-11-25 12:03:19 +0100 <Franciman> its libreplanet
2021-11-25 12:03:20 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-11-25 12:03:20 +0100 <merijn> Franciman: Well, Brett's email linked by jackdk literally says it is
2021-11-25 12:03:24 +0100 <Franciman> one second
2021-11-25 12:03:32 +0100 <Franciman> I was saying something different
2021-11-25 12:03:42 +0100 <Franciman> I was saying it is not the FSF they are just funded by them
2021-11-25 12:03:45 +0100 <merijn> So restricting name usage on modified versions is fine with the FSF
2021-11-25 12:03:45 +0100 <Franciman> i.e. dminuoso is right
2021-11-25 12:04:06 +0100 <jackdk> please stop beeping me about this
2021-11-25 12:04:22 +0100 <merijn> My view: Restricting name usage on unmodified versions is a reasonable compromise, because it's hard to track down and check whether copies are modified or not
2021-11-25 12:04:34 +0100 <Franciman> sorry jackd.k
2021-11-25 12:04:41 +0100 <jackdk> thanks
2021-11-25 12:04:50 +0100 <Franciman> also time for offtopic
2021-11-25 12:05:00 +0100 <Franciman> or for merijn their conference
2021-11-25 12:06:05 +0100CiaoSen(~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-11-25 12:07:26 +0100deadmarshal(~deadmarsh@95.38.117.164) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-25 12:07:53 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 12:10:41 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8)
2021-11-25 12:15:11 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Ping timeout: 250 seconds)
2021-11-25 12:19:53 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-25 12:28:11 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 250 seconds)
2021-11-25 12:31:19 +0100__monty__(~toonn@user/toonn)
2021-11-25 12:34:31 +0100neurocyte0132889(~neurocyte@94.46.68.97)
2021-11-25 12:34:31 +0100neurocyte0132889(~neurocyte@94.46.68.97) (Changing host)
2021-11-25 12:34:31 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-11-25 12:36:37 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-11-25 12:41:58 +0100fr33domlover(~fr33@2.55.42.98)
2021-11-25 12:42:16 +0100royo(~royo@user/royo) ()
2021-11-25 12:43:28 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-11-25 12:43:29 +0100Cajun(~Cajun@user/cajun) (Ping timeout: 256 seconds)
2021-11-25 12:43:36 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-11-25 12:45:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-25 12:45:31 +0100CiaoSen(~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-11-25 12:45:31 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-25 12:46:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 12:46:49 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2021-11-25 12:52:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-25 12:52:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 12:52:42 +0100 <gentauro> are there only 3 employees at `well-typed`? https://www.dnb.com/business-directory/company-profiles.well-typed_llp.d4bf168abe3b4181d776efa2ad7…
2021-11-25 12:53:27 +0100 <Hecate> gentauro: the rest are consultants
2021-11-25 12:53:38 +0100 <gentauro> Hecate: aha
2021-11-25 12:53:43 +0100 <Hecate> gentauro: it's not a joke :')
2021-11-25 12:54:01 +0100 <gentauro> Hecate: so like `external freelancers` right?
2021-11-25 12:54:07 +0100 <Hecate> yeah
2021-11-25 12:54:10 +0100 <gentauro> just `body-shopped` for customers
2021-11-25 12:54:11 +0100 <gentauro> got it
2021-11-25 12:54:12 +0100 <gentauro> :)
2021-11-25 12:54:38 +0100 <Hecate> not necessarily body-shopped for customers, the consultants are long-term hires
2021-11-25 12:55:18 +0100 <gentauro> Hecate: but they are `sold` to `some company` right? Otherwise, how can WT pay the `freealnce` fee?
2021-11-25 12:55:44 +0100 <gentauro> I understood from Simon Marlow that FB + MS Research paid for two to work on GHC
2021-11-25 12:55:47 +0100 <gentauro> iirc
2021-11-25 12:56:11 +0100phma(phma@2001:5b0:212a:8778:d128:5f0e:1eb9:3baa) (Read error: Connection reset by peer)
2021-11-25 12:57:05 +0100phma(phma@2001:5b0:2144:5518:1989:d92a:fa65:167d)
2021-11-25 12:57:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-25 12:58:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 12:59:39 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-11-25 12:59:51 +0100mreh(~mreh@2a00:23c7:2803:ef00:841c:a322:61f5:4ad9)
2021-11-25 13:03:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-25 13:03:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 13:11:30 +0100enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2021-11-25 13:12:44 +0100enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) ()
2021-11-25 13:14:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-25 13:14:36 +0100burnsidesLlama(~burnsides@dhcp168-032.wadham.ox.ac.uk)
2021-11-25 13:14:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 13:16:33 +0100dsrt^(~dsrt@68.101.63.101)
2021-11-25 13:17:26 +0100notzmv(~zmv@user/notzmv)
2021-11-25 13:17:26 +0100max22-(~maxime@2a01cb0883359800d4d6b02a2c3bac5a.ipv6.abo.wanadoo.fr) (Ping timeout: 245 seconds)
2021-11-25 13:20:47 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 13:24:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-25 13:25:12 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-25 13:25:51 +0100chomwitt(~chomwitt@94.69.34.153)
2021-11-25 13:26:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 13:26:45 +0100sunarch(uid526836@user/sunarch)
2021-11-25 13:31:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-25 13:32:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 13:37:13 +0100michalz(~michalz@185.246.204.58) (Ping timeout: 268 seconds)
2021-11-25 13:37:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-25 13:38:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 13:43:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-25 13:44:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 13:45:21 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 245 seconds)
2021-11-25 13:45:40 +0100 <jackdk> arahael: https://github.com/brendanhay/amazonka/pull/713
2021-11-25 13:46:59 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 13:48:17 +0100 <arahael> woohoo! thanks jackdk! i'll check it out later in the week :) (midnight here now)
2021-11-25 13:49:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-25 13:50:12 +0100 <dminuoso> Oh whats new in aeson 2.0?
2021-11-25 13:50:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 13:50:25 +0100 <dminuoso> Anything exciting?
2021-11-25 14:06:33 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 250 seconds)
2021-11-25 14:07:38 +0100bliminse(~bliminse@host86-188-36-178.range86-188.btcentralplus.com) (Quit: leaving)
2021-11-25 14:10:30 +0100NrmncrNeuromancer
2021-11-25 14:11:57 +0100bliminse(~bliminse@host86-188-36-178.range86-188.btcentralplus.com)
2021-11-25 14:12:41 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2021-11-25 14:12:50 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
2021-11-25 14:13:25 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 14:24:48 +0100 <arahael> dminuoso: works with ghc 9.2.1
2021-11-25 14:25:00 +0100arahaelcant sleep
2021-11-25 14:25:47 +0100mmhat(~mmh@55d42d28.access.ecotel.net) (Quit: WeeChat 3.3)
2021-11-25 14:36:32 +0100Lycurgus(~juan@98.4.112.204)
2021-11-25 14:37:59 +0100slack1256(~slack1256@181.42.50.148)
2021-11-25 14:38:16 +0100jumper149(~jumper149@static.6.71.203.116.clients.your-server.de)
2021-11-25 14:38:29 +0100 <jumper149> Should I ever use `ReadP` or always stick to `ReadPrec`? I want to write a custom `Read` instance.
2021-11-25 14:41:11 +0100 <merijn> jumper149: honestly, neither if you wanna remain sane :p
2021-11-25 14:41:27 +0100 <merijn> Would also highly recommend not doing custom Read instances, tbh
2021-11-25 14:45:48 +0100burnsidesLlama(~burnsides@dhcp168-032.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-25 14:47:18 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-11-25 14:50:24 +0100kupi(uid212005@id-212005.hampstead.irccloud.com)
2021-11-25 14:52:26 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 268 seconds)
2021-11-25 14:54:22 +0100gentauro(~gentauro@user/gentauro) (Ping timeout: 260 seconds)
2021-11-25 14:56:24 +0100hiruji(~hiruji@user/hiruji)
2021-11-25 14:56:32 +0100gentauro(~gentauro@185.107.12.141)
2021-11-25 14:56:32 +0100gentauro(~gentauro@185.107.12.141) (Changing host)
2021-11-25 14:56:32 +0100gentauro(~gentauro@user/gentauro)
2021-11-25 14:58:41 +0100_bo(~bo@217.18.216.247)
2021-11-25 14:59:56 +0100michalz(~michalz@185.246.204.33)
2021-11-25 15:01:42 +0100Pickchea(~private@user/pickchea)
2021-11-25 15:02:18 +0100bo_(~bo@217.18.216.247)
2021-11-25 15:02:27 +0100_bo(~bo@217.18.216.247) (Client Quit)
2021-11-25 15:02:30 +0100bo_(~bo@217.18.216.247) (Client Quit)
2021-11-25 15:02:42 +0100_bo(~bo@217.18.216.247)
2021-11-25 15:04:25 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 15:04:57 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 15:06:20 +0100Lycurgusthinks about what kind of of epistemic ops would attach to an attestation under "tbh"
2021-11-25 15:07:18 +0100Lycurgusa defeasor of some sort prolly
2021-11-25 15:08:18 +0100max22-(~maxime@2a01cb088335980085c825298679dd8e.ipv6.abo.wanadoo.fr)
2021-11-25 15:10:15 +0100 <Unhammer> wow, perfecthash memory use is quite amazing
2021-11-25 15:10:42 +0100reumeth(~reumeth@user/reumeth)
2021-11-25 15:10:52 +0100 <Unhammer> Weigh says "Live 8M" where hashmap.strict is 97M (1 million bytestrings)
2021-11-25 15:12:14 +0100 <[exa]> how long are the bytestrings? smashing 1M bytestrings into 8M memory sounds fishy.
2021-11-25 15:13:58 +0100 <[exa]> (also does the memory allocated by CMPH count into this?)
2021-11-25 15:14:18 +0100 <Unhammer> https://github.com/unhammer/dictionaries/blob/perfecthash/Space.hs#L75-L76
2021-11-25 15:14:23 +0100 <Unhammer> Hm, maybe not?
2021-11-25 15:15:17 +0100 <Unhammer> I should make an executable and look at RES
2021-11-25 15:18:32 +0100Guest17(~Guest17@68.171.185.81.rev.sfr.net)
2021-11-25 15:21:26 +0100burnsidesLlama(~burnsides@dhcp168-032.wadham.ox.ac.uk)
2021-11-25 15:24:00 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-11-25 15:24:24 +0100rewq(~pc@102.184.117.46)
2021-11-25 15:25:48 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-11-25 15:26:15 +0100burnsidesLlama(~burnsides@dhcp168-032.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-11-25 15:26:28 +0100rewq(~pc@102.184.117.46) ()
2021-11-25 15:31:28 +0100 <Unhammer> Heh, I end up with exactly the same 304M RES if I read /usr/share/dict/nynorsk into either PerfectHash or HashMap.Strict, performGC and interact
2021-11-25 15:31:56 +0100 <Unhammer> no wait now perfecthash sunk to 225M :O
2021-11-25 15:33:00 +0100Guest17(~Guest17@68.171.185.81.rev.sfr.net) (Quit: Client closed)
2021-11-25 15:34:44 +0100 <Unhammer> … 95M
2021-11-25 15:35:01 +0100 <Unhammer> is there something a bit more reliable than System.Mem.performGC?
2021-11-25 15:38:13 +0100 <[exa]> no
2021-11-25 15:38:43 +0100 <[exa]> like, you can have a look at the implementation and relatively easily compute how much actual memory gets occupied, or spend half a century trying to invent a good method to measure RAM usage
2021-11-25 15:40:41 +0100 <Unhammer> hm, tough choices
2021-11-25 15:40:58 +0100jippiedoe(~david@2a02-a44c-e14e-1-b210-1839-c8ac-8b46.fixed6.kpn.net)
2021-11-25 15:42:07 +0100 <[exa]> honestly If you're after data efficiency and matching power, just make a perfect trie and store it in an array
2021-11-25 15:42:38 +0100 <[exa]> I wouldn't say there's much to be gained by really having a perfect hash here
2021-11-25 15:44:09 +0100 <Unhammer> I would say 1/3 RES memory usage by simply switching from hashmap.strict to perfecthash is quite a bit to be gained
2021-11-25 15:46:34 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-11-25 15:46:39 +0100jkaye(~jkaye@2601:281:8300:7530:1dd5:12e8:f7a8:958d)
2021-11-25 15:47:15 +0100jgeerds(~jgeerds@55d45b75.access.ecotel.net) (Ping timeout: 260 seconds)
2021-11-25 15:47:23 +0100 <[exa]> yeah if that helps your usecase
2021-11-25 15:47:57 +0100 <[exa]> I'm generally trying to avoid this kind of optimization because there's still 1000s of other things that may just explode the memory usage
2021-11-25 15:48:09 +0100 <[exa]> unless you know, you're sure that you can fit into 1000x less memory :D
2021-11-25 15:52:04 +0100 <Unhammer> I have a server that on startup reads a bunch of words into memory. It never adds/removes/changes anything after startup. It needs to be able to look them up fast and preferably not take too much memory. The word list is the main memory user, which I know because if I read less words I use less memory =P
2021-11-25 15:53:04 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-11-25 15:53:08 +0100 <Unhammer> so for me, less memory usage (while having good lookup speed) is the one optimization that would be worthwhile
2021-11-25 15:56:53 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2021-11-25 15:59:39 +0100 <Unhammer> https://github.com/unhammer/dictionaries/commit/b2f0e866d3f8d97d92df6215c8da79e9c5f89424
2021-11-25 16:00:10 +0100 <Unhammer> https://hackage.haskell.org/packages/search?terms=perfect%20trie :(
2021-11-25 16:00:32 +0100 <Unhammer> though maybe the 3.0 branch of bytestring-trie has less memory usage, haven't found time to try that yet
2021-11-25 16:00:41 +0100 <Unhammer> apparently it's a complete rewrite of internals
2021-11-25 16:01:27 +0100 <merijn> Unhammer: If your lookup thing-y is of considerable size you might also wanna look into compact regions to get a nice GC speed up
2021-11-25 16:02:02 +0100 <merijn> (this doesn't help reduce the overall memory usage, but still...)
2021-11-25 16:03:33 +0100 <merijn> Unhammer: Also, are you aware of "+RTS -sstderr"?
2021-11-25 16:06:16 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-25 16:11:32 +0100dsrt^(~dsrt@68.101.63.101) (Remote host closed the connection)
2021-11-25 16:11:50 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
2021-11-25 16:16:40 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 16:18:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-25 16:18:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-25 16:18:26 +0100wroathe(~wroathe@user/wroathe)
2021-11-25 16:18:31 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 260 seconds)
2021-11-25 16:20:46 +0100acidjnk_new(~acidjnk@p200300d0c7271e1739bc3d1dda3deba6.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-11-25 16:21:08 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-25 16:21:48 +0100jjw(~user@2600:1700:53b0:3d1f:8c2d:4169:3092:35c1)
2021-11-25 16:24:22 +0100jjw(~user@2600:1700:53b0:3d1f:8c2d:4169:3092:35c1) (Quit: ERC (IRC client for Emacs 28.0.50))
2021-11-25 16:25:06 +0100jippiedoe(~david@2a02-a44c-e14e-1-b210-1839-c8ac-8b46.fixed6.kpn.net) (Quit: Leaving)
2021-11-25 16:26:40 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-25 16:28:07 +0100srk(~sorki@user/srk) (Quit: ZNC 1.8.1 - https://znc.in)
2021-11-25 16:28:26 +0100srk(~sorki@user/srk)
2021-11-25 16:28:27 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Client Quit)
2021-11-25 16:28:38 +0100 <lortabac> speaking of which... is it normal that the time spent in the mutator increases when using compact regions? (the overall time goes down thanks to the reduced GC time)
2021-11-25 16:28:42 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-25 16:29:05 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-25 16:29:12 +0100 <lortabac> or am I hitting some pathological case?
2021-11-25 16:29:18 +0100 <merijn> lortabac: I mean, if you spend less time on GC then obviously the fraction spent in the mutator seems obvious?
2021-11-25 16:29:24 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Client Quit)
2021-11-25 16:29:26 +0100 <merijn> +increases
2021-11-25 16:29:28 +0100 <lortabac> merijn: :)
2021-11-25 16:29:40 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-25 16:29:41 +0100 <lortabac> merijn: the absolute time increases
2021-11-25 16:29:59 +0100 <merijn> lortabac: "It Depends"
2021-11-25 16:30:06 +0100 <merijn> Creating the compact region takes mutator time
2021-11-25 16:30:33 +0100 <merijn> So if your measurement is short enough, that might increase the overall time
2021-11-25 16:33:00 +0100 <merijn> So I can certainly think of some cases where that might happen. But it depends on tons of factors like the size of the region you're creating, how long the rest of the workload is, etc.
2021-11-25 16:34:14 +0100cheater(~Username@user/cheater) (Ping timeout: 260 seconds)
2021-11-25 16:37:11 +0100 <lortabac> merijn: the increase in mutator time seems to be proportional to the total time, so it's probably not the creation alone
2021-11-25 16:37:49 +0100 <tomsmeding> is the size of the compact region also proportional to that?
2021-11-25 16:37:54 +0100 <lortabac> tomsmeding: no
2021-11-25 16:37:58 +0100 <lortabac> the size is fixed
2021-11-25 16:38:00 +0100 <tomsmeding> if so, creation might be linear in the size of the compact region
2021-11-25 16:38:00 +0100 <tomsmeding> ah
2021-11-25 16:40:56 +0100cheater(~Username@user/cheater)
2021-11-25 16:44:32 +0100Feuermagier_(~Feuermagi@213.178.26.41) (Quit: Leaving)
2021-11-25 16:44:43 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-11-25 16:46:37 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-25 16:52:33 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
2021-11-25 16:52:41 +0100jkaye(~jkaye@2601:281:8300:7530:1dd5:12e8:f7a8:958d) (Ping timeout: 268 seconds)
2021-11-25 16:54:56 +0100 <merijn> lortabac: I'd be interested in seeing the GC summary and/or profiling data :)
2021-11-25 16:56:34 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-25 16:57:38 +0100Pickchea(~private@user/pickchea) (Ping timeout: 268 seconds)
2021-11-25 16:58:21 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Quit: gone to sleep. ZZZzzz…)
2021-11-25 16:59:41 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-25 16:59:46 +0100 <lortabac> merijn: it's for an open-source project, if you are really curious I can push the two branches (with and without compact regions) to Github
2021-11-25 17:00:02 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-25 17:00:37 +0100 <lortabac> however I don't think I'll have time today, maybe tomorrow
2021-11-25 17:02:03 +0100EvanR_EvanR
2021-11-25 17:02:15 +0100EvanR(~evan@2600:1700:ba69:10:5c7c:46a9:5e48:ea) (Changing host)
2021-11-25 17:02:15 +0100EvanR(~evan@user/evanr)
2021-11-25 17:02:41 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-25 17:03:05 +0100burnsidesLlama(~burnsides@dhcp168-032.wadham.ox.ac.uk)
2021-11-25 17:03:17 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea)
2021-11-25 17:06:04 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Client Quit)
2021-11-25 17:06:08 +0100 <merijn> lortabac: tbh, I'm not curious enough to generate them myself :p But if you make them, feel free to ping me and I'll have a look :)
2021-11-25 17:06:43 +0100 <lortabac> merijn: is +RTS -t enough or do you want something else?
2021-11-25 17:06:48 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2021-11-25 17:07:04 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-25 17:07:13 +0100 <merijn> lortabac: +RTS -sstderr reports GC statistics
2021-11-25 17:07:20 +0100 <lortabac> ok
2021-11-25 17:07:23 +0100 <merijn> Not sure what -t does :p
2021-11-25 17:07:29 +0100TMA(tma@twin.jikos.cz) (Ping timeout: 268 seconds)
2021-11-25 17:08:10 +0100 <merijn> Ah
2021-11-25 17:08:19 +0100 <merijn> -s is just the human readable version of -t :)
2021-11-25 17:08:39 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-11-25 17:09:18 +0100 <merijn> lortabac: Essentially this is the difference: https://paste.tomsmeding.com/w5NxWtcc
2021-11-25 17:10:31 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-25 17:11:09 +0100 <EvanR> compact regions are useful as like, a ROM sort of thing, right xD
2021-11-25 17:11:23 +0100 <EvanR> once forged you carry it around for a while and don't change it
2021-11-25 17:11:47 +0100 <lortabac> merijn: https://pastebin.com/Lp1gG0Cj
2021-11-25 17:12:09 +0100 <EvanR> so discussion about mutator sounds fnuny xD
2021-11-25 17:14:18 +0100 <lortabac> maybe there is some implementation detail that makes the mutator slightly slower
2021-11-25 17:17:01 +0100 <Unhammer> merijn, yeah i've been meaning to try compact regions, it looks like a great fit for my use case (lots of reading on startup, then just lookup and minor processing)
2021-11-25 17:19:37 +0100 <Unhammer> EvanR, yeah
2021-11-25 17:19:46 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-11-25 17:20:20 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 17:24:38 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 260 seconds)
2021-11-25 17:30:35 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:bdf3:903c:8a82:6328) (Quit: WeeChat 2.8)
2021-11-25 17:31:17 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Remote host closed the connection)
2021-11-25 17:32:39 +0100 <dsal> I'm feeling extra dumb today. Why can't something like this work: `f :: (a -> [a]) -> Int ; f g = length (g 'x')`
2021-11-25 17:33:35 +0100 <merijn> dsal: 'x' is not a list?
2021-11-25 17:33:43 +0100 <dsal> (I know *how* to make it work, I just don't quite understand why it doesn't)
2021-11-25 17:33:58 +0100 <dsal> g is the function (a -> [a])
2021-11-25 17:34:03 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 17:34:08 +0100 <merijn> oh, right
2021-11-25 17:34:09 +0100 <dsal> It doesn't like that 'x' isn't `a`
2021-11-25 17:34:17 +0100 <merijn> dsal: The 2nd bit is that the *caller* decides 'a'
2021-11-25 17:34:31 +0100 <merijn> dsal: I can call 'f' with (Int -> [Int])
2021-11-25 17:34:32 +0100 <dsal> The caller of `f`?
2021-11-25 17:34:38 +0100 <merijn> Which obviously doesn't work with your code
2021-11-25 17:34:42 +0100 <merijn> dsal: Yes
2021-11-25 17:34:48 +0100 <dsal> OK. That makes sense. Thanks.
2021-11-25 17:35:05 +0100 <merijn> dsal: The Rank2 version explicitly says the caller of 'f' *must* give a polymorphic function
2021-11-25 17:35:30 +0100 <merijn> dsal: So passing 'Int -> [Int]' becomes an error
2021-11-25 17:35:33 +0100 <dsal> Right, that makes sense. I was just getting a bit confused as to how `a` was resolved in the default case.
2021-11-25 17:36:01 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 17:36:16 +0100Guest17(~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-11-25 17:37:03 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-11-25 17:38:10 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
2021-11-25 17:38:20 +0100 <dsal> Thanks for the clarity. :)
2021-11-25 17:38:53 +0100 <EvanR> does a compact region improve performance of a big IntMap or Map you think?
2021-11-25 17:38:56 +0100 <dsal> I'm slightly confused as to how something like `f :: (a -> [a]) -> Int` could be useful. I guess it's useful if there's another `a`
2021-11-25 17:38:57 +0100 <EvanR> due to being... compact
2021-11-25 17:39:19 +0100random-jellyfish(~random-je@user/random-jellyfish)
2021-11-25 17:39:31 +0100 <EvanR> I heard about this L1 L2 cache thing
2021-11-25 17:40:21 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-11-25 17:41:12 +0100 <EvanR> does improved locality make a measurable difference in lookups
2021-11-25 17:42:15 +0100 <dsal> This is pretty neat because I did a thing that was obvious to me how to do, but then someone else wanted me to explain it and I couldn't. heh.
2021-11-25 17:42:32 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2021-11-25 17:44:26 +0100 <EvanR> forall . a -> [a] doesn't have too many possibilities
2021-11-25 17:44:29 +0100gdd(~gdd@129.199.146.230) (Ping timeout: 268 seconds)
2021-11-25 17:45:02 +0100 <EvanR> and the Int can't really make use of it, whatever it is
2021-11-25 17:46:00 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-11-25 17:46:23 +0100gdd(~gdd@129.199.146.230)
2021-11-25 17:47:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-11-25 17:47:13 +0100mreh(~mreh@2a00:23c7:2803:ef00:841c:a322:61f5:4ad9) (Ping timeout: 256 seconds)
2021-11-25 17:47:37 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Remote host closed the connection)
2021-11-25 17:47:44 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-11-25 17:48:02 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-25 17:49:32 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-25 17:49:59 +0100 <dsal> Yeah, this is the remaining bit of scoping that's not intuitive to me. That just looks like `(:[])` to me.
2021-11-25 17:50:32 +0100 <EvanR> you could also do like \x -> [x,x]
2021-11-25 17:50:32 +0100mbuf(~Shakthi@122.174.170.222) (Quit: Leaving)
2021-11-25 17:50:42 +0100 <EvanR> don't forget \x -> []
2021-11-25 17:52:19 +0100reumeth(~reumeth@user/reumeth) (Ping timeout: 260 seconds)
2021-11-25 17:52:21 +0100 <EvanR> I reread what you did. f :: (forall a . a -> [a]) -> Int does work xD
2021-11-25 17:52:52 +0100 <EvanR> forall a . (a -> [a]) -> Int doesn't
2021-11-25 17:56:45 +0100 <EvanR> inCompact :: Compact b -> a -> IO Bool -- wait a minute...
2021-11-25 17:57:04 +0100 <EvanR> check if second argument "is inside the" compact region
2021-11-25 17:57:20 +0100 <EvanR> referential transparency sense tingling
2021-11-25 17:58:03 +0100 <EvanR> so if you pass two different second arguments with the "same value" it may give two answers? I'm not even sure how IO can excuse this
2021-11-25 17:58:10 +0100 <monochrom> The IO saves you from referential obligations.
2021-11-25 17:58:15 +0100 <hpc> IO excuses everything
2021-11-25 17:58:25 +0100 <hpc> except for unsafeInterleaveIO :D
2021-11-25 17:58:33 +0100 <EvanR> should we believe that for any type a, we have pointer to heap objects to play with
2021-11-25 17:58:34 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-11-25 17:58:53 +0100 <monochrom> https://ro-che.info/ccc/9
2021-11-25 17:59:26 +0100 <monochrom> Yes, a::* and * is boxed.
2021-11-25 18:00:01 +0100 <monochrom> Or rather, * requires/guarantees boxing.
2021-11-25 18:00:47 +0100 <EvanR> that's... I was just thinking how if you have an unknown a you don't have anything. Not even "ah ha, ObjectId"
2021-11-25 18:00:54 +0100 <EvanR> from OOP languages
2021-11-25 18:01:23 +0100 <EvanR> and how in haskell you can claim that there are no excepts to the rules xD
2021-11-25 18:01:38 +0100 <monochrom> OK, did you know that boxed Int and unboxed Int# have different kinds?
2021-11-25 18:01:44 +0100 <EvanR> yeah
2021-11-25 18:02:02 +0100 <EvanR> and e.g. StableNames only works on boxed?
2021-11-25 18:02:05 +0100 <monochrom> Did you know that so-called "a -> b" is implicitly a::* and b::* ?
2021-11-25 18:02:16 +0100 <monochrom> Did you know that * is the boxed kind?
2021-11-25 18:02:28 +0100 <EvanR> a -> b really being about *, I will have to digest
2021-11-25 18:02:42 +0100 <monochrom> "you don't have anything" is false. I have something, I know that there is a boxing constraint.
2021-11-25 18:02:59 +0100 <hpc> boxing is what gets you undefined as well, fwiw
2021-11-25 18:03:00 +0100 <EvanR> is that it? xD
2021-11-25 18:03:07 +0100 <monochrom> Yes.
2021-11-25 18:03:29 +0100 <EvanR> If I find something else, more hair on this black hole, I will be back
2021-11-25 18:03:47 +0100 <monochrom> Like you said yesterday. Physicis is full of stories. So is Haskell, or at least GHC's Haskell.
2021-11-25 18:03:48 +0100 <dsal> EvanR: Yeah, I understand how to make it work. I'm just a bit confused about the outer scope case. It feels like it should be resolvable because my brain still needs some rewiring to understand that. I should perhaps make some more obviously incorrect proposals to the compiler.
2021-11-25 18:04:19 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.1)
2021-11-25 18:04:32 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 18:05:21 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 245 seconds)
2021-11-25 18:05:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-25 18:05:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-25 18:05:31 +0100wroathe(~wroathe@user/wroathe)
2021-11-25 18:05:42 +0100zer0bitz(~zer0bitz@dsl-hkibng31-54fabc-15.dhcp.inet.fi)
2021-11-25 18:06:16 +0100reumeth(~reumeth@user/reumeth)
2021-11-25 18:09:47 +0100 <EvanR> dang only 29 total closed cartesian comics
2021-11-25 18:10:23 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-11-25 18:12:21 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2021-11-25 18:13:51 +0100pfurla(~pfurla@201.17.118.230)
2021-11-25 18:14:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 18:15:33 +0100Guest17(~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds)
2021-11-25 18:15:55 +0100CiaoSen(~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-11-25 18:19:32 +0100fr33domlover(~fr33@2.55.42.98) (Ping timeout: 240 seconds)
2021-11-25 18:20:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-25 18:23:50 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-11-25 18:31:16 +0100cheater(~Username@user/cheater) (Quit: (BitchX) The birds kept calling his name, thought Caw)
2021-11-25 18:31:36 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 245 seconds)
2021-11-25 18:33:51 +0100pfurla(~pfurla@201.17.118.230) (Quit: gone to sleep. ZZZzzz…)
2021-11-25 18:34:13 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 18:35:32 +0100DNH(~DNH@2a02:8108:1100:16d8:a418:17da:6b4f:5fc3) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-25 18:36:18 +0100 <[itchyjunk]> Hmm
2021-11-25 18:37:26 +0100rkrishnan(~user@122.172.141.170) (Ping timeout: 260 seconds)
2021-11-25 18:37:40 +0100 <[itchyjunk]> How come i can 2:[] but not []:2 ?
2021-11-25 18:38:08 +0100 <EvanR> well what is the type of :
2021-11-25 18:38:11 +0100 <yushyin> :t (:)
2021-11-25 18:38:12 +0100 <lambdabot> a -> [a] -> [a]
2021-11-25 18:38:38 +0100 <[itchyjunk]> ah
2021-11-25 18:39:49 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-25 18:41:52 +0100 <EvanR> :k 2
2021-11-25 18:41:53 +0100 <lambdabot> GHC.Types.Nat
2021-11-25 18:42:28 +0100 <[itchyjunk]> https://bpa.st/IQWQ
2021-11-25 18:42:31 +0100 <[itchyjunk]> behold!
2021-11-25 18:42:45 +0100 <[itchyjunk]> though it seems pointless now
2021-11-25 18:43:28 +0100 <EvanR> it takes a lot of effort to put something at the end of a list
2021-11-25 18:43:38 +0100 <EvanR> not very lazy
2021-11-25 18:43:58 +0100 <dsal> Nah, pointless is
2021-11-25 18:43:58 +0100 <dsal> :t flip (:) []
2021-11-25 18:43:59 +0100 <lambdabot> a -> [a]
2021-11-25 18:44:36 +0100 <dsal> Need to flip harder.
2021-11-25 18:44:44 +0100 <[itchyjunk]> Hey, my thing works. Any feed back?
2021-11-25 18:44:44 +0100 <[itchyjunk]> https://bpa.st/GP6Q
2021-11-25 18:45:03 +0100 <[itchyjunk]> I wasn't sure i needed to handle [] and [x] or not
2021-11-25 18:45:16 +0100 <[itchyjunk]> but that was my mental process so i put it in anyways
2021-11-25 18:45:27 +0100 <dsal> > pure 3 :: [Int]
2021-11-25 18:45:28 +0100 <lambdabot> [3]
2021-11-25 18:45:33 +0100 <EvanR> if you remove the [] case, then it crashes on []
2021-11-25 18:45:37 +0100 <EvanR> so yeah
2021-11-25 18:46:25 +0100 <[itchyjunk]> ahh the [x] case was redundent
2021-11-25 18:46:31 +0100 <dsal> @src reverse
2021-11-25 18:46:31 +0100 <lambdabot> reverse = foldl (flip (:)) []
2021-11-25 18:46:39 +0100 <[itchyjunk]> ahh the [] case handles it
2021-11-25 18:46:42 +0100 <dsal> Well there's a "why don't you just"
2021-11-25 18:47:15 +0100 <[itchyjunk]> Right, i'll have to relearn all the inbuilt ways to do this at some point. but these are the simplest exercise i could think of
2021-11-25 18:47:24 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 18:47:43 +0100 <EvanR> try to understand how intensive your algorithm is by doing an example on like, a list of length 5
2021-11-25 18:47:51 +0100 <dsal> Sure. The one thing that you might note is that this function doesn't care about `Int` at all.
2021-11-25 18:48:16 +0100 <[itchyjunk]> oh yeah it should take any type of list
2021-11-25 18:48:17 +0100 <EvanR> evaluate the steps of the algorithm (lazily)
2021-11-25 18:48:25 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2021-11-25 18:48:26 +0100 <EvanR> see it explode xD
2021-11-25 18:48:27 +0100 <[itchyjunk]> overloading aka ad hoc polymorphism thing
2021-11-25 18:48:47 +0100 <EvanR> s/ad hoc/parametric/
2021-11-25 18:49:00 +0100mreh(~mreh@2a00:23c7:2803:ef00:841c:a322:61f5:4ad9)
2021-11-25 18:49:06 +0100 <[itchyjunk]> is this parametric?
2021-11-25 18:49:13 +0100 <EvanR> yeah, ad hoc is type classes
2021-11-25 18:49:13 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-25 18:49:40 +0100 <[itchyjunk]> "In programming languages, ad hoc polymorphism[1] is a kind of polymorphism in which polymorphic functions can be applied to arguments of different types, because a polymorphic function can denote a number of distinct and potentially heterogeneous implementations depending on the type of argument(s) to which it is applied."
2021-11-25 18:50:04 +0100 <[itchyjunk]> seems to fit the bill here no?
2021-11-25 18:50:12 +0100 <EvanR> note the heterogeneous part
2021-11-25 18:50:27 +0100 <EvanR> your reverse algorithm treats the payload of the list the same regardless of what it is
2021-11-25 18:50:35 +0100 <EvanR> not hetero
2021-11-25 18:50:55 +0100 <[itchyjunk]> hmm
2021-11-25 18:51:28 +0100 <EvanR> example of ad hoc is sorting :: Ord a => [a] -> [a]
2021-11-25 18:51:49 +0100 <EvanR> the a 1. has to come with comparison operation and 2. can be different for different a
2021-11-25 18:52:01 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-11-25 18:52:23 +0100 <[itchyjunk]> oh i think i kinda get it
2021-11-25 18:52:43 +0100 <[itchyjunk]> going back to my reverse funcction, how do i change my signature such that it doesn't care what's in the list?
2021-11-25 18:53:02 +0100 <EvanR> replace Int with a
2021-11-25 18:53:05 +0100 <[itchyjunk]> i tried f :: [a] -> [a] but getitng a not in scope error
2021-11-25 18:53:07 +0100 <[itchyjunk]> oh
2021-11-25 18:53:18 +0100 <monochrom> IMO that paragraphs used a lot of unnecessary long words to describe a very simple thing.
2021-11-25 18:53:40 +0100 <monochrom> Ad hoc means behaviour varies by type. Done.
2021-11-25 18:54:06 +0100 <[itchyjunk]> ah and parametric means behavior is the same regardless of type?
2021-11-25 18:54:16 +0100 <monochrom> The opposite of ad hoc is parametric. It means uniform over types. Done.
2021-11-25 18:54:30 +0100 <EvanR> reverse does the same thing regardless of a
2021-11-25 18:54:35 +0100 <[itchyjunk]> something weird happened, f ['a','b'] returns a `ba` instead of [
2021-11-25 18:54:38 +0100 <monochrom> And IMO a very simple example would complete it.
2021-11-25 18:54:44 +0100 <[itchyjunk]> ['b','a']
2021-11-25 18:55:04 +0100 <EvanR> > ['a', 'b', 'c', 'd']
2021-11-25 18:55:05 +0100 <lambdabot> "abcd"
2021-11-25 18:55:14 +0100 <EvanR> syntactic sugar for list of Char
2021-11-25 18:55:15 +0100 <[itchyjunk]> hmm
2021-11-25 18:55:18 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-11-25 18:55:22 +0100 <[itchyjunk]> ah
2021-11-25 18:55:30 +0100 <monochrom> You are asked to write "f :: a -> a". Can you write this? "f x = if x is an int then x+1 else if x is a string then ..."
2021-11-25 18:55:38 +0100 <monochrom> If yes, ad hoc. If no, parametric.
2021-11-25 18:56:25 +0100 <[itchyjunk]> hmm i guess i could write that if i figure out how to know what the type of a is
2021-11-25 18:56:40 +0100 <monochrom> No, you can't do it in Haskell.
2021-11-25 18:56:49 +0100 <monochrom> But you can do it in Java. Use instanceOf.
2021-11-25 18:57:18 +0100 <[itchyjunk]> Ah.. i am supposed to use instanceOf for my next hw set.. funny it came up here
2021-11-25 18:57:32 +0100 <[itchyjunk]> There is no way to ask haskell about the type of a ?
2021-11-25 18:57:38 +0100 <monochrom> No.
2021-11-25 18:57:46 +0100 <[itchyjunk]> hmmmmm
2021-11-25 18:57:53 +0100 <EvanR> that would violate parametricity
2021-11-25 18:58:01 +0100 <monochrom> If I relax the type sig to "f :: Typeable a => a -> a" then you can. But I didn't.
2021-11-25 18:58:31 +0100benin(~benin@183.82.179.164) (Quit: The Lounge - https://thelounge.chat)
2021-11-25 18:58:49 +0100 <[itchyjunk]> take a, get it's ascii value and if it's in the range to to numbers, add 1 else something else?
2021-11-25 18:58:56 +0100 <[itchyjunk]> to be*
2021-11-25 18:59:05 +0100cheater(~Username@user/cheater)
2021-11-25 18:59:18 +0100 <monochrom> "get its ascii value" requires Show a. But I didn't allow Show a.
2021-11-25 18:59:39 +0100 <[itchyjunk]> hmmmm
2021-11-25 18:59:57 +0100 <EvanR> if someone gives you a parametric type, you immediately know stuff about what it can and can't do
2021-11-25 19:00:07 +0100 <dsal> `a` by itself means "any type at all is relevant here" and all possible types is greater than "all types that can show themselves"
2021-11-25 19:00:10 +0100 <[itchyjunk]> Is this the monad stuff? try to add 1 and if it fails do nothing
2021-11-25 19:00:17 +0100 <[itchyjunk]> if it works, great, move on?
2021-11-25 19:00:23 +0100 <dsal> constraints reduce the types you can pass, but give you a bit of wiggle room for doing things with the values.
2021-11-25 19:00:54 +0100 <EvanR> if they say, never mind the parametric part isn't always honored, now you don't know things anymore
2021-11-25 19:01:03 +0100 <monochrom> Monad is irrelevant.
2021-11-25 19:01:05 +0100 <[itchyjunk]> Oh there are types that can show themselves and that can't show themsleves? @_@
2021-11-25 19:01:23 +0100 <dsal> No type can show itself unless granted that power.
2021-11-25 19:01:25 +0100 <dsal> :t show
2021-11-25 19:01:26 +0100 <lambdabot> Show a => a -> String
2021-11-25 19:01:38 +0100 <dsal> (well, show values of the type)
2021-11-25 19:01:41 +0100 <EvanR> yeah you can't print out of a function
2021-11-25 19:01:49 +0100jumper149(~jumper149@static.6.71.203.116.clients.your-server.de) (Quit: WeeChat 3.3)
2021-11-25 19:01:57 +0100 <EvanR> show (+1) ... doesn't work
2021-11-25 19:02:10 +0100 <[itchyjunk]> hmmm
2021-11-25 19:03:40 +0100 <EvanR> it would be nice to get debug info for any value whatever, but here we are xD
2021-11-25 19:03:55 +0100 <[itchyjunk]> Given `f :: a -> a` is it possible to write "f x = if x is an int then x+1 else if x is a string then ..." at all?
2021-11-25 19:04:03 +0100 <monochrom> No.
2021-11-25 19:04:06 +0100 <[itchyjunk]> ah
2021-11-25 19:04:44 +0100 <EvanR> but can write a f :: a -> a, it just can't do that
2021-11-25 19:05:10 +0100 <monochrom> But you can in Java generics. <T> T f(T a) { if (a instanceOf Integer) { ...
2021-11-25 19:05:26 +0100 <monochrom> This shows that Java generics is still not parametric polymorphism.
2021-11-25 19:05:56 +0100 <monochrom> Or vice versa, Haskell parametric polymorphism is not Java generics.
2021-11-25 19:06:20 +0100 <[itchyjunk]> interesting!
2021-11-25 19:06:37 +0100 <[itchyjunk]> I know almost nothing about java generics though, but makes sense i think
2021-11-25 19:07:04 +0100 <monochrom> You don't hear that very often because in practice, people don't actually abuse Java generics that way, they use it as parametric polymorphism, so no one notices the difference.
2021-11-25 19:07:49 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-25 19:08:22 +0100 <[itchyjunk]> couldn't i overload it? f(int a) { return a + 1;} f( char a) { do char stuff}
2021-11-25 19:08:27 +0100chisui(~chisui@2001:16b8:6636:e400:16e3:5e8c:67f1:d219)
2021-11-25 19:08:49 +0100 <monochrom> So we are in this Pareto/Nash equilibrium in which the older programmers don't abuse it, therefore the newer programmers don't know that they can abuse it. By induction it is a lost dark art.
2021-11-25 19:08:58 +0100 <hpc> that's not polymorphism
2021-11-25 19:09:10 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 260 seconds)
2021-11-25 19:09:23 +0100 <[itchyjunk]> hmm i thought overloading was polymorphism :s
2021-11-25 19:09:33 +0100 <EvanR> that's C++ style ad hoc polymorphism
2021-11-25 19:09:33 +0100 <hpc> it's type-directed name resolution, those fs are two different functions and it picks between them based on how you call it
2021-11-25 19:09:41 +0100 <monochrom> Haskell uses ad hoc polymorphism for overloading.
2021-11-25 19:09:54 +0100 <monochrom> But nothing says a language must.
2021-11-25 19:09:56 +0100_bo(~bo@217.18.216.247) (Ping timeout: 245 seconds)
2021-11-25 19:10:12 +0100 <[itchyjunk]> in java, that's overloading aka ad hoc polymorphism no? using f with different signatures?
2021-11-25 19:10:18 +0100 <hpc> it's not the same f
2021-11-25 19:10:42 +0100 <monochrom> In Java, the point is exactly overloading is orthogonal to polymorphism.
2021-11-25 19:10:42 +0100 <hpc> it's two different functions with the same name
2021-11-25 19:10:47 +0100 <EvanR> go to a different language, get different conflicting terminology xD
2021-11-25 19:11:14 +0100 <[itchyjunk]> so overloading in haskell uses the same f somehow? huh interesting
2021-11-25 19:11:23 +0100 <[itchyjunk]> guess i shouldn't take things i learn in java too seriously then
2021-11-25 19:11:33 +0100 <[itchyjunk]> thought i understood polymorphism :D
2021-11-25 19:11:35 +0100 <monochrom> It's OK to take Java seriously.
2021-11-25 19:11:49 +0100 <monochrom> What's wrong is assuming that everyone solves problems the same way.
2021-11-25 19:12:16 +0100 <monochrom> or assuming that there is only one way.
2021-11-25 19:12:18 +0100 <hpc> iirc, if you wrote f(Object a) and f(SomethingElse a), g(Object a) {f(a)} is going to use the Object f, even if you do g(somethingElseValue)
2021-11-25 19:13:15 +0100 <monochrom> Terminology is a lost cause. Every echo chamber has its terminology.
2021-11-25 19:13:31 +0100 <monochrom> Echo chamber is human nature.
2021-11-25 19:13:54 +0100 <[itchyjunk]> Are polymorphisms implemented differently in different FP as well?
2021-11-25 19:13:56 +0100shriekingnoise(~shrieking@186.137.144.80)
2021-11-25 19:14:07 +0100 <[itchyjunk]> or is it more or less consistent in FPs at least?
2021-11-25 19:14:34 +0100chisui(~chisui@2001:16b8:6636:e400:16e3:5e8c:67f1:d219) (Quit: Client closed)
2021-11-25 19:15:05 +0100 <hpc> in the ML family it's more or less always parametric polymorphism
2021-11-25 19:15:23 +0100 <hpc> clojure is lisp on the jvm, so it takes after java even though it's functional
2021-11-25 19:15:36 +0100chisui(~chisui@2001:16b8:6636:e400:16e3:5e8c:67f1:d219)
2021-11-25 19:15:37 +0100random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
2021-11-25 19:15:50 +0100 <hpc> other lisps are completely untyped, lambda calculus comes in every typed and untyped variant you can think of
2021-11-25 19:15:55 +0100 <[itchyjunk]> ohh didn't know cloure was fp
2021-11-25 19:17:02 +0100 <EvanR> yeah it is
2021-11-25 19:17:12 +0100 <EvanR> despite itself xD
2021-11-25 19:17:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 19:17:48 +0100 <sshine> [itchyjunk], ML modules also encourage ad-hoc polymorphism, e.g. https://stackoverflow.com/questions/37694313/make-ocaml-function-polymorphic-for-int-lists-and-flo…
2021-11-25 19:19:41 +0100 <monochrom> At that point, you are translating ad hoc polymorphism to parametric polymorphism and then you wonder why there is a line.
2021-11-25 19:20:03 +0100 <monochrom> sort :: Ord a => [a] -> [a] involves a bit of ad hoc polymorphism, yes.
2021-11-25 19:20:34 +0100 <monochrom> But in a language without Haskell type class, you could have gone sortBy :: (a -> a -> Bool) -> [a] -> [a].
2021-11-25 19:20:49 +0100 <monochrom> which is a low-tech version of the module approach.
2021-11-25 19:21:17 +0100 <monochrom> But then, technically, "(a -> a -> Bool) -> [a] -> [a]" is parametric polymorphism.
2021-11-25 19:21:29 +0100 <EvanR> seeing C++ overloading as type directed name resolution and not polymorphism is cool xD
2021-11-25 19:21:42 +0100 <EvanR> now I wonder what polymorphism even is
2021-11-25 19:22:15 +0100 <EvanR> using the same function for different types
2021-11-25 19:22:18 +0100 <sshine> yea, so you could have parametric polymorphism at the bottom. but you could also parameterise your higher-order modules, making it parametrically polymorphic at the module level, and at the value level it'd be ad-hoc.
2021-11-25 19:22:54 +0100 <sshine> I guess the difference comes down to book-keeping. :)
2021-11-25 19:23:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-25 19:23:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-25 19:23:17 +0100wroathe(~wroathe@user/wroathe)
2021-11-25 19:24:44 +0100 <sshine> there was one talk about functional design patterns that had a comparison table between OO and FP, where the FP column just listed "functions" as the equivalent abstraction to most OO patterns. ;-P
2021-11-25 19:25:42 +0100 <[itchyjunk]> How come : isn't ad hoc then? so you could x:xs or xs:x ?
2021-11-25 19:25:50 +0100 <monochrom> https://www.slideshare.net/ScottWlaschin/fp-patterns-buildstufflt slide 13
2021-11-25 19:26:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-11-25 19:26:37 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-25 19:27:01 +0100 <EvanR> youre thinking : means ++ and should be symmetric
2021-11-25 19:27:02 +0100 <sshine> [itchyjunk], because lists are defined with a type parameter.
2021-11-25 19:27:02 +0100 <[itchyjunk]> maybe the answer to my question is also secretly functions
2021-11-25 19:27:09 +0100 <monochrom> a -> [a] -> [a] is clearly parametric
2021-11-25 19:27:17 +0100 <sshine> :t (:)
2021-11-25 19:27:18 +0100 <lambdabot> a -> [a] -> [a]
2021-11-25 19:27:30 +0100 <EvanR> but cons and snoc are not symmetric
2021-11-25 19:27:39 +0100 <EvanR> : is cons
2021-11-25 19:27:58 +0100 <monochrom> Also, [False, True] : False is clearly illegal.
2021-11-25 19:28:05 +0100chisui(~chisui@2001:16b8:6636:e400:16e3:5e8c:67f1:d219) (Ping timeout: 256 seconds)
2021-11-25 19:28:08 +0100 <[itchyjunk]> hmm symmetric over mirror
2021-11-25 19:28:51 +0100DNH(~DNH@2a02:8108:1100:16d8:a418:17da:6b4f:5fc3)
2021-11-25 19:29:12 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-25 19:29:19 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-11-25 19:29:50 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-25 19:31:23 +0100 <EvanR> yeah the (singly) linked list is essentially asymmetric
2021-11-25 19:31:52 +0100 <EvanR> that's reflected in the type of (:)
2021-11-25 19:32:37 +0100mreh(~mreh@2a00:23c7:2803:ef00:841c:a322:61f5:4ad9) (Ping timeout: 256 seconds)
2021-11-25 19:32:50 +0100 <hololeap> how would a doubly linked list be expressed in haskell?
2021-11-25 19:33:12 +0100dsrt^(~dsrt@68.101.58.90)
2021-11-25 19:33:32 +0100 <EvanR> a zipper! xD
2021-11-25 19:33:59 +0100 <hololeap> yeah that sort of makes sense actually
2021-11-25 19:34:00 +0100 <monochrom> ADT and GADT cannot say doubly-linked list per se. But you can have two fields and, during term construction, tie the knot.
2021-11-25 19:35:03 +0100Guest|66(~Guest|66@bl5-47-230.dsl.telepac.pt)
2021-11-25 19:35:33 +0100 <hololeap> I can never get over an uneasy feeling that "tying the knot" won't work the way I expect it to. I end up doing things explicitly with e.g. TVars just to be damn sure everything is talking about the same value
2021-11-25 19:38:05 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-11-25 19:39:06 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 19:39:46 +0100 <monochrom> Yeah, tying the knot is a very cute skill that although I get it, I don't want to inflict it on everyone.
2021-11-25 19:39:57 +0100 <monochrom> It's too mean.
2021-11-25 19:41:20 +0100econo(uid147250@user/econo)
2021-11-25 19:41:52 +0100chele(~chele@user/chele) (Remote host closed the connection)
2021-11-25 19:43:11 +0100 <monochrom> The unreasonable universal relevance of https://ro-che.info/ccc/9 >:)
2021-11-25 19:44:33 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-25 19:46:08 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-25 19:46:08 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-25 19:46:08 +0100wroathe(~wroathe@user/wroathe)
2021-11-25 19:47:41 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-25 19:49:09 +0100chisui(~chisui@2001:16b8:6636:e400:e560:82ac:8599:d8d0)
2021-11-25 19:49:17 +0100chisui(~chisui@2001:16b8:6636:e400:e560:82ac:8599:d8d0) (Client Quit)
2021-11-25 19:50:32 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-11-25 19:51:27 +0100 <EvanR> the mystery remains though
2021-11-25 19:51:57 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-11-25 19:51:58 +0100 <EvanR> how that wise monk lost his moustache half way through the story
2021-11-25 19:52:13 +0100xkuru(~xkuru@user/xkuru)
2021-11-25 19:53:09 +0100 <monochrom> I don't think it was moustache in the first place.
2021-11-25 19:54:05 +0100 <monochrom> Just his beard pushed up but since it's projected on a 2D viewport the z depth is lost.
2021-11-25 19:55:57 +0100Guest|66(~Guest|66@bl5-47-230.dsl.telepac.pt) (Quit: Connection closed)
2021-11-25 19:56:11 +0100sunarch(uid526836@user/sunarch) (Quit: Connection closed for inactivity)
2021-11-25 19:56:13 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2021-11-25 20:00:02 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net)
2021-11-25 20:00:16 +0100 <[itchyjunk]> I am trying to test something but i forget how to use the thingy. say i have a list `[1]` and i wanted to do `(x:y:xs)` on this list and see what x and y and xs would be
2021-11-25 20:00:26 +0100 <[itchyjunk]> I can't figure out how to run this test :x
2021-11-25 20:01:37 +0100 <monochrom> case [1] of {x:y:xs -> (x, y, xs) ; _ -> error "not this droid" }
2021-11-25 20:02:19 +0100 <[itchyjunk]> hmm
2021-11-25 20:04:10 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net) (Remote host closed the connection)
2021-11-25 20:04:47 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net)
2021-11-25 20:08:13 +0100 <[itchyjunk]> oh ohh, infinite recursion
2021-11-25 20:09:23 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net) ()
2021-11-25 20:09:44 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net)
2021-11-25 20:10:35 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-25 20:12:13 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-25 20:17:21 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-25 20:18:41 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-25 20:26:09 +0100 <EvanR> I guess in this case "pattern matching" is a misnomer xD
2021-11-25 20:26:34 +0100 <EvanR> pattern discriminating
2021-11-25 20:27:14 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-25 20:27:16 +0100 <EvanR> more like
2021-11-25 20:28:49 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net)
2021-11-25 20:29:31 +0100 <[itchyjunk]> you know, i knew it was gonna be infinite regression
2021-11-25 20:29:34 +0100_bo(~bo@217.18.216.247)
2021-11-25 20:29:35 +0100 <[itchyjunk]> but i wanted to run it anyways
2021-11-25 20:29:40 +0100 <[itchyjunk]> ended up force shutting down
2021-11-25 20:33:38 +0100yauhsien(~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-25 20:35:28 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 20:37:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-25 20:37:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-25 20:37:04 +0100wroathe(~wroathe@user/wroathe)
2021-11-25 20:37:15 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-25 20:39:42 +0100_bo(~bo@217.18.216.247) (Read error: Connection reset by peer)
2021-11-25 20:40:06 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 256 seconds)
2021-11-25 20:40:34 +0100 <[itchyjunk]> oh..
2021-11-25 20:40:40 +0100 <[itchyjunk]> i think it works.. i can't believe it
2021-11-25 20:41:01 +0100 <[itchyjunk]> https://bpa.st/ICOA
2021-11-25 20:41:02 +0100 <[itchyjunk]> Right?
2021-11-25 20:42:06 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-25 20:42:10 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea)
2021-11-25 20:44:31 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 245 seconds)
2021-11-25 20:48:33 +0100Codaraxis_(~Codaraxis@user/codaraxis) (Remote host closed the connection)
2021-11-25 20:49:29 +0100Codaraxis_(~Codaraxis@user/codaraxis)
2021-11-25 20:52:51 +0100 <dsal> [itchyjunk]: bumping those parens up against functions looks really funny to me. heh
2021-11-25 20:53:15 +0100 <[itchyjunk]> f( g) ?
2021-11-25 20:53:26 +0100 <[itchyjunk]> f (g n) then?
2021-11-25 20:53:37 +0100 <dsal> yeah.
2021-11-25 20:53:41 +0100 <[itchyjunk]> f (g (h n))
2021-11-25 20:53:42 +0100 <[itchyjunk]> okay
2021-11-25 20:54:14 +0100 <dsal> What is g for here?
2021-11-25 20:54:23 +0100 <dsal> It looks expensive. :)
2021-11-25 20:54:39 +0100 <[itchyjunk]> my f was only sorting either the smallest or largest to the end of the list
2021-11-25 20:54:46 +0100 <dsal> Oh, that's your reverse?
2021-11-25 20:54:52 +0100 <[itchyjunk]> so i had to remove the last element and apply it again
2021-11-25 20:54:54 +0100 <[itchyjunk]> no
2021-11-25 20:55:12 +0100 <[itchyjunk]> [2,1,4,5] -> [2,4,5,1] by f
2021-11-25 20:55:39 +0100 <dsal> > let g n = last( f n) : g( init( f n)) in g [1..10]
2021-11-25 20:55:40 +0100 <lambdabot> error:
2021-11-25 20:55:40 +0100 <lambdabot> • Could not deduce (FromExpr [Integer]) arising from a use of ‘g’
2021-11-25 20:55:40 +0100 <lambdabot> from the context: FromExpr [a]
2021-11-25 20:55:43 +0100 <[itchyjunk]> and g take [2,4,5] and applys f again to get [4,5,2] then [4,5] etc
2021-11-25 20:56:01 +0100 <[itchyjunk]> i tried doing it with only f but wasn't sure so tried this and it worked out
2021-11-25 20:56:24 +0100Guest17(~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-11-25 20:56:49 +0100 <[itchyjunk]> what about the x: f (y:xs), how would you format that?
2021-11-25 20:56:59 +0100 <[itchyjunk]> x:f (y:xs) maybe?
2021-11-25 20:57:22 +0100 <dsal> That one doesn't look as weird either way.
2021-11-25 20:57:28 +0100 <[itchyjunk]> ah
2021-11-25 20:58:50 +0100 <dsal> OK. I see what you're doing here. You're doing a lot of sorting, though. g runs through the whole sort once to find the last thing and again to find the things that aren't the last thing.
2021-11-25 21:00:36 +0100 <[itchyjunk]> Right, i can kinda guess that this is all horribly inefficient
2021-11-25 21:00:50 +0100 <dsal> Sure, if you wanted something better, you'd just use `sort` :)
2021-11-25 21:00:52 +0100 <[itchyjunk]> but i figured if it works, i'll worry about optimization later
2021-11-25 21:01:00 +0100 <[itchyjunk]> ah
2021-11-25 21:01:13 +0100 <dsal> Just toss a `where` in there and capture the sort once.
2021-11-25 21:01:39 +0100 <[itchyjunk]> hmmmmmm
2021-11-25 21:01:45 +0100 <[itchyjunk]> i'll read up on where next then
2021-11-25 21:01:47 +0100 <dsal> g n = last sorted : g (init sorted) where sorted = f n
2021-11-25 21:02:09 +0100 <[itchyjunk]> oh
2021-11-25 21:02:22 +0100 <[itchyjunk]> i see!
2021-11-25 21:02:25 +0100 <dsal> "sorted" is probably not the right word.
2021-11-25 21:02:32 +0100 <dsal> bubbled
2021-11-25 21:02:37 +0100 <dsal> percolated
2021-11-25 21:03:01 +0100 <[itchyjunk]> neat!
2021-11-25 21:03:08 +0100 <[itchyjunk]> I'll file this under "works"
2021-11-25 21:03:35 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-25 21:04:51 +0100 <dsal> Yeah, exercises like this are good.
2021-11-25 21:05:18 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 260 seconds)
2021-11-25 21:05:20 +0100 <dsal> It's fun to do these without explicit recursion as well.
2021-11-25 21:06:41 +0100juhp(~juhp@128.106.188.82)
2021-11-25 21:10:35 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-25 21:13:48 +0100Franciman{Franciman}
2021-11-25 21:14:51 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
2021-11-25 21:16:42 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-25 21:19:05 +0100remedan(~remedan@balak.me) (Quit: Bye!)
2021-11-25 21:19:52 +0100pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Quit: leaving)
2021-11-25 21:20:28 +0100Sgeo(~Sgeo@user/sgeo)
2021-11-25 21:22:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 21:24:36 +0100 <[itchyjunk]> Yes, comming up with them off the top of my head
2021-11-25 21:25:00 +0100 <[itchyjunk]> for some reason, googling for haskell exercise leads to much harder problem sets than expected :<
2021-11-25 21:25:19 +0100remedan(~remedan@balak.me)
2021-11-25 21:25:37 +0100 <dsal> I rather like AoC. It starts out pretty easy.
2021-11-25 21:25:47 +0100 <dsal> Then gets stupid hard sometimes, but by that point you're committed.
2021-11-25 21:26:11 +0100 <[itchyjunk]> Ah, advent of code? yeah i should skim through some of those problem sets
2021-11-25 21:26:14 +0100remedan(~remedan@balak.me) (Client Quit)
2021-11-25 21:29:17 +0100remedan(~remedan@balak.me)
2021-11-25 21:29:18 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-11-25 21:29:38 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-11-25 21:29:44 +0100[exa]looks at the calendar
2021-11-25 21:29:49 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-25 21:29:50 +0100 <[exa]> ah it's not december yet, phew
2021-11-25 21:30:03 +0100 <dsal> I'm not remotely ready.
2021-11-25 21:30:30 +0100 <[exa]> you said "starts out pretty easy", got totally scared I missed it. :D
2021-11-25 21:31:39 +0100 <dsal> Oh, the first part is always like, "What's 1?" And then you're all like... wait, I know this one. Then a couple days later, "Solve this maze of arbitrary dimensions using only IO mechanisms in this program written for this VM you had write."
2021-11-25 21:32:01 +0100 <dsal> Damnit, I left out the word "two" "two IO mechanisms"
2021-11-25 21:32:05 +0100 <monochrom> Ugh, "what's 1?" is a deep question. >:)
2021-11-25 21:32:18 +0100 <dsal> Yeah, what page of the book is 1+1 on?
2021-11-25 21:32:48 +0100monochromteaches monads by beginning with "what are numbers? see, that's an unhelpful question. don't ask what are monads either."
2021-11-25 21:33:24 +0100 <[exa]> wow cool
2021-11-25 21:33:26 +0100 <dsal> People are *super* blind to all the context they carry along with them.
2021-11-25 21:34:06 +0100 <int-e> dsal: obviously *ducks*
2021-11-25 21:34:55 +0100 <dsal> Someone was in my discussion about why I think "where" is actually a good thing was talking about how it works in various spoken languages using arrangements of "I'll have a cup of coffee when it's ready." So I wrote that function out and got lost in dependencies about washing cups and getting gas before going to the store to buy a bean grinder...
2021-11-25 21:35:44 +0100 <monochrom> Ugh, that's one more data point for Wadler's law.
2021-11-25 21:36:11 +0100 <dsal> I think I just need to do more pairing. I tend to write functions like `mything x = theAnswer` then I define `theAnswer = keysFrom . buildMapOf x` etc... until it stops not compiling.
2021-11-25 21:36:39 +0100 <monochrom> Some big shot thought up this syntax and now we're all stuck with it for better or worse. Why would anyone waste time rationalizing or derationalizing it post mortem.
2021-11-25 21:37:01 +0100 <dsal> Heh. I've not seen Wadler's Law. It looks like a specialization of bike shedding.
2021-11-25 21:37:10 +0100 <monochrom> Yeah!
2021-11-25 21:37:52 +0100 <dsal> The argument is that you should list every requirement before you do a thing. You know, like you're writing assembler and can't jump backwards or something.
2021-11-25 21:38:06 +0100 <monochrom> Just be aware that human history has come up with all sorts of grammars and orders, so different permutations make sense to different people. Deal with it.
2021-11-25 21:38:38 +0100 <dsal> Yeah, I can understand that. But in a declarative language, requiring everything you see to have occurred higher up in the file is just kind of silly.
2021-11-25 21:38:52 +0100 <dsal> s/occurred/been defined/
2021-11-25 21:39:03 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-25 21:39:45 +0100 <monochrom> That one is easily understood as "at the time of inventing Algol and C, they wanted the compiler to be more streaming".
2021-11-25 21:40:39 +0100 <dsal> The guy who's a proponent for that is also into really long identifier names. And like, having lots of identifier names. I introduced confusing by changing `theThingWeGotFromGetTheThing <- getTheThing; case theThing of` with `getTheThing >>= \case` woah, that name was super helpful.
2021-11-25 21:43:12 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Read error: Connection reset by peer)
2021-11-25 21:43:17 +0100cosimone`(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-25 21:44:47 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 21:46:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-25 21:46:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-25 21:46:13 +0100wroathe(~wroathe@user/wroathe)
2021-11-25 21:46:29 +0100deadmarshal(~deadmarsh@95.38.117.164) (Client Quit)
2021-11-25 21:46:52 +0100pavonia(~user@user/siracusa)
2021-11-25 21:47:16 +0100CiaoSen(~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-11-25 21:47:33 +0100deadmarshal(~deadmarsh@95.38.117.164)
2021-11-25 21:50:25 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2021-11-25 21:51:23 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-11-25 21:54:54 +0100remedan(~remedan@balak.me) (Quit: Bye!)
2021-11-25 21:55:57 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2021-11-25 21:56:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-25 21:58:28 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8)
2021-11-25 22:01:26 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-11-25 22:02:02 +0100remedan(~remedan@balak.me)
2021-11-25 22:07:58 +0100yauhsien(~yauhsien@61-231-63-167.dynamic-ip.hinet.net)
2021-11-25 22:10:42 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
2021-11-25 22:13:02 +0100yauhsien(~yauhsien@61-231-63-167.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-25 22:15:34 +0100 <dsal> Wrote tests for obviously correct code and spent a while trying to figure out how I broke it. Obviously correct code wasn't.
2021-11-25 22:16:42 +0100 <dsal> Turns out about 4/9 of these value parsers were incorrect and couldn't parse things like their own examples. Can't wait until I get the complaints about how I wrote tests for these for not being copy and pasted swaths of code. heh
2021-11-25 22:18:11 +0100 <arahael> dsal: my pet irritation is working with devs who, when they review my code, keep asking me "whats weg? what's fyi?", i have a personal convention of calling my locals using acronyms of the thing they just came from. i've given up saying "look 3 lines above. it's always 3 lines. and it's never used again anywhere else".
2021-11-25 22:18:54 +0100 <peutri> what *is* weg tho
2021-11-25 22:20:09 +0100 <arahael> let weg = WorldEngineeringGlobalists(); let wog = WorldOwnersGlobalists(); return weg.code + wog.code;
2021-11-25 22:20:57 +0100 <dsal> arahael: I did go readability at Google for like, 6 years. That was a huge thing. And it was always that. Name something. Use it only once on like, the next line. But name it like you're hoping to get it published.
2021-11-25 22:22:00 +0100 <arahael> dsal: blegh. frustrating. i have bigger things to worry about, such as whether 'weg.code + wog.code' is correct.
2021-11-25 22:22:19 +0100 <dsal> These folks have a really bad forest-for-the-trees problem and the solutions always seem to be "make bigger trees"
2021-11-25 22:22:26 +0100 <arahael> dsal: i argue shorter names make it much easier for pattern matching.
2021-11-25 22:22:37 +0100 <dsal> So very much.
2021-11-25 22:23:02 +0100 <dsal> I had an example where there were two variable names that were ~7 words long, around 50 chars or so with just two or three chars *in the middle* different.
2021-11-25 22:23:03 +0100 <arahael> the mathematicians got one thing right.
2021-11-25 22:23:50 +0100 <dsal> I understand why people don't like seeing just piles of µ • ß everywhere or something, but also like, I can tell those apart without much thinking.
2021-11-25 22:25:00 +0100 <arahael> it's always a few short lines above. always obvious from context.
2021-11-25 22:25:15 +0100 <dsal> Random statement I woke up to in a group chat from senior guy: "there is *no point* in abbreviating variable names" Gave examples like yours where the context is obvious.
2021-11-25 22:25:31 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
2021-11-25 22:26:04 +0100 <dsal> Though some of this is making more sense. I was arguing with someone else who said he wanted to do things in a "standard" way and I'm starting to figure out that "standard" is just whatever the other dude says.
2021-11-25 22:26:17 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-25 22:26:30 +0100 <dsal> Doesn't have to look like anything else anyone might see in the wild. Ironically the link to the "standard" document says very specifically it's not free to use.
2021-11-25 22:27:13 +0100 <arahael> dsal: it strikes me that this is exactly the same sort of conversation i had about 8 years ago when people were grappling with "var" in C#. some people hated it.
2021-11-25 22:27:13 +0100 <dsal> If these guys want to argue about how to spell their bugs, that's cool, I guess. I'm still somewhat enjoying myself. :)
2021-11-25 22:27:22 +0100benin(~benin@183.82.179.164)
2021-11-25 22:27:39 +0100 <arahael> dsal: as in, name your types, otherwise how do you know what it is?
2021-11-25 22:28:13 +0100 <arahael> i am so tired of typing types three times on the same line.
2021-11-25 22:28:19 +0100acidjnk_new(~acidjnk@p200300d0c7271e128015eb8f81d9ba9d.dip0.t-ipconnect.de)
2021-11-25 22:28:30 +0100 <dsal> No, like, the specific example was: do not write `uat :: UserAccessToken` -- write `userAccessToken :: UserAccessToken`
2021-11-25 22:28:39 +0100 <arahael> WorldEngineeringGlobalists worldEngineeringGlobalists = WorldEngineeringGlobalists()
2021-11-25 22:28:48 +0100Pickchea(~private@user/pickchea)
2021-11-25 22:29:00 +0100 <arahael> dsal: yeah, that also annoys me.
2021-11-25 22:29:09 +0100 <dsal> I mostly just ignore them otherwise I'd never get anything done.
2021-11-25 22:29:16 +0100 <arahael> yep.
2021-11-25 22:29:21 +0100 <dsal> And I get so much more done than anyone else, that I'm completely OK with them firing me.
2021-11-25 22:30:00 +0100 <arahael> yeah i have started getting that attitude as well, way i see it, if it's so difficult to get pay rises, stop sucking up :)
2021-11-25 22:30:29 +0100 <dsal> I can't even get a pay raise at this place because I started at the top of the scale, so I can only go out. heh
2021-11-25 22:30:42 +0100reumeth(~reumeth@user/reumeth) (Ping timeout: 260 seconds)
2021-11-25 22:31:20 +0100 <arahael> dsal: i hate the "scale" thing, but i've been told i am at the top myself. yet... i know someone who recently quit got even more so yeah it's never true.
2021-11-25 22:31:42 +0100 <arahael> dsal: back to the type names topic! another extreme is almosr as bad.
2021-11-25 22:31:54 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net) (Remote host closed the connection)
2021-11-25 22:31:54 +0100 <dsal> Heh, sure. I took a pretty big pay cut to work here just because the job itself seems more interesting. I don't even care that much.
2021-11-25 22:32:00 +0100 <dsal> But year, forest vs. trees.
2021-11-25 22:32:41 +0100 <arahael> in swift, which is an apple language where it feels like people are just discovering things us haskell people have known for decades... one thing is that swift lets you infer a *lot* of types. not all, but mosr.
2021-11-25 22:33:02 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
2021-11-25 22:33:05 +0100 <arahael> so people in our teams are now saying: never specify types. never, if you can get away with it, then don't.
2021-11-25 22:33:10 +0100 <arahael> *sigh*.
2021-11-25 22:33:27 +0100 <dsal> "complex" and "simple" are strangely subjective. I deleted over a hundred lines of code, made it much harder to get wrong, fixed a few bugs, added tests, etc... and while the reduction of duplication is appreciated, it's "too complex." I'm like... there are fewer types, fewer functions, fewer failure modes, etc...
2021-11-25 22:33:30 +0100 <arahael> so what i do is i add in my types... get it working... then delete them before i send it for review.
2021-11-25 22:33:40 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3)
2021-11-25 22:33:49 +0100 <dsal> I've never tried swift. I used to do objc back in the day. It started getting super weird.
2021-11-25 22:34:09 +0100mreh(~matthew@host81-157-195-163.range81-157.btcentralplus.com)
2021-11-25 22:34:10 +0100 <dsal> Half of my app was specified in a binary blob I worked on so infrequently I forgot how to recreate it.
2021-11-25 22:34:10 +0100 <arahael> swift is a huge improvement over objc, not even in the same ballpark.
2021-11-25 22:34:18 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2021-11-25 22:34:32 +0100 <arahael> yeah. apple's tooling sucks.
2021-11-25 22:35:31 +0100 <dsal> Starting haskell, it does seem like you should just line Hindley or Milner or whoever do all that type work for you and just write toplevel symbols.
2021-11-25 22:35:40 +0100 <dsal> GHC's like. oookay, but don't make any mistakes.
2021-11-25 22:36:01 +0100betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-11-25 22:36:07 +0100 <arahael> yep. trouble is adding an extra type or two, especially in long chains, is helpful for both the human and compiler.
2021-11-25 22:36:23 +0100 <mreh> I cannot get my head round free, is there a good example free monad?
2021-11-25 22:36:46 +0100 <dsal> mreh: does this help? https://chrispenner.ca/posts/asts-with-fix-and-free
2021-11-25 22:37:10 +0100 <dsal> arahael: Yeah, it doesn't seem like something you want when you're starting, but then you learn to love types. Then you get wingman or something and never write code again.
2021-11-25 22:37:20 +0100 <mreh> dsal: may do!
2021-11-25 22:37:25 +0100 <arahael> mreh: free monads evaluate to a graph, a free standing tree of nodes, if you will. so you end up with just an abstract syntax tree, effectively.
2021-11-25 22:37:54 +0100 <arahael> mreh: (approximately, anyway. there may be some lambda's and the like complicating that picture)
2021-11-25 22:38:00 +0100 <Rembane_> Regarding types: Agda is also good, proof by auto.
2021-11-25 22:38:23 +0100 <dsal> I never got to the point of agda where it did anything other than look pretty.
2021-11-25 22:38:50 +0100 <arahael> dsal: yep. the other struggle, which i am having in the current project, is where you have a language that is actually quite decent for functional programming... but they have an OOP mindset.
2021-11-25 22:39:14 +0100 <arahael> dsal: nil's everywhere! protocols everywhere (instead of just defining a struct once).
2021-11-25 22:41:08 +0100 <dsal> There are a few of these styles that people seem to like but have always been horrifying to me.
2021-11-25 22:42:32 +0100 <Rembane_> Walk softly and always check for nils.
2021-11-25 22:42:45 +0100 <dsal> Many languages sometimes let you use nils just fine.
2021-11-25 22:42:54 +0100 <dsal> go, smalltalk, etc..
2021-11-25 22:44:25 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Quit: gone to sleep. ZZZzzz…)
2021-11-25 22:45:13 +0100 <mreh> arahael: I've come accross it in beam, I guess it's being used to represent SQL syntax
2021-11-25 22:46:27 +0100 <dsal> I'm not sure I'm ever going to be a fan of fancy database abstractions if I'm not by now.
2021-11-25 22:46:37 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea)
2021-11-25 22:47:06 +0100 <mreh> beam is great
2021-11-25 22:47:45 +0100 <mreh> it helps to know some depended typing to understand what's going on though
2021-11-25 22:49:23 +0100 <dsal> postgresql-simple seems perfect for just about everything I've needed. I made a `Transaction` monad for transactionally composing lower level stuff. You can also compose FromRow and ToRow so you can smash bits together. There's still some dynamic parts that can occasionally lead to confusion, but the confusion is "why does this test fail with this error message that tells me what I did wrong?"
2021-11-25 22:50:02 +0100cosimone`(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2021-11-25 22:50:35 +0100cosimone`(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-25 22:50:49 +0100Codaraxis_(~Codaraxis@user/codaraxis) (Quit: Leaving)
2021-11-25 22:53:15 +0100 <mreh> with type safety you don't need transations :^)
2021-11-25 22:54:31 +0100narendraj9(~user@2a02:8109:b63f:ff7c::57b2)
2021-11-25 22:55:02 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
2021-11-25 22:55:27 +0100 <arahael> mreh: i'm assuming that is tongue in cheek :)
2021-11-25 22:55:50 +0100 <mreh> of course
2021-11-25 22:56:24 +0100 <monochrom> I had never seen "weg" but I could guess "working example".
2021-11-25 22:56:32 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8) (Remote host closed the connection)
2021-11-25 22:56:39 +0100 <monochrom> Although, IMO "working" is redundant.
2021-11-25 22:56:52 +0100 <arahael> monochrom: i'd call that one 'we' ;)
2021-11-25 22:57:15 +0100 <arahael> dsal: i definitely prefer thin abstractions these days.
2021-11-25 22:57:45 +0100 <arahael> well, nearly 9am. i should probably get ready to walk to the cafe. for my second coffee.
2021-11-25 22:59:02 +0100 <arahael> and to play with jackdk's aeson 2.0 compatible amazonka, he fixed that up whilst i was trying to sleep!
2021-11-25 22:59:15 +0100 <arahael> amazing.
2021-11-25 23:00:11 +0100cosimone`(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 250 seconds)
2021-11-25 23:01:12 +0100 <dsal> arahael: The amazonka 2.0 stuff is a bit disruptive, but nice.
2021-11-25 23:01:25 +0100 <dsal> Probably not related, but it does have a number and name in common with stuff you typed.
2021-11-25 23:02:35 +0100 <arahael> there's no perfect solution w.r.t. AWS :(
2021-11-25 23:03:11 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-11-25 23:04:07 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-11-25 23:04:47 +0100drdo(~drdo@roach0.drdo.eu)
2021-11-25 23:05:17 +0100michalz(~michalz@185.246.204.33) (Remote host closed the connection)
2021-11-25 23:06:15 +0100alx741(~alx741@186.178.109.248) (Ping timeout: 250 seconds)
2021-11-25 23:06:53 +0100 <jackdk> arahael: I should've been trying to sleep too, but here we are
2021-11-25 23:07:09 +0100 <jackdk> thanks for the nerdsnipe, I guess? It needed to happen at some point.
2021-11-25 23:07:30 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-25 23:08:06 +0100 <arahael> jackdk: a pleasure - and thanks again! i'll be checking it out soon!
2021-11-25 23:08:31 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-11-25 23:11:01 +0100narendraj9(~user@2a02:8109:b63f:ff7c::57b2) (Remote host closed the connection)
2021-11-25 23:11:28 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-11-25 23:13:41 +0100 <Athas> How do I make haskell-mode in Emacs run a the ghci session for my project within the Nix environment defined by my shell.nix?
2021-11-25 23:13:49 +0100 <Athas> My Emacs does not (and should not) run within that Nix environment.
2021-11-25 23:15:40 +0100 <energizer> Athas: have you looked at emacs-direnv?
2021-11-25 23:16:35 +0100 <dsal> arahael: I don't mind amazonka 2.0. I'm glad I picked it up when I did because I found a pretty big hole in it. But it was fixed up quickly. Now I just need it to get rolled out.
2021-11-25 23:16:44 +0100 <Athas> energizer: I am now. It might solve the problem, depending on how exactly haskell-mode works (although I don't normally use direnv). Have you solved it this way?
2021-11-25 23:17:24 +0100 <energizer> Athas: i haven't tried it with haskell but for other things yes
2021-11-25 23:19:22 +0100alx741(~alx741@186.178.108.193)
2021-11-25 23:21:42 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
2021-11-25 23:22:43 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 260 seconds)
2021-11-25 23:23:19 +0100mmhat(~mmh@55d42d28.access.ecotel.net)
2021-11-25 23:25:10 +0100 <hololeap> anyone else go to ruby sometimes, just to use nokogiri? why does that library feel so much more intuitive than anything than any equivalent haskell library? is it that ruby's syntax makes it easier to bang out something that's "good enough" in 15 minutes?
2021-11-25 23:25:12 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-11-25 23:25:40 +0100 <dsal> What's that? I've not seen a ruby in over 10 years. :)
2021-11-25 23:25:47 +0100 <jackdk> athas: the other option would be to rummage around with something like `apropos-variable` and find how haskell-mode configures the command to run, possibly using a `.dir-locals.el` file to set it for each project
2021-11-25 23:25:56 +0100 <jackdk> s/the other/another/
2021-11-25 23:25:56 +0100 <hololeap> it's a html/xml parsing library
2021-11-25 23:26:07 +0100zer0bitz(~zer0bitz@dsl-hkibng31-54fabc-15.dhcp.inet.fi) (Ping timeout: 268 seconds)
2021-11-25 23:26:08 +0100 <dsal> ah, I've probably used it.
2021-11-25 23:26:19 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-25 23:26:36 +0100 <dsal> I've done some sloppy in html in haskell, I think. Definitely a bit of XML. But only a little bit because I don't go to bad neighborhoods very often.
2021-11-25 23:27:07 +0100 <hololeap> I busted something out that removed all the javascript off a bunch of downloaded html in like 15 minutes. I doubt I could have done it that fast in haskell, and I don't understand why. I hadn't used the library in while, either.
2021-11-25 23:27:17 +0100 <jackdk> no, but that's more because i tend not to have to do that sort of thing. I haven't had much fun with either hxt or xml-conduit, but were I to do it again today I would probably reach for lens
2021-11-25 23:27:27 +0100 <Athas> jackdk: I'm surprised there is not ready machinery to handle this. I'd expect everyone who develops Haskell on NixOS with Emacs to run into this.
2021-11-25 23:27:46 +0100 <Athas> Maybe there are just not that many of those.
2021-11-25 23:28:06 +0100 <jackdk> I use ghcid (though at some point i want to wire lsp support into my emacs) and I use .dir-locals.el to drive this. I can pastebin a snippet, if you'd like?
2021-11-25 23:28:06 +0100 <dsal> hololeap: I had to grab some crap out of html here: https://github.com/dustin/tesla/blob/master/src/Tesla.hs#L122
2021-11-25 23:28:21 +0100 <monochrom> Unpopular opinion but the arrow-based interface of hxt is pretty intuitive to me.
2021-11-25 23:29:27 +0100 <monochrom> But at the meta level, I reckon that Haskellers no longer care about html and xml, so there hasn't been any improvement or innovation for years.
2021-11-25 23:30:04 +0100 <mreh> monochrom: because SPAs are so popular?
2021-11-25 23:30:15 +0100 <monochrom> I don't know what's SPA.
2021-11-25 23:30:21 +0100 <mreh> single page application
2021-11-25 23:30:35 +0100 <dsal> My hot tub's heat control relay is broken.
2021-11-25 23:30:55 +0100 <monochrom> But all the Haskell webdevs rave about various json solutions instead of html solutions.
2021-11-25 23:31:33 +0100 <monochrom> or s/json/RESTful API/
2021-11-25 23:31:48 +0100deadmarshal(~deadmarsh@95.38.117.164) (Ping timeout: 256 seconds)
2021-11-25 23:32:10 +0100 <mreh> does anyone know how to write a beam database backend?
2021-11-25 23:32:14 +0100 <monochrom> A decade ago Haskellers did not have a lot of webdevs but there were a lot of html scrapers.
2021-11-25 23:32:29 +0100 <monochrom> Now there are no html scrapers but a lot of webdevs and "api" people.
2021-11-25 23:32:36 +0100 <mreh> beam-mysql is behind beam-core and I'd really like to get it to compile with a recent snapshot
2021-11-25 23:33:03 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-25 23:33:16 +0100 <mreh> monochrom: I'm actually scraping HTML with haskell right now
2021-11-25 23:33:21 +0100tpefreedom(~tpefreedo@user/tpefreedom)
2021-11-25 23:33:42 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-11-25 23:34:07 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-25 23:34:10 +0100 <mreh> what are people using to develop their APIs now? I really like servant
2021-11-25 23:34:18 +0100 <monochrom> On the technical side, although every Arrow instance in hxt is also a Monad instance, the arrow mode of thinking, or rather, the Klesli arrow view of >=>, makes xml scraping code look really like what XPath dreams of. The code reads like a path. That's what makes me like it.
2021-11-25 23:34:27 +0100 <hololeap> hm, now that I look at my ruby script, I wonder if the language's built-in syntactic for PCREs and maps makes it more suitable for expressing HTML parsing, without taking the time to import 20 modules
2021-11-25 23:34:44 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-25 23:35:39 +0100 <dsal> mreh: I like scotty. I've never intentionally used servant, but this project is.
2021-11-25 23:35:51 +0100 <hololeap> (if anyone is curious, http://sprunge.us/SmPRne)
2021-11-25 23:35:52 +0100 <dsal> "this project" == people at work.
2021-11-25 23:36:21 +0100tpefreedom(~tpefreedo@user/tpefreedom) (Leaving)
2021-11-25 23:37:24 +0100 <mreh> actually using haskell at work, I can only dream
2021-11-25 23:37:45 +0100 <mreh> I'll have a look at scotty
2021-11-25 23:38:01 +0100 <monochrom> Stay tuned for the next horror story dsal tells you about coworkers though >:)
2021-11-25 23:38:55 +0100 <mreh> if only they listened
2021-11-25 23:38:58 +0100 <hololeap> ruby really is a fun language, but I will never make anything "serious" with it again
2021-11-25 23:39:07 +0100 <dsal> haha. servant is a funny one because they're all about "simple haskell" but like, good luck finding a definition of that. Many I found suggest not to use servant.
2021-11-25 23:39:11 +0100zebrag(~chris@user/zebrag)
2021-11-25 23:39:15 +0100 <monochrom> Apparently humans are still humans. Coworkers who have agreed to switch to Haskell still preserve previous idiosyncracies, superstitious ideologies, and cargo culting.
2021-11-25 23:39:52 +0100 <dsal> Yeah. I do generally prefer arguing over mostly good tools vs. just not having any good tools to argue over.
2021-11-25 23:39:58 +0100 <hololeap> what in the world does "cargo culting" mean in this context?
2021-11-25 23:40:16 +0100 <dsal> Generally just doing X because X is the right thing to do..
2021-11-25 23:40:24 +0100 <dsal> Tautologically speaking.
2021-11-25 23:40:39 +0100 <monochrom> Blindly insisting on long identifier names, for example.
2021-11-25 23:40:48 +0100 <jackdk> "cargo culting" - only using stuff that's been rewritten in rust ;-)
2021-11-25 23:40:54 +0100 <dsal> ha
2021-11-25 23:40:54 +0100 <monochrom> hahaha
2021-11-25 23:41:13 +0100 <hololeap> isn't that also known as a "style guide"?
2021-11-25 23:41:30 +0100 <monochrom> IMO that's orthogonal.
2021-11-25 23:41:42 +0100 <dsal> Eh, sort of. Declaring something is Better from an authority needs an argument.
2021-11-25 23:42:13 +0100 <hololeap> that's fair. although sometimes consistency is what matters and so _something_ has to be the pattern to follow
2021-11-25 23:42:25 +0100 <dsal> Don't use foldMap, don't use sum, don't use either, don't use unless, etc... are closer to cargo culting.
2021-11-25 23:42:28 +0100 <monochrom> Given a style guide, one can still understand why the guide makes sense normally, and when to make exceptions.
2021-11-25 23:42:56 +0100 <monochrom> Without a style guide, there are still a trillion "best practice"s to cargo-cult over.
2021-11-25 23:43:02 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 260 seconds)
2021-11-25 23:43:12 +0100pfurla(~pfurla@2804:14d:5c81:4104:8d6b:77ca:adc:64ea) (Quit: gone to sleep. ZZZzzz…)
2021-11-25 23:43:15 +0100 <mreh> "best practice" - makes my skin crawl every time
2021-11-25 23:43:25 +0100 <hololeap> well, I can see how in general it could be a positive but taken too far it could be limiting
2021-11-25 23:44:10 +0100 <dsal> I was suggesting foldr vs. a foldl' of a flipped thing and said foldr is probably a better thing and got linked to that lexi-lambda bug thing about why foldl' is better when you're going to definitely use everything. Big explanation. Also said it often doesn't matter. Like in this case where there were ~5 things.
2021-11-25 23:44:26 +0100 <dsal> I end up rewriting stuff a lot because hlint blocks mycommit.
2021-11-25 23:44:42 +0100 <Rembane_> dsal: I suppose you're not allowed to turn off hlint?
2021-11-25 23:44:48 +0100 <hololeap> yeah that's lame
2021-11-25 23:45:19 +0100 <monochrom> Bloggers die die die.
2021-11-25 23:45:27 +0100 <dsal> Thing I used today that I had to rewrite: either, fromJust, error. In a test. Like, definitely fail if you can't do this setup thing that has to work. But OK, fine, it'll return a Maybe and then use the higher level error message thing to do roughly the same thing error does but I guess throwIO?
2021-11-25 23:45:39 +0100 <hololeap> but, I also see the other side, where writing something in terms of some super-advanced categorical viewpoint might make the code really hard to understand to outsiders
2021-11-25 23:45:41 +0100 <dsal> Turning of hlint will let me commit, but it'll still fail CI
2021-11-25 23:46:09 +0100 <dsal> hololeap: my "that's too fancy" thing right now is a record with a type variable instead of having two ~identical records.
2021-11-25 23:46:26 +0100 <hololeap> haha
2021-11-25 23:46:34 +0100 <dsal> Except the fields have different names and you have to copy all the values over and you have to write a test that makes sure you copied all the values over, etc...
2021-11-25 23:47:03 +0100Guest17(~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds)
2021-11-25 23:47:19 +0100 <dsal> But forest for trees. I wrote a test for the actual parser and found that 4/9 of the things being parsed couldn't take the actual input they expect.
2021-11-25 23:51:55 +0100 <dsal> I generally get lectured for writing a function in a test instead of copying data structures over (because good test code and good application code don't look similar). It's kind of funny. OK. But also you didn't write test coverage for this so maybe your principles can be oncall.
2021-11-25 23:52:02 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-11-25 23:53:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-25 23:53:17 +0100xff0x(~xff0x@2001:1a81:5377:a800:360f:89df:3dda:3328) (Ping timeout: 250 seconds)
2021-11-25 23:54:02 +0100xff0x(~xff0x@2001:1a81:5377:a800:3eaf:ed99:f02b:b5f2)
2021-11-25 23:55:21 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-11-25 23:55:28 +0100 <arahael> mreh: Isn't scotty unmaintained?
2021-11-25 23:56:55 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com)
2021-11-25 23:57:02 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:d837:dc58:2ea7:10e8)