2022/11/30

2022-11-30 00:03:04 +0100cheater(~Username@user/cheater)
2022-11-30 00:05:51 +0100king_gs(~Thunderbi@2806:103e:29:86f9:15db:b0e0:45d5:32a8)
2022-11-30 00:05:59 +0100king_gs(~Thunderbi@2806:103e:29:86f9:15db:b0e0:45d5:32a8) (Client Quit)
2022-11-30 00:09:29 +0100 <iqubic> I'm getting this warning when I load a file in GHCi:
2022-11-30 00:09:40 +0100 <iqubic> These modules are needed for compilation but not listed in your .cabal file's other-modules:
2022-11-30 00:09:47 +0100 <iqubic> Common.Parser Common.Runner
2022-11-30 00:09:54 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-11-30 00:10:28 +0100 <iqubic> https://dpaste.com/GLGPS7AWJ
2022-11-30 00:10:37 +0100 <iqubic> Anyone know what the issue here is?
2022-11-30 00:11:16 +0100 <geekosaur> how are you running ghci?
2022-11-30 00:11:23 +0100shailangsa(~shailangs@host86-186-177-178.range86-186.btcentralplus.com)
2022-11-30 00:15:49 +0100euandreh(~Thunderbi@179.214.113.107)
2022-11-30 00:16:32 +0100 <iqubic> geekosaur: I'm using `cabal repl`
2022-11-30 00:16:56 +0100 <iqubic> Sorry, had to get food.
2022-11-30 00:17:06 +0100 <geekosaur> interesting. I wonder if you need to specify the lib component
2022-11-30 00:17:22 +0100 <geekosaur> (don't worry about getting food, I'm working on dinner myself)
2022-11-30 00:18:17 +0100 <iqubic> Weird... I haven't specified a lib component.
2022-11-30 00:18:55 +0100 <geekosaur> looks like you did to me (everything is under line 16)
2022-11-30 00:19:29 +0100 <iqubic> Like, GHCi is working properly, and is able to find the functions I've got in Common.Runner and Common.Parser
2022-11-30 00:20:23 +0100merijn(~merijn@86.86.29.250) (Ping timeout: 260 seconds)
2022-11-30 00:21:54 +0100 <geekosaur> it all looks in order to me, so I'm not sure why you'd get that
2022-11-30 00:22:39 +0100 <iqubic> It's just a warning, and everything's working fine for me right now.
2022-11-30 00:22:46 +0100 <iqubic> I'm not gonna worry about it too much.
2022-11-30 00:24:34 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 265 seconds)
2022-11-30 00:28:07 +0100waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
2022-11-30 00:34:04 +0100mastarija(~mastarija@2a05:4f46:e03:6000:f1ac:bce8:2f8c:70c3) (Ping timeout: 252 seconds)
2022-11-30 00:37:50 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-11-30 00:39:03 +0100acidjnk_new(~acidjnk@p200300d6e7137a95e97f13ccb1fca6e5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-11-30 00:42:54 +0100Erutuon(~Erutuon@user/erutuon)
2022-11-30 00:44:37 +0100Topsi(~Topsi@dyndsl-095-033-143-187.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-11-30 00:45:47 +0100cafkafk(~cafkafk@fsf/member/cafkafk)
2022-11-30 00:46:59 +0100cafkafk_(~cafkafk@fsf/member/cafkafk) (Ping timeout: 255 seconds)
2022-11-30 00:47:54 +0100cafkafk(~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
2022-11-30 00:55:03 +0100titibandit(~titibandi@xdsl-78-34-153-165.nc.de) (Remote host closed the connection)
2022-11-30 00:58:03 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81)
2022-11-30 01:04:00 +0100causal(~user@50.35.83.177)
2022-11-30 01:07:02 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-11-30 01:09:47 +0100Guest75(~Guest75@178.141.153.191)
2022-11-30 01:11:55 +0100polomoney
2022-11-30 01:14:21 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 265 seconds)
2022-11-30 01:17:14 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 01:22:51 +0100kraftwerk28(~kraftwerk@178.62.210.83) (Quit: ZNC 1.8.2 - https://znc.in)
2022-11-30 01:24:12 +0100kraftwerk28(~kraftwerk@178.62.210.83)
2022-11-30 01:26:26 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Ping timeout: 265 seconds)
2022-11-30 01:27:17 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2022-11-30 01:31:43 +0100cafkafk(~cafkafk@fsf/member/cafkafk)
2022-11-30 01:32:54 +0100cafkafk(~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
2022-11-30 01:33:31 +0100cafkafk(~cafkafk@fsf/member/cafkafk)
2022-11-30 01:43:09 +0100ulvarrefr(~user@188.124.56.153)
2022-11-30 01:44:59 +0100mvk(~mvk@2607:fea8:5ce3:8500::efb)
2022-11-30 01:45:06 +0100mvk(~mvk@2607:fea8:5ce3:8500::efb) (Client Quit)
2022-11-30 01:51:05 +0100iqubic(~user@2601:602:9502:c70:4937:ec1d:8679:10f2) (Read error: Connection reset by peer)
2022-11-30 01:52:03 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds)
2022-11-30 01:52:15 +0100iqubic(~user@2601:602:9502:c70:8460:2630:d857:cfc)
2022-11-30 01:55:28 +0100Guest75(~Guest75@178.141.153.191) (Ping timeout: 260 seconds)
2022-11-30 01:58:49 +0100jinsun(~jinsun@user/jinsun) (Ping timeout: 265 seconds)
2022-11-30 01:59:22 +0100jinsun(~jinsun@user/jinsun)
2022-11-30 02:05:40 +0100 <iqubic> For some reason, I'm finding megaparsec not working for me now, despite using literally the same code as last year.
2022-11-30 02:05:48 +0100 <iqubic> https://dpaste.com/725CVPE97
2022-11-30 02:06:11 +0100 <iqubic> That file is the code I'm using plus two simgle tests at the bottom.
2022-11-30 02:06:33 +0100 <iqubic> The issue is that parseLines seems to be giving me an infinite loop.
2022-11-30 02:07:21 +0100 <iqubic> Oh, it's just the combination of my "parseLines" combinator with my "commaSep" combinator.
2022-11-30 02:08:54 +0100astraamish
2022-11-30 02:08:58 +0100amish(sid289983@id-289983.hampstead.irccloud.com) (Changing host)
2022-11-30 02:08:58 +0100amish(sid289983@user/amish)
2022-11-30 02:08:58 +0100earthy(~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) (Ping timeout: 265 seconds)
2022-11-30 02:09:13 +0100 <iqubic> because `parseLines number "1\n2\n"` works just fine.
2022-11-30 02:10:12 +0100amishastra
2022-11-30 02:13:49 +0100 <zzz> [__1] rejecting: sete:setup.Cabal-3.8.1.0/installed-3.8.1.0 (conflict: sete =>
2022-11-30 02:13:49 +0100 <zzz> sete:setup.Cabal>=1.0 && <1.25)
2022-11-30 02:13:55 +0100 <zzz> ^ i dont know what this means
2022-11-30 02:14:34 +0100 <zzz> what is the setup.Cabal dependency and how can i get rid of the constraint?
2022-11-30 02:18:11 +0100shailangsa(~shailangs@host86-186-177-178.range86-186.btcentralplus.com) (Ping timeout: 264 seconds)
2022-11-30 02:23:23 +0100 <maerwald[m]> Don't think you can
2022-11-30 02:24:05 +0100xff0x(~xff0x@2405:6580:b080:900:7923:62c4:dbe7:6816) (Ping timeout: 255 seconds)
2022-11-30 02:26:08 +0100 <iqubic> Why is Megaparsec failing for me?
2022-11-30 02:26:30 +0100Guest|76(~Guest|76@c-73-147-47-145.hsd1.va.comcast.net)
2022-11-30 02:27:26 +0100 <EvanR> does it have to do with left recursion
2022-11-30 02:27:31 +0100 <EvanR> in your grammar
2022-11-30 02:27:42 +0100yuribarros(~yuribarro@2804:14c:65e4:865c::1000) (Quit: Leaving)
2022-11-30 02:28:14 +0100 <EvanR> e.g. e := 3 | -e | e + e, would loop if you attempted to megaparsec that directly
2022-11-30 02:29:21 +0100 <iqubic> I'm not sure.
2022-11-30 02:30:08 +0100 <iqubic> If you rewrite it, it boils down to this:
2022-11-30 02:30:16 +0100 <iqubic> ((PARSER `sepBy` char ',') `endBy` optional eol))
2022-11-30 02:30:27 +0100 <iqubic> Where PARSER is any parser.
2022-11-30 02:30:39 +0100 <zzz> does anyone have a clue why my build is failing? https://paste.jrvieira.com/1669771810579
2022-11-30 02:31:06 +0100 <iqubic> EvanR: Does ((PARSER `sepBy` char ',') `endBy` optional eol)) look wrong?
2022-11-30 02:31:52 +0100 <ephemient> why optional eol?
2022-11-30 02:32:07 +0100 <ephemient> that looks like you will get into an infinite loop if your parser accepts an empty string
2022-11-30 02:33:07 +0100 <iqubic> Removing the `optional eol` bit fixes my issues. I think... More testing is needed.
2022-11-30 02:33:21 +0100 <ephemient> also I think you are more likely to want ((PARSER `sepBy1` char ',') `endBy` eol)
2022-11-30 02:33:37 +0100 <EvanR> (PARSER `sepBy` char ',') `endBy`
2022-11-30 02:33:40 +0100 <EvanR> does look wrong xD
2022-11-30 02:34:45 +0100Guest|76(~Guest|76@c-73-147-47-145.hsd1.va.comcast.net) (Quit: Connection closed)
2022-11-30 02:34:48 +0100 <iqubic> Yeah, sepBy1 is what I want.
2022-11-30 02:35:37 +0100 <iqubic> Well, except that I also want to match bits where there are no commas.
2022-11-30 02:36:41 +0100 <iqubic> Yeah, sepBy1 is what I wanted.
2022-11-30 02:41:41 +0100 <iqubic> EvanR: What does sepBy1 match exactly?
2022-11-30 02:42:39 +0100 <EvanR> same as sepBy but 1 instance of p has to come first
2022-11-30 02:43:26 +0100 <iqubic> Ah. That's exactly what I want.
2022-11-30 02:44:12 +0100 <iqubic> A lot of Advent of Code problems end up having a parser that just looking like this: "parseLines (commaSep number) "1\n1,2,3\n"
2022-11-30 02:45:22 +0100 <iqubic> When you expand all the functions there you get: ((signed (return ()) decimal) `sepBy1` char ',') `endBy` eol)
2022-11-30 02:45:35 +0100 <EvanR> map (map read) . splitOn "," . lines xD
2022-11-30 02:45:45 +0100 <EvanR> er
2022-11-30 02:45:55 +0100 <EvanR> map (map read) . map (splitOn ",") . lines
2022-11-30 02:46:09 +0100 <iqubic> Yeah... I know that Megaparsec is overkill. I know that...
2022-11-30 02:46:53 +0100waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Quit: WeeChat 3.7.1)
2022-11-30 02:47:07 +0100 <EvanR> my stupid AF line parser for this day in 2020 https://paste.tomsmeding.com/M8m8Hy2d
2022-11-30 02:47:47 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 02:49:05 +0100foul_owl(~kerry@157.97.134.156) (Ping timeout: 265 seconds)
2022-11-30 02:49:13 +0100 <EvanR> I tried to make a savant level parser language like glguy has but could not
2022-11-30 02:50:50 +0100 <int-e> pl ('a':'c':'c':' ':xs) = Acc (ri xs)
2022-11-30 02:51:21 +0100 <iqubic> https://paste.tomsmeding.com/E5EUIGdj
2022-11-30 02:51:26 +0100 <iqubic> That's what I did there.
2022-11-30 02:52:55 +0100 <iqubic> See Megaparsec is cool because it automatically parsers an option + or - at the start of a number
2022-11-30 02:53:00 +0100 <zzz> this is my most useful little function for AoC:
2022-11-30 02:53:01 +0100earthy(~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net)
2022-11-30 02:53:03 +0100 <zzz> -- parse numbers from a string
2022-11-30 02:53:03 +0100 <zzz> parseNums :: (Read a,Num a) => String -> [a]
2022-11-30 02:53:03 +0100 <zzz> parseNums xs | null n = [] | otherwise = read n : parseNums r where (n,r) = span isDigit $ dropWhile (not . isDigit) xs
2022-11-30 02:53:22 +0100 <iqubic> I have a lot of little useful things for AoC.
2022-11-30 02:53:33 +0100 <zzz> aw i messed the line breaks
2022-11-30 02:53:33 +0100 <EvanR> Seq, dang
2022-11-30 02:54:05 +0100glguygets the aoc ping (it's starting!) I did it like https://github.com/glguy/advent/blob/main/solutions/src/2020/08.hs#L39
2022-11-30 02:54:34 +0100 <EvanR> ah, it's a quasi quoter
2022-11-30 02:55:08 +0100 <iqubic> I wrote function "freq :: (Ord a, Foldable t) => t a -> Map a Int" which counts up how many times each thing appears.
2022-11-30 02:55:20 +0100 <iqubic> *freqs
2022-11-30 02:55:26 +0100 <iqubic> I use freqs a lot
2022-11-30 02:56:11 +0100 <zzz> glguy: `pure[]`
2022-11-30 02:56:15 +0100 <zzz> :/ thanks i hate it
2022-11-30 02:57:23 +0100 <int-e> :t M.fromListWith (+) . map (,1) . foldMap pure
2022-11-30 02:57:24 +0100 <lambdabot> (Ord k, Num a, Foldable t) => t k -> M.Map k a
2022-11-30 02:57:50 +0100 <iqubic> freqs = foldr (\val m -> M.insertWith (+) val 1 m) M.empty
2022-11-30 02:58:49 +0100 <int-e> M.fromListWith (+) is quite versatile by itself
2022-11-30 02:58:57 +0100 <iqubic> It really is.
2022-11-30 02:59:26 +0100 <int-e> a lot of the run-the-mill DP problems can be expressed with that, followed by a do block or list comprehension
2022-11-30 02:59:36 +0100 <iqubic> same :: (Foldable t, Eq a) => t a -> Bool
2022-11-30 02:59:40 +0100 <iqubic> same xs = all (head (toList xs) ==) xs
2022-11-30 02:59:54 +0100 <iqubic> Why did I write that? Because I thought it would be useful.
2022-11-30 03:00:14 +0100 <iqubic> int-e: How so?
2022-11-30 03:00:25 +0100shailangsa(~shailangs@host86-185-98-123.range86-185.btcentralplus.com)
2022-11-30 03:00:37 +0100 <iqubic> How do you use M.fromListWith (+) to do run-of-the-mill DP?
2022-11-30 03:00:43 +0100 <int-e> :t null . tail . group
2022-11-30 03:00:45 +0100 <lambdabot> Eq a => [a] -> Bool
2022-11-30 03:01:51 +0100 <int-e> iqubic: because most of them are counting... like counting paths in a DAG... so you make the key the subproblem, and the list comprehension unfold one level of subproblems.
2022-11-30 03:02:50 +0100 <int-e> (and if its' not counting, you can change (+) to something else and do stuff like minimization)
2022-11-30 03:04:24 +0100 <iqubic> I bet you could use that for 2020 Day 10 Part 2
2022-11-30 03:04:27 +0100 <iqubic> https://adventofcode.com/2020/day/10
2022-11-30 03:04:38 +0100foul_owl(~kerry@157.97.134.156)
2022-11-30 03:05:07 +0100 <int-e> iqubic: why foldr rather than foldl[']?
2022-11-30 03:05:23 +0100 <iqubic> Is foldl['] better?
2022-11-30 03:05:36 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-11-30 03:05:52 +0100 <iqubic> In this case there's no difference in output because it's an associative operation.
2022-11-30 03:05:55 +0100 <int-e> map updates aren't lazy.
2022-11-30 03:06:18 +0100 <iqubic> So, is foldl' better?
2022-11-30 03:07:02 +0100 <int-e> Yes. (Unless I'm missing something but I really don't know what that would be.)
2022-11-30 03:08:29 +0100 <iqubic> No. You probably aren't.
2022-11-30 03:09:09 +0100 <int-e> FWIW, fromListWithKey f xs = Foldable.foldl' ins empty xs where ins t (k,x) = insertWithKey f k x t (and fromListWith is defined in terms of that)
2022-11-30 03:10:12 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2022-11-30 03:10:30 +0100 <segfaultfizzbuzz> can i fairly trivially use haskell itself as a scripting language within a haskell program (such as via ghci)?
2022-11-30 03:11:16 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-11-30 03:11:37 +0100 <zzz> segfaultfizzbuzz: not only that but even https://hackage.haskell.org/package/turtle-1.6.1/docs/Turtle-Tutorial.html
2022-11-30 03:12:16 +0100 <segfaultfizzbuzz> yeah i don't like scripting languages
2022-11-30 03:12:17 +0100 <zzz> wait, wdym?
2022-11-30 03:12:27 +0100 <Cale> segfaultfizzbuzz: You can use the GHC API or more user-friendly wrappers for it such as the 'hint' package to evaluate Haskell at runtime.
2022-11-30 03:12:35 +0100 <segfaultfizzbuzz> okay so let's say that i write some code which provides a bunch of functions for interacting with a database
2022-11-30 03:13:23 +0100 <segfaultfizzbuzz> and let's say that i want a user to be able to (safely!) munch on those functions,... perhaps to take the output of a function and display it in a programmable manner, such as to highlight certain conditions in the color red or somesuch
2022-11-30 03:13:48 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
2022-11-30 03:14:18 +0100 <segfaultfizzbuzz> that is to say, perhaps i write a function that spits out a table from a database, so my user could "haskell-script" a function which accepts the output of that function and selects certain rows and colors them red
2022-11-30 03:14:27 +0100 <gurkenglas> uh oh, "HLS doesn't support GHC 9.2.5 yet" when all I did was follow HLS's instructions to install ghcup
2022-11-30 03:14:49 +0100 <segfaultfizzbuzz> gurkenglas: what platform are you on
2022-11-30 03:14:54 +0100 <gurkenglas> Debian 11
2022-11-30 03:15:20 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2022-11-30 03:15:20 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2022-11-30 03:15:20 +0100wroathe(~wroathe@user/wroathe)
2022-11-30 03:19:12 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-11-30 03:19:28 +0100 <segfaultfizzbuzz> Cale: hmm hint doesn't look like it would be safe to run on a server...?
2022-11-30 03:21:03 +0100 <albet70> if there's f x $ do ... $ y since the middle do notation has indentation, write where y should be?
2022-11-30 03:21:20 +0100 <albet70> if do not use flip
2022-11-30 03:21:22 +0100 <Cale> segfaultfizzbuzz: Running arbitrary Haskell code probably isn't all that safe
2022-11-30 03:22:16 +0100 <zzz> gurkenglas: it supports 9.4.2 if you're good with updating
2022-11-30 03:22:20 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds)
2022-11-30 03:22:27 +0100 <Cale> segfaultfizzbuzz: Though lambdabot exists...
2022-11-30 03:23:09 +0100 <Cale> https://hackage.haskell.org/package/mueval
2022-11-30 03:23:42 +0100 <Cale> mueval is built on top of hint and does a bunch of the sanitizing you might want if you're letting people type random expressions in
2022-11-30 03:24:33 +0100 <Cale> However, if you are serious about security, this really isn't enough.
2022-11-30 03:26:51 +0100 <Cale> (The amount of damage someone can do by pwning lambdabot is also not that high, so it balances out to be sufficient there.)
2022-11-30 03:28:26 +0100 <zzz> i have NO CLUE of what's going on... why does my build fail?
2022-11-30 03:29:09 +0100 <glguy> zzz: what's sete? is the .cabal file online somewhere?
2022-11-30 03:29:22 +0100 <zzz> https://paste.jrvieira.com/1669775357753
2022-11-30 03:29:32 +0100 <zzz> oh, sorry
2022-11-30 03:29:48 +0100 <glguy> I think you probably need a cabal-version declaration in your .cabal file
2022-11-30 03:29:55 +0100 <zzz> https://paste.jrvieira.com/1669775386868
2022-11-30 03:30:01 +0100 <zzz> here's the cabal file
2022-11-30 03:30:47 +0100 <glguy> zzz: change that first line to cabal-version: 2.4
2022-11-30 03:33:29 +0100 <zzz> ok that worked
2022-11-30 03:33:49 +0100 <zzz> what happened here?
2022-11-30 03:34:37 +0100 <glguy> What you had was invalid, so I guess it got ignored
2022-11-30 03:34:58 +0100 <glguy> that declaration was added in Cabal 2, so without it Cabal assumes it's an old Cabal 1 file
2022-11-30 03:35:00 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 265 seconds)
2022-11-30 03:35:25 +0100 <glguy> The declaration states which version of the cabal format you're using, so a range doesn't make sense
2022-11-30 03:35:53 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.7.1)
2022-11-30 03:37:06 +0100 <zzz> oh
2022-11-30 03:37:19 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds)
2022-11-30 03:37:24 +0100 <zzz> thanks, i must have messed that up at some point
2022-11-30 03:37:26 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-11-30 03:37:55 +0100 <zzz> the error messages are complete nonsense though
2022-11-30 03:39:03 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2022-11-30 03:45:28 +0100 <segfaultfizzbuzz> last updated... 7 years ago :/
2022-11-30 03:47:38 +0100talismanick(~user@76.133.152.122) (Read error: Connection reset by peer)
2022-11-30 03:53:20 +0100chele(~chele@user/chele) (Remote host closed the connection)
2022-11-30 03:53:52 +0100sammelweis(~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Remote host closed the connection)
2022-11-30 03:54:07 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-11-30 03:54:28 +0100talismanick(~user@76.133.152.122)
2022-11-30 03:56:01 +0100 <segfaultfizzbuzz> on a somewhat related note, i have been using rust and diesel with great success but just noticed that if i want to change my schema i need to basically recompile (excepting raw sql queries)
2022-11-30 03:56:14 +0100 <segfaultfizzbuzz> for example if i want to add or remove a table, or add columns to a table
2022-11-30 03:56:29 +0100 <segfaultfizzbuzz> does haskell/a haskell orm have a nice way of handling this situation which isn't so burdensome?
2022-11-30 04:00:36 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 04:01:28 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
2022-11-30 04:07:33 +0100 <pixie> exit
2022-11-30 04:07:36 +0100pixie(~pixie@cm-170-253-186-17.maxxsouthbb.net) (Quit: Lost terminal)
2022-11-30 04:14:38 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2022-11-30 04:14:58 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-11-30 04:16:33 +0100razetime(~quassel@49.207.211.219)
2022-11-30 04:16:33 +0100nate4(~nate@98.45.169.16)
2022-11-30 04:22:04 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Remote host closed the connection)
2022-11-30 04:23:25 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2022-11-30 04:27:51 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-11-30 04:27:51 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-11-30 04:27:51 +0100finn_elijaFinnElija
2022-11-30 04:32:31 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 265 seconds)
2022-11-30 04:32:34 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-11-30 04:33:07 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-30 04:33:23 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 04:43:41 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2022-11-30 04:46:12 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-11-30 04:46:54 +0100offtherock(~blurb@96.45.2.121) (Remote host closed the connection)
2022-11-30 04:51:25 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-11-30 04:51:35 +0100opticblast(~Thunderbi@secure-165.caltech.edu)
2022-11-30 04:54:16 +0100td_(~td@83.135.9.40) (Ping timeout: 265 seconds)
2022-11-30 04:55:59 +0100td_(~td@83.135.9.45)
2022-11-30 05:01:19 +0100cafkafk(~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
2022-11-30 05:02:04 +0100cafkafk(~cafkafk@fsf/member/cafkafk)
2022-11-30 05:08:02 +0100mbuf(~Shakthi@49.204.141.87)
2022-11-30 05:08:22 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
2022-11-30 05:09:24 +0100jargon(~jargon@174-22-207-8.phnx.qwest.net)
2022-11-30 05:09:29 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 05:09:29 +0100jargon(~jargon@174-22-207-8.phnx.qwest.net) (Remote host closed the connection)
2022-11-30 05:10:19 +0100jargon(~jargon@174-22-207-8.phnx.qwest.net)
2022-11-30 05:18:46 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 05:19:23 +0100nate4(~nate@98.45.169.16) (Ping timeout: 264 seconds)
2022-11-30 05:22:40 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 260 seconds)
2022-11-30 05:28:42 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 256 seconds)
2022-11-30 05:34:02 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-30 05:35:16 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 05:44:49 +0100Vajb(~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer)
2022-11-30 05:45:13 +0100Vajb(~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d)
2022-11-30 05:47:24 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 256 seconds)
2022-11-30 05:49:22 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 05:53:35 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
2022-11-30 05:54:06 +0100sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 05:54:11 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 264 seconds)
2022-11-30 05:55:59 +0100opticblast(~Thunderbi@secure-165.caltech.edu) (Ping timeout: 264 seconds)
2022-11-30 06:00:09 +0100sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-30 06:02:15 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 06:13:28 +0100iqubic(~user@2601:602:9502:c70:8460:2630:d857:cfc) (Ping timeout: 256 seconds)
2022-11-30 06:14:19 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-30 06:15:41 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 06:19:59 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Client Quit)
2022-11-30 06:21:06 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 06:26:43 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2022-11-30 06:26:53 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 06:39:32 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds)
2022-11-30 06:39:56 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-11-30 06:42:05 +0100tritlo(sid58727@user/tritlo) (Ping timeout: 252 seconds)
2022-11-30 06:43:30 +0100son0p(~ff@2604:3d08:5b7f:5540::ebf0) (Ping timeout: 256 seconds)
2022-11-30 06:43:50 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2022-11-30 06:45:16 +0100tritlo(sid58727@user/tritlo)
2022-11-30 06:49:39 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 06:51:47 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2022-11-30 06:54:37 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds)
2022-11-30 06:59:16 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-30 06:59:27 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 07:02:20 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-11-30 07:05:17 +0100califax(~califax@user/califx)
2022-11-30 07:07:13 +0100shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-11-30 07:17:43 +0100y04nn(~y04nn@2a03:1b20:5:f011::aaae)
2022-11-30 07:26:48 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-30 07:27:01 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 07:27:16 +0100rburkholder(~blurb@96.45.2.121)
2022-11-30 07:29:53 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-30 07:31:30 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-11-30 07:36:15 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2022-11-30 07:37:32 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 07:41:14 +0100acidjnk_new(~acidjnk@p200300d6e7137a95e97f13ccb1fca6e5.dip0.t-ipconnect.de)
2022-11-30 07:43:10 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2022-11-30 07:43:37 +0100mei(~mei@user/mei)
2022-11-30 07:44:29 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-30 07:45:47 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 264 seconds)
2022-11-30 07:46:59 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 07:50:30 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 07:50:36 +0100darkstardevx(~darkstard@50.53.3.186)
2022-11-30 07:51:29 +0100tcard_(~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) (Remote host closed the connection)
2022-11-30 07:51:44 +0100tcard_(~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9)
2022-11-30 07:57:06 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-30 07:59:56 +0100opticblast(~Thunderbi@secure-165.caltech.edu)
2022-11-30 08:04:07 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-11-30 08:22:26 +0100safinaskar(~quassel@178.160.244.66)
2022-11-30 08:25:00 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds)
2022-11-30 08:27:14 +0100safinaskar(~quassel@178.160.244.66) ()
2022-11-30 08:27:59 +0100kenran(~user@user/kenran)
2022-11-30 08:29:32 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-30 08:32:15 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2022-11-30 08:33:03 +0100mastarija(~mastarija@2a05:4f46:e03:6000:2089:7745:26f1:513b)
2022-11-30 08:34:49 +0100ulvarrefr(~user@188.124.56.153) (Ping timeout: 260 seconds)
2022-11-30 08:35:19 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:97d5:4102:827f:e93)
2022-11-30 08:39:43 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2022-11-30 08:39:53 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 08:40:43 +0100y04nn(~y04nn@2a03:1b20:5:f011::aaae) (Remote host closed the connection)
2022-11-30 08:44:26 +0100mmhat(~mmh@p200300f1c725456bee086bfffe095315.dip0.t-ipconnect.de)
2022-11-30 08:45:14 +0100cfricke(~cfricke@user/cfricke)
2022-11-30 08:51:40 +0100CiaoSen(~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-11-30 08:53:08 +0100son0p(~ff@2604:3d08:5b7f:5540::1a33)
2022-11-30 08:58:50 +0100michalz(~michalz@185.246.204.69)
2022-11-30 09:02:48 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 255 seconds)
2022-11-30 09:03:05 +0100safinaskar(~quassel@178.160.244.66)
2022-11-30 09:03:37 +0100Guest60(~Guest60@101.98.118.246)
2022-11-30 09:03:55 +0100CiaoSen(~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-11-30 09:04:29 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 09:04:31 +0100 <Guest60> What's the recommended approach to working with filepaths? Ideally, with convenience functions such as splitting paths into directory, name and extension as well as construction.
2022-11-30 09:04:51 +0100safinaskar(~quassel@178.160.244.66) ()
2022-11-30 09:04:55 +0100 <geekosaur> the filepath library is a bootlib
2022-11-30 09:04:59 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 264 seconds)
2022-11-30 09:05:11 +0100 <geekosaur> (that is, core to ghc)
2022-11-30 09:06:05 +0100opticblast(~Thunderbi@secure-165.caltech.edu) (Ping timeout: 265 seconds)
2022-11-30 09:07:13 +0100 <Guest60> This one? https://hackage.haskell.org/package/filepath-1.4.100.0
2022-11-30 09:07:57 +0100 <geekosaur> yes
2022-11-30 09:09:06 +0100 <Guest60> to use the `OsPath` type do I `import System.OsPath` ? Looking at the docs it would suggest I do but I am getting a compilation error that it can't find the module.
2022-11-30 09:09:21 +0100 <DigitalKiwi> was it a bootlib before or after ghc decided to delete haskell source files on windows
2022-11-30 09:09:34 +0100 <geekosaur> heh
2022-11-30 09:10:34 +0100 <geekosaur> Guest60, you need to make sure you have installed the latest version to get System.OsPath; it's quite new and only ghc 9.4.1 ships with it
2022-11-30 09:10:55 +0100 <geekosaur> which means using cabal or stack to install it
2022-11-30 09:10:59 +0100earthy(~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) (Ping timeout: 264 seconds)
2022-11-30 09:11:21 +0100 <geekosaur> before that you will want to look at https://hackage.haskell.org/package/filepath-1.4.2.2
2022-11-30 09:11:32 +0100fserucas(~fserucas@212.157.222.2)
2022-11-30 09:11:49 +0100 <Guest60> ah I see. I'm on 9.2.4. I'll try upgrade to 9.4.2 since thats the latest hls version I believe.
2022-11-30 09:12:47 +0100Guest9064(~Guest90@174.136.135.37.dynamic.jazztel.es)
2022-11-30 09:13:06 +0100 <geekosaur> DigitalKiwi, that problem was separate (it was supposed to delete the generated .hi file, but passed the wrong suffix)
2022-11-30 09:13:19 +0100Guest9064(~Guest90@174.136.135.37.dynamic.jazztel.es) (Client Quit)
2022-11-30 09:13:22 +0100 <geekosaur> not much can be done with stringly typed filenames 🙂
2022-11-30 09:15:42 +0100 <Guest60> oh bummer 9.2.4 is the latest GHC with a stackage nightly + HLS support
2022-11-30 09:16:17 +0100 <geekosaur> yeh
2022-11-30 09:16:17 +0100 <Guest60> I will try the older version of filepath
2022-11-30 09:16:40 +0100 <geekosaur> just use the older filepath, it has most of the same functions just differently implemented
2022-11-30 09:16:45 +0100 <DigitalKiwi> i'm going to make a typed filename library and have a bug that parses .hi as HaskellSourceFileType instead of HaskellInterfaceFileType
2022-11-30 09:17:52 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 09:18:19 +0100titibandit(~titibandi@xdsl-78-35-173-119.nc.de)
2022-11-30 09:18:22 +0100 <geekosaur> ghc might actually benefit from the core idea, it'd probably make handling of hidir/odir/etc. easier
2022-11-30 09:18:23 +0100 <DigitalKiwi> s/bug/easter egg/
2022-11-30 09:19:30 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2022-11-30 09:20:09 +0100mastarija(~mastarija@2a05:4f46:e03:6000:2089:7745:26f1:513b) (Quit: WeeChat 3.5)
2022-11-30 09:20:41 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 09:21:17 +0100 <DigitalKiwi> the difference between a bug and an easter egg is whether it has an open issue in the tracker before or after the release date
2022-11-30 09:22:07 +0100 <geekosaur> easter eggs aren't destructive
2022-11-30 09:22:27 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-11-30 09:23:18 +0100opticblast(~Thunderbi@secure-165.caltech.edu)
2022-11-30 09:23:33 +0100 <DigitalKiwi> they are if you boil them
2022-11-30 09:25:13 +0100 <geekosaur> (Guest60, if you're wondering, ghc has had bugs where a compilation error caused deletion of the source file. twice on Windows and once on all platforms. needless to say, that is now one of the core tests…)
2022-11-30 09:26:24 +0100 <Guest60> Oh no hahaha. Hopefully it didn't touch the .git directory
2022-11-30 09:27:18 +0100 <DigitalKiwi> (and i'm fond of bringing those bugs up lol)
2022-11-30 09:30:19 +0100ft(~ft@p508dbd59.dip0.t-ipconnect.de) (Quit: leaving)
2022-11-30 09:40:30 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2022-11-30 09:41:46 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2022-11-30 09:43:09 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 09:51:38 +0100acidjnk_new(~acidjnk@p200300d6e7137a95e97f13ccb1fca6e5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2022-11-30 09:52:19 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds)
2022-11-30 09:53:46 +0100gmg(~user@user/gehmehgeh)
2022-11-30 09:53:50 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 09:56:00 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-11-30 09:57:21 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-11-30 09:59:23 +0100kmein(~weechat@user/kmein) (Quit: ciao kakao)
2022-11-30 10:00:01 +0100kmein(~weechat@user/kmein)
2022-11-30 10:00:04 +0100kfiz[m](~louismatr@2001:470:69fc:105::2:aee0) (Quit: You have been kicked for being idle)
2022-11-30 10:00:04 +0100MangoIV[m](~mangoivma@2001:470:69fc:105::2:8417) (Quit: You have been kicked for being idle)
2022-11-30 10:03:53 +0100mei(~mei@user/mei) (Remote host closed the connection)
2022-11-30 10:05:09 +0100 <Guest60> Can optparse-applicative parse a `some argument` into a NonEmpty list?
2022-11-30 10:05:20 +0100son0p(~ff@2604:3d08:5b7f:5540::1a33) (Ping timeout: 255 seconds)
2022-11-30 10:05:48 +0100 <Guest60> Or rather, how can I massage it?
2022-11-30 10:06:34 +0100 <tomsmeding> Guest60: `(:|) <$> argument <*> many argument` ?
2022-11-30 10:08:12 +0100 <dminuoso> Guest60: I would just use the unsafe https://hackage.haskell.org/package/base-4.17.0.0/docs/Data-List-NonEmpty.html#v:fromList
2022-11-30 10:08:25 +0100 <dminuoso> Guest60: For convenience, write yourself a someNE wrapper that you cant misuse this.
2022-11-30 10:08:53 +0100 <dminuoso> i.e. `someNE = fmap NE.fromList . some`
2022-11-30 10:09:15 +0100 <tomsmeding> `fmap (fmap NE.fromList) some` for more fun ;)
2022-11-30 10:09:27 +0100 <tomsmeding> (don't do that)
2022-11-30 10:09:57 +0100 <dminuoso> Or well, I guess tomsmeding's solution is nice too. Pick your poison.
2022-11-30 10:11:46 +0100 <dminuoso> i.e. `someNE a = (:|) <$> a <*> many a`
2022-11-30 10:12:01 +0100 <dminuoso> Every time I use NonEmpty I kind of regret it though
2022-11-30 10:13:26 +0100 <tomsmeding> @pl \a -> liftA2 (:|) a (many a)
2022-11-30 10:13:27 +0100 <lambdabot> ap (liftA2 (:|)) many
2022-11-30 10:13:37 +0100 <tomsmeding> :t liftA2 (:|) <*> many
2022-11-30 10:13:38 +0100 <lambdabot> Alternative f => f a -> f (NonEmpty a)
2022-11-30 10:13:43 +0100 <Guest60> ah wonderful, that's elegant, I suppose its fair to use the unsafe version. Would be nice if the library used nonempty as the type for some
2022-11-30 10:14:15 +0100 <Guest60> Why do you regret using NonEmpty?
2022-11-30 10:14:37 +0100MajorBiscuit(~MajorBisc@145.94.143.231)
2022-11-30 10:14:54 +0100 <dminuoso> Because most of the time it gets turned back into a list anyway
2022-11-30 10:15:52 +0100 <geekosaur> how much of that is just not enough stuff using NonEmpty that ought to? or just missing NonEmpty versions of things
2022-11-30 10:16:14 +0100 <geekosaur> e.g. foldr1 ought to take a NonEmpty
2022-11-30 10:16:18 +0100 <dminuoso> These two look like the same thing
2022-11-30 10:16:41 +0100 <Guest60> I ended up using NonEmpty because the function where I use the list was partial unless I handled the "impossible" empty case
2022-11-30 10:16:49 +0100 <dminuoso> geekosaur: well I guess its mostly "semigroupoids should be in base"
2022-11-30 10:16:56 +0100 <geekosaur> not quite the same, the latter is stuff that also makes sense on a normal list but to use it with a NonEmpty you need to convert to a list and back
2022-11-30 10:17:00 +0100 <Guest60> feels wrong to add the empty list pattern for a function that should never receive an empty list
2022-11-30 10:17:08 +0100 <dminuoso> If that was to ever happen, I think NonEmpty might become more useful
2022-11-30 10:19:51 +0100 <dminuoso> Guest60: Feel free to use it, maybe it works out great for you. If not, you will know what kind of friction I mean. There's nothing inherently wrong about NonEmpty
2022-11-30 10:20:32 +0100 <dminuoso> Sometimes its these small things like just recursing on a non-empty list.
2022-11-30 10:21:24 +0100 <dminuoso> You end up having senseless base cases regardless
2022-11-30 10:21:46 +0100 <Guest60> In that case would you use the go function pattern?
2022-11-30 10:21:55 +0100 <Guest60> (not sure if go function is the common terminology)
2022-11-30 10:22:09 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-11-30 10:22:19 +0100 <dminuoso> Well sure, I mean you can either write two go clauses, or you end up with some quirkly code.
2022-11-30 10:22:38 +0100 <dminuoso> e.g. `go (x :| xs) = go1 x xs` ...
2022-11-30 10:22:42 +0100 <tomsmeding> dminuoso: doesn't that end up looking like `f (x:|[]) = ... ; f (x:|xs@(y:ys)) = combine x (f (y:|ys))`
2022-11-30 10:22:55 +0100 <tomsmeding> (while I was writing that I realised the quirkiness of having to write y:ys)
2022-11-30 10:23:15 +0100 <dminuoso> Right, or you end up doing these deep matches
2022-11-30 10:23:21 +0100 <dminuoso> None of that is really satisfying
2022-11-30 10:23:25 +0100 <tomsmeding> agreed
2022-11-30 10:23:34 +0100titibandit(~titibandi@xdsl-78-35-173-119.nc.de) (Remote host closed the connection)
2022-11-30 10:24:05 +0100 <dminuoso> In an ideal world, something like liquid haskell or dependent types are much better at conceptualizing non-empty lists.
2022-11-30 10:24:50 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-30 10:24:58 +0100 <dminuoso> but it shifts quirkiness into a type system
2022-11-30 10:25:13 +0100 <tomsmeding> I think the best ergonomics for non-empty lists are with refinement types, i.e. liquid haskell
2022-11-30 10:25:37 +0100 <tomsmeding> or... of course you can get the same with dependent types and inferred value arguments
2022-11-30 10:26:16 +0100 <dminuoso> its a bit strange, maybe there is a different representation.
2022-11-30 10:26:27 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 10:26:28 +0100 <tomsmeding> liquid haskell won't silence non-exhaustive pattern warnings though, iirc
2022-11-30 10:26:49 +0100 <dminuoso> tomsmeding: one could conceive a kind of marrying refinement types and the compiler, though.
2022-11-30 10:26:53 +0100 <geekosaur> yet? they;re trying to rewrite as a plugin last I heard, which should
2022-11-30 10:27:02 +0100 <tomsmeding> cool!
2022-11-30 10:27:52 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-11-30 10:28:46 +0100 <dminuoso> Guest60: Anyway, dont let any of this sway you from using NonEmpty. I do have some situations where NonEmpty works without any quirk.
2022-11-30 10:29:02 +0100 <Guest60> What a happy moment that after a week of coding, my console finally prints "Hello, World!"
2022-11-30 10:29:19 +0100 <dminuoso> Guest60: here this is an example straight from one of our projects https://gist.github.com/dminuoso/d8558ad3235d6d2b93194d7bd49106ce
2022-11-30 10:29:38 +0100 <dminuoso> Note how the NonEmpty gets turned back into a regular list?
2022-11-30 10:30:04 +0100 <dminuoso> But it is useful since it allows one side to generate extractable information, and at the rdGroup I dont have to handle some empty list base case to generate the label
2022-11-30 10:31:16 +0100 <int-e> @where subtyping
2022-11-30 10:31:16 +0100 <lambdabot> I know nothing about subtyping.
2022-11-30 10:31:38 +0100 <Guest60> Yeah, I can see NonEmpty has its uses
2022-11-30 10:32:25 +0100 <dminuoso> I mean yeah, in this case the underlying problem is that mapMaybe is too monomorphic.
2022-11-30 10:32:26 +0100 <int-e> (subtypes are a can of worms but NonEmpty is so clunky without them)
2022-11-30 10:32:45 +0100Guest75(~Guest75@178.141.153.191)
2022-11-30 10:33:07 +0100 <dminuoso> mapMaybe could easily have the type `Foldable f => (a -> Maybe b) -> f a -> [b]`
2022-11-30 10:33:23 +0100 <dminuoso> If it had, I wouldnt need to turn the NE back into a list
2022-11-30 10:33:34 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 265 seconds)
2022-11-30 10:34:13 +0100 <dminuoso> Take note, that NonEmpty wouldnt have a Filterable (see witherable) instance, so that would be kind of frustrating.
2022-11-30 10:34:42 +0100 <DigitalKiwi> hello world in haskell is 6 days of getting hls, stack, cabal, emacs, nix, direnv, lorri, etc. to work and 1 day of writing main = putStrLn "Hello World"
2022-11-30 10:35:08 +0100 <dminuoso> DigitalKiwi: ghcup should set up the average user in just minutes.
2022-11-30 10:35:09 +0100tomsmedingskipped stack, emacs, nix, direnv and lorri, and used nvim instead
2022-11-30 10:35:18 +0100 <tomsmeding> also that
2022-11-30 10:35:36 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 10:35:37 +0100 <DigitalKiwi> i'm not an average user :(
2022-11-30 10:35:48 +0100 <tomsmeding> why does ghcup not work for you?
2022-11-30 10:35:53 +0100 <tomsmeding> oh because nix
2022-11-30 10:35:58 +0100 <dminuoso> In nix its also trivial
2022-11-30 10:36:15 +0100 <dminuoso> Depending on how much you want to build it in nix.
2022-11-30 10:36:17 +0100 <tomsmeding> but if you're set on using nix you can't complain about having to deal with direnv/lorri :p
2022-11-30 10:36:27 +0100 <DigitalKiwi> because maerwald hates haskell and i don't want to use their software ;)
2022-11-30 10:36:29 +0100 <dminuoso> But yeah, the haskell situation in nix is very sad and poor.
2022-11-30 10:37:35 +0100 <dminuoso> If you want to learn Haskell, I would strongly discourage you from building with nix itself. Can use nix to provide cabal-install, ghc and HLS - and that takes just mere minutes.
2022-11-30 10:37:54 +0100 <dminuoso> But the actual build process, well this confronts the user with the painful realities of haskell-in-nix.
2022-11-30 10:37:59 +0100 <DigitalKiwi> i have a shell.nix i cargo cult around that does a lot lol
2022-11-30 10:38:11 +0100 <dminuoso> I use shell.nix + cabal-install mostly.
2022-11-30 10:38:12 +0100 <Dominik[m]1> DigitalKiwi: All you need is a flake template. But setting that up takes ages. You could use one of the templates made by others.
2022-11-30 10:38:40 +0100 <dminuoso> Hah. All you need is a template for a poorly documented experimental feature in nix. :p
2022-11-30 10:38:54 +0100 <Dominik[m]1> You are completely right.
2022-11-30 10:38:59 +0100 <Dominik[m]1> But it is awesome :-).
2022-11-30 10:39:21 +0100 <DigitalKiwi> i have a bunch of these kinds of things i don't know which one i like best yet lol https://github.com/Kiwi/nix-hs-template
2022-11-30 10:39:22 +0100 <dminuoso> It is in fact so experimental, that we dont even have an RFC anymore. :p
2022-11-30 10:39:34 +0100 <Dominik[m]1> And I share your concerns about documentation and stuff.
2022-11-30 10:39:59 +0100 <geekosaur> re "maerwald hates haskell" — he hates every language. he's on record as having said he hates haskell somewhat less, though
2022-11-30 10:40:08 +0100 <geekosaur> (sounds like a sysadmin…)
2022-11-30 10:40:29 +0100 <tomsmeding> someone who writes ghcup and has to deal with weird filesystem issues on windows is a honorary sysadmin
2022-11-30 10:40:52 +0100 <Dominik[m]1> I agree.
2022-11-30 10:40:59 +0100 <int-e> geekosaur: "user data is protocol overhead" (sounds like BOFH but I think it came from somewhere else... can't remember)
2022-11-30 10:41:13 +0100 <geekosaur> and yes, with all the work he's put in on both ghcup and the new filepath, I wouldn't take "hates haskell" too seriously
2022-11-30 10:41:51 +0100 <geekosaur> definitely a BOFH mindset though
2022-11-30 10:42:07 +0100 <Dominik[m]1> when will the new filepath proposal be merged btw?
2022-11-30 10:42:18 +0100 <DigitalKiwi> https://github.com/Kiwi/hakyll-nix-template
2022-11-30 10:42:21 +0100 <dminuoso> I think maerwald is just very open and blunt with the problems he sees. There's certainly folks that have blinders on and advertise Haskell as the perfect and best thing in the world. He's not that.
2022-11-30 10:42:21 +0100 <geekosaur> it's in 9.4
2022-11-30 10:42:32 +0100 <Dominik[m]1> oh cool
2022-11-30 10:42:51 +0100 <geekosaur> and on hackage as https://hackage.haskell.org/package/filepath-1.4.100.0
2022-11-30 10:43:44 +0100 <DigitalKiwi> haskell sucks, everything else sucks at least as much lol
2022-11-30 10:44:11 +0100 <DigitalKiwi> 03:44 DigitalKiwi: !as
2022-11-30 10:44:13 +0100 <int-e> Brainfuck is the perfect language. Change my mind.
2022-11-30 10:44:13 +0100 <DigitalKiwi> 03:44 phrik: Arch Sucks™
2022-11-30 10:44:19 +0100 <tomsmeding> "haskell is the worst language if it weren't for all the others"?
2022-11-30 10:44:30 +0100 <DigitalKiwi> int-e: whitespace
2022-11-30 10:44:40 +0100 <geekosaur> I think it's "except for"
2022-11-30 10:44:42 +0100 <DigitalKiwi> int-e: you can write a program in a program!
2022-11-30 10:45:02 +0100 <int-e> DigitalKiwi: Nah, no contest. It's pretty messy, though it may be hard to see that by looking at the source code.
2022-11-30 10:45:21 +0100 <mauke> DigitalKiwi: https://raw.githubusercontent.com/mauke/poly.poly/master/poly.poly
2022-11-30 10:45:31 +0100 <DigitalKiwi> take a language that doesn't have strict rules on indentation and you can indent it however you want and have 2 programs!
2022-11-30 10:45:53 +0100 <mauke> I can write a program in a program in a program in a program
2022-11-30 10:45:54 +0100 <Dominik[m]1> geekosaur: Did the version number arise from all frustrations? minor 100 :-).
2022-11-30 10:46:14 +0100 <geekosaur> no idea, ask maerwald
2022-11-30 10:46:37 +0100 <tomsmeding> int-e: https://esolangs.org/wiki/Bitwise_Cyclic_Tag
2022-11-30 10:46:39 +0100 <geekosaur> I'd guess he left room in case a change is needed for a new 9.2 release or something, though
2022-11-30 10:46:51 +0100 <geekosaur> not that that seems particularly likely
2022-11-30 10:48:51 +0100 <DigitalKiwi> pretty sure >19 isn't minor
2022-11-30 10:49:23 +0100 <mauke> > "100" > "18"
2022-11-30 10:49:24 +0100 <lambdabot> False
2022-11-30 10:49:27 +0100 <DigitalKiwi> mauke: what's it do
2022-11-30 10:49:43 +0100 <DigitalKiwi> (poly.poly)
2022-11-30 10:49:51 +0100 <mauke> DigitalKiwi: tells you what language it's in :-)
2022-11-30 10:50:07 +0100 <DigitalKiwi> does it run it too
2022-11-30 10:50:16 +0100 <mauke> ?
2022-11-30 10:50:23 +0100 <DigitalKiwi> https://xkcd.com/1654/
2022-11-30 10:50:24 +0100 <int-e> Dominik[m]1: "This is a major release, but it's actually fully backward compatible so let's not force every downstream package to bump its upper bound on filepath"
2022-11-30 10:50:40 +0100 <geekosaur> ^
2022-11-30 10:50:52 +0100 <Dominik[m]1> oh
2022-11-30 10:51:01 +0100 <geekosaur> point being that if you use the old FilePath interface it should be 100% compatible
2022-11-30 10:51:09 +0100 <dminuoso> I would suspect the version to be an artifact of maerwald's work strategy. During much of the work, he steadily increased 1.4.99.1 with the last minor version tag, presumably to allow for concurrent branches to bump the previous minor version (1, 2, ...) while staying ahead.
2022-11-30 10:51:21 +0100 <dminuoso> With 1.4.100 presumably being the "done version" of it.
2022-11-30 10:52:17 +0100 <mauke> DigitalKiwi: for something simpler, see https://raw.githubusercontent.com/mauke/poly.poly/master/yes.c
2022-11-30 10:52:38 +0100 <Dominik[m]1> ok but that still does not explain why 100. one could use 1.4.4.
2022-11-30 10:52:39 +0100 <mauke> it shares the main code and semantics between haskell and perl
2022-11-30 10:53:28 +0100 <dminuoso> Dominik[m]1: and if 2 minor versions were to be released in between?
2022-11-30 10:53:28 +0100 <Dominik[m]1> not knowing when the change gets merged though may be a reason
2022-11-30 10:53:31 +0100 <geekosaur> Dominik[m]1, I answered that. they're not going to change ghc9.2.6 (if needed) to use the new filepath, they would make a new minor version of the old one
2022-11-30 10:53:45 +0100 <geekosaur> filepath is a bootlib used by ghc
2022-11-30 10:54:21 +0100zant(~zant@62.214.20.26)
2022-11-30 10:54:23 +0100 <dminuoso> at the end, none of this really matters anyway
2022-11-30 10:54:24 +0100 <geekosaur> presuming a change were needed, but the prudent programmer assumes it might
2022-11-30 10:54:38 +0100 <Dominik[m]1> ok, those are two separate reasons though
2022-11-30 10:54:39 +0100 <dminuoso> one should never interpret more into a version number than what PVP guarantees (assuming the package follows PVP)
2022-11-30 10:54:56 +0100 <Dominik[m]1> hehe
2022-11-30 10:55:01 +0100 <Dominik[m]1> but one still does
2022-11-30 10:55:05 +0100dminuosodoes not
2022-11-30 10:55:20 +0100 <Dominik[m]1> 😃
2022-11-30 10:55:44 +0100 <dminuoso> plus, the 100 nicely denotes a major thing, it directly suggests "some major changes"
2022-11-30 10:55:55 +0100 <dminuoso> because it was on the minor version you can then infer its just additional stuff, but something major
2022-11-30 10:56:01 +0100 <dminuoso> (that is nothing was altered or removed)
2022-11-30 10:57:05 +0100 <int-e> dminuoso: did you see the 2.0.0.0 to 2.0.0.3 candidates that predate the 1.4.99.0 one?
2022-11-30 10:57:09 +0100tomsmedinghas always found it awkward how the HTTP package has major version 4000
2022-11-30 10:57:27 +0100 <dminuoso> int-e: the original proposal was to break api, was it not?
2022-11-30 10:59:12 +0100 <geekosaur> "break api" ran into a brick wall
2022-11-30 10:59:26 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
2022-11-30 10:59:52 +0100opticblast(~Thunderbi@secure-165.caltech.edu) (Ping timeout: 268 seconds)
2022-11-30 11:01:47 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-30 11:02:07 +0100Pangz[m](~pangzpayn@2001:470:69fc:105::2:cdc7)
2022-11-30 11:02:11 +0100 <geekosaur> see for example https://mail.haskell.org/pipermail/ghc-devs/2022-November/021029.html
2022-11-30 11:02:42 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81) (Remote host closed the connection)
2022-11-30 11:04:30 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2022-11-30 11:04:45 +0100 <Guest60> Another library question: how would you all approach walking a directory recursively to get valid filepaths?
2022-11-30 11:04:56 +0100 <int-e> dminuoso: At a glance, I don't think those candidates broke the API. (They include the System.FilePath hierarchy and the types look the same.) So I guess the breaking-the-API ship had already sailed, but the version number was tweaked later.
2022-11-30 11:07:02 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 11:07:23 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds)
2022-11-30 11:09:21 +0100mixfix41(~sdenynine@user/mixfix41)
2022-11-30 11:10:02 +0100 <dminuoso> Guest60: In the presence of symlinks, that will require some answers on your side.
2022-11-30 11:10:13 +0100 <Dominik[m]1> Guest60: There is https://hackage.haskell.org/package/extra-1.7.12/docs/Extra.html#v:listFilesRecursive
2022-11-30 11:11:14 +0100 <geekosaur> this has both symlink issues and race conditions
2022-11-30 11:12:46 +0100 <Dominik[m]1> race condition would be: if somebody creates files in the meantime they are not found? or are they found and they should not be?
2022-11-30 11:12:46 +0100 <DigitalKiwi> so i guess it was fitting that my original thought to the question "how would you all approach..." was "poorly :("
2022-11-30 11:13:09 +0100 <geekosaur> could be either, also files that go away
2022-11-30 11:13:22 +0100 <dminuoso> int-e: https://gitlab.haskell.org/haskell/filepath/-/commit/32bbf19e0d02f68d2de9edc842bd0c04af74f12e - it seems the version idea of 2.0.0 ranged back quite a bit.
2022-11-30 11:13:25 +0100 <geekosaur> but there is no good answer to this as very few filesystems are transactional
2022-11-30 11:13:35 +0100 <Dominik[m]1> ok but with a function like that you can never avoid files being created inbetween
2022-11-30 11:13:36 +0100 <dminuoso> So its probably just an artifact from the break-api stage of the proposal
2022-11-30 11:13:37 +0100 <geekosaur> and there's no standard interface for the ones that are
2022-11-30 11:13:41 +0100 <Dominik[m]1> (or delted)
2022-11-30 11:13:41 +0100 <Guest60> haha, yeah I suppose there are always those issues. The executor of the code has control over the environment in this case so they're to blame for the race conditions here I would say
2022-11-30 11:13:47 +0100DigitalKiwiuses zfs
2022-11-30 11:13:51 +0100 <Guest60> this caes being, my application use case
2022-11-30 11:14:20 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-30 11:14:27 +0100 <geekosaur> as for symlinks, the question is whether you want to follow them or not. usually you don't because it can lead to things like recursion or duplication
2022-11-30 11:14:31 +0100 <Guest60> I think the listFilesRecusrive will be fine considering I don't want to support symlinks
2022-11-30 11:14:41 +0100 <geekosaur> (foo -> ../..)
2022-11-30 11:14:50 +0100 <dminuoso> duplication is another interesting bit, how do you want to handle additional hardlinks.
2022-11-30 11:14:55 +0100 <Dominik[m]1> or (foo -> /)
2022-11-30 11:15:09 +0100opticblast(~Thunderbi@secure-165.caltech.edu)
2022-11-30 11:15:10 +0100 <DigitalKiwi> https://mostlyabsurd.com/files/2022-11-30-041457_1314x829_scrot.png
2022-11-30 11:15:41 +0100 <dminuoso> Guest60: But yeah, in addition you get obvious TOCTOU races outside of transactional file systems. So be ready for those too.
2022-11-30 11:16:05 +0100 <dminuoso> These are pretty much unavoidable for recursing directories
2022-11-30 11:16:28 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 11:16:45 +0100 <geekosaur> even just for listing a single directory, but much worse for the recursive case
2022-11-30 11:16:52 +0100 <int-e> Is posix even equipped to deal with those? It's already bad for single files...
2022-11-30 11:16:53 +0100 <Guest60> The use case is for a command-line application so I think these downsides are acceptable
2022-11-30 11:17:07 +0100 <geekosaur> int-e, no, which is why IO said there's no standard for it
2022-11-30 11:17:13 +0100nate4(~nate@98.45.169.16)
2022-11-30 11:17:15 +0100 <geekosaur> *I said
2022-11-30 11:17:32 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-11-30 11:17:37 +0100lisbeths(uid135845@id-135845.lymington.irccloud.com)
2022-11-30 11:17:54 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 11:18:11 +0100 <dminuoso> Guest60: So its not just that files can be created in the meantime, worse they could also be deleted or modified.
2022-11-30 11:18:15 +0100 <dminuoso> Anyway
2022-11-30 11:18:24 +0100 <dminuoso> I would handroll any such recursion.
2022-11-30 11:18:28 +0100 <int-e> I guess I could study `find` and `rsync` to get an idea what *is* possible.
2022-11-30 11:18:42 +0100 <dminuoso> And step back and think deeply about other platforms the code may run on (linux, darwin, windows)
2022-11-30 11:20:06 +0100 <int-e> hmm, https://hackage.haskell.org/package/extra-1.7.12/docs/src/System.Directory.Extra.html#listContents filters out entries like '.....' in addition to '.' and '..'.
2022-11-30 11:20:07 +0100 <DigitalKiwi> just put a big note in the readme that your software is only supported on transactional file systems
2022-11-30 11:21:05 +0100 <geekosaur> I think there's some filesystem on which ... is also special, so that's not too surprising
2022-11-30 11:21:17 +0100 <DigitalKiwi> https://github.com/Kiwi/clyde/blob/master/README or just use this
2022-11-30 11:21:54 +0100nate4(~nate@98.45.169.16) (Ping timeout: 265 seconds)
2022-11-30 11:22:35 +0100 <dminuoso> int-e: Is `...` even a valid filename?
2022-11-30 11:22:37 +0100 <int-e> Of course that's minor compared to blindly following symlinks. So I think I'd avoid using that package for this purpose.
2022-11-30 11:22:40 +0100 <int-e> dminuoso: it is
2022-11-30 11:22:46 +0100 <dminuoso> `touch ...` provokes touch: setting times of '../..': Permission denied
2022-11-30 11:22:56 +0100 <dminuoso> Im not even sure why
2022-11-30 11:23:18 +0100 <geekosaur> worked here
2022-11-30 11:23:26 +0100 <geekosaur> I now have an empty file called ...
2022-11-30 11:23:33 +0100 <dminuoso> Is touch a shell command?
2022-11-30 11:23:42 +0100 <dminuoso> MMm no its a GNU coreutils bin
2022-11-30 11:23:51 +0100 <dminuoso> Or maybe my shell does some shenanigans regardless?
2022-11-30 11:24:03 +0100 <mauke> what's your shell?
2022-11-30 11:24:08 +0100 <dminuoso> Yes it does!
2022-11-30 11:24:09 +0100 <int-e> dminuoso: probably some inline shell alias
2022-11-30 11:24:15 +0100 <dminuoso> λ ~/ strace touch ... execve("/run/current-system/sw/bin/touch", ["touch", "../.."], 0x7ffeb1bb91d8 /* 67 vars */) = 0
2022-11-30 11:24:19 +0100 <mauke> does it support something like argument aliases?
2022-11-30 11:24:20 +0100 <dminuoso> Wow. :(
2022-11-30 11:24:22 +0100 <dminuoso> I hate shells.
2022-11-30 11:24:26 +0100 <geekosaur> what shell?
2022-11-30 11:24:28 +0100 <dminuoso> zsh
2022-11-30 11:24:32 +0100 <mauke> hah
2022-11-30 11:24:34 +0100 <geekosaur> I'm using zsh
2022-11-30 11:25:05 +0100 <dminuoso> Im seriously displeased about this.
2022-11-30 11:25:05 +0100 <geekosaur> $ZSH_VERSION is 5.8
2022-11-30 11:25:10 +0100 <mauke> some people like to type cd .../asdf to go two levels up
2022-11-30 11:25:45 +0100 <geekosaur> what's "setopt" say?
2022-11-30 11:25:51 +0100 <dminuoso> Yeah but touch is not a regsitered alias.
2022-11-30 11:25:57 +0100 <dminuoso> So my zsh must have some magic hook for this
2022-11-30 11:26:08 +0100 <geekosaur> I zap the ones "helpfully" set by ubuntu and set my own
2022-11-30 11:26:18 +0100 <dminuoso> geekosaur: https://gist.github.com/dminuoso/c5ac0eb40e682f7d6158d14a136c93d1
2022-11-30 11:26:26 +0100 <int-e> zsh has "global" aliases, I suspect alias -g ...=../..
2022-11-30 11:26:42 +0100 <dminuoso> int-e: that are expanded even if they occur in the middle of a command?
2022-11-30 11:26:47 +0100 <dminuoso> Oh you are right
2022-11-30 11:26:51 +0100 <int-e> dminuoso: that's what I think
2022-11-30 11:26:57 +0100 <dminuoso> λ ~/ echo ... => ../..
2022-11-30 11:27:00 +0100 <dminuoso> Wow! Such evil.
2022-11-30 11:27:15 +0100titibandit(~titibandi@xdsl-78-35-173-119.nc.de)
2022-11-30 11:27:35 +0100 <int-e> bash has stolen enough of zsh's nicer features that I never made the switch
2022-11-30 11:27:44 +0100 <geekosaur> good to know I should still nuke the ubuntu setup files
2022-11-30 11:28:53 +0100 <maerwald[m]> I use fish and switch to bash when I actually need to code a little shell
2022-11-30 11:29:08 +0100 <dminuoso> Luckily my zsh comes with only ..., ...., ....., ...... as global aliases, nothing further.
2022-11-30 11:29:09 +0100 <geekosaur> I still like foreach-style loops for things like curring and pasting a list of filenames
2022-11-30 11:29:15 +0100andreas303(andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
2022-11-30 11:29:18 +0100 <maerwald[m]> Shells shouldn't be smart, but predictable
2022-11-30 11:29:21 +0100 <geekosaur> *cutting
2022-11-30 11:29:22 +0100 <DigitalKiwi> alias cd..='cd ..'
2022-11-30 11:29:23 +0100 <DigitalKiwi> alias ..='cd ..'
2022-11-30 11:29:25 +0100 <dminuoso> But this type of thing can cause some serious bugs.
2022-11-30 11:29:36 +0100xacktm(~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
2022-11-30 11:29:46 +0100 <geekosaur> yeh, we used to call this head on the keyboard bugs
2022-11-30 11:30:03 +0100 <geekosaur> "you bang your head against the keyboard and *something* happens"
2022-11-30 11:30:37 +0100 <dminuoso> I now want to disable global alias feature entirely.
2022-11-30 11:32:03 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 265 seconds)
2022-11-30 11:32:05 +0100 <mauke> alias zsh=bash
2022-11-30 11:32:32 +0100 <dminuoso> By the way, is there a command like `which` that will follow symlinks until the end?
2022-11-30 11:32:47 +0100 <int-e> geekosaur: Heh, essentially all I know about TECO is that you could play that game... mash keyboard, predict what will happen.
2022-11-30 11:32:48 +0100 <dminuoso> I cant be the first nix user to want this :>
2022-11-30 11:33:43 +0100 <Dominik[m]1> readlink -f "$(which "$1")"
2022-11-30 11:33:45 +0100 <mauke> realpath?
2022-11-30 11:33:46 +0100 <Dominik[m]1> Is what I use.
2022-11-30 11:34:33 +0100 <dminuoso> yeah I guess so. time to make an alias for `realpath $(which "$1")`
2022-11-30 11:34:37 +0100 <Dominik[m]1> I think they are the same, but realpath is preferred, as far as I an see.
2022-11-30 11:34:45 +0100 <maerwald[m]> realpath is not posix
2022-11-30 11:34:58 +0100acidjnk(~acidjnk@p200300d6e7137a95e97f13ccb1fca6e5.dip0.t-ipconnect.de)
2022-11-30 11:35:04 +0100 <dminuoso> Yeah that's fine.
2022-11-30 11:35:22 +0100 <DigitalKiwi> function lswhich() { ls -ahl "$(which "$1")"; }
2022-11-30 11:35:23 +0100 <DigitalKiwi> function realpathwhich() { realpath "$(which "$1")"; }
2022-11-30 11:35:25 +0100 <DigitalKiwi> welke () {
2022-11-30 11:35:27 +0100 <DigitalKiwi> readlink -f "$(command -v "${1}")"
2022-11-30 11:35:29 +0100 <DigitalKiwi> }
2022-11-30 11:35:41 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-11-30 11:35:55 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 265 seconds)
2022-11-30 11:37:10 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 11:37:25 +0100 <mauke> maerwald[m]: realpath(3) is :-)
2022-11-30 11:40:16 +0100 <Dominik[m]1> https://unix.stackexchange.com/questions/136494/whats-the-difference-between-realpath-and-readlink-f
2022-11-30 11:40:17 +0100 <Dominik[m]1> wtf
2022-11-30 11:40:38 +0100 <Dominik[m]1> like 10 different realpaths
2022-11-30 11:40:43 +0100 <dminuoso> Welcome to Linux.
2022-11-30 11:42:28 +0100 <Dominik[m]1> the question is now, should we use readlink or realpath
2022-11-30 11:42:34 +0100 <int-e> reminds me of `rename`
2022-11-30 11:42:37 +0100 <mauke> s/Linux/Unix/
2022-11-30 11:42:38 +0100 <Dominik[m]1> the manual page of readlink says, use realpath
2022-11-30 11:42:57 +0100 <Dominik[m]1> "Note realpath(1) is the preferred command to use for canonicalization functionality."
2022-11-30 11:43:35 +0100 <dminuoso> mauke: No, I really meant Linux. In the unix family, POSIX was a result to deal with the fragmentation of interfaces.
2022-11-30 11:43:46 +0100 <dminuoso> But most linux distributions dont adhere much to POSIX anymore.
2022-11-30 11:43:53 +0100 <dminuoso> And they certainly care even less about standardization.
2022-11-30 11:43:58 +0100 <dminuoso> (beyond POSIX that is)
2022-11-30 11:44:28 +0100 <dminuoso> And for unixes you have the SUS that you can adhere to
2022-11-30 11:44:39 +0100CiaoSen(~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-11-30 11:44:40 +0100 <dminuoso> Linux is pretty much the wild west for hobbyist groups.
2022-11-30 11:45:07 +0100 <mauke> what are the BSDs?
2022-11-30 11:45:30 +0100Pangz[m](~pangzpayn@2001:470:69fc:105::2:cdc7) ()
2022-11-30 11:45:48 +0100 <geekosaur> tbh I don't really believe in POSIX any more. it's a marketing standard, not a technical one
2022-11-30 11:45:59 +0100 <int-e> (SUS predates Among Us by 25-ish years)
2022-11-30 11:46:24 +0100 <geekosaur> see for example ripping out all the ksh-derived stuff when they realized it could be done using Bourne shell interfaces
2022-11-30 11:47:04 +0100 <mauke> inb4 scientific name for pig
2022-11-30 11:47:47 +0100 <int-e> geekosaur: could be done? couldn't be done?
2022-11-30 11:47:48 +0100 <geekosaur> and in any case POSIX certification costs a fair bit of money so only Red Hat ever got certified and even they stopped bothering a couple decades back
2022-11-30 11:48:12 +0100 <geekosaur> could be done. [[ ]] wasn't actually necessaru, just a convenience
2022-11-30 11:48:30 +0100 <dminuoso> geekosaur: You aim (and claim) to be POSIX compliant, though.
2022-11-30 11:48:58 +0100 <dminuoso> macOS is properly POSIX certified
2022-11-30 11:49:08 +0100 <dminuoso> (Not sure to which POSIX standard, though)
2022-11-30 11:49:20 +0100xff0x(~xff0x@2405:6580:b080:900:275b:7fdb:aec8:b0f1)
2022-11-30 11:49:34 +0100 <int-e> "certified" does reek of marketing all right
2022-11-30 11:50:04 +0100 <dminuoso> In principle "certification" is better than just a wild claim "yes Im posix compliant"
2022-11-30 11:50:21 +0100 <geekosaur> which meant anyone wanting to be certified to a later POSIX standard had to rewrite their scripts to not use [[ ]] any more
2022-11-30 11:50:27 +0100 <dminuoso> But because it does reek of marketing, it quickly turns into a cash cow.
2022-11-30 11:50:58 +0100 <dminuoso> geekosaur: In any case, POSIX is better than nothing.
2022-11-30 11:51:12 +0100CiaoSen(~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2022-11-30 11:51:30 +0100 <geekosaur> but the alternative isn't nothing. SUS and X-Open existed
2022-11-30 11:51:43 +0100 <dminuoso> I mean yes, linux is largely posix compliant - but if you introduce non-posix libraries left and right, it very rapidly becomes difficult to build posix-compliant software with it.
2022-11-30 11:52:11 +0100 <dminuoso> fair,.
2022-11-30 11:52:13 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-11-30 11:52:19 +0100 <geekosaur> POSIX was a checkbox for US government purchase orders
2022-11-30 11:53:56 +0100 <DigitalKiwi> https://twitter.com/grhmc/status/1582463721699303425
2022-11-30 11:54:00 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 11:54:17 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-11-30 11:56:39 +0100 <int-e> DigitalKiwi: POSIX and thread safety... that reminds me of https://tomsmeding.com/blog/bugs/efault (which I spent some time tracing down)
2022-11-30 11:56:47 +0100 <int-e> tracking down even
2022-11-30 11:57:41 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
2022-11-30 11:58:20 +0100 <geekosaur> (the whole sordid story on the [[ ]] thing: it was incorrectly believed that test aka [ ] incorrectly handled strings that started with hyphens. this is only true if you use the shortcut [ "str" ], though; if you write it out ([ -z "str" ] or [ "str" != "" ]) it's fine)
2022-11-30 11:58:55 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 11:59:04 +0100 <geekosaur> [[ ]] always handled it because it removed the dash-operators (< instead of -lt, etc.)
2022-11-30 11:59:43 +0100 <geekosaur> sorry, -s not -z, -a does the opposite 🙂
2022-11-30 11:59:51 +0100 <geekosaur> *-z does
2022-11-30 12:00:34 +0100ubert(~Thunderbi@2a02:8109:abc0:6434:c4f7:41e7:304c:6584) (Quit: ubert)
2022-11-30 12:00:36 +0100 <geekosaur> unix/posix is poorly suited to threads, too many things are defined at process instead of thread level
2022-11-30 12:00:47 +0100ubert(~Thunderbi@2a02:8109:abc0:6434:93d7:8f5e:1428:3062)
2022-11-30 12:00:50 +0100 <tomsmeding> DigitalKiwi: unexpected dutch?
2022-11-30 12:01:03 +0100 <dminuoso> tomsmeding: Will you be extending that blog entry?
2022-11-30 12:01:05 +0100 <DigitalKiwi> evils gave me that alias
2022-11-30 12:01:32 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-11-30 12:02:32 +0100 <geekosaur> linux clone() is actually significantly better designed, but then you lose pthread compatibility
2022-11-30 12:02:44 +0100 <tomsmeding> dminuoso: I think I put a resolution at the bottom of the thing
2022-11-30 12:03:12 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81)
2022-11-30 12:03:16 +0100 <tomsmeding> see also the "EDIT 2"
2022-11-30 12:03:23 +0100 <int-e> "All possible solutions to this problem are hacks."
2022-11-30 12:03:36 +0100 <dminuoso> tomsmeding: Sure, but the parts before it read like a nice story while going into details.
2022-11-30 12:03:46 +0100 <dminuoso> The end is quite unsatisfying to read. :S
2022-11-30 12:03:50 +0100 <tomsmeding> lol
2022-11-30 12:03:51 +0100dminuosowants his money back
2022-11-30 12:03:55 +0100 <tomsmeding> but the end _is_ unsatisfying
2022-11-30 12:04:11 +0100 <dminuoso> tomsmeding: You could outline why this causes the EFAULT.
2022-11-30 12:04:32 +0100 <tomsmeding> true, I could explain a bit more :)
2022-11-30 12:04:42 +0100 <dminuoso> And perhaps go into potential solutions.
2022-11-30 12:05:35 +0100__monty__(~toonn@user/toonn)
2022-11-30 12:05:45 +0100 <tomsmeding> I still don't know why the described seemingly-nondeterministic crap happens though
2022-11-30 12:05:56 +0100 <tomsmeding> and honestly I don't feel like debugging that :p
2022-11-30 12:05:57 +0100 <dminuoso> I see, so the tale is still untold!
2022-11-30 12:06:06 +0100 <dminuoso> Dont you want to entertain me?
2022-11-30 12:06:09 +0100 <tomsmeding> heh
2022-11-30 12:06:16 +0100 <DigitalKiwi> hahaha holy shit it's true
2022-11-30 12:06:21 +0100 <int-e> dminuoso: The old environment gets moved around by `setenv`; pointers become invalid. I don't know, quite possibly the list of pointers isn't 0-terminated in some intermediate state too? You probably need global locking to solve this properly.
2022-11-30 12:06:23 +0100 <tomsmeding> my most reasonable hypothesis is that this is just obscure timing issues
2022-11-30 12:06:37 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.7.1)
2022-11-30 12:07:04 +0100 <geekosaur> because setenv() reallocates and copies the environment if the change won't fit, and if execve() looks at environ in the middle of this it's either not null terminated or contains garbage at the end
2022-11-30 12:07:19 +0100 <tomsmeding> as in, what int-e says, and then the question is whether execve(2) runs in precisely the right time window or not
2022-11-30 12:07:24 +0100 <geekosaur> or the specified environment
2022-11-30 12:07:44 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81) (Ping timeout: 255 seconds)
2022-11-30 12:07:49 +0100 <dminuoso> Why does snap setenv on every request anyway?
2022-11-30 12:08:02 +0100 <tomsmeding> dminuoso: it runs setenv on server startup
2022-11-30 12:08:13 +0100 <geekosaur> locale is my guess
2022-11-30 12:08:18 +0100 <tomsmeding> yes
2022-11-30 12:08:22 +0100 <tomsmeding> see link https://github.com/snapframework/snap-server/blob/8d89c10014d8d295bfbf5419bbb8551de32d7f85/src/Sna…
2022-11-30 12:08:24 +0100 <int-e> The amazing thing was that it was actually the clone system call that failed, because at that point the environment pointer was invalid.
2022-11-30 12:08:55 +0100 <dminuoso> tomsmeding: Maybe I dont understand why this is a problem. Does your program simultaneously start the server *and* spawn these shell scripts?
2022-11-30 12:08:58 +0100 <int-e> (Or some pointer inside of that.)
2022-11-30 12:09:06 +0100 <tomsmeding> and it failed with an error that was not in the manpage for any of this!!!
2022-11-30 12:09:14 +0100 <tomsmeding> dminuoso: yes
2022-11-30 12:09:33 +0100 <geekosaur> EFAULT is implicitly present any time a syscall has a pointer parameter
2022-11-30 12:09:34 +0100 <dminuoso> You should mention this.
2022-11-30 12:09:35 +0100 <DigitalKiwi> https://www.dropbox.com/s/g4r6muempkvrhgv/2022-11-30%2005.08.06.jpg?dl=0
2022-11-30 12:09:42 +0100 <tomsmeding> it starts a bunch of worker processes and also starts an http server, and I saw no reason why that couldn't be done concurrently
2022-11-30 12:09:50 +0100 <geekosaur> I think only intro(2) mentions this though
2022-11-30 12:09:58 +0100 <DigitalKiwi> i saw on twitter a few days ago you can run graphical apps in wsl 2 now
2022-11-30 12:10:05 +0100 <tomsmeding> 'FAULT' not found in intro(2)
2022-11-30 12:10:16 +0100 <geekosaur> yes, that;s been true for several months now
2022-11-30 12:10:21 +0100 <geekosaur> sad
2022-11-30 12:10:22 +0100opticblast(~Thunderbi@secure-165.caltech.edu) (Ping timeout: 252 seconds)
2022-11-30 12:10:48 +0100 <dminuoso> tomsmeding: No with that many mistakes I really do want my money back. Who do I contact?
2022-11-30 12:10:59 +0100 <geekosaur> v7 mentioned it, any pointer is potentially going to cause EFAULT on copyin()/copyout()
2022-11-30 12:11:17 +0100 <geekosaur> maybe someone removed that because linux doesn't have those as such
2022-11-30 12:11:26 +0100 <tomsmeding> dminuoso: mistakes in the blog post, snap-server, linux manpages, or something else?
2022-11-30 12:12:54 +0100 <dminuoso> tomsmeding: You should mention that the server is started simultaneously along side the workers. Without it, the final cause mentioned makes no sense.
2022-11-30 12:13:00 +0100Xeroine(~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2022-11-30 12:13:27 +0100 <dminuoso> Ontop, I think this is also a snap bug in that it should mention it does non-thread safe things.
2022-11-30 12:13:28 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-11-30 12:13:29 +0100Xeroine(~Xeroine@user/xeroine)
2022-11-30 12:14:07 +0100son0p(~ff@2604:3d08:5b7f:5540::fc20)
2022-11-30 12:14:08 +0100 <tomsmeding> dminuoso: I'll make a note for next weekend that I should write a little more here :p
2022-11-30 12:14:14 +0100 <dminuoso> Does snap offer a kind of beforeMainLoop hook?
2022-11-30 12:14:20 +0100 <tomsmeding> no
2022-11-30 12:14:23 +0100 <tomsmeding> I looked for that
2022-11-30 12:14:54 +0100 <dminuoso> Then that should be added. That + a note about thread safety seems the clean and proper solution.
2022-11-30 12:18:00 +0100andreas303(andreas303@ip227.orange.bnc4free.com)
2022-11-30 12:18:21 +0100xacktm(~xacktm@user/xacktm)
2022-11-30 12:18:24 +0100`2jt(~jtomas@255.red-193-153-6.dynamicip.rima-tde.net)
2022-11-30 12:19:20 +0100freeside(~mengwong@103.252.202.193)
2022-11-30 12:20:59 +0100chele(~chele@user/chele)
2022-11-30 12:21:02 +0100kadobanana(~mud@user/kadoban)
2022-11-30 12:21:15 +0100 <freeside> so, i'm trying to move one of my projects from LTS 19.33 to LTS 20.2, but I'm running into errors like In the dependencies for network-3.1.2.7: directory needed, but this GHC boot package has been pruned (issue #4510); you need to add the package explicitly to extra-deps
2022-11-30 12:21:37 +0100 <int-e> dminuoso: right... but it's pervasive... there should be a warning about this in `base`, in `process` and who knows where else
2022-11-30 12:21:48 +0100mud(~mud@user/kadoban) (Ping timeout: 256 seconds)
2022-11-30 12:21:59 +0100 <geekosaur> freeside, that looks pretty self-explanatory
2022-11-30 12:22:27 +0100 <Unhammer> Is there some difference in making hsc Storable's on ARM? https://github.com/unhammer/fastText-haskell/issues/1 – the first Prediction should say "__label__no" but says "\210\NUL\NUL\NUL\NUL\NUL\NUL\NUL_no"
2022-11-30 12:22:29 +0100 <freeside> but is that something that needs to be done inside MissingH's stack.yaml or inside my own stack.yaml?
2022-11-30 12:22:32 +0100 <geekosaur> directory used to come with ghc and stack knows it. but as of ghc 9.2 which LTS 20 uses, it doesn't any more so you need to add it as an extra0dep
2022-11-30 12:22:47 +0100 <Unhammer> (the Storable https://github.com/unhammer/fastText-haskell/blob/main/Data/FastText/Internal.hsc#L27-L43 )
2022-11-30 12:22:55 +0100 <dminuoso> int-e: Right, I guess we lack thread-safety notes on *anything* that invokes system calls - and this needs to be done transitively.
2022-11-30 12:23:09 +0100 <dminuoso> Perhaps to the point, that this is something that be attached and be generated in haddock automatically.
2022-11-30 12:23:30 +0100 <freeside> I have a screenful of those kinds of errors "in the dependencies for MissingH ... lsp ... haskeline ... graphviz ... sbv ... etc"
2022-11-30 12:23:30 +0100 <int-e> (Hmm, can you crash a program by using setEnv from several threads? Probably!)
2022-11-30 12:23:51 +0100opticblast(~Thunderbi@secure-165.caltech.edu)
2022-11-30 12:24:18 +0100 <geekosaur> I think when it comes to system and libc calls, this might need to be pushed upstream. in particular, you have issues where some systems define something as a syscall which can be reasonably atomic, but others define it as a library call which can't
2022-11-30 12:24:46 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-11-30 12:25:41 +0100 <dminuoso> But ultimately, I think its incredibly frustrating that you get that many thread unsafe APIs anyway.
2022-11-30 12:25:55 +0100 <geekosaur> freeside, you will probably need to do this for most of those, yes. I think in cabal it's easier as you could do it with one entry in cabal.project (`package * { build-dependency = directory }` iirc)
2022-11-30 12:26:17 +0100 <geekosaur> dminuoso, see my earlier comment about POSIX and thread safety
2022-11-30 12:26:27 +0100 <geekosaur> it's part of the package, sadly
2022-11-30 12:27:17 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 12:27:34 +0100 <freeside> ok. i think it's because some of the packages i'm importing are stuck to old versions of packages like compact and so aren't LTS20-ready yet. I'll go send some pull requests for those packages.
2022-11-30 12:27:41 +0100 <geekosaur> yeh
2022-11-30 12:28:13 +0100 <mauke> Unhammer: peek label_size = len; poke label_size = str??
2022-11-30 12:28:16 +0100 <geekosaur> not sure MissingH is even maintained, although on the other hand I would expect your installed haskeline (it comes with ghc) should already be updated
2022-11-30 12:28:30 +0100 <geekosaur> so maybe you need to check your version
2022-11-30 12:29:09 +0100 <freeside> thanks. I think it's the fault of one or two packages in particular that are on old LTS versions.
2022-11-30 12:30:21 +0100jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2022-11-30 12:31:29 +0100 <Unhammer> mauke: haha good catch, thanks, though i only read so i dont think that can be the reason
2022-11-30 12:34:05 +0100 <mauke> Unhammer: label_size has type size_t, but you're reading it at type Int, and who knows what that is in C
2022-11-30 12:34:17 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 255 seconds)
2022-11-30 12:37:05 +0100 <mauke> Unhammer: poke is completely broken; use-after-free
2022-11-30 12:37:14 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-30 12:42:44 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-11-30 12:47:48 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 255 seconds)
2022-11-30 12:49:27 +0100sammelweis(~quassel@c-68-48-18-140.hsd1.mi.comcast.net)
2022-11-30 12:49:58 +0100causal(~user@50.35.83.177) (Quit: WeeChat 3.7.1)
2022-11-30 12:50:54 +0100jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 260 seconds)
2022-11-30 12:52:44 +0100Xeroine(~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2022-11-30 12:53:08 +0100oldsk00l(~znc@ec2-3-75-221-101.eu-central-1.compute.amazonaws.com)
2022-11-30 12:54:38 +0100Xeroine(~Xeroine@user/xeroine)
2022-11-30 12:57:01 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 13:00:53 +0100Guest60(~Guest60@101.98.118.246) (Quit: Client closed)
2022-11-30 13:00:58 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
2022-11-30 13:01:57 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds)
2022-11-30 13:03:03 +0100 <Unhammer> Int is because I'm using packCStringLen :: (CString, Int) -> ByteString; should I e.g. use ::Int32 in hs and cast string.size() to int32_t in C?
2022-11-30 13:07:48 +0100yuribarros(~yuribarro@2804:14c:65e4:865c::1000)
2022-11-30 13:09:08 +0100cfricke(~cfricke@user/cfricke)
2022-11-30 13:09:41 +0100 <Unhammer> (I find it so strange that it reads the second string in that vector just fine, and even the length of the first label is the same, it's just filled with Ò and NUL's for the first bytes)
2022-11-30 13:11:59 +0100mc47(~mc47@xmonad/TheMC47)
2022-11-30 13:12:06 +0100earthy(~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net)
2022-11-30 13:13:51 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-11-30 13:18:20 +0100fockerize(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-11-30 13:20:13 +0100shriekingnoise(~shrieking@186.137.167.202)
2022-11-30 13:20:36 +0100 <freeside> i need to check my assumptions. I have package B using package A. Package B's stack.yaml configures package B explicitly in extra-deps. Is it necessary for both package A and B to use the same LTS version in their respective stack.yamls?
2022-11-30 13:20:53 +0100 <freeside> I am wondering if it is possible for package B to have LTS 18 while package A uses LTS 20.
2022-11-30 13:21:08 +0100 <freeside> er, package B's stack.yaml configures package A explicitly in extra-deps.
2022-11-30 13:21:39 +0100 <freeside> or vice versa; package B would use LTS 20 while package A uses LTS 18.
2022-11-30 13:21:45 +0100 <geekosaur> sounds like a diamond dependency looking for a chance to happen
2022-11-30 13:24:51 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-11-30 13:35:22 +0100acidjnk(~acidjnk@p200300d6e7137a95e97f13ccb1fca6e5.dip0.t-ipconnect.de) (Remote host closed the connection)
2022-11-30 13:36:06 +0100acidjnk(~acidjnk@p200300d6e7137a95b0d18cc63c896dfc.dip0.t-ipconnect.de)
2022-11-30 13:36:37 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-30 13:38:52 +0100 <maralorn> freeside: Not possible. All Haskell build tools enforce so called "local coherence" which means during a build of one package all occurrences of a certain dependency anywhere in the dependency tree must be of the same version. In theory ghc would try to build the package anyway, but the a build fail would be likely and the error very confusing.
2022-11-30 13:40:30 +0100 <maralorn> freeside: In your case your best hope is that package A also builds with LTS 18 otherwise you need to port package B to LTS 20.
2022-11-30 13:44:16 +0100CiaoSen(~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-11-30 13:47:07 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 13:50:28 +0100 <freeside> I see. Thank you. I have traversed the dependencies to https://github.com/ezyang/compact/blob/master/compact.cabal which looks generally unmaintained except that somebody else has already gotten to the same point, and has made some minor change to advise the various build tools that ghc 9.2 is safe to build with
2022-11-30 13:50:33 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-11-30 13:50:55 +0100 <freeside> however, i wonder why they didn't update the `tested-with` in compact.cabal
2022-11-30 13:51:44 +0100 <sm> well.. if other package bounds allow it you can choose to use the older version of B. (It makes sense to speak of combining package versions, not combining stackage snapshots)
2022-11-30 13:52:23 +0100 <sm> like maralorn said
2022-11-30 13:52:28 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds)
2022-11-30 13:53:32 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-11-30 13:53:41 +0100 <freeside> so how do mature packages deal with the need to be consumed by multiple projects possibly running different resolvers? I see the STACK_YAML env mechanism, but I don't see how that would work in practice if one project uses an old LTS and another project uses a recent LTS.
2022-11-30 13:54:33 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-30 13:55:23 +0100acidjnk(~acidjnk@p200300d6e7137a95b0d18cc63c896dfc.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2022-11-30 13:57:09 +0100 <dminuoso> freeside: Not thinking about TLS, for starters.
2022-11-30 13:57:27 +0100 <maralorn> Honestly in my opinion libraries shouldn't be build with stack. They should provide a cabal file specifying correct bounds for their dependencies.
2022-11-30 13:57:33 +0100 <dminuoso> Generate the foo.cabal as you should, and maintain open and wide boundaries.
2022-11-30 13:57:52 +0100 <dminuoso> That by the way will enable non-cabal users to use it too.
2022-11-30 13:57:54 +0100 <dminuoso> *non-stack
2022-11-30 14:02:14 +0100 <freeside> ok. so the ezyang/compact on github has its version boundaries bumped to allow base < 4.17, but when i look at https://hackage.haskell.org/package/compact-0.2.0.0 on hackage, i still see dependencies base < 4.16.
2022-11-30 14:02:35 +0100 <freeside> so, how should i proceed? allow-newer: true? or something else?
2022-11-30 14:04:11 +0100 <freeside> i will point extra-deps at github's latest commit
2022-11-30 14:04:52 +0100 <dminuoso> freeside: fork it, bump base bound, test it.
2022-11-30 14:04:56 +0100 <dminuoso> if it works, make a pull request.
2022-11-30 14:05:09 +0100 <dminuoso> allow-newer is a hammer you probably dont want
2022-11-30 14:05:29 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
2022-11-30 14:05:31 +0100 <freeside> the pull request is approved, it's that ezyang hasn't pushed the latest build to hackage.
2022-11-30 14:05:42 +0100 <freeside> https://github.com/ezyang/compact/commit/1e80459d16ca4d914c9bf9e0538493f7cf2fd610
2022-11-30 14:06:03 +0100 <dminuoso> contact a hackage trustee then
2022-11-30 14:06:07 +0100 <maralorn> dminuoso: They write that upstream has already bumped the bound. So I would say allow newer is fine.
2022-11-30 14:06:17 +0100 <dminuoso> maralorn: you cant tie that to a single package, though.
2022-11-30 14:06:37 +0100 <dminuoso> which makes it an incredibly blunt hammer that can cause breakage and subtle bugs down the line.
2022-11-30 14:06:45 +0100lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-11-30 14:06:57 +0100 <maralorn> You can't? I was pretty sure you could...
2022-11-30 14:07:01 +0100 <freeside> i mean, i know ezyang is busy, what with his youtube videos and all :)
2022-11-30 14:07:31 +0100 <dminuoso> maralorn: you're probably confusing it with nix doJailbreak
2022-11-30 14:08:05 +0100 <dminuoso> freeside: yeah no worry, either raise an additional issue asking for a release, contact him via mail, or just ask a hackage trustee.
2022-11-30 14:08:14 +0100 <maralorn> dminuoso: As a frequent user of doJailbreak allow-newer feels like a very fine tool.
2022-11-30 14:08:38 +0100 <dminuoso> maralorn: You should feel ashamed and stay in the corner for the rest of the day.
2022-11-30 14:08:55 +0100 <dminuoso> And maybe Ill make you write "You shall not jailbreak haskell packages" a hundred times on this black board.
2022-11-30 14:10:06 +0100 <dminuoso> maralorn: uh but no, actually no - they are actually the same.
2022-11-30 14:10:14 +0100 <dminuoso> you cant just untie a singular dependency with it.
2022-11-30 14:10:36 +0100 <dminuoso> freeside: as a temporary step, you can also just vendor the code that includes the change.
2022-11-30 14:10:47 +0100 <dminuoso> until the maintainer or a trustee bumps the bound
2022-11-30 14:11:26 +0100 <freeside> mmph. I am now confused because the version on hackage appears to be https://github.com/ezyang/compact/blob/0.2.0.0/compact.cabal but the version that had the bump is in master branch with "version: 0.1.0.1"
2022-11-30 14:11:29 +0100 <maralorn> dminuoso: Have a look here: https://github.com/haskell/haskell-language-server/blob/aeb57a8eb56964c8666d7cd05b6ba46d531de7c7/c…
2022-11-30 14:11:43 +0100 <dminuoso> freeside: seems bgamari[m] has uploaded the last version, you can ask him as well.
2022-11-30 14:12:04 +0100 <dminuoso> maralorn: yes, cabal can do it.
2022-11-30 14:12:07 +0100 <dminuoso> they use stack.
2022-11-30 14:12:21 +0100 <dminuoso> and stack's allow-newer just accepts true or false as far as I know
2022-11-30 14:12:29 +0100accord(uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-11-30 14:12:39 +0100 <maralorn> Oooh, well then I was confusing something but not the thing you said.^^
2022-11-30 14:13:26 +0100thyriaen(~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
2022-11-30 14:13:28 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-30 14:13:37 +0100 <maralorn> Still, the cabal allow-newer feels like a very targeted and fine tool compared to … well, everything else discussed.^^
2022-11-30 14:14:17 +0100 <dminuoso> Will allow-newer ignore local constraints?
2022-11-30 14:14:43 +0100 <dminuoso> Or is there a way to introduce arbitrary constraints in a .cabal?
2022-11-30 14:14:56 +0100 <dminuoso> I guess you can specify `constraints: ...`
2022-11-30 14:15:27 +0100elevenkb(~elevenkb@105.184.125.168)
2022-11-30 14:16:04 +0100fockerize(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
2022-11-30 14:16:05 +0100 <dminuoso> But its redundant since you can `specify allow-newer: foo-1.1:bar`
2022-11-30 14:17:09 +0100 <maralorn> I am a bit torn here: Telling people "do the proper thing and wait an unknown amount of time before they can proceed to build and continue developing" sounds like a way to really entrench in them the feeling that the Haskell ecosystem is clunky. I suggest enabling allow-newer, so you have a chance to fix the real thing before clocking off, but remember you did so and open an issue upstream at the same time.
2022-11-30 14:17:34 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-11-30 14:18:05 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-30 14:18:35 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 14:18:45 +0100Guest75(~Guest75@178.141.153.191) (Quit: Client closed)
2022-11-30 14:19:56 +0100 <freeside> now, if the only change i made to `compact` is to bump the version bounds for dependencies in the compact.cabal file, is it appropriate to bump the actual version of compact in compact.cabal, or leave it as it was?
2022-11-30 14:20:57 +0100 <freeside> i'm looking at https://github.com/mengwong/compact/commit/7c047f4455af8b6c49cbeac908bd0c35ae1cc258 for clues
2022-11-30 14:21:48 +0100 <maralorn> That's the difference between a release and a revision and I think both are fine, but peoples opinions differ.
2022-11-30 14:22:20 +0100 <maralorn> If you bump the version then only the forth digit.
2022-11-30 14:22:46 +0100 <freeside> i'm thinking there are probably consequences for snapshot computation when stackage looks at cabal's versioning
2022-11-30 14:23:02 +0100 <dminuoso> Revisions occur especially when hackage trustees do this.
2022-11-30 14:23:13 +0100 <dminuoso> Because they cant arbitrary upload packages
2022-11-30 14:23:26 +0100 <dminuoso> (And revisions cant alter the version, so...)
2022-11-30 14:27:47 +0100cafkafk(~cafkafk@fsf/member/cafkafk) (Ping timeout: 255 seconds)
2022-11-30 14:29:12 +0100 <freeside> cool. thanks for the hints, i really appreciate it. Now all I have left to figure out is "Cabal dependency cyle detected"
2022-11-30 14:29:35 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2022-11-30 14:29:35 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds)
2022-11-30 14:29:35 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
2022-11-30 14:30:02 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
2022-11-30 14:30:02 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
2022-11-30 14:30:56 +0100`2jt(~jtomas@255.red-193-153-6.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
2022-11-30 14:31:48 +0100 <dminuoso> The main annoyance with revisions, is that there's no standardized approach of keeping your .cabal file in git aligned with whats on hackage.
2022-11-30 14:31:54 +0100ec(~ec@gateway/tor-sasl/ec)
2022-11-30 14:31:55 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-11-30 14:32:15 +0100 <dminuoso> And there's no actual cabal field denoting the revision, which makes it even harder to see in git which hackage revision a given commit reflects
2022-11-30 14:32:44 +0100 <freeside> the nice thing about versioning systems is there are so many to choose from.
2022-11-30 14:32:58 +0100 <dminuoso> People tend to work around that by using the fact that `x-...` named fields can be artbirarily specified (and they dont affect usual build processes.
2022-11-30 14:33:10 +0100 <dminuoso> So sometimes you see people specifying `x-revision: 1` in their cabal file to reflect that
2022-11-30 14:33:38 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-11-30 14:34:19 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Client Quit)
2022-11-30 14:34:21 +0100elevenkb25(~elevenkb@105.184.125.168)
2022-11-30 14:34:26 +0100elevenkb25(~elevenkb@105.184.125.168) (Write error: Broken pipe)
2022-11-30 14:35:04 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-11-30 14:35:50 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-11-30 14:36:01 +0100cafkafk(~cafkafk@fsf/member/cafkafk)
2022-11-30 14:39:47 +0100acidjnk(~acidjnk@p200300d6e7137a61b0d18cc63c896dfc.dip0.t-ipconnect.de)
2022-11-30 14:41:39 +0100 <freeside> okay. I'm getting such a weird error: In the dependencies for Cabal-syntax-3.6.0.0: Cabal dependency cycle detected: Cabal, Cabal-syntax, Cabal, baby-l4, needed due to baby-l4-nnnn -> Cabal-syntax-3.6.0.0
2022-11-30 14:42:37 +0100 <freeside> nowhere in my project baby-l4 do I attempt to use Cabal-syntax. I only use Cabal, in package.yaml and explicitly versioned to 3.8.1.0 in extra-deps.
2022-11-30 14:43:03 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-11-30 14:43:15 +0100 <freeside> do i need to nuke ./stack-work and ~/.stack ?
2022-11-30 14:43:16 +0100elevenkb(~elevenkb@105.184.125.168) (Quit: Client closed)
2022-11-30 14:43:34 +0100 <freeside> maybe there is something lying around in a DB somewhere? when I run stack -v build I see a lot of SQL going on, so maybe something is cached?
2022-11-30 14:52:23 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
2022-11-30 14:54:25 +0100teo(~teo@user/teo)
2022-11-30 14:57:00 +0100elevenkb(~elevenkb@105.184.125.168)
2022-11-30 14:58:26 +0100 <elevenkb> Are there any popular programing environments/text editors written in Haskell other than Leksah and Yi from a while back?
2022-11-30 14:59:25 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-11-30 14:59:59 +0100ec(~ec@gateway/tor-sasl/ec)
2022-11-30 15:02:01 +0100Kaipei(~Kaiepi@108.175.84.104)
2022-11-30 15:04:30 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 15:04:46 +0100coot(~coot@213.134.171.3)
2022-11-30 15:04:51 +0100 <elevenkb> I know of `rasa`... and that only by accident.
2022-11-30 15:05:25 +0100zmt01(~zmt00@user/zmt00)
2022-11-30 15:05:35 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 264 seconds)
2022-11-30 15:06:46 +0100nschoe(~q@141.101.51.197)
2022-11-30 15:08:48 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 260 seconds)
2022-11-30 15:09:32 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds)
2022-11-30 15:09:40 +0100mmhat(~mmh@p200300f1c725456bee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-11-30 15:09:45 +0100xff0x(~xff0x@2405:6580:b080:900:275b:7fdb:aec8:b0f1) (Quit: xff0x)
2022-11-30 15:15:50 +0100opticblast(~Thunderbi@secure-165.caltech.edu) (Ping timeout: 265 seconds)
2022-11-30 15:17:58 +0100xff0x(~xff0x@2405:6580:b080:900:71e1:3426:76c:30b0)
2022-11-30 15:18:29 +0100nate4(~nate@98.45.169.16)
2022-11-30 15:19:24 +0100 <xilo> if converting a file to data structure is callled parsing, how do you call process of converting parse tree to a file? also parsing?
2022-11-30 15:20:22 +0100 <lortabac> xilo: what do you mean by "converting to a file"?
2022-11-30 15:21:11 +0100 <mauke> formatting, serialization, marshaling
2022-11-30 15:21:49 +0100 <lortabac> pretty-printing?
2022-11-30 15:23:44 +0100nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-11-30 15:23:59 +0100elevenkb(~elevenkb@105.184.125.168) (Quit: Client closed)
2022-11-30 15:25:23 +0100elevenkb(~elevenkb@105.184.125.168)
2022-11-30 15:26:27 +0100Guest94(~Guest94@172.58.110.175)
2022-11-30 15:27:13 +0100Guest94(~Guest94@172.58.110.175) (Client Quit)
2022-11-30 15:27:31 +0100coot(~coot@213.134.171.3) (Quit: coot)
2022-11-30 15:28:30 +0100 <freeside> compiling & transpiling, too
2022-11-30 15:28:53 +0100opticblast(~Thunderbi@secure-165.caltech.edu)
2022-11-30 15:30:34 +0100 <DigitalKiwi> elevenkb: ghcid
2022-11-30 15:31:38 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-30 15:31:59 +0100 <maerwald> DigitalKiwi: hm?
2022-11-30 15:32:30 +0100 <DigitalKiwi> ?
2022-11-30 15:33:19 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-11-30 15:33:32 +0100 <maerwald> ghcid is a simple wrapper around ghci
2022-11-30 15:33:48 +0100 <DigitalKiwi> also haskell-language-server
2022-11-30 15:33:53 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-11-30 15:33:54 +0100 <maerwald> HLS uses 'ghc'
2022-11-30 15:33:57 +0100 <maerwald> the package
2022-11-30 15:35:14 +0100 <DigitalKiwi> hls and ghcid are the two programmming environments i use ;p
2022-11-30 15:35:40 +0100 <albet70> there is postChunkedDataFromFilePond :: (String -> ActionM ()) -> String -> ActionM (), what's the benifit to turn it to ContT () ActionM String?
2022-11-30 15:35:46 +0100 <mauke> I prefer linux
2022-11-30 15:38:36 +0100 <geekosaur> https://gitlab.haskell.org/ghc/ghc/-/commit/cc25d52e0f65d54c052908c7d91d5946342ab88a
2022-11-30 15:38:53 +0100 <geekosaur> js backend landed in time for 9.6
2022-11-30 15:40:31 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 15:42:46 +0100 <geekosaur> elevenkb, manatee was another. sadly they're all bitrotted
2022-11-30 15:43:02 +0100 <geekosaur> most people these days just use HLS with their favorite editor
2022-11-30 15:43:07 +0100 <elevenkb> thanks y'alls
2022-11-30 15:43:28 +0100 <geekosaur> (I alternate between vscode and emacs)
2022-11-30 15:44:46 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-30 15:46:00 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-11-30 15:55:21 +0100mmhat(~mmh@p200300f1c725456bee086bfffe095315.dip0.t-ipconnect.de)
2022-11-30 15:55:45 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-11-30 15:57:16 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-30 15:59:32 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 16:00:52 +0100Sgeo(~Sgeo@user/sgeo)
2022-11-30 16:08:15 +0100titibandit(~titibandi@xdsl-78-35-173-119.nc.de) (Remote host closed the connection)
2022-11-30 16:11:06 +0100 <albet70> I'm now confused, where runContT (x :: ContT () ActionM String) (y :: String -> ActionM ()) will get ActionM (), right? but where this (z :: String) come from?
2022-11-30 16:11:35 +0100Guest64(~Guest64@2401:4900:1c19:4827:acc1:1436:facf:9a1d)
2022-11-30 16:12:02 +0100 <Guest64> i want to contribute to Haskell Language, i am a beginner please guide me
2022-11-30 16:13:13 +0100Guest64(~Guest64@2401:4900:1c19:4827:acc1:1436:facf:9a1d) (Client Quit)
2022-11-30 16:13:50 +0100titibandit(~titibandi@xdsl-78-35-173-119.nc.de)
2022-11-30 16:17:20 +0100 <xilo> first step would be learning a language
2022-11-30 16:17:43 +0100 <geekosaur> they left
2022-11-30 16:18:01 +0100 <geekosaur> but the question is what they mean by "contribute to"; might be looking for HF
2022-11-30 16:21:13 +0100 <xilo> sadly, we will never know
2022-11-30 16:22:49 +0100Guest67(~Guest67@104.28.156.101)
2022-11-30 16:23:49 +0100Guest67(~Guest67@104.28.156.101) (Client Quit)
2022-11-30 16:24:18 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
2022-11-30 16:33:08 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
2022-11-30 16:34:00 +0100smruns emacs in vscode
2022-11-30 16:34:37 +0100mvk(~mvk@2607:fea8:5ce3:8500::efb)
2022-11-30 16:35:13 +0100mvk(~mvk@2607:fea8:5ce3:8500::efb) (Client Quit)
2022-11-30 16:35:30 +0100 <freeside> ok, i am making more progress toward figuring out what is going on with my dependency cycle error. So, with LTS 20.2, I try to stack build. I get a "Recommended action: try adding to your extra-deps: Cabal-3.8.1.0@sha256:155d64beeecbae2b19e5d67844532494af88bc8795d4db4146a0c29296f59967,12220"
2022-11-30 16:36:18 +0100 <freeside> So, I duly do that, and I notice that when I run stack -v build, the cryptic remark flashes past: [debug] Ignoring package Cabal due to wanting version 3.8.1.0 instead of 3.6.3.0
2022-11-30 16:37:39 +0100 <geekosaur> sounds like your stack is a bit old?
2022-11-30 16:38:01 +0100 <freeside> Where is it getting this notion of 3.6.3.0? Well, when I run ~/.stack/programs/aarch64-osx/ghc-9.2.5/bin/ghc-pkg-9.2.5 --global --no-user-package-db dump --expand-pkgroot | grep Cabal, I see id: Cabal-3.6.3.0.
2022-11-30 16:38:35 +0100Kaipei(~Kaiepi@108.175.84.104) (Ping timeout: 264 seconds)
2022-11-30 16:39:01 +0100 <freeside> so, let's try a stack update, with stack v2.9.1
2022-11-30 16:39:31 +0100 <geekosaur> actually I have 2.9.1 but it's not telling me which Cabal it's linked against with --version
2022-11-30 16:39:43 +0100 <geekosaur> (cabal tells you the linked Cabal version)
2022-11-30 16:40:37 +0100 <geekosaur> but yes, it's likely that ghc 9.2.5 ships with Cabal-3.6.3.0. this shouldn't matter unless you're using ghc-as-a-library though
2022-11-30 16:41:45 +0100 <freeside> my project's package.yaml does use "ghc" as a library ... I wonder how that factors in.
2022-11-30 16:42:07 +0100 <freeside> meanwhile, I went off and investigated ~/.stack/stack.sqlite3
2022-11-30 16:42:26 +0100 <geekosaur> ghc will pin Cabal, because it's how package dbs are accessed
2022-11-30 16:42:44 +0100 <geekosaur> (Cabal the library is distinct from cabal aka cabal-install the program)
2022-11-30 16:42:47 +0100 <freeside> if we .dump the entire database, we discover three lines in precompiled_cache, showing Cabal-syntax-3.6.0.0, just as you say.
2022-11-30 16:43:04 +0100 <freeside> for example: INSERT INTO precompiled_cache VALUES(4775,'aarch64-osx/','ghc-9.2.4','3.6.3.0','540758d21e908626932cb4a3f0fc4d7cd3e656720dd3708f7206e5cc0cd48529,156',X'5674a02f5b065a88ecb6bec80decdd433c9d0dbe459b6f83f2536c52a3d4fc5e',0,'snapshots/aarch64-osx/2b3a2e2a6f04a8613a9fe228d08f7147b0babbc228e75f5a49a07d4195a5c430/9.2.4/pkgdb/Cabal-syntax-3.6.0.0-6HeyoYPNDDbHyBhGydrkl8.conf');
2022-11-30 16:43:49 +0100accord(uid568320@id-568320.hampstead.irccloud.com)
2022-11-30 16:44:29 +0100 <freeside> now, if we look at that Cabal-syntax-...conf file, we see, indeed, "depends: Cabal-3.6.3.0"
2022-11-30 16:45:11 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 16:47:16 +0100 <sclv> i suggest you pin to a newer cabal-syntax or an older cabal
2022-11-30 16:48:09 +0100 <geekosaur> right, the question now is not why Cabal-3.6.3.0 but why stack originally recommended 3.8.1.0
2022-11-30 16:49:18 +0100 <freeside> well, if we read the "description" in the Cabal-syntax conf file, we see the text shown at https://hackage.haskell.org/package/Cabal-syntax-3.6.0.0
2022-11-30 16:49:30 +0100 <freeside> notably, Version 3.6 (unlike the following versions) is a dummy package that prevents module name clases between Cabal and Cabal-syntax if used together with a Cabal flag as described below.
2022-11-30 16:49:59 +0100 <geekosaur> yes, in 3.6 it's a dummy package because it was split from Cabal in 3.8 (forward compat)
2022-11-30 16:50:08 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-11-30 16:50:58 +0100 <freeside> but the real mystery behind my dependency cycle is this: why does Cabal depend on Cabal-syntax? It's the question that drives us, Neo. It's the question that brought you here. You know the question, just as I did.
2022-11-30 16:51:14 +0100fserucas(~fserucas@212.157.222.2) (Quit: Leaving)
2022-11-30 16:51:48 +0100 <geekosaur> again, because of forward compatibility. it's not strictly needed for 3.6 but is for 3.8 and the upcoming 3.10
2022-11-30 16:52:26 +0100 <freeside> wait, what? Cabal depends on Cabal-syntax? Then if Cabal-syntax depends on Cabal, we have a dependency cycle. Which stack rightly complains about.
2022-11-30 16:53:12 +0100 <geekosaur> I may have described that backwards
2022-11-30 16:53:35 +0100 <geekosaur> the real question is still not the one you are asking now, it is why [30 15:35:30] <freeside> ok, i am making more progress toward figuring out what is going on with my dependency cycle error. So, with LTS 20.2, I try to stack build. I get a "Recommended action: try adding to your extra-deps: Cabal-3.8.1.0@sha256:155d64beeecbae2b19e5d67844532494af88bc8795d4db4146a0c29296f59967,12220"
2022-11-30 16:53:49 +0100 <geekosaur> when you must use 3.6.3.0 with your ghc
2022-11-30 16:54:02 +0100 <freeside> let me try 3.6.3.0.
2022-11-30 16:55:44 +0100 <sclv> Cabal 3.8 depends on Cabal-syntax 3.8. Cabal 3.6 does not. Cabal-syntax 3.6 has a dependency on cabal less than 3.8.
2022-11-30 16:56:09 +0100 <sclv> but again this is orthogonal to the main issue, which is the one geekosaur is adroitly steering you to
2022-11-30 17:01:08 +0100 <freeside> ... about where that particular version 3.8 recommendation is coming from ...
2022-11-30 17:06:19 +0100mmhat(~mmh@p200300f1c725456bee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1)
2022-11-30 17:09:34 +0100 <freeside> ... that recommendation comes from the getExtras function in Stack/Types/Build.hs, https://github.com/commercialhaskell/stack/blob/e8dbd692a761d4245c1cf489bf8fe3b7ace1f780/src/Stack…
2022-11-30 17:10:35 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2022-11-30 17:11:34 +0100 <freeside> without tracing that logic too closely, we would expect the recommended version to be 3.6.3.0 simply because that's what's in the package set for LTS 20.2.
2022-11-30 17:11:48 +0100 <freeside> https://www.stackage.org/lts-20.2/package/Cabal-3.6.3.0
2022-11-30 17:12:07 +0100 <geekosaur> segfaultfizzbuzz, https://www.sciencedaily.com/releases/2022/11/221128140414.htm might be of interest to you
2022-11-30 17:12:12 +0100ulvarrefr(~user@188.124.56.153)
2022-11-30 17:16:56 +0100elevenkb(~elevenkb@105.184.125.168) (Quit: Client closed)
2022-11-30 17:19:30 +0100 <segfaultfizzbuzz> geekosaur: this stuff tends to be too superficial, i am interested in something more deep mathematically
2022-11-30 17:20:04 +0100 <segfaultfizzbuzz> but thanks for thinking of me
2022-11-30 17:27:58 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-11-30 17:30:30 +0100ec(~ec@gateway/tor-sasl/ec)
2022-11-30 17:34:40 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-11-30 17:34:40 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-11-30 17:35:12 +0100titibandit(~titibandi@xdsl-78-35-173-119.nc.de) (Quit: Leaving.)
2022-11-30 17:35:22 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-11-30 17:36:42 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-30 17:40:44 +0100cawfee(~root@2406:3003:2077:2758::babe) (Ping timeout: 255 seconds)
2022-11-30 17:40:50 +0100LemanR(~LemanR@vpn.drexelmed.edu)
2022-11-30 17:43:10 +0100cawfee(~root@2406:3003:2077:2758::babe)
2022-11-30 17:45:04 +0100opticblast(~Thunderbi@secure-165.caltech.edu) (Quit: opticblast)
2022-11-30 17:45:19 +0100opticblast(~Thunderbi@secure-165.caltech.edu)
2022-11-30 17:45:34 +0100opticblast(~Thunderbi@secure-165.caltech.edu) (Client Quit)
2022-11-30 17:45:51 +0100opticblast(~Thunderbi@secure-165.caltech.edu)
2022-11-30 17:45:51 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 17:46:25 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:97d5:4102:827f:e93) (Ping timeout: 252 seconds)
2022-11-30 17:47:19 +0100mbuf(~Shakthi@49.204.141.87) (Quit: Leaving)
2022-11-30 17:48:15 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81)
2022-11-30 17:50:07 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-11-30 17:50:28 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
2022-11-30 17:50:52 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-11-30 17:52:43 +0100MajorBiscuit(~MajorBisc@145.94.143.231) (Ping timeout: 260 seconds)
2022-11-30 17:54:40 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.7.1)
2022-11-30 17:56:05 +0100 <zzz> on a clean debian vm, having installed both ghc, cabal and hls by ghcup, i'm getting this error in nvim: https://paste.jrvieira.com/1669827214089
2022-11-30 17:56:06 +0100califax_(~califax@user/califx)
2022-11-30 17:56:08 +0100califax(~califax@user/califx) (Ping timeout: 255 seconds)
2022-11-30 17:56:24 +0100 <zzz> i have no idea what i need to do to get this working
2022-11-30 17:57:06 +0100 <zzz> "GHC ABIs don't match" apparently mean that "hls was compiled with another version of ghc" according to the folks at #haskell-language-server
2022-11-30 17:57:19 +0100califax_califax
2022-11-30 17:59:28 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-11-30 17:59:54 +0100califax(~califax@user/califx)
2022-11-30 18:01:37 +0100Xeroine(~Xeroine@user/xeroine) (Read error: Connection reset by peer)
2022-11-30 18:01:44 +0100titibandit(~titibandi@xdsl-78-35-173-119.nc.de)
2022-11-30 18:04:56 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:88b2:8e58:1784:1509)
2022-11-30 18:06:29 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2022-11-30 18:07:51 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81) (Remote host closed the connection)
2022-11-30 18:08:36 +0100Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Ping timeout: 256 seconds)
2022-11-30 18:08:45 +0100LemanR(~LemanR@vpn.drexelmed.edu) (Quit: Client closed)
2022-11-30 18:09:21 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-30 18:10:21 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2022-11-30 18:11:22 +0100thyriaen(~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection)
2022-11-30 18:11:45 +0100Kaipei(~Kaiepi@108.175.84.104)
2022-11-30 18:14:41 +0100 <turlando> Not sure if this is a philosophical or practical question: just for the sake of learning I'm writing a FLAC parser/decoder. So far I have some records that represent the information encoded in the binary representation. Some values are encoded as odd-sized non-aligned bit vectors (e.g. number of channels is 3 bits, sample depth is 5 bits spanning across byte boundaries). Should I make my data representation high level (e.g. encode everything as Int or
2022-11-30 18:14:41 +0100 <turlando> similar) or should I make it low level (e.g. trying to encode the exact data representation at the type level)? (I guess the answer is "it depends")
2022-11-30 18:15:45 +0100 <geekosaur> both? typically you'd have a Storable or Binary instance for the external format and a more Haskell-friendly internal format generated from it
2022-11-30 18:16:04 +0100 <geekosaur> sadly Haskell doesn't have Erlang's bitvectors
2022-11-30 18:16:53 +0100 <turlando> geekosaur I wish Haskell has Erlang bit manipulation facilities or Ada's bit-precise types as well
2022-11-30 18:17:16 +0100 <geekosaur> or even just C's bitfields
2022-11-30 18:18:02 +0100LemanR(~LemanR@vpn.drexelmed.edu)
2022-11-30 18:18:06 +0100 <turlando> I was thinking of having higher and lower level representations, but is it worth it? Shouldn't I just have one representation, possibly high level, and functions that are able to bring it back to the binary repr?
2022-11-30 18:19:07 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-11-30 18:21:05 +0100 <turlando> (Also was thinking of building some helpers to be able to automagically extract arbitrary bits, not yet sure how and not yet sure how to store them afterwards)
2022-11-30 18:22:22 +0100Guest75(~Guest75@178.141.153.191)
2022-11-30 18:23:08 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
2022-11-30 18:23:09 +0100Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
2022-11-30 18:23:35 +0100califax(~califax@user/califx) (Ping timeout: 255 seconds)
2022-11-30 18:23:35 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
2022-11-30 18:25:31 +0100 <geekosaur> the binary package has stuff to help with that
2022-11-30 18:25:41 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-11-30 18:25:45 +0100ec(~ec@gateway/tor-sasl/ec)
2022-11-30 18:26:10 +0100ubert(~Thunderbi@2a02:8109:abc0:6434:93d7:8f5e:1428:3062) (Quit: ubert)
2022-11-30 18:26:35 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-11-30 18:27:09 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-11-30 18:27:45 +0100 <turlando> Yeah, I've seen the binary-bits package. Again, just for the sake of learning I wanted to roll my own binary decoder and see how far I can go before the code is a total unoptimized incomprehensible mess
2022-11-30 18:28:21 +0100Xeroine(~Xeroine@user/xeroine)
2022-11-30 18:30:02 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
2022-11-30 18:30:20 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 18:30:51 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-30 18:31:02 +0100 <turlando> Something else but still related: some values, e.g. the block size, admit values is a specific range, e.g. 16-65536. I'm wondering if I can encode that at the type level or I need to switch to Idris/Clean/Adga and the like
2022-11-30 18:33:34 +0100califax(~califax@user/califx)
2022-11-30 18:34:44 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-30 18:35:04 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-11-30 18:36:07 +0100TroyFletcher(~TroyFletc@rrcs-147-0-159-10.central.biz.rr.com)
2022-11-30 18:37:32 +0100ormaaj(~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:32 +0100Matthew|m(~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:32 +0100ongy[m](~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:32 +0100fgaz(~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:32 +0100maralorn(~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:32 +0100tiziodcaio(~tiziodcai@2001:470:69fc:105::1:2bf8) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:32 +0100jinsun_(~jinsun@user/jinsun) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100Artem[m](~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100SeanKing[m](~seankingm@2001:470:69fc:105::cf9c) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100chreekat(~chreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100oak-(~oak-@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100Deide(~deide@user/deide) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100vladan[m](~vladanmat@2001:470:69fc:105::2:24df) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100unclechu(~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100schuelermine[m](~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100olivermead[m](~olivermea@2001:470:69fc:105::2:4289) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100sektor[m](~sektor@2001:470:69fc:105::2:3f60) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100drsooch[m](~drsoochma@2001:470:69fc:105::1:c8a1) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100ozkutuk[m](~ozkutuk@2001:470:69fc:105::2:9af8) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100geekosaur[m](~geekosaur@xmonad/geekosaur) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100UdayKiran[m](~neoatnebu@2001:470:69fc:105::2:bae0) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100czuberion[m](~czuberion@2001:470:69fc:105::2:bc47) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100crazazy[m](~crazazyut@2001:470:69fc:105::2:ba2a) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100kadoban(~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100Dominik[m]1(~dschrempf@2001:470:69fc:105::2:bbb6) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100Clinton[m](~clintonme@2001:470:69fc:105::2:31d4) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100mimi1vx[m](~osukupmat@2001:470:69fc:105::2:418d) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100jneira[m](~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:33 +0100kjlid[m](~kjlidmatr@2001:470:69fc:105::2:c193) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:34 +0100ted[m](~tedmatrix@2001:470:69fc:105::2:bf60) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:35 +0100Tisoxin(~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:35 +0100famubu[m](~famubumat@2001:470:69fc:105::1081) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:35 +0100psydroid(~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:35 +0100ElliotAlderson[m(~elliotal_@2001:470:69fc:105::bb21) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:35 +0100romes[m](~romesmatr@2001:470:69fc:105::2:1660) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:35 +0100sm(~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:36 +0100VOID[m](~void404ma@2001:470:69fc:105::2:c72c) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:36 +0100TomWesterhout[m](~twesterho@2001:470:69fc:105::1:2918) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:36 +0100Player205[m](~rootsandw@2001:470:69fc:105::2:ca2e) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:36 +0100FurudeRika[m](~chitandae@2001:470:69fc:105::1:6039) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:36 +0100Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:36 +0100VarikValefor[m](~varikvale@2001:470:69fc:105::a5d) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:37 +0100smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:37 +0100AdamConner-Sax[m(~adamcsmat@2001:470:69fc:105::1:e2c8) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:37 +0100oo_miguel[m](~oomiguelm@2001:470:69fc:105::1:5ab0) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:37 +0100srid[m](~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:37 +0100Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:37 +0100nicm[m](~nicmollel@2001:470:69fc:105::1:feeb) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:37 +0100jecxjo[m](~jecxjomat@2001:470:69fc:105::2:bd7c) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100Las[m](~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100bgamari[m](~bgamari@2001:470:69fc:105::c7b9) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100jbggs[m](~jbggsmatr@2001:470:69fc:105::2:995f) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100zarel[m](~zarelitma@2001:470:69fc:105::1:fcfb) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100fendor[m](~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100yl53[m](~yl53matri@2001:470:69fc:105::85b) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100adziahel[m](~adziahelm@2001:470:69fc:105::b4d) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100ericson2314(~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100ManofLetters[m](~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100JonathanWatson[m(~jjwmatrix@2001:470:69fc:105::2:a544) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:38 +0100peddie(~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:39 +0100JensPetersen[m](~juhp@2001:470:69fc:105::6e9) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:39 +0100nomagno(~nomagno@2001:470:69fc:105::c1f0) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:39 +0100elvishjerricco(~elvishjer@2001:470:69fc:105::6172) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:39 +0100jmcantrell(~jmcantrel@user/jmcantrell) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:39 +0100M0rphee[m](~M0rpheema@2001:470:69fc:105::2:b1ce) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:37:39 +0100Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8) (Quit: Bridge terminating on SIGTERM)
2022-11-30 18:40:16 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-11-30 18:40:48 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-11-30 18:41:40 +0100 <EvanR> turlando, list of bit, for the win xD
2022-11-30 18:41:46 +0100fgaz(~fgaz@2001:470:69fc:105::842)
2022-11-30 18:41:47 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-30 18:42:07 +0100 <EvanR> make it work then make it fast / memory efficient
2022-11-30 18:42:08 +0100peddie(~peddie@2001:470:69fc:105::25d)
2022-11-30 18:42:08 +0100ericson2314(~ericson23@2001:470:69fc:105::70c)
2022-11-30 18:42:09 +0100famubu[m](~famubumat@2001:470:69fc:105::1081)
2022-11-30 18:42:09 +0100maralorn(~maralorn@2001:470:69fc:105::251)
2022-11-30 18:42:09 +0100sm(~sm@plaintextaccounting/sm)
2022-11-30 18:42:09 +0100tiziodcaio(~tiziodcai@2001:470:69fc:105::1:2bf8)
2022-11-30 18:42:09 +0100Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8)
2022-11-30 18:42:09 +0100ongy[m](~ongymatri@2001:470:69fc:105::5018)
2022-11-30 18:42:23 +0100Las[m](~lasmatrix@2001:470:69fc:105::74e)
2022-11-30 18:42:34 +0100smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2022-11-30 18:42:41 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-30 18:42:48 +0100chreekat(~chreekat@2001:470:69fc:105::16b5)
2022-11-30 18:43:01 +0100ManofLetters[m](~manoflett@2001:470:69fc:105::3be)
2022-11-30 18:43:01 +0100fendor[m](~fendormat@2001:470:69fc:105::fcbd)
2022-11-30 18:43:15 +0100oak-(~oak-@2001:470:69fc:105::fcd)
2022-11-30 18:43:17 +0100jmcantrell(~jmcantrel@user/jmcantrell)
2022-11-30 18:43:17 +0100jinsun_(~jinsun@user/jinsun)
2022-11-30 18:43:28 +0100king_gs(~Thunderbi@2806:103e:29:86f9:15db:b0e0:45d5:32a8)
2022-11-30 18:43:30 +0100romes[m](~romesmatr@2001:470:69fc:105::2:1660)
2022-11-30 18:43:35 +0100JensPetersen[m](~juhp@2001:470:69fc:105::6e9)
2022-11-30 18:43:35 +0100ormaaj(~ormaaj@user/ormaaj)
2022-11-30 18:43:36 +0100Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac)
2022-11-30 18:43:48 +0100jneira[m](~jneiramat@2001:470:69fc:105::d729)
2022-11-30 18:43:49 +0100alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2022-11-30 18:43:49 +0100Matthew|m(~arathorn@2001:470:69fc:105::1f)
2022-11-30 18:43:49 +0100JonathanWatson[m(~jjwmatrix@2001:470:69fc:105::2:a544)
2022-11-30 18:44:01 +0100srid[m](~sridmatri@2001:470:69fc:105::1c2)
2022-11-30 18:44:18 +0100M0rphee[m](~M0rpheema@2001:470:69fc:105::2:b1ce)
2022-11-30 18:44:24 +0100geekosaurwonders if this restart fixed the control-q thing
2022-11-30 18:44:31 +0100drsooch[m](~drsoochma@2001:470:69fc:105::1:c8a1)
2022-11-30 18:44:33 +0100olivermead[m](~olivermea@2001:470:69fc:105::2:4289)
2022-11-30 18:44:46 +0100jbggs[m](~jbggsmatr@2001:470:69fc:105::2:995f)
2022-11-30 18:44:46 +0100nicm[m](~nicmollel@2001:470:69fc:105::1:feeb)
2022-11-30 18:44:59 +0100oo_miguel[m](~oomiguelm@2001:470:69fc:105::1:5ab0)
2022-11-30 18:45:02 +0100Tisoxin(~ikosit@user/ikosit)
2022-11-30 18:45:11 +0100ozkutuk[m](~ozkutuk@2001:470:69fc:105::2:9af8)
2022-11-30 18:45:11 +0100Artem[m](~artemtype@2001:470:69fc:105::75b)
2022-11-30 18:45:11 +0100unclechu(~unclechu@2001:470:69fc:105::354)
2022-11-30 18:45:11 +0100sektor[m](~sektor@2001:470:69fc:105::2:3f60)
2022-11-30 18:45:18 +0100 <mauke> control-q thing?
2022-11-30 18:45:27 +0100Clinton[m](~clintonme@2001:470:69fc:105::2:31d4)
2022-11-30 18:45:27 +0100maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2022-11-30 18:45:27 +0100vladan[m](~vladanmat@2001:470:69fc:105::2:24df)
2022-11-30 18:45:27 +0100elvishjerricco(~elvishjer@2001:470:69fc:105::6172)
2022-11-30 18:45:27 +0100VarikValefor[m](~varikvale@2001:470:69fc:105::a5d)
2022-11-30 18:45:27 +0100geekosaur[m](~geekosaur@xmonad/geekosaur)
2022-11-30 18:45:28 +0100nomagno(~nomagno@2001:470:69fc:105::c1f0)
2022-11-30 18:45:28 +0100jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab)
2022-11-30 18:45:28 +0100VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad)
2022-11-30 18:45:28 +0100Deide(~deide@user/deide)
2022-11-30 18:45:28 +0100SeanKing[m](~seankingm@2001:470:69fc:105::cf9c)
2022-11-30 18:45:42 +0100Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8)
2022-11-30 18:45:42 +0100psydroid(~psydroid@user/psydroid)
2022-11-30 18:45:42 +0100schuelermine[m](~schuelerm@user/schuelermine)
2022-11-30 18:45:54 +0100yl53[m](~yl53matri@2001:470:69fc:105::85b)
2022-11-30 18:46:08 +0100crazazy[m](~crazazyut@2001:470:69fc:105::2:ba2a)
2022-11-30 18:46:11 +0100 <geekosaur> the gateway has been mapping matrix fixed-width text to control-q markers
2022-11-30 18:46:21 +0100 <geekosaur> sadly, it's only been outputting starts, not ends
2022-11-30 18:46:24 +0100UdayKiran[m](~neoatnebu@2001:470:69fc:105::2:bae0)
2022-11-30 18:46:25 +0100czuberion[m](~czuberion@2001:470:69fc:105::2:bc47)
2022-11-30 18:46:32 +0100 <geekosaur> which makes it kinda hard to add support in my client
2022-11-30 18:46:39 +0100zarel[m](~zarelitma@2001:470:69fc:105::1:fcfb)
2022-11-30 18:46:46 +0100 <mauke> ah
2022-11-30 18:46:52 +0100 <geekosaur> not that I know what support to add yet; I may just make it go back to using backticks
2022-11-30 18:46:55 +0100AdamConner-Sax[m(~adamcsmat@2001:470:69fc:105::1:e2c8)
2022-11-30 18:46:55 +0100Dominik[m](~dschrempf@2001:470:69fc:105::2:bbb6)
2022-11-30 18:47:05 +0100kjlid[m](~kjlidmatr@2001:470:69fc:105::2:c193)
2022-11-30 18:47:05 +0100bgamari[m](~bgamari@2001:470:69fc:105::c7b9)
2022-11-30 18:47:05 +0100VOID[m](~void404ma@2001:470:69fc:105::2:c72c)
2022-11-30 18:47:05 +0100ElliotAlderson[m(~elliotal_@2001:470:69fc:105::bb21)
2022-11-30 18:47:05 +0100kadoban(~kadoban@user/kadoban)
2022-11-30 18:47:07 +0100mimi1vx[m](~osukupmat@2001:470:69fc:105::2:418d)
2022-11-30 18:47:08 +0100 <mauke> I've seen ^Q ... ^O from matrix
2022-11-30 18:47:08 +0100 <geekosaur> https://modern.ircdocs.horse/formatting.html#monospace
2022-11-30 18:47:17 +0100adziahel[m](~adziahelm@2001:470:69fc:105::b4d)
2022-11-30 18:47:17 +0100TomWesterhout[m](~twesterho@2001:470:69fc:105::1:2918)
2022-11-30 18:47:17 +0100FurudeRika[m](~chitandae@2001:470:69fc:105::1:6039)
2022-11-30 18:47:17 +0100jecxjo[m](~jecxjomat@2001:470:69fc:105::2:bd7c)
2022-11-30 18:47:18 +0100Player205[m](~rootsandw@2001:470:69fc:105::2:ca2e)
2022-11-30 18:47:18 +0100ted[m](~tedmatrix@2001:470:69fc:105::2:bf60)
2022-11-30 18:47:48 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 18:47:59 +0100nschoe(~q@141.101.51.197) (Quit: Switching off)
2022-11-30 18:48:12 +0100 <geekosaur> mm, suppose that's possible since ^O is reset
2022-11-30 18:48:29 +0100Xeroine(~Xeroine@user/xeroine) (Ping timeout: 260 seconds)
2022-11-30 18:48:51 +0100Xeroine(~Xeroine@user/xeroine)
2022-11-30 18:49:19 +0100 <TroyFletcher> Can anyone help me use a different version of a package with stack? I'm in ghci and one of the datasets is 404's. The issue was fixed last year in a github issue to dh-core, but my stack/hackage is using an older version which lacks the fix. Can I make stack load a later version or manually correct it?
2022-11-30 18:49:24 +0100 <mauke> s/\cQ([^\cQ\cO]*)(?:\cQ|\z|(?=\cO))/`$1`/g # quick and dirty
2022-11-30 18:49:41 +0100 <TroyFletcher> Of figure out who the hackage maintainer is?
2022-11-30 18:49:55 +0100razetime(~quassel@49.207.211.219) (Remote host closed the connection)
2022-11-30 18:51:03 +0100 <TroyFletcher> I found stack bits about extra-deps, but I'm just getting started and mucking about in ghci, and don't have a package yaml
2022-11-30 18:52:40 +0100 <segfaultfizzbuzz> sans io! https://sans-io.readthedocs.io/ anyone familiar with this? is there a simple example of doing things this way in haskell?
2022-11-30 18:53:23 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:88b2:8e58:1784:1509) (Ping timeout: 260 seconds)
2022-11-30 18:55:16 +0100gabriel_sevecek(~gabriel@188-167-229-200.dynamic.chello.sk) (Quit: WeeChat 3.7.1)
2022-11-30 18:56:06 +0100gabriel_sevecek(~gabriel@188-167-229-200.dynamic.chello.sk)
2022-11-30 18:57:09 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81)
2022-11-30 18:57:25 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-11-30 18:57:33 +0100 <EvanR> basically just separate the algorithm from the I/O
2022-11-30 18:58:02 +0100 <EvanR> take ByteString as input instead of combining the processing with IO that gets a ByteString
2022-11-30 18:58:20 +0100 <segfaultfizzbuzz> they were saying something about using a "buffer"
2022-11-30 18:58:32 +0100 <segfaultfizzbuzz> it seems like they probably mean a buffer of fixed and finite size...?
2022-11-30 18:58:38 +0100ec(~ec@gateway/tor-sasl/ec)
2022-11-30 18:58:57 +0100 <EvanR> for the purposes of a protocol a buffer can just be a ByteString that you slice and concat
2022-11-30 18:59:16 +0100 <EvanR> if it gets too long, that's buffer overflow
2022-11-30 18:59:48 +0100 <EvanR> rather, if it would get too long. Check before you concat
2022-11-30 19:00:48 +0100 <EvanR> using a piece of mutable memory as a buffer leads you back to IO
2022-11-30 19:01:43 +0100 <jean-paul[m]> What about this idea - in some ways, IO is already sans-io.
2022-11-30 19:02:44 +0100 <EvanR> that would be nice
2022-11-30 19:03:11 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
2022-11-30 19:03:12 +0100 <EvanR> you could define a type to represent limited I/O and interpret that in IO or in a test bench
2022-11-30 19:03:30 +0100 <juri_> polysemy?
2022-11-30 19:03:38 +0100jean-paul[m]nods
2022-11-30 19:04:00 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-30 19:04:13 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-11-30 19:04:23 +0100 <jean-paul[m]> in an imperative language, if you write a function that does application logic and side-effects, that's just what you have - a mix of those two things, never to be untangled
2022-11-30 19:04:24 +0100 <EvanR> iteratees
2022-11-30 19:05:20 +0100 <jean-paul[m]> in a functional language with IO, if you write a function that returns an IO a then you have a set of instructions for some I/O to do, and you can untangle it if you want?
2022-11-30 19:05:39 +0100 <jean-paul[m]> (okay matrix implosion is too much for me now)
2022-11-30 19:05:40 +0100 <EvanR> if you have IO you can't do anything with it except combine it with more IO
2022-11-30 19:05:52 +0100 <EvanR> oh dang jean-paul[m] is delayed?
2022-11-30 19:06:08 +0100econo(uid147250@user/econo)
2022-11-30 19:08:39 +0100 <EvanR> segfaultfizzbuzz, that page "excludes libraries which just abstract out I/O", I'd say this exclusion is unnecessary in haskell because we can so easily make abstractions. Like jean-paul[m] was suggesting
2022-11-30 19:08:48 +0100Scraeling(~Username@user/scraeling)
2022-11-30 19:09:20 +0100 <segfaultfizzbuzz> you can "untangle instructions from io" ?
2022-11-30 19:09:37 +0100finsternis(~X@23.226.237.192) (Read error: Connection reset by peer)
2022-11-30 19:09:49 +0100 <segfaultfizzbuzz> haskellers don't introspect on the functions themselves right...?
2022-11-30 19:10:15 +0100 <segfaultfizzbuzz> like i don't have a function fn1 which accepts a function fn2, and then fn1 says "oh i see you are doing division there fn2, in that case we shall..."
2022-11-30 19:10:26 +0100 <EvanR> you can't deconstruct a function in haskell
2022-11-30 19:10:34 +0100 <segfaultfizzbuzz> right
2022-11-30 19:10:35 +0100 <EvanR> or IO actions
2022-11-30 19:10:39 +0100teo(~teo@user/teo) ()
2022-11-30 19:11:04 +0100 <segfaultfizzbuzz> (although laziness ought to be a nice thing to combine with what you call introspection...?)
2022-11-30 19:11:21 +0100 <loonycyborg> Maybe you can with template haskell? :P
2022-11-30 19:11:23 +0100 <EvanR> you called something introspection not me!
2022-11-30 19:11:35 +0100 <segfaultfizzbuzz> pardon me, deconstruction
2022-11-30 19:11:45 +0100 <segfaultfizzbuzz> s/introspection/deconstruction
2022-11-30 19:12:34 +0100 <mauke> > (a + b)^2
2022-11-30 19:12:36 +0100 <lambdabot> (a + b) * (a + b)
2022-11-30 19:12:41 +0100money_(~money@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-30 19:12:46 +0100 <EvanR> laziness goes great with everything except side effects and debugging
2022-11-30 19:13:36 +0100 <segfaultfizzbuzz> and on a related note i had a question about "infinite" data structures,
2022-11-30 19:14:36 +0100 <segfaultfizzbuzz> which is that as far as i can tell one ought to be able to associate to any "infinite" data structure (or "infinite" recursion etc) some kind of monotonic counter which imposes a depth limit
2022-11-30 19:14:44 +0100finsternis(~X@23.226.237.192)
2022-11-30 19:15:14 +0100 <EvanR> there's generics for operating generically on ADTs
2022-11-30 19:15:15 +0100 <segfaultfizzbuzz> the only situation i have encountered where it is useful to *not* have a counter like that was when i was writing a CAS retry operation in rust, to gain a small improvement in speed
2022-11-30 19:15:36 +0100 <EvanR> oh you're talking about something specific now
2022-11-30 19:15:51 +0100money_(~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Client Quit)
2022-11-30 19:16:55 +0100 <EvanR> what's with the dubious quotes around infinite xD
2022-11-30 19:17:17 +0100 <segfaultfizzbuzz> so my question is, is the primary reason to have an "infinite" data structure, "infinite" recursion, etc to ditch the performance impact of having a counter, or is there something more fundamental which imposes the need to not have a counter
2022-11-30 19:17:42 +0100 <mauke> I don't understand the question
2022-11-30 19:17:46 +0100 <segfaultfizzbuzz> well, i am going to die in less than one hundred years, my computer will die in ten years or something, etc so the "infinite" aspect is probably always a fiction
2022-11-30 19:17:54 +0100 <EvanR> oh, ultrafinitism?
2022-11-30 19:18:00 +0100 <segfaultfizzbuzz> > take 5 [1 ..]
2022-11-30 19:18:02 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2022-11-30 19:18:02 +0100 <lambdabot> [1,2,3,4,5]
2022-11-30 19:18:16 +0100 <mauke> > repeat ()
2022-11-30 19:18:18 +0100 <segfaultfizzbuzz> > take 500! [1 ..]
2022-11-30 19:18:18 +0100 <lambdabot> [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),...
2022-11-30 19:18:19 +0100 <davean> segfaultfizzbuzz: So, you might only ever explore a finite portion of it, but what portion?
2022-11-30 19:18:20 +0100 <lambdabot> error:
2022-11-30 19:18:20 +0100 <lambdabot> • Couldn't match expected type ‘Array [a1] e’
2022-11-30 19:18:20 +0100 <lambdabot> with actual type ‘[a0] -> [a0]’
2022-11-30 19:18:40 +0100 <segfaultfizzbuzz> > take 500^500 [1 ..]
2022-11-30 19:18:42 +0100 <lambdabot> <[Integer] -> [Integer]>
2022-11-30 19:18:49 +0100 <segfaultfizzbuzz> > take (500^500) [1 ..]
2022-11-30 19:18:50 +0100 <lambdabot> []
2022-11-30 19:18:57 +0100 <segfaultfizzbuzz> anyway you get the idea, i don't know what to write there
2022-11-30 19:19:05 +0100 <mauke> > [1 ..]
2022-11-30 19:19:07 +0100TroyFletcher(~TroyFletc@rrcs-147-0-159-10.central.biz.rr.com) (Quit: Client closed)
2022-11-30 19:19:07 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
2022-11-30 19:19:15 +0100 <darkling> I guess if you're defining a type that uses itself in a way that can be continued indefinitely, then its' actually easier to define it like that (without bounds), rather than impose a limit on it.
2022-11-30 19:19:17 +0100 <EvanR> infinite structures are more composable because the decision of "how big should it be" is dropped, and is often unnecessary
2022-11-30 19:19:26 +0100 <davean> segfaultfizzbuzz: So consider the reals, if I want to explore it to find Pi
2022-11-30 19:19:31 +0100 <EvanR> it's a practical thing
2022-11-30 19:20:01 +0100nate4(~nate@98.45.169.16)
2022-11-30 19:20:06 +0100 <zzz> useful as control
2022-11-30 19:20:23 +0100 <segfaultfizzbuzz> EvanR: yeah so i think i am thinking here that overlooking "how big should it be" is like overlooking whether it can have a null value,... it's literally the "infinity" counterpart to null
2022-11-30 19:20:36 +0100 <EvanR> you can't check for infinite though, so it's not like null
2022-11-30 19:20:53 +0100 <EvanR> at best you are told, here this is infinite, or not
2022-11-30 19:21:34 +0100 <segfaultfizzbuzz> right but for example i can say "from this entry point, nothing shall iterate to a greater depth than max_int32"
2022-11-30 19:21:35 +0100chele(~chele@user/chele) (Remote host closed the connection)
2022-11-30 19:21:58 +0100 <mauke> > take maxBound [1 ..]
2022-11-30 19:22:00 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
2022-11-30 19:22:00 +0100 <EvanR> you can impose that in various ways if you want, but doing at the implementation of the language is silly
2022-11-30 19:22:16 +0100 <davean> segfaultfizzbuzz: you very much might itterate to a greater depth than INT32_MAX
2022-11-30 19:22:27 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-11-30 19:22:31 +0100 <zzz> > length [0..maxBound :: Word]
2022-11-30 19:22:37 +0100 <lambdabot> mueval-core: Time limit exceeded
2022-11-30 19:22:38 +0100 <davean> segfaultfizzbuzz: Getting to a depth of more than INT32_MAX is NORMAL
2022-11-30 19:22:53 +0100 <segfaultfizzbuzz> davean: yeah you are objecting to my choice of number rather than the fundamental idea. if you like, replace that with int64_max or something
2022-11-30 19:23:08 +0100andreas303(andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
2022-11-30 19:23:16 +0100 <davean> segfaultfizzbuzz: But thats litterly the point, and now you're carring the weight of tracking the choice, which is inefficient
2022-11-30 19:23:21 +0100 <EvanR> that you don't know what the limit will be is the reason ultrafinitism is silly
2022-11-30 19:23:46 +0100xacktm(~xacktm@user/xacktm) (Ping timeout: 252 seconds)
2022-11-30 19:23:47 +0100 <EvanR> among others
2022-11-30 19:23:49 +0100 <davean> You're doing more work to have less, and maybe not enough
2022-11-30 19:23:54 +0100 <segfaultfizzbuzz> EvanR: in an impractical theoretical sense you are right that you can't know the limit. in a realistic sense, perhaps you are wrong
2022-11-30 19:24:10 +0100 <EvanR> practically, you are skipping that complication
2022-11-30 19:24:11 +0100king_gs(~Thunderbi@2806:103e:29:86f9:15db:b0e0:45d5:32a8) (Ping timeout: 264 seconds)
2022-11-30 19:24:18 +0100 <segfaultfizzbuzz> for example, no CPU is going to do more than 10^10 operations per second we may safely assume
2022-11-30 19:24:23 +0100 <EvanR> kind of like how exceptions skips explicit error handling
2022-11-30 19:24:38 +0100nate4(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-11-30 19:24:42 +0100 <EvanR> infinite data, or traditional streams, skips "size"
2022-11-30 19:25:03 +0100 <segfaultfizzbuzz> so an operation taking longer than one hour * 10^10 is a "high load operation" and needs to be specially approved
2022-11-30 19:25:06 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 256 seconds)
2022-11-30 19:25:14 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
2022-11-30 19:25:26 +0100 <EvanR> you also regularly skip considering concrete CPU speed
2022-11-30 19:25:34 +0100 <EvanR> in the name of getting things done
2022-11-30 19:25:53 +0100 <EvanR> if it's "fast enough" you win
2022-11-30 19:26:04 +0100 <segfaultfizzbuzz> ok well the takeaway from your response i am gathering is this:
2022-11-30 19:26:17 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-11-30 19:26:30 +0100 <davean> I get the feeling segfaultfizzbuzz is still skipping the part where a counter is less efficient
2022-11-30 19:26:50 +0100 <EvanR> no they skipped the actual problem to be solved xD
2022-11-30 19:27:06 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-30 19:27:25 +0100 <Scraeling> > foldl (+) 0 [1..]
2022-11-30 19:27:29 +0100 <EvanR> we're getting bogged down in some kind of implementation detail of something
2022-11-30 19:27:34 +0100 <lambdabot> mueval-core: Time limit exceeded
2022-11-30 19:27:34 +0100 <lambdabot> mueval.real: ExitFailure 1
2022-11-30 19:27:44 +0100 <segfaultfizzbuzz> (1) untracked infinities in computation can be always be tracked in principle, but then you have the overhead of handling that which may be undesirable from a programmer cognition and/or compute speed perspective and (2) it is undesirable to include this kind of consideration at a language-level
2022-11-30 19:27:52 +0100 <darkling> I just looked up ultrafinitism. TIL that the universe is filled with stranger mathematicians that I thought possible.
2022-11-30 19:28:14 +0100 <mauke> what's an infinity?
2022-11-30 19:28:16 +0100 <segfaultfizzbuzz> yeah i think i am naturally an ultrafinitist
2022-11-30 19:28:25 +0100 <segfaultfizzbuzz> i don't believe circles and spheres actually exist
2022-11-30 19:28:32 +0100 <zzz> Scraeling: use foldl' :p
2022-11-30 19:28:35 +0100 <mauke> define "exist"
2022-11-30 19:28:47 +0100jrm(~jrm@user/jrm) (Read error: Connection reset by peer)
2022-11-30 19:29:05 +0100jrm(~jrm@user/jrm)
2022-11-30 19:29:29 +0100 <zzz> segfaultfizzbuzz: they are platonic archetipes
2022-11-30 19:29:37 +0100 <EvanR> when you ask for the last element of an infinite list, it's not like your electricity bill or the universes laws of physics are the reason nothing ever comes back
2022-11-30 19:29:57 +0100 <mauke> what color is yellow?
2022-11-30 19:30:05 +0100 <zzz> you can make the case that they are *all* that exists
2022-11-30 19:30:14 +0100 <segfaultfizzbuzz> it's interesting to note here by the way that ramanujan got a lot of his discovered identities wrong, ... if you read a bit you can piece together the story that would often compute equalities to some kind of finite depth, and then when the depth was sufficient he would conjecture equality
2022-11-30 19:31:04 +0100 <EvanR> you're getting caught up in some sort of tangential metaanaylsis, rather than taking the problems and solutions as is
2022-11-30 19:31:24 +0100 <EvanR> if you ask for the last element of an infinite list, the result is bottom, because it's infinite
2022-11-30 19:31:35 +0100 <Scraeling> > :t foldl'
2022-11-30 19:31:37 +0100 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
2022-11-30 19:31:53 +0100 <geekosaur> :t foldl'
2022-11-30 19:31:54 +0100 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
2022-11-30 19:31:55 +0100 <zzz> segfaultfizzbuzz: you might find this talk entertaining https://www.youtube.com/watch?v=43XaZEn2aLc
2022-11-30 19:32:00 +0100 <geekosaur> lambdabot is not ghci
2022-11-30 19:32:14 +0100 <Scraeling> thanks
2022-11-30 19:32:17 +0100 <segfaultfizzbuzz> zzz: thx ill take al ook
2022-11-30 19:33:10 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 260 seconds)
2022-11-30 19:33:16 +0100 <darkling> EvanR: I'm curious -- how long does it take to get there? (or is "bottom" simply "does not return"? I'm not sure about the semantics of the term)
2022-11-30 19:33:27 +0100 <EvanR> so the concept of an infinite list carries actual engineering facts with it, and we don't make it to metaphysics before lunch
2022-11-30 19:33:55 +0100 <EvanR> darkling, bottom being a thing in the semantics of haskell
2022-11-30 19:34:04 +0100 <geekosaur> bottom is any kind of nontermination: infinite loop, exception, run out of memory, whatever
2022-11-30 19:34:20 +0100 <segfaultfizzbuzz> right
2022-11-30 19:34:29 +0100 <EvanR> values can be more or less defined, and bottom is the least defined of all
2022-11-30 19:34:31 +0100 <darkling> OK, that makes sense.
2022-11-30 19:34:56 +0100 <zzz> in theory it does
2022-11-30 19:35:41 +0100 <darkling> I've generally only met bottom before in terms of lattices, hence the question.
2022-11-30 19:35:48 +0100 <EvanR> yeah it's the same thing
2022-11-30 19:36:50 +0100 <darkling> OK, so it's the nominal set that is a subset of all sets of types (viewing types as sets)
2022-11-30 19:36:55 +0100 <EvanR> here are some things in the lattice of haskell values. ⊥, 3, 7:⊥, 7:7:⊥, 7:7:7:⊥,
2022-11-30 19:37:15 +0100 <EvanR> 7:⊥ is less defined than 7:7:⊥
2022-11-30 19:37:37 +0100 <EvanR> infinite 7s in a row is more defined than any finite number of 7s followed by ⊥
2022-11-30 19:38:20 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-30 19:39:23 +0100 <EvanR> you need something like this to ask what a lazy recursively defined data structure evaluates to
2022-11-30 19:39:25 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
2022-11-30 19:39:58 +0100 <EvanR> ... when you're allowed to write non sense programs xD
2022-11-30 19:40:20 +0100 <zzz> http://blog.ezyang.com/2010/12/hussling-haskell-types-into-hasse-diagrams/
2022-11-30 19:42:05 +0100 <segfaultfizzbuzz> hahah nonsense programs?
2022-11-30 19:42:12 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-11-30 19:42:56 +0100 <EvanR> yeah haskell's type system doesn't stop nonsense
2022-11-30 19:43:10 +0100 <EvanR> let x = x + 1 in x
2022-11-30 19:44:07 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 260 seconds)
2022-11-30 19:45:20 +0100 <segfaultfizzbuzz> ah very interesting, rewriting...
2022-11-30 19:48:17 +0100money_(~money@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-30 19:49:06 +0100money_(~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Client Quit)
2022-11-30 19:50:32 +0100ec_(~ec@gateway/tor-sasl/ec)
2022-11-30 19:50:40 +0100 <mauke> > fix (\xs -> [xs !! 0])
2022-11-30 19:50:40 +0100nisstyre(wes@user/nisstyre) (Ping timeout: 252 seconds)
2022-11-30 19:50:42 +0100 <lambdabot> [*Exception: <<loop>>
2022-11-30 19:51:15 +0100 <segfaultfizzbuzz> zzz: thanks for this talk, it touches on a lot of stuff. i'm kinda tired of language religion wars and eliminating opinions from computer languages ;-)
2022-11-30 19:51:30 +0100nisstyre(wes@user/nisstyre)
2022-11-30 19:51:31 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-30 19:53:08 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
2022-11-30 19:53:25 +0100 <segfaultfizzbuzz> "what happens inside parenthesis stays inside parenthesis" haha
2022-11-30 19:53:46 +0100freeside(~mengwong@103.252.202.193)
2022-11-30 19:54:04 +0100 <mauke> newtype Void = MkVoid Void -- gaze into the abyss
2022-11-30 19:54:27 +0100 <EvanR> hmm, MkVoid !Void?
2022-11-30 19:54:32 +0100 <darkling> I... feel like something's watching me.
2022-11-30 19:55:16 +0100 <mauke> EvanR: that's illegal
2022-11-30 19:55:23 +0100 <EvanR> oh
2022-11-30 19:56:03 +0100 <dsal> That's absurd.
2022-11-30 19:56:49 +0100 <segfaultfizzbuzz> EvanR: is there an example of a nonsense haskell program somewhere?
2022-11-30 19:57:01 +0100 <EvanR> facepalm, that is what let x = x + 1 in x is
2022-11-30 19:57:13 +0100 <EvanR> or what mauke wrote
2022-11-30 19:57:32 +0100 <EvanR> more pedestrian maybe: head []
2022-11-30 19:57:37 +0100 <mauke> absurd (MkVoid v) = absurd v
2022-11-30 19:58:07 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 252 seconds)
2022-11-30 19:59:05 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-11-30 19:59:29 +0100 <EvanR> something about well typed programs don't get stuck
2022-11-30 19:59:35 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer)
2022-11-30 20:01:56 +0100money_(~money@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-30 20:02:01 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-11-30 20:02:23 +0100 <EvanR> anonymous user #757 is so leet they are already beating us all on the #haskell AoC leaderboard
2022-11-30 20:02:23 +0100money_(~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Client Quit)
2022-11-30 20:03:21 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-30 20:03:23 +0100LemanR(~LemanR@vpn.drexelmed.edu) (Ping timeout: 260 seconds)
2022-11-30 20:04:43 +0100 <segfaultfizzbuzz> zzz: i am hitting the part at 24:56 where the speaker is saying "can you in code ... measure time/power" as being central to determining equality
2022-11-30 20:05:29 +0100elkcl(~elkcl@broadband-188-255-19-11.ip.moscow.rt.ru) (Ping timeout: 260 seconds)
2022-11-30 20:06:11 +0100 <segfaultfizzbuzz> i mean okay i guess that instead of literal equality he is interested in some kind of ordered equality where the substitution is approximately no worse than the original expression in time/power etc
2022-11-30 20:06:18 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2022-11-30 20:06:30 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-30 20:06:45 +0100elkcl(~elkcl@broadband-188-255-19-11.ip.moscow.rt.ru)
2022-11-30 20:07:34 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-11-30 20:07:48 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-11-30 20:08:18 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-30 20:10:48 +0100andreas303(andreas303@ip227.orange.bnc4free.com)
2022-11-30 20:11:09 +0100xacktm(~xacktm@user/xacktm)
2022-11-30 20:11:10 +0100 <EvanR> "literal equality" xD
2022-11-30 20:12:00 +0100 <EvanR> definitional equality, propositional equality, john major's equality, ...
2022-11-30 20:18:06 +0100 <mauke> Equality ("the same"), Isomorphism ("basically the same"), Equivalence ("basically basically the same"), Natural isomorphism ("basically the same but spicy"), Adjunction ("... I don't even know")
2022-11-30 20:18:09 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-30 20:18:31 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 20:20:14 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer)
2022-11-30 20:22:05 +0100 <segfaultfizzbuzz> so this guy is saying a language feature addition is "expressive" if it makes more programs terminate
2022-11-30 20:23:27 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-11-30 20:23:30 +0100 <EvanR> another jargon is productive. If the program denotes something infinite, you want the program to be productive
2022-11-30 20:24:04 +0100 <EvanR> which might not mean terminating
2022-11-30 20:24:13 +0100 <segfaultfizzbuzz> he does a good job of describing a "local" transormation, but at least so far he hasn't gone into what a "nonlocal" transofmration is,... nonlocal with respect to what? some kind of AST?
2022-11-30 20:25:58 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 268 seconds)
2022-11-30 20:26:47 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-11-30 20:27:34 +0100freeside(~mengwong@103.252.202.193)
2022-11-30 20:29:42 +0100CiaoSen(~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2022-11-30 20:37:02 +0100 <zzz> mauke: what is the relationship between homomorphisms and isomorphisms?
2022-11-30 20:37:28 +0100 <mauke> I don't know, the video didn't say
2022-11-30 20:38:04 +0100 <segfaultfizzbuzz> i suppose that one of the biggest takeaways from this talk is that objective comparison of programming languages is an open and ongoing research topic
2022-11-30 20:38:31 +0100 <segfaultfizzbuzz> i think i understood 65% to 75% of this, i don't think i know the lambda notation he assumes the viewer knows
2022-11-30 20:38:55 +0100 <zzz> you can learn lambda notation in 5 minutes
2022-11-30 20:39:49 +0100 <EvanR> homomorphisms is long for morphisms, the significance depends on the category
2022-11-30 20:40:22 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-11-30 20:40:26 +0100 <segfaultfizzbuzz> so at least some notions of equality are empirical
2022-11-30 20:40:34 +0100 <EvanR> isomorphisms are reversible homomorphisms in the sense there's another morphism which combines backward to form id
2022-11-30 20:41:11 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-30 20:41:15 +0100 <segfaultfizzbuzz> i think also i am a bit confused about the symbols/atoms he is using--i think of symbols/atoms as always having some kind of representation in a finite alphabet, is that not true?
2022-11-30 20:41:24 +0100 <segfaultfizzbuzz> or excuse me, countably infinite alphabet such as naturals
2022-11-30 20:41:49 +0100 <zzz> EvanR: topologists may digree
2022-11-30 20:42:01 +0100 <segfaultfizzbuzz> for example he discusses the fact that 5 and 6 may or may not be determined to be equal depending on the language
2022-11-30 20:42:16 +0100 <EvanR> I think you are thinking of homeomorphisms
2022-11-30 20:42:39 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-30 20:42:58 +0100 <EvanR> which are morphisms in the category of topospaces
2022-11-30 20:43:17 +0100 <EvanR> oops, isomorphisms
2022-11-30 20:45:07 +0100Lycurgus(~juan@user/Lycurgus)
2022-11-30 20:46:13 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-11-30 20:46:30 +0100 <EvanR> 5 and 6 taken as D&D dungeon maps, better not be equal. Tactically speaking
2022-11-30 20:47:55 +0100Guest75(~Guest75@178.141.153.191) (Quit: Client closed)
2022-11-30 20:48:09 +0100 <segfaultfizzbuzz> so if i recall correctly the probability of a bit thermally flipping from a 0 to a 1 or vice versa is about 10^-10 per... second? i'm not quite sure here the precise figure but the point is that it is nonzero and it may well be measurable
2022-11-30 20:48:12 +0100 <zzz> segfaultfizzbuzz: 5 and 6 can be equal just as 6 and 6 can be unequal
2022-11-30 20:48:39 +0100 <segfaultfizzbuzz> so in the context of programming we may as well assume some kind of nonzero and possibly measurable probability of defect in the machine itself
2022-11-30 20:48:39 +0100 <zzz> if there is nothing in the language that can tell those symbols apart, they are equal
2022-11-30 20:49:27 +0100 <segfaultfizzbuzz> and so then instead of asking whether the program halts, we may ask about the probability that it halts, and make whatever analysis we do incorrect with a probability which is small with respect to the defect rate of the machine itself,... for example we accept a defective analysis with probability of 10^-20
2022-11-30 20:49:32 +0100 <EvanR> usually you use maths shenanigans do ignore stuff like the cosmic rays hitting your RAM or the thermal tolerance of the semiconductor, when it's irrelevant to the problem
2022-11-30 20:49:41 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 246 seconds)
2022-11-30 20:50:04 +0100 <zzz> there is no spoon
2022-11-30 20:50:09 +0100 <segfaultfizzbuzz> well i am arguing here that it *is* relevant to the problem because it takes an "infinity" which is the correctness of the analysis you are doing
2022-11-30 20:50:13 +0100 <EvanR> until it's not, then you can use probability. Itself more maths shenanigans
2022-11-30 20:50:35 +0100 <segfaultfizzbuzz> and establishes a scale which makes the "infinity" finite, so we allow a probabilistic interpretation with some small likelihood of a defect
2022-11-30 20:51:44 +0100 <segfaultfizzbuzz> there may be some nontrivial implications here--for example with modern memory bandwidths i've seen an analysis that you really have a very substantial (and rapidly increasing) probability of encountering a bit flip
2022-11-30 20:51:49 +0100 <zzz> are assuming a computer?
2022-11-30 20:52:15 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-11-30 20:52:29 +0100 <zzz> s/are/are you
2022-11-30 20:52:37 +0100 <segfaultfizzbuzz> so if your program state advances based on a computation which munches a huge amount of io bandwidth (like, say you crunch numbers for an entire day, and then move your state forward based on that)
2022-11-30 20:53:16 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer)
2022-11-30 20:53:19 +0100 <zzz> if i do math in my head i can also get the result wrong
2022-11-30 20:53:26 +0100 <zzz> how do you deal with that?
2022-11-30 20:53:29 +0100 <segfaultfizzbuzz> then that is quite different from something which takes many smaller steps with some kind of check after each step
2022-11-30 20:53:41 +0100 <segfaultfizzbuzz> zzz: i usually just get the wrong answer and try to have a computer solve it
2022-11-30 20:53:42 +0100 <EvanR> all lists in haskell are of the form [] or x:(list). If you explicitly never put [], it's infinite. There's no scare quotes possible
2022-11-30 20:53:44 +0100ec_(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-11-30 20:53:45 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-30 20:54:04 +0100 <EvanR> it has nothing to do with circuitry and everything to do with common sense
2022-11-30 20:54:09 +0100 <zzz> what if a meteor strikes your computer mid-computation?
2022-11-30 20:54:28 +0100ec_(~ec@gateway/tor-sasl/ec)
2022-11-30 20:54:29 +0100 <EvanR> cancelling a computation doesn't magically put []
2022-11-30 20:54:36 +0100 <EvanR> ending the list
2022-11-30 20:54:46 +0100 <zzz> you can't know that
2022-11-30 20:54:48 +0100 <zzz> maybe it does
2022-11-30 20:55:02 +0100 <zzz> this has not been studied
2022-11-30 20:55:18 +0100 <EvanR> a meteor could strike my head, changing my position on the subject, and then what
2022-11-30 20:55:30 +0100 <zzz> then segfaultfizzbuzz has a point
2022-11-30 20:55:31 +0100 <EvanR> does it change anything about the list
2022-11-30 20:55:41 +0100 <EvanR> as it was constructed earlier
2022-11-30 20:56:08 +0100 <EvanR> euclid could prove things by drawing pictures in sand, if a meteor hit him, does it invalidate the proofs
2022-11-30 20:56:35 +0100 <zzz> only if the proof was about a meteor not hitting him
2022-11-30 20:57:20 +0100 <EvanR> ultrafinitism seems to always change the subject to ones electricity bill or celestial mechanics, stuff unrelated to the original problem entirely
2022-11-30 20:57:52 +0100 <EvanR> kind of a flatearth thing
2022-11-30 20:58:19 +0100king_gs(~Thunderbi@187.201.63.8)
2022-11-30 20:58:41 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-11-30 20:58:42 +0100 <zzz> yes the domain is important
2022-11-30 20:58:51 +0100 <EvanR> if the original problem was literally about getting hit or not by a meteor while traveling to the moon I can see it being relevant
2022-11-30 21:01:32 +0100 <EvanR> on cancelling computations, you could draw analogy to astronomy. While things are working properly, or you make no mistakes in the computation, you're on topic, you see the subject clearly. If the computer / telescope breaks, the image is no longer meaningful
2022-11-30 21:02:32 +0100king_gs(~Thunderbi@187.201.63.8) (Ping timeout: 252 seconds)
2022-11-30 21:02:49 +0100 <segfaultfizzbuzz> a computation is either about physical entities, or it is not (e.g. a cryptographic computation, or trying to check a fact about mathematics, etc)
2022-11-30 21:03:22 +0100 <EvanR> when the image of a galaxy goes to blurry mush, that has no bearing on the galaxy really
2022-11-30 21:03:33 +0100 <segfaultfizzbuzz> if a computation is about physical entities then the necessary precision will be bounded and be very small in comparison to non-physical computations
2022-11-30 21:04:16 +0100 <darkling> Wasn't it Dijkstra who said that computer science is no more about computers than astronomy is about telescopes?
2022-11-30 21:05:06 +0100 <darkling> CS is an outbranch of mathematics, and what happens on actual computers is merely a practically-achievable approximation to that theory.
2022-11-30 21:05:18 +0100gmg(~user@user/gehmehgeh)
2022-11-30 21:05:57 +0100 <EvanR> technology to access the computable world
2022-11-30 21:10:34 +0100 <zzz> segfaultfizzbuzz: then, all computations are non terminating
2022-11-30 21:10:48 +0100 <zzz> they never cease to affect the world
2022-11-30 21:11:23 +0100 <segfaultfizzbuzz> uh,... sure, i mean,... i guess somebody could forget about a computer in the back room running norton anti-virus,... but then that will heat up the room a bit... maybe make another server crash a little earlier
2022-11-30 21:12:16 +0100 <EvanR> yes if you get too confused, then the wave function of the universe is one giant computation, and you can't discriminate one computation from another
2022-11-30 21:13:14 +0100 <zzz> and if i see [] printed on a screen, those photons will travel to my retinas, it will change the state of my brain and condition everything i'll do and so on...
2022-11-30 21:13:18 +0100 <segfaultfizzbuzz> i wish there was a formal notion of a "non-central refutation"
2022-11-30 21:13:35 +0100 <zzz> EvanR said it better
2022-11-30 21:13:59 +0100 <segfaultfizzbuzz> that is to say you can basically always find mathematically correct exceptions to some kind of principle/law etc
2022-11-30 21:14:20 +0100 <segfaultfizzbuzz> but which don't "centrally refute" the principle
2022-11-30 21:14:45 +0100 <segfaultfizzbuzz> in a physical context, we might say that "cosmic rays make computers impossible to build physically"
2022-11-30 21:14:57 +0100 <zzz> it seems we were able to turn that on you :)
2022-11-30 21:15:04 +0100Guest75(~Guest75@178.141.153.191)
2022-11-30 21:15:15 +0100 <segfaultfizzbuzz> whereas an example of a central refutation would be: "at economically viable temperatures, there are no reliable switches"
2022-11-30 21:16:44 +0100 <EvanR> if you think of problems as a game where the engineer first comes up with game rules, then plays the game to solve the problem, then what you're basically doing is flipping the table xD
2022-11-30 21:16:57 +0100 <EvanR> constantly
2022-11-30 21:17:26 +0100 <darkling> "Heads!" *flip* "Nope, butter side down."
2022-11-30 21:17:45 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:73e5:127c:a401:fc03)
2022-11-30 21:20:13 +0100kenran(~user@user/kenran)
2022-11-30 21:24:47 +0100mc47(~mc47@xmonad/TheMC47)
2022-11-30 21:24:55 +0100 <segfaultfizzbuzz> sorry i don't understand this, i am not interested in flipping the table
2022-11-30 21:25:07 +0100 <segfaultfizzbuzz> i am trying to draw a distinction between exceptional and central refutations
2022-11-30 21:27:34 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2022-11-30 21:27:58 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-30 21:31:42 +0100ec_(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-11-30 21:33:01 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-30 21:34:04 +0100ec_(~ec@gateway/tor-sasl/ec)
2022-11-30 21:35:14 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 246 seconds)
2022-11-30 21:36:34 +0100ec_(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-11-30 21:36:57 +0100ec_(~ec@gateway/tor-sasl/ec)
2022-11-30 21:41:19 +0100ulvarref`(~user@185.24.53.152)
2022-11-30 21:43:08 +0100ulvarrefr(~user@188.124.56.153) (Ping timeout: 260 seconds)
2022-11-30 21:48:53 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 21:51:14 +0100fjmorazan(~quassel@user/fjmorazan) ()
2022-11-30 21:51:36 +0100pavonia(~user@user/siracusa)
2022-11-30 21:51:58 +0100fjmorazan(~quassel@user/fjmorazan)
2022-11-30 21:53:16 +0100 <sammelweis> (read "e7c22b994c59d9cf2b48e549b1e24666636045930d3da7c1acb299d1c3b7f931f94aae41edda2c2b207a36e10f8bcb8d45223e54878f5b316e7ce3b6bc019629") :: Digest SHA512
2022-11-30 21:53:24 +0100Erutuon(~Erutuon@user/erutuon)
2022-11-30 21:53:39 +0100 <segfaultfizzbuzz> what?
2022-11-30 21:54:13 +0100 <sammelweis> how do i express a literal Digest SHA512 with syntax checking at compile time, to make above code more correct?
2022-11-30 21:55:27 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-11-30 21:55:50 +0100acidjnk(~acidjnk@p200300d6e7137a61b0d18cc63c896dfc.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2022-11-30 21:56:19 +0100 <geekosaur> if there isn't a quasiquoter or TH module for it, you don't
2022-11-30 21:57:17 +0100 <geekosaur> (and you're not the only one in that boat; many people badly want compile time bytestring and text literals)
2022-11-30 22:02:30 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-30 22:04:40 +0100ubert(~Thunderbi@p200300ecdf264ec09cb76a5007726dbb.dip0.t-ipconnect.de)
2022-11-30 22:07:04 +0100freeside(~mengwong@103.252.202.193)
2022-11-30 22:07:07 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81) (Remote host closed the connection)
2022-11-30 22:07:21 +0100acidjnk(~acidjnk@p200300d6e7137a610c26e0714ef85554.dip0.t-ipconnect.de)
2022-11-30 22:08:37 +0100 <sammelweis> could be 8 Word64s
2022-11-30 22:11:35 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 252 seconds)
2022-11-30 22:11:55 +0100ft(~ft@p508dbd59.dip0.t-ipconnect.de)
2022-11-30 22:12:30 +0100mastarija(~mastarija@2a05:4f46:e03:6000:9d12:9fcd:7976:e137)
2022-11-30 22:15:24 +0100Topsi(~Topsi@dyndsl-095-033-041-101.ewe-ip-backbone.de)
2022-11-30 22:20:44 +0100Scraeling(~Username@user/scraeling) (Quit: Going offline, see ya! (www.adiirc.com))
2022-11-30 22:21:20 +0100freeside(~mengwong@103.252.202.193)
2022-11-30 22:23:12 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-11-30 22:23:44 +0100 <EvanR> hard to eyeball 8 numbers and know if it doesn't match some hex sha somewhere
2022-11-30 22:23:51 +0100Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5)
2022-11-30 22:25:33 +0100 <EvanR> if I know my ghc, they are scrambling to figure out how to put arbitrary literals that can be checked arbitrary ways, instead of just implementing a "SHA512 literal" feature
2022-11-30 22:29:23 +0100mixfix41(~sdenynine@user/mixfix41) (Ping timeout: 265 seconds)
2022-11-30 22:34:07 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-11-30 22:41:55 +0100mixfix41(~sdenynine@user/mixfix41)
2022-11-30 22:42:05 +0100mmhat(~mmh@p200300f1c72545c1ee086bfffe095315.dip0.t-ipconnect.de)
2022-11-30 22:42:21 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-11-30 22:44:50 +0100Topsi(~Topsi@dyndsl-095-033-041-101.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-11-30 22:45:19 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-11-30 22:47:53 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-11-30 22:51:08 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2022-11-30 22:54:54 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:73e5:127c:a401:fc03) (Quit: WeeChat 2.8)
2022-11-30 23:00:24 +0100 <zzz> where can we get a list of which versions of hls are compatible with each versions of ghc?
2022-11-30 23:00:36 +0100 <Rembane> zzz: From ghcup IIRC
2022-11-30 23:01:30 +0100fjmorazan(~quassel@user/fjmorazan) ()
2022-11-30 23:01:56 +0100 <zzz> i wasted more hours than i care to admit in the last 2 days trying to get that to work
2022-11-30 23:02:13 +0100fjmorazan(~quassel@user/fjmorazan)
2022-11-30 23:03:12 +0100 <zzz> including messing around with `ghcup compile hls -v X.X.X.X --ghc X.X.X --cabal-update -- --allow-newer` ... etc
2022-11-30 23:05:09 +0100 <zzz> something to do with haskell-language-server issues #2675, #2431 i think
2022-11-30 23:05:49 +0100 <zzz> I finally got 1.6.1.0 to work with 9.0.2
2022-11-30 23:07:05 +0100califax(~califax@user/califx) (Ping timeout: 255 seconds)
2022-11-30 23:07:37 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81)
2022-11-30 23:11:20 +0100califax(~califax@user/califx)
2022-11-30 23:12:30 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 260 seconds)
2022-11-30 23:12:50 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81) (Ping timeout: 246 seconds)
2022-11-30 23:13:42 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2022-11-30 23:17:15 +0100califax(~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in)
2022-11-30 23:19:24 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-30 23:21:33 +0100nate4(~nate@98.45.169.16)
2022-11-30 23:21:40 +0100califax(~califax@user/califx)
2022-11-30 23:24:48 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 252 seconds)
2022-11-30 23:24:48 +0100money_(~money@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-30 23:25:25 +0100money_(~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Client Quit)
2022-11-30 23:26:21 +0100titibandit(~titibandi@xdsl-78-35-173-119.nc.de) (Remote host closed the connection)
2022-11-30 23:26:39 +0100nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-11-30 23:29:11 +0100 <zzz> ghc: panic! (the 'impossible' happened)
2022-11-30 23:29:11 +0100 <zzz> (GHC version 9.0.2:
2022-11-30 23:29:11 +0100 <zzz> Ix{Int}.index: Index (4091527055) out of range ((0,821))
2022-11-30 23:29:11 +0100 <zzz> Please report this as a GHC bug: https://www.haskell.org/ghc/reportabug
2022-11-30 23:29:13 +0100 <zzz> o.o
2022-11-30 23:34:11 +0100emmanuelux(~emmanuelu@user/emmanuelux)
2022-11-30 23:35:34 +0100 <EvanR> :oof:
2022-11-30 23:38:08 +0100freeside(~mengwong@103.252.202.193)
2022-11-30 23:39:00 +0100fockerize(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-11-30 23:39:03 +0100pwug(~pwug@user/pwug)
2022-11-30 23:39:23 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-30 23:42:38 +0100freeside(~mengwong@103.252.202.193) (Ping timeout: 246 seconds)
2022-11-30 23:44:46 +0100LemanR(~LemanR@pool-74-109-28-147.phlapa.fios.verizon.net)
2022-11-30 23:48:49 +0100kfiz[m](~louismatr@2001:470:69fc:105::2:aee0)
2022-11-30 23:53:53 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-11-30 23:56:53 +0100freeside(~mengwong@103.252.202.193)
2022-11-30 23:58:45 +0100michalz(~michalz@185.246.204.69) (Remote host closed the connection)