Home liberachat/#haskell: Logs Calendar

Logs on 2023-09-08 (liberachat/#haskell)

00:01:34 × Guest|3 quits (~Guest|3@93-136-208-249.adsl.net.t-com.hr) (Quit: Connection closed)
00:04:33 Guest12 joins (~Guest12@187.83.249.216.dyn.smithville.net)
00:09:26 × oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 246 seconds)
00:09:33 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 246 seconds)
00:11:22 × qhong quits (~qhong@DN160vrd000d6kpg009l6c0000fj.stanford.edu) (Read error: Connection reset by peer)
00:11:57 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
00:12:03 × apteryx quits (~maxim@dsl-159-106.b2b2c.ca) (Ping timeout: 246 seconds)
00:12:04 × cafkafk_ quits (~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
00:23:56 × Guest12 quits (~Guest12@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
00:27:16 × stites quits (~stites@2607:fb90:ad62:807c:d15b:ce72:ad88:3242) (Read error: Connection reset by peer)
00:27:37 stites joins (~stites@130.44.147.204)
00:27:52 cafkafk_ joins (~cafkafk@fsf/member/cafkafk)
00:30:36 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 246 seconds)
00:31:13 × bratwurst quits (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 240 seconds)
00:33:10 aaronv joins (~aaronv@user/aaronv)
00:34:00 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 255 seconds)
00:35:54 × califax quits (~califax@user/califx) (Remote host closed the connection)
00:35:59 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
00:36:05 califax_ joins (~califax@user/califx)
00:37:14 yosef` joins (~yosef`@user/yosef/x-2947716)
00:37:22 califax_ is now known as califax
00:42:20 × YoungFrog quits (~youngfrog@2a02:a03f:ca07:f900:fffe:2aed:9333:96be) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
00:42:41 YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
00:49:09 bratwurst joins (~blaadsfa@S010610561191f5d6.lb.shawcable.net)
00:53:57 Guest|3 joins (~Guest|3@93-136-208-249.adsl.net.t-com.hr)
00:54:00 <Guest|3> Hello me again with light and shadows!
00:54:13 <Guest|3> [1 of 1] Compiling Main ( main.hs, main.o )
00:54:14 <Guest|3> main.hs:1:1: error:Could not find module System.Random'
00:54:14 <Guest|3>     Use -v (or :set -v` in ghci) to see a list of the files searched for.
00:54:15 <Guest|3>   |
00:54:15 <Guest|3> 1 | import System.Random
00:54:16 <Guest|3>   | ^^^^^^^^^^^^^^^^^^^^
00:54:16 <Guest|3> Trying to run a code
00:54:17 <Guest|3> please help
00:56:23 <yushyin> it's a module from the random package
00:56:38 <Guest|3> import System.Random
00:56:38 <Guest|3> -- Define a type alias for the grid as a 2D list of characters
00:56:39 <Guest|3> type Grid = [[Char]]
00:56:39 <Guest|3> -- Define a data type for simulation parameters
00:56:40 <Guest|3> data SimulationParameters = SimulationParameters
00:56:40 <Guest|3>   { simulationWidth :: Int -- Width of the simulation area
00:56:41 <Guest|3>   , simulationHeight :: Int -- Height of the simulation area
00:56:41 <Guest|3>   , gridWidth :: Int -- Width of the grid
00:56:42 <Guest|3>   , gridHeight :: Int -- Height of the grid
00:56:42 <Guest|3>   , lightIntensity :: Int -- Intensity of the light
00:56:43 <Guest|3>   , numberOfObstacles :: Int -- Number of obstacles
00:56:43 <Guest|3>   }
00:56:44 <Guest|3> -- Initialize an empty grid filled with spaces
00:56:44 <Guest|3> emptyGrid :: Int -> Int -> Grid
00:56:45 <Guest|3> emptyGrid width height = replicate height (replicate width ' ')
00:56:45 <Guest|3> -- Define the position of the light source
00:56:46 <Guest|3> lightSource :: (Int, Int)
00:56:46 <Guest|3> lightSource = (5, 5)
00:56:47 × sinbad quits (~sinbad@user/sinbad) (Quit: Leaving.)
00:56:53 <yushyin> you would need to add this to your dependencies
00:56:57 <Guest|3> -- Function to replace an element at a specific position in the grid
00:56:58 <Guest|3> replaceElement :: Grid -> Int -> Int -> Char -> Grid
00:56:58 <Guest|3> replaceElement grid x y newElement =
00:56:59 <Guest|3>   take y grid ++
00:56:59 <Guest|3>   [take x (grid !! y) ++ [newElement] ++ drop (x + 1) (grid !! y)] ++
00:57:00 <Guest|3>   drop (y + 1) grid
00:57:00 <Guest|3> -- Function to spread light from the source
00:57:01 <Guest|3> spreadLight :: Grid -> (Int, Int) -> Int -> Grid
00:57:01 <Guest|3> spreadLight grid _ 0 = grid
00:57:02 <Guest|3> spreadLight grid (x, y) intensity
00:57:02 <Guest|3>   | x < 0 || x >= gridWidthParam || y < 0 || y >= gridHeightParam = grid
00:57:03 <Guest|3>   | grid !! y !! x /= ' ' && grid !! y !! x /= '#' = grid
00:57:03 <Guest|3>   | otherwise =
00:57:04 <Guest|3>     let updatedGrid = replaceElement grid x y '*' -- Place light at (x, y)
00:57:04 <Guest|3>     in foldl (\g (dx, dy) -> spreadLight g (x + dx, y + dy) (intensity - 1))
00:57:05 <Guest|3>              updatedGrid [(1, 0), (-1, 0), (0, 1), (0, -1)] -- Recursively spread light
00:57:05 <Guest|3> -- Function to round positions of objects in the grid with real numbers
00:57:06 <Guest|3> roundGridPositions :: Grid -> Grid
00:57:09 <yushyin> please use the paste service from the topic, lol
00:57:19 <Guest|3> where and how
00:57:20 <Guest|3> sorry it bugged out
00:57:59 <Guest|3> how do i add to my dependencies
00:58:10 <yushyin> "Paste code/errors: https://paste.tomsmeding.com "
00:59:44 <yushyin> https://cabal.readthedocs.io/en/3.4/getting-started.html#adding-dependencies here is how you do it with cabal
00:59:50 <Guest|3> https://paste.tomsmeding.com/1bXo7hqg/raw/1
01:01:04 EvanR joins (~EvanR@user/evanr)
01:01:13 <Guest|3> what do i need to do to use online interpreter to test my code, since when i run the code that is error
01:04:36 <institor> if you need random access into the grid
01:04:45 <institor> don't use linked lists of linked lists
01:04:48 <institor> use data.vector
01:05:37 <institor> which has nicer facilities for updating/replacing elements anyway
01:06:40 <institor> but this probably doesn't matter
01:07:06 <Guest|3> yes but i will still need to import something
01:07:12 <Guest|3> i think thats the problem
01:07:17 <Guest|3> or is it in my code?
01:08:26 <Axman6> Hecate: I didn't see yaml-streamly, but it doesn't look like it solves any of the issues I have with the other libraries
01:08:52 × hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Ping timeout: 255 seconds)
01:10:10 <EvanR> without knowing the context, I used Data.Vector to great effect for advent of code by using a cabal script (instead of a full cabal project) if you want to use that package for something quick and dirty
01:10:54 <Axman6> Guest|3: to import packages you need a cabal project (or stack I guess, but cabal is the lowest common denominator). you cab probably do something like cabal repl -b random RayBasedLightSimulation.hs without needing a cabal project though
01:12:32 <Guest|3> i'll try
01:13:48 <Guest|3> cabal repl -b random RayBasedLightSimulation.hs tried to run this but didnt work
01:14:02 <Axman6> "didn't work"
01:14:06 <Axman6> ok
01:14:12 <Guest|3> PS D:\haskel> cabal repl -b random RayBasedLightSimulation2
01:14:13 <Guest|3> cabal-3.6.2.0.exe: Cannot open a repl for the package
01:14:13 <Guest|3> RayBasedLightSimulation2, it is not in this project (either directly or
01:14:14 <Guest|3> indirectly). If you want to add it to the project then edit the cabal.project
01:14:14 <Guest|3> file.
01:14:20 hrberg joins (~quassel@171.79-160-161.customer.lyse.net)
01:14:34 <Axman6> do not paste multiple lines in here please! you've been told at least once before
01:14:43 <Guest|3> sorry
01:15:26 <Axman6> try cabal repl -b random, and then :load RayBasedLightSimulation.hs inside ghci
01:17:05 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
01:17:05 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
01:17:05 wroathe joins (~wroathe@user/wroathe)
01:19:39 <Guest|3> can i use https://www.tutorialspoint.com/compile_haskell_online.php this?
01:20:36 <Axman6> the general recommendation I've seen is to not use tutorialspoint at all, I think I read their tutorial forhaskell and it was incredibly bad, and frequently just plain wrong
01:20:59 <Guest|3> yes but i need online interpreter
01:21:40 <Guest|3> i just need to test this code if it works
01:21:47 <Guest|3> and i cant
01:23:08 <Axman6> have you tried https://play.haskell.org
01:23:17 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
01:24:02 <Axman6> looks like it works there (though you have an error in your code so it doesn't currently compile)
01:24:12 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
01:24:23 <Guest|3> yes i needed to know which error it was
01:24:30 <Guest|3> blindly i can't
01:24:34 <Guest|3> and time is of the essence
01:24:38 <Axman6> ... did you try it?
01:24:45 <yushyin> is this homework?
01:24:56 <Guest|3> yes homework
01:25:04 <Axman6> we can only help you so much if you are unwilling to do anything at all to help yourself
01:25:05 <Guest|3> u can call it that
01:25:13 <Guest|3> a job requirement
01:25:26 <Guest|3> im trying to help myself
01:25:30 <Guest|3> im stuck for 2 hours
01:25:43 <Axman6> then paste your code into play.haskell.org and hit run
01:25:44 <Guest|3> blindly trying to setup this official office laptop with no permissions
01:26:51 <Guest|3> https://pastebin.com/dXGJk0S3
01:27:08 <Guest|3> idk how to fix this
01:28:04 <Axman6> Data.List.Split comes from the split package, which is probably not installed by default on any online code evaluator, it's not a particularly common package. writing chunksOf is quite simple though
01:29:21 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
01:30:06 <institor> @type chunksOf
01:30:07 <lambdabot> Int -> [e] -> [[e]]
01:30:27 <Axman6> @hoogle chunksOf
01:30:27 <lambdabot> Data.Sequence chunksOf :: Int -> Seq a -> Seq (Seq a)
01:30:28 <lambdabot> Data.Sequence.Internal chunksOf :: Int -> Seq a -> Seq (Seq a)
01:30:28 <lambdabot> Data.Text chunksOf :: Int -> Text -> [Text]
01:30:33 <Axman6> @more
01:30:38 <Axman6> :(
01:30:41 <institor> :chunksOf 1 [1..20]
01:30:46 <institor> @chunksOf 1 [1..20]
01:30:46 <lambdabot> Unknown command, try @list
01:30:47 <institor> @list
01:30:47 <lambdabot> What module? Try @listmodules for some ideas.
01:30:51 <institor> @listmodules
01:30:51 <lambdabot> activity base bf check compose dice dict djinn dummy elite eval filter free fresh haddock help hoogle instances irc karma localtime metar more oeis offlineRC pl pointful poll pretty quote search
01:30:51 <lambdabot> seen slap source spell system tell ticker todo topic type undo unlambda unmtl version where
01:30:56 <institor> @eval chunksOf 1 [1..20]
01:31:11 <Axman6> > chunksOf 3 [1..20]
01:31:12 <lambdabot> [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18],[19,20]]
01:31:19 <int-e> institor: It's '> ' or "@run '
01:31:31 <int-e> @help eval
01:31:32 <lambdabot> eval. Do nothing (perversely)
01:31:37 <Guest|3> https://pastebin.com/xQLfsbCN
01:31:47 <int-e> (I /assume/ that this clashed with another bot somewhere)
01:32:20 <int-e> > iterate (drop 3) [1..20] -- a start
01:32:23 <lambdabot> [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],[4,5,6,7,8,9,10,11,12,...
01:32:32 <Guest|3> i dont understand
01:32:34 <int-e> > iterate (drop 3) [1..4] -- a start
01:32:36 <lambdabot> [[1,2,3,4],[4],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[...
01:34:17 <Guest|3> Can somebody
01:34:23 <Guest|3> please help me fix this code https://pastebin.com/6dmGuH2G
01:35:32 <Axman6> not without knowing the errors we can't.
01:36:02 <Guest|3> https://pastebin.com/qeRQcM3Y
01:36:05 <Guest|3> errors
01:36:33 <Axman6> but if that's the same code you shared earlier, I showed you a) how to run it and b) what the errors are. did you read them? they were pretty clear about what was wrong
01:37:22 <Guest|3> you mean about cabal?
01:37:35 <Axman6> right, you're referencing variables that the function can't see, somehow you need to pass those to it - it looks like they are contained the Grid type?
01:37:50 <Axman6> no, i mean play.haskell.org
01:38:04 <Guest|3> ok
01:38:22 <Guest|3> i was confused by lambdabot
01:38:56 <Axman6> oh I was wrong, they're not in Grid, I got mixed up with SimulationParameters
01:39:41 <Guest|3> i think i fixed it can you please check
01:39:57 <Guest|3> https://pastebin.com/RtdJfMgm
01:40:01 <Axman6> ... you can check it, paste it into play.haskell.org ad hit run, like I said
01:40:18 <Guest|3> it runs
01:40:21 <Guest|3> wow
01:40:27 <Guest|3> but does it do what its supposed to do
01:40:39 <Axman6> If you'd like our help, the least you can do is pay attention to the help we're giving you.
01:40:53 <Axman6> I have no idea, you tell us, it's not our code, nor our homework
01:41:12 <Guest|3> its not for homework its for job, people depend on the push
01:41:24 <yushyin> it runs, ship it!
01:41:34 <Axman6> ... then isn't it your job to check that it works?
01:41:47 <monochrom> Not my job.
01:41:58 <Guest|3> could you atleast comment on the code from a professional view
01:42:02 <monochrom> Well, unless I'm the one getting your pay.
01:42:04 <Axman6> We're here to help you figure out how to write haskell, not to do your job for you
01:42:24 <Guest|3> i never asked you to write a single line of code.
01:42:25 <monochrom> Homework likewise: Unless I'm the one getting your marks.
01:42:51 <Axman6> well, the first thing that jumps out is repeated ue of foo !! x !! y, this takes O(n) time, and doing it multiple times is not good
01:42:54 <monochrom> Well I don't have time figuring out what your code does either. I'm not getting paid here.
01:43:17 <institor> it sounds like an interview question
01:43:21 <Guest|3> its not about getting paid
01:43:33 <monochrom> It is always about getting paid, and it is always personal.
01:43:48 <Guest|3> well unfortunately im not getting paid for this work
01:43:55 <monochrom> There is no "free beer, free speech". There is only free market, free samples.
01:44:49 <Axman6> Guest|3: if this is for a job interview, then the point is to demonstrate your skills, not ours.
01:45:03 <Axman6> there's also a very good chance that whoever is interviewing you is also in this channel
01:45:28 <Guest|3> so when i presented you this code what did u notice, or what would you say to rate it
01:45:55 <int-e> I noticed the total lack of explanation of what it does, and what changed compared to the previous version.
01:46:07 <Axman6> And if I were hiring you, I wouldn't be impressed - it's fine to ask for help, as long as you're up front about the fact that someone else is judging _you_ on it. That means we can help yo in a way that the work is yours, not ours
01:46:27 × otto_s quits (~user@p5de2f794.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
01:46:54 <monochrom> This is why I stick to the socratic method. It already makes that assumption. Always.
01:47:15 <Guest|3> i think i commented fair amount of code..
01:47:15 <Guest|3> Also nobody wrote anything you keep reffering to ur help as you wrote a single line in my code. This is my work. Using templates and help from other sources is not my work?
01:47:40 <institor> everything is Microsoft's work in this brave new world
01:47:45 <monochrom> People need to get paid for code review, too.
01:47:48 <institor> copilot will write everything for you
01:48:01 otto_s joins (~user@p5de2ff65.dip0.t-ipconnect.de)
01:48:05 <monochrom> Also soon enough you will find that your managers write 0 lines of code and still get paid.
01:48:16 <institor> Guest|3: if you're not sure what it does maybe you should test it and find out
01:48:30 <Axman6> Guest|3: can you explain what every character of that code does? Based on the questions you've asked, i would suspect that there is code that you've found elsewhere, andprobably don't understand
01:48:38 <institor> if you don't understand if the test results are correct or not you should step back and ask if you understand the problem
01:49:04 <institor> there is a spurious do block in the code
01:49:11 <institor> should use a where or let clause instead
01:49:11 <monochrom> Ugh individual characters don't do anything....
01:49:19 <Guest|3> yes but is the result satisfying, from a thrid person point of view. i made it on my vision
01:50:00 <institor> does this even typecheck
01:50:17 <monochrom> Yes, it already runs.
01:50:25 <institor> i guess lists are a monad...
01:50:37 <monochrom> Yes, I love abusing that too. :)
01:50:38 <Axman6> Guest|3: I've told you several things that I would say are not ideal with that code, but you seem to have ignored them. ?Do you want our help or to waste our time?
01:50:50 <Guest|3> i want ur help of course
01:51:00 <institor> man i should just open a consultancy
01:51:04 <institor> and start yelling at people for doing things wrong
01:51:08 <institor> that would be the life
01:51:14 <monochrom> and getting paid too
01:51:15 <Guest|3> i want to learn
01:51:17 × g00gler quits (uid125351@id-125351.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
01:51:17 <Guest|3> thats why im here
01:51:18 <institor> monochrom: exactly
01:51:33 <monochrom> This is why I took up the 2nd best: Teaching. >:)
01:52:07 <monochrom> Yell at wrong students and give them failing grades and saving the world and getting the... pay. >:)
01:52:14 <Axman6> spreadLight looks very inefficient to me, it traverses the data many times when it could probably be done with zome maps and zip/zipWiths
01:52:47 <institor> folding with a recursive call to something that is at least O(n)?
01:52:52 <institor> lol
01:53:07 <monochrom> I'm sure lots of people write like that in C, too.
01:53:08 <Guest|3> like this axman6? https://pastebin.com/F9qhjfBG
01:53:15 <Axman6> but that said, it's not a particularly easy thing to write, so can't blame someone who's relatively new to thelanguage
01:53:50 <Axman6> I don't know what you changed
01:54:03 <monochrom> I saw world-class programming competition contesters using linear search for priority queue extract-min for dijkstra.
01:54:30 <monochrom> err, contestants! I hate English.
01:54:40 <Guest|3> https://pastebin.com/Jdq9xfv6
01:54:59 <institor> i probably couldn't implement a heap from memory
01:55:13 <int-e> monochrom: valid if it's fast enough for your purpose
01:55:19 <int-e> KISS and all that
01:55:34 <monochrom> Oh but they didn't write it off their head either. It is their on-paper code library they brought into the contest!
01:55:45 <institor> damn
01:55:52 <institor> i wish i could just bring my red-black tree implementation everywhere
01:55:53 <institor> that would be dope
01:55:58 <Axman6> Guest|3: do you know how much time updateElement takes to run? (not in terms of time but how expensive it is)
01:56:25 <int-e> monochrom: everything to save a few minutes or even seconds, eh
01:56:30 <Axman6> there's a fairly nice GADT red-black tree implementation right?
01:56:50 × aaronv quits (~aaronv@user/aaronv) (Quit: Leaving)
01:56:55 <institor> yeah but i wanted to try to reimplement the algorithms given in CLRS
01:56:58 <int-e> monochrom: I imagine they also have a faster version (with more code) to copy if they need it?
01:56:59 <institor> and it's a good excuse for quickcheck too
01:57:03 × td_ quits (~td@i53870915.versanet.de) (Ping timeout: 246 seconds)
01:57:10 aaronv joins (~aaronv@user/aaronv)
01:57:12 <monochrom> I didn't find it.
01:57:16 <int-e> fun
01:57:31 <monochrom> But I can accept that it is fast enough "because C".
01:58:02 <institor> hasn't stroustrup gotten on stage and said that even if the asymptotics favour a linked list you should still use a vector anyway
01:58:04 × Guest|3 quits (~Guest|3@93-136-208-249.adsl.net.t-com.hr) (Quit: Connection closed)
01:58:06 <institor> for better spatial locality and caching
01:58:06 <Axman6> sorry, meant replaceElement
01:58:11 int-e tends to use Data.Map as a quick&dirty priority queue with minView for extracting the smallest element
01:58:16 <institor> sometimes the engineering just takes precedence
01:58:21 <monochrom> Typing in a real priority queue can waste time even if you just have to transcribe it from your papers.
01:58:50 <int-e> (there's a lot of caveats here... notably, avoiding duplicate keys)
01:58:59 td_ joins (~td@i5387090D.versanet.de)
01:59:11 <int-e> Actually, I lied. I use Data.Set (Prio, Value)
01:59:12 <Axman6> Data.Map.Map is a real priority queue
01:59:26 <int-e> Precisely because of the duplicate key problem.
01:59:30 Guest|3 joins (~Guest|3@93-136-208-249.adsl.net.t-com.hr)
01:59:40 <institor> heh so
01:59:43 <institor> Data.Map is a balanced binary tree?
01:59:44 <Guest|3> so you all are teachers like Albert?
02:00:09 <monochrom> Yes Data.Map is a balanced binary search tree.
02:00:11 <int-e> institor: Yes. size-balanced
02:00:19 <institor> interesting..
02:00:23 <int-e> (which is an implementation detail of course)
02:00:27 <int-e> Data.IntMap is a trie
02:00:43 <institor> don't maps/dictionaries as an abstract data type demand O(1) access though
02:00:53 <institor> well i guess there's collisions which could degenerate to O(n)
02:01:34 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 258 seconds)
02:01:35 <Axman6> Who's Albert?
02:01:35 <institor> well who's doing the "demanding" i guess...
02:01:43 <int-e> Well... no, the abstract interface generally just specifies behavior (input, output), not runtime.
02:01:58 <Guest|3> monochrom
02:02:03 <monochrom> Data structure academia accepts O(lg n).
02:02:18 <institor> i suppose it's the data structure that determines runtime
02:02:19 <int-e> And with persistent data structures, you often have O(log(n)) everything anyway.
02:02:20 <monochrom> To some extent they recognize that O(1) is impossible.
02:02:26 <institor> and association lists also constitute a dictionary...
02:02:59 <int-e> (well, Theta(log(n)) is what I really mean)
02:03:21 × xff0x quits (~xff0x@2405:6580:b080:900:cb93:4506:eebb:2c0b) (Ping timeout: 246 seconds)
02:03:52 × bratwurst quits (~blaadsfa@S010610561191f5d6.lb.shawcable.net) (Ping timeout: 258 seconds)
02:04:43 <Axman6> RAM is ln n, so that's the bst we can do
02:05:18 <int-e> isn't the usualy model O(sqrt(n)) even
02:05:49 <int-e> (because ultimately it's about distance and energy dissipation)
02:11:16 <int-e> (Oh but I also wouldn't use a priority queue for a plain breadth first search.)
02:11:44 <monochrom> Right, that just needs an unpriority fifo queue.
02:12:23 <int-e> I generally just compute a level of the tree at a time, often as a plain list.
02:12:37 <monochrom> Iterative deepening?
02:13:07 <int-e> Nah, that would start from the root each time.
02:13:45 <int-e> I'm thinking of `next_level = curent_level >>= successors` (conceptually; there'll be code for weeding out duplicates somewhere)
02:15:38 <int-e> It's just what I feel is a sweet spot when trading between amount of code and wasted memory.
02:16:31 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
02:20:20 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b858:d331:34dd:9a83) (Remote host closed the connection)
02:20:35 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b858:d331:34dd:9a83)
02:22:20 qhong joins (~qhong@DN160vrd000d6kpg009l6c0000fj.stanford.edu)
02:28:42 × todi quits (~todi@p4fd1a685.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
02:28:47 × td_ quits (~td@i5387090D.versanet.de) (Ping timeout: 258 seconds)
02:29:06 todi joins (~todi@p4fd1ab34.dip0.t-ipconnect.de)
02:29:28 <EvanR> ram access is O(log n), IntMap access is O(n) where n is the number of bits, and HashTables are somehow O(1)
02:29:44 <EvanR> clear as mud
02:30:02 mysl_ joins (~mysl@user/mysl)
02:30:37 td_ joins (~td@i53870905.versanet.de)
02:30:39 × mysl quits (~mysl@user/mysl) (Ping timeout: 246 seconds)
02:31:00 <EvanR> with careful accounting of everything except hash tables, hash tables beat everything by a long shot
02:33:12 × Guest|3 quits (~Guest|3@93-136-208-249.adsl.net.t-com.hr) (Quit: Connection closed)
02:33:47 <EvanR> I wonder what absurd more careful O rating hash tables actually would get awarded
02:36:03 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
02:38:31 <int-e> EvanR: it's far from a theoretical concern: https://en.wikipedia.org/wiki/Collision_attack#Hash_flooding
02:39:08 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 258 seconds)
02:39:28 × qhong quits (~qhong@DN160vrd000d6kpg009l6c0000fj.stanford.edu) (Remote host closed the connection)
02:40:29 <EvanR> oof
02:40:52 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
02:43:00 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
02:45:27 <monochrom> Claim O(0). >:)
02:46:01 <int-e> I always claim O(1).
02:46:21 <int-e> (Nobody will demonstrate that I'm wrong in my lifetime.)
02:47:17 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:48:09 <int-e> Though O(0) has merits. "Nobody will spend any time on this for large enough input size."
02:48:20 <monochrom> I do that too but only for "termination". >:)
02:48:28 <monochrom> Or rather, my thesis supervisor does.
02:51:03 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:53:09 <EvanR> clearly we've been thinking about it upside down the whole time, like temperature = 1/coldness
02:58:52 <int-e> is this #bad-physics now
03:01:06 aaronv joins (~aaronv@user/aaronv)
03:02:31 × waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 258 seconds)
03:03:00 <monochrom> YES! We should measure algorithm speed instead of time: "O(n) time" should become "Ω(1/n)". Then we can state the Heisenbug Uncertainty Principle: Δspeed × Δoutput ≥ prank constant.
03:06:19 × litharge quits (litharge@libera/bot/litharge) (Ping timeout: 600 seconds)
03:06:21 <EvanR> coldness makes sense when you have laser states that can all pile up in the highest energy state, becoming infinitely hot. But still can't go anywhere near absolute zero
03:07:00 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
03:08:07 × aaronv quits (~aaronv@user/aaronv) (Quit: Leaving)
03:08:25 aaronv joins (~aaronv@user/aaronv)
03:09:22 <EvanR> ok I messed that up because you can go higher than infinitely hot
03:10:02 × aforemny quits (~aforemny@i59f516dc.versanet.de) (Ping timeout: 246 seconds)
03:10:17 aforemny_ joins (~aforemny@2001:9e8:6cd9:400:79dd:b9ae:d530:5eae)
03:11:36 litharge joins (litharge@libera/bot/litharge)
03:13:01 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
03:17:33 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 250 seconds)
03:18:43 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
03:35:13 × ubert quits (~Thunderbi@77.119.210.130.wireless.dyn.drei.com) (Ping timeout: 244 seconds)
03:46:17 artem joins (~artem@c-73-103-90-145.hsd1.in.comcast.net)
03:46:17 × ulysses4ever quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Read error: Connection reset by peer)
03:55:08 × yosef` quits (~yosef`@user/yosef/x-2947716) (Quit: Client closed)
03:55:35 Feuermagier is now known as Guest7409
03:55:35 × Guest7409 quits (~Feuermagi@user/feuermagier) (Killed (cadmium.libera.chat (Nickname regained by services)))
03:55:40 Feuermagier joins (~Feuermagi@user/feuermagier)
03:56:24 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 246 seconds)
03:56:57 × Feuermagier quits (~Feuermagi@user/feuermagier) (Max SendQ exceeded)
03:57:20 Feuermagier joins (~Feuermagi@user/feuermagier)
03:59:17 × litharge quits (litharge@libera/bot/litharge) (Remote host closed the connection)
03:59:25 litharge joins (litharge@libera/bot/litharge)
04:06:43 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
04:07:57 aaronv joins (~aaronv@user/aaronv)
04:09:18 Lycurgus joins (~juan@user/Lycurgus)
04:24:03 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 246 seconds)
04:30:36 × vglfr quits (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Remote host closed the connection)
04:31:39 vglfr joins (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
04:32:09 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Tschüss)
04:36:31 caryhartline joins (~caryhartl@168.182.58.169)
04:40:04 talismanick joins (~user@2601:204:ef80:2980::c39)
04:40:39 × vglfr quits (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Ping timeout: 258 seconds)
04:41:07 vglfr joins (~vglfr@88.155.1.251)
04:42:55 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 250 seconds)
04:44:12 × EvanR quits (~EvanR@user/evanr) (Quit: Leaving)
04:44:34 × caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline)
04:44:52 × aforemny_ quits (~aforemny@2001:9e8:6cd9:400:79dd:b9ae:d530:5eae) (Ping timeout: 258 seconds)
04:45:10 EvanR joins (~EvanR@user/evanr)
04:49:00 acidjnk joins (~acidjnk@p200300d6e7072f302de738f6d26fc170.dip0.t-ipconnect.de)
04:49:41 × nckx quits (nckx@libera/staff/owl/nckx) (*.net *.split)
04:50:03 nckx joins (nckx@libera/staff/owl/nckx)
04:51:26 caryhartline joins (~caryhartl@168.182.58.169)
04:53:42 × vglfr quits (~vglfr@88.155.1.251) (Ping timeout: 245 seconds)
04:54:09 vglfr joins (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
04:55:38 aforemny joins (~aforemny@i59F516ED.versanet.de)
04:57:00 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
05:07:34 × systemfault quits (sid267009@id-267009.uxbridge.irccloud.com) (Changing host)
05:07:34 systemfault joins (sid267009@about/typescript/member/systemfault)
05:16:20 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
05:19:02 jackneill__ joins (~Jackneill@20014C4E1E101A0091C70064EC2E3AAF.dsl.pool.telekom.hu)
05:20:14 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:20:51 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
05:21:38 qqq joins (~qqq@92.43.167.61)
05:31:04 Inst joins (~Inst@120.244.192.250)
05:31:22 <Inst> stupid discovery of the day: you can inline type signatures in Haskell, at the cost of having to make everything into an explicit lambda
05:31:42 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
05:31:58 × caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline)
05:32:44 caryhartline joins (~caryhartl@168.182.58.169)
05:33:01 <Inst> https://cdn.discordapp.com/attachments/280036215477239809/1149577202833309736/image.png
05:33:24 <Inst> for someone who whines about style wars, I think the only thing I really have against maxigit wanting to adopt do bulleting for everything is that I didn't come up with it myself
05:33:32 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 246 seconds)
05:35:41 × talismanick quits (~user@2601:204:ef80:2980::c39) (Remote host closed the connection)
05:40:13 <EvanR> Inst, or delete the type signature and read the docs to see what you wrote xD
05:40:48 Pixi` joins (~Pixi@user/pixi)
05:40:51 <Inst> top-level binding with no type signature
05:43:21 <EvanR> sure why not (because while write the code originally type signatures help the compiler help you write what you wanted, and make refactoring easier later)
05:43:25 <EvanR> writing*
05:43:41 × Pixi quits (~Pixi@user/pixi) (Ping timeout: 246 seconds)
05:45:54 <Inst> I mean I'm the kind of guy who's done foo | bool1 = bar1 | bool2 = bar2 as an experiment
05:45:58 <Inst> which is perfectly valid Haskell
05:46:30 <Axman6> Is that supposed to be surprising?
05:48:13 <Inst> it's non-standard, I usually do foo arg1; | bool1 = bar1; | bool2 = bar2...
05:48:43 <mauke> that's a syntax error
05:49:12 <Inst> the first one or the second one? The second one is only a syntax error because of the ellipsis
05:49:24 <mauke> the second one is a syntax error because of the ;
05:49:30 <int-e> I suspect the `;` was just meant to delimit lines
05:49:42 <int-e> not sure, of course
05:49:51 <Inst> oh, yeah, it is a syntax error because of the offset rule
05:49:55 michalz joins (~michalz@185.246.207.221)
05:50:13 <Inst> since it's considered to start on a new line
05:50:27 <Inst> and then terminates the definition
05:50:40 <int-e> there's nothing wrong with foo | cond1 = val1 | cond2 = val2 except for readability if it's all on one line.
05:51:06 <int-e> (and worries about completeness of the conditions)
05:51:28 <Inst> i think it's valid if it's foo |...
05:51:40 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 248 seconds)
05:51:41 <Inst> i.e, it's in a where clause and you're defining a non-function value based on other data
05:52:41 aaronv joins (~aaronv@user/aaronv)
05:53:00 <mauke> > let x | otherwise = "hi" in x
05:53:01 <lambdabot> "hi"
05:53:43 × Inst quits (~Inst@120.244.192.250) (Remote host closed the connection)
05:54:02 Inst joins (~Inst@120.244.192.250)
06:00:00 <Axman6> > let foo x | otherwise /= x = "Oh" | otherwise = "Ok" in foo True
06:00:02 <lambdabot> "Ok"
06:00:39 <int-e> Oh ok!
06:01:49 <Inst> wait, you guys never try foo | bool1 = bar1 | bool2 = bar2 idioms?
06:01:51 <int-e> > let f otherwise | otherwise = 1 | True = 0 in map f [False ..]
06:01:54 <Inst> and I mean with proper whitespacing
06:01:54 <lambdabot> [0,1]
06:02:18 <Axman6> feature flags syntax
06:02:23 <mauke> > let foo x | False <- x = "Oh" | True = "Ok" in foo True
06:02:24 <lambdabot> "Ok"
06:02:31 <int-e> > [() | False]
06:02:32 <lambdabot> []
06:02:40 <int-e> > [() | True]
06:02:42 <lambdabot> [()]
06:02:56 <Axman6> even more fun with monad comprehensions
06:02:59 <Inst> int-e: you knew that'd work, right?
06:03:15 <Inst> i was told [foo | bool] is fairly standard
06:03:22 <int-e> Inst: it is
06:03:29 <int-e> it's also surprisingly useful
06:03:46 <Axman6> it's quite a nice alternative to guard for lists
06:03:57 <Inst> i've used it with <> to append terms, although obv I freak out a little bit about performance
06:04:03 <Inst> then fold on the resulting list
06:04:13 <int-e> Inst: I don't know where you got the idea that foo | bool1 = bar1 | bool2 = bar2 would be uncommon... it's common, it's just a bit too much to put on a single line in clean code
06:04:28 <mauke> > let f xs | []<-xs = 0 | _ : xs<-xs = f xs + 1 in f "four"
06:04:29 <lambdabot> 4
06:04:35 × mxs quits (~mxs@user/mxs) (Server closed connection)
06:04:43 mxs joins (~mxs@user/mxs)
06:04:55 <int-e> pattern guards are a bit less common
06:04:58 <Inst> int-e: well, a production haskeller was impressed because he never thought about it, probably because it was smelly
06:05:18 <Inst> and was thinking about putting it out as an interview question (he doesn't do interviews)
06:06:34 <int-e> So a single person was unaware of that possibility... Haskell is a rich language, it's very easy to be unaware of chunks of the syntax without ever missing them.
06:06:36 <Inst> "which of the following is valid Haskell syntax? foo | bool1 = bar | bool2 = baz... foo, | bool1 = bar {- newline goes here -} {- lots of whitespacing goes here -}..
06:06:52 <Inst> then standard put boolean guards on another line
06:07:00 <mauke> > let f xs | []<-xs = 0 | _ : (f->xs)<-xs = xs + 1 in f "four"
06:07:01 <lambdabot> 4
06:07:05 <Inst> also I'd argue that it's smelly when you're doing a complex chain of conditionals
06:07:11 azimut joins (~azimut@gateway/tor-sasl/azimut)
06:07:11 <int-e> even without extensions like view patterns
06:07:25 <Inst> if you're setting a variable based on inputs, and there's very few guards, it's not that bad
06:08:03 <Inst> where color | bool1 = Red | bool2 = Green | bool3 = Blue isn't bad, is it?
06:09:20 <Axman6> I feel like I'd opt for MultiwayIf there, but mostly because I wouldn't think of doing it that way
06:11:38 <Axman6> I've definitely seen where something | cond = a | cond2 = b | otherwise = c in real code though
06:12:12 <Inst> yeah tbh it's probably still less readable than XMultiWayIf
06:15:34 oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
06:15:56 <Inst> or, rather in this case, just properly formatting the thing with a line extension + guards on separate lines
06:16:55 <Inst> the one thing i'd kill for syntactically, though, is being able to inline kind signatures in data declarations, though
06:17:12 <Inst> you can do that with the type ariables, but not with the base type constructor
06:19:20 yosef` joins (~yosef`@user/yosef/x-2947716)
06:19:23 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:20:48 × swamp_ quits (~zmt00@user/zmt00) (Remote host closed the connection)
06:21:08 swamp_ joins (~zmt00@user/zmt00)
06:24:04 × noctux quits (~noctux@user/noctux) (Server closed connection)
06:24:13 noctux joins (~noctux@user/noctux)
06:39:43 × aaronv quits (~aaronv@user/aaronv) (Remote host closed the connection)
06:40:03 aaronv joins (~aaronv@user/aaronv)
06:40:35 × gaze___ quits (sid387101@id-387101.helmsley.irccloud.com) (Server closed connection)
06:40:39 lortabac joins (~lortabac@2a01:e0a:541:b8f0:eab7:f748:7d5f:b5dd)
06:40:44 gaze___ joins (sid387101@id-387101.helmsley.irccloud.com)
06:42:46 chele joins (~chele@user/chele)
06:46:57 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
06:46:57 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
06:47:37 qhong joins (~qhong@rescomp-21-400677.stanford.edu)
06:50:37 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
06:52:43 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
06:59:35 <Axman6> phma: wanna share that code again and we'll make it go superfast?
07:00:07 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 248 seconds)
07:05:08 chromoblob joins (~user@37.113.180.113)
07:05:09 <Axman6> phma: if you use vector, your bitRotate should look something like: rotBitcount src mult = generate (V.length src) (\i -> unsafeIndex src ((i+len-byte) `mod` len) `unsafeShiftL` bit .|. unsafeIndex src ((i+len-byte-1) `mod` len) `unsafeShiftR` (bit-8)). that shoudl eliminate most bounds checks since you're guaranteeing that you aren't creating indices and shifts out of range (you need to check that the changes I made are actually valid though...)
07:06:52 <Axman6> the benefit of using generate instead of listArray is that internally it can allocate a mutable array that is exactly the right size and then just write into it, to do that with listArray, it needs to traverse the list twice to find the length, then write each value
07:09:43 × chromoblob quits (~user@37.113.180.113) (Ping timeout: 248 seconds)
07:09:55 sinbad joins (~sinbad@user/sinbad)
07:11:51 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
07:13:21 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Ping timeout: 245 seconds)
07:14:41 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:16:27 <phma> here's the repo, I just pushed it: https://github.com/phma/wring-twistree
07:17:45 <phma> I looked at Data.Bits and found there's (.>>.), which is shorter when infixed
07:18:07 <int-e> Axman6: Uhm listArray gets the array bounds as its first argument. There are reasons to prefer `vector` (better fusion, less overly abstraced indexing nonsense), but this double traversal story isn't true.
07:19:22 <Axman6> oh right, I forgot about that (:
07:19:46 <int-e> Vector.fromList is probably where that story comes from?
07:19:49 <phma> The S-boxes are a two-dimensional array (3×256). Would that be better as a vector? Or can a vector do that? It's computed once, when you key the Wring, then passed around.
07:19:54 <Axman6> yes, that's likely
07:20:10 Fischmiep joins (~Fischmiep@user/Fischmiep)
07:20:37 <Axman6> vector only does one dimensional indices, but it's trivial to convert between the two (particularly when the smallest size is a power of two, you just need masks and shifts)
07:20:43 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 240 seconds)
07:21:24 <Axman6> or shift and .|. I guess, if you're going (x,y) -> index
07:21:42 <phma> Running the bytes through the s-boxes seems pretty fast. I think I'll leave it as is.
07:22:11 <int-e> "overly abstracted indexing" -- Ix looks like a great abstraction, and it is nice as far as convenience goes... but it also tends to be very slow.
07:23:05 × cafkafk_ quits (~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
07:23:07 <Axman6> phma: if performance is a big concern, making sure you use functions like unsafeShifts and unsafeIndex makes a massive improvement (particularly if you then use the LLVM backend)
07:23:31 <phma> how do I use LLVM?
07:23:34 cafkafk_ joins (~cafkafk@fsf/member/cafkafk)
07:24:19 <Axman6> the GHC flag is -fllvm, I can't remember how you pass that to cabal/stack, you'd need to check their documentation. I think it's an example in the stack docs though
07:25:46 <phma> 16.5 s, not much change
07:26:03 <phma> now I'll try the unsafe shift
07:26:10 <Axman6> No, it's not a magic bullet, it can't make slow code fast magically sadly
07:26:14 fendor joins (~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f)
07:26:22 <phma> now one of the args to shift is negative, I'll have to flip it
07:27:31 <Axman6> you should also try using unsafeAt instead of (!)
07:27:59 <Axman6> if you know it'll always be negative, then just make it positive and shift the other direction
07:28:35 <phma> I'm running test.sh before and after to make sure that I don't mess up the algorithm with unsafe shifts
07:28:51 <Axman6> sensible :)
07:29:21 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b858:d331:34dd:9a83) (Remote host closed the connection)
07:29:28 <probie> re LLVM: In my experience, about all you'll reliably get over NCG is better loop unrolling (and that only works if what you've written actually compiles to a loop)
07:29:50 <Axman6> generally when it comes to this sort of array and bit level stuff, it's best to make sure everything works using the safe functions (use shiftL or shiftR instead of shift, you shouldn't need a branch in there), then you can replace indexing and shifts with their unsafe versions
07:30:13 <Axman6> probie: this is very array heavy code so should be a good candidate for LLVM
07:30:57 aaronv joins (~aaronv@user/aaronv)
07:31:47 <phma> does unsafe shift work right when you shift a byte by 8?
07:32:10 <Axman6> probably not
07:32:28 <Axman6> you need to make sure the inputs are between 0 and 7
07:32:31 <Axman6> IIRC
07:32:44 <phma> the Rust code didn't work right, I had to make an if statement
07:33:32 gmg joins (~user@user/gehmehgeh)
07:33:56 <Axman6> if you're just doing it once per call to rotBitcount it should be fine, just make sure you compute your constants correctly so you can use the unsafe functions
07:33:59 <int-e> rust has dedicated bit rotation operation
07:34:18 <Axman6> this requires shifting in bits from a different word though
07:34:28 <int-e> ah
07:34:30 mmhat joins (~mmh@p200300f1c7178a9eee086bfffe095315.dip0.t-ipconnect.de)
07:34:35 <Axman6> so it's a global rotation, not rotation of a single byte
07:34:41 × mmhat quits (~mmh@p200300f1c7178a9eee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
07:34:54 <Axman6> (for very small definitions of "global")
07:34:58 <phma> test passed so far
07:34:58 <int-e> yeah, missed that.
07:36:21 cfricke joins (~cfricke@user/cfricke)
07:36:52 <phma> I'm doing it twice per byte (one left shift, one right shift).
07:37:48 <phma> rotBitcount rotates an entire buffer (1 MiB in the timed code) by its population count
07:38:09 <Axman6> you could split it into the case where the rotation is a multiple of 8, so you're just indexing into other indices, and then the more expensive one where you need to index into adjacent bytes and merge them
07:38:43 <phma> that's what the rust does
07:39:06 <phma> but the haskell is working properly, at least on this cpu
07:39:10 <Axman6> seems like a sensible performance improvement (which in the crypto world is generally regarded as A Bad Idea)
07:39:23 <phma> hein?
07:39:30 <Axman6> since a timing attack could tell when the pop count is a multiple of 8 very easily then
07:39:39 <phma> ah
07:40:29 <phma> test 524288, almost done
07:41:13 × shawwwn quits (sid6132@id-6132.helmsley.irccloud.com) (Server closed connection)
07:41:22 shawwwn joins (sid6132@id-6132.helmsley.irccloud.com)
07:41:41 <phma> 15.2 s
07:41:57 <Axman6> keep in mind that a shift o 0 is fine but 8 is not, so for both shifts you can just apply `mod` 8 to always be between 0-7
07:41:59 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
07:42:22 <phma> the pop count could be 0 mod 8 on one round, and 5 mod 8 the next
07:42:55 <Axman6> so you'd use (8 - n) `mod` 8 (or .&. 0x7)
07:42:57 <phma> changing shift by 8 to shift by 8 is wrong though, it'll combine two whole bytes into one output byte
07:43:15 <phma> I mean to shif by 0
07:43:35 × AmyMalik quits (ellenor@callbox.trd.is) (Server closed connection)
07:43:53 <Axman6> oh right, yeah a mask there would be useful
07:46:57 <phma> How can I tell if I specialized it to the right type?
07:47:09 <Axman6> or if you're on ARM64 you can just use the instructions that exist for exactly this sort of bit movement nonsense, like UBFX https://developer.arm.com/documentation/102374/0101/Data-processing---bit-manipulation?lang=en
07:47:26 <Axman6> what is 'it'?
07:47:36 <phma> rotBitcount
07:48:11 mechap joins (~mechap@user/mechap)
07:48:20 <phma> I'm on AMD
07:48:38 <Axman6> if you're using vector, there won't be any generic types, but if you're still using Array then, if it were me, i would add the SPECIALISE pragmas I know I want and make sure it has been
07:49:37 <phma> RBIT looks fun
07:50:01 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
07:50:06 <Axman6> yeah that was mostly a joke (thought I did have some plans to add optimisations to use those instructions when GHC saw patterns like x .&. ((1 `shiftL` len - 1) `shiftL` offset) `shiftR` offset
07:50:37 <Axman6> because that's exactly what UBFX does
07:52:21 <phma> is there a REV32?
07:52:48 <phma> the key schedule would use REV16 if it were on ARM
07:52:49 <Axman6> https://developer.arm.com/documentation/ddi0602/2022-09/Base-Instructions/REV32--Reverse-bytes-in-32-bit-words-?lang=en
07:54:40 <phma> make sure it has been what?
07:55:57 × micro quits (~micro@user/micro) (Ping timeout: 260 seconds)
07:56:58 <phma> Axman6: you seem to have broken off your sentence. What's the rest of the sentence?
07:57:33 × td_ quits (~td@i53870905.versanet.de) (Quit: waking up from the american dream ...)
07:57:38 <Axman6> specialised
07:57:57 <phma> how do I do that?
07:57:59 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:58:43 <Axman6> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/pragmas.html#specialize-pragma
07:59:18 × mechap quits (~mechap@user/mechap) (Ping timeout: 246 seconds)
08:00:19 <phma> I think I have to specialize roundEncrypt and roundDecrypt too, those are what call rotBitcount
08:00:27 × She quits (haveident@libera/staff/she/her) (Quit: Either upgrades, or the world's ending.)
08:01:30 mechap joins (~mechap@user/mechap)
08:03:15 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b858:d331:34dd:9a83)
08:03:49 micro joins (~micro@user/micro)
08:07:20 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:07:32 Ellenor joins (ellenor@callbox.trd.is)
08:07:36 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Ping timeout: 255 seconds)
08:07:51 arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
08:07:57 She joins (haveident@libera/staff/she/her)
08:08:02 CiaoSen joins (~Jura@2a05:5800:296:dc00:664b:f0ff:fe37:9ef)
08:10:54 Fischmiep joins (~Fischmiep@user/Fischmiep)
08:11:55 <phma> Time is now down to 10 s
08:12:07 × arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 248 seconds)
08:15:13 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
08:15:13 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
08:15:13 finn_elija is now known as FinnElija
08:15:43 <phma> safe or unsafe shift makes no difference to the run time
08:20:30 arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
08:21:54 × aaronv quits (~aaronv@user/aaronv) (Quit: Leaving)
08:22:47 × mechap quits (~mechap@user/mechap) (Ping timeout: 248 seconds)
08:24:55 × arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 248 seconds)
08:28:43 <phma> rotBitcount now takes 9.6% of the time.
08:29:07 td_ joins (~td@i53870905.versanet.de)
08:29:11 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:31:57 × phma quits (~phma@host-67-44-208-5.hnremote.net) (Read error: Connection reset by peer)
08:32:44 × shachaf quits (~shachaf@user/shachaf) (Server closed connection)
08:32:47 phma joins (phma@2001:5b0:212a:b168:8a63:fd9c:4a28:c70e)
08:32:53 shachaf joins (~shachaf@user/shachaf)
08:37:00 × caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline)
08:49:31 × yosef` quits (~yosef`@user/yosef/x-2947716) (Quit: Client closed)
08:49:36 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:57:30 ubert joins (~Thunderbi@2001:871:263:95d1:53a2:cab9:2747:4277)
09:03:41 × ft quits (~ft@p3e9bc1b6.dip0.t-ipconnect.de) (Quit: leaving)
09:05:08 chromoblob joins (~user@37.113.180.113)
09:09:55 danza joins (~francesco@151.57.215.192)
09:11:03 × chromoblob quits (~user@37.113.180.113) (Ping timeout: 255 seconds)
09:12:23 × ubert quits (~Thunderbi@2001:871:263:95d1:53a2:cab9:2747:4277) (Ping timeout: 248 seconds)
09:14:10 ubert joins (~Thunderbi@2001:871:263:95d1:bc24:1a8e:fab7:1bea)
09:17:11 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
09:20:32 sm joins (~sm@plaintextaccounting/sm)
09:21:03 × sm quits (~sm@plaintextaccounting/sm) (Client Quit)
09:21:20 × danza quits (~francesco@151.57.215.192) (Remote host closed the connection)
09:21:42 danza joins (~francesco@151.57.215.192)
09:22:28 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
09:22:31 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 248 seconds)
09:24:09 × cawfee quits (~root@2406:3003:2077:2758::babe) (Server closed connection)
09:24:28 cawfee joins (~root@2406:3003:2077:2758::babe)
09:26:15 × danza quits (~francesco@151.57.215.192) (Ping timeout: 248 seconds)
09:27:15 sm joins (~sm@plaintextaccounting/sm)
09:27:16 × sm quits (~sm@plaintextaccounting/sm) (Client Quit)
09:32:10 × m1dnight quits (~christoph@78-22-4-67.access.telenet.be) (Quit: WeeChat 4.0.2)
09:32:38 m1dnight joins (~christoph@78-22-4-67.access.telenet.be)
09:34:13 g00gler joins (uid125351@id-125351.uxbridge.irccloud.com)
09:38:43 kuribas joins (~user@ptr-17d51eo6k7h88xpr7hr.18120a2.ip6.access.telenet.be)
09:40:27 × NinjaTrappeur quits (~ninja@user/ninjatrappeur) (Changing host)
09:40:27 NinjaTrappeur joins (~ninja@about/aquilenet/vodoo/NinjaTrappeur)
09:43:31 cael_ joins (~quassel@host109-148-244-226.range109-148.btcentralplus.com)
09:49:24 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:53:46 × haveo quits (~haveo@sl35.iuwt.fr) (Ping timeout: 245 seconds)
09:53:47 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
09:59:06 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:59:13 × driib quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
09:59:59 driib joins (~driib@vmi931078.contaboserver.net)
10:02:34 × caubert_ quits (~caubert@user/caubert) (Quit: WeeChat 3.8)
10:02:45 caubert joins (~caubert@user/caubert)
10:05:39 haveo joins (~haveo@sl35.iuwt.fr)
10:08:04 mysl joins (~mysl@user/mysl)
10:09:10 × mysl_ quits (~mysl@user/mysl) (Ping timeout: 258 seconds)
10:14:03 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 255 seconds)
10:17:18 mysl_ joins (~mysl@user/mysl)
10:17:52 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
10:19:08 × mysl quits (~mysl@user/mysl) (Ping timeout: 258 seconds)
10:20:04 mysl_ is now known as mysl
10:20:21 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 246 seconds)
10:22:18 mysl_ joins (~mysl@user/mysl)
10:22:47 × ubert quits (~Thunderbi@2001:871:263:95d1:bc24:1a8e:fab7:1bea) (Ping timeout: 248 seconds)
10:23:00 danza joins (~francesco@151.57.215.192)
10:24:53 × mysl quits (~mysl@user/mysl) (Ping timeout: 258 seconds)
10:27:19 mysl joins (~mysl@user/mysl)
10:28:07 × mysl_ quits (~mysl@user/mysl) (Ping timeout: 248 seconds)
10:30:04 × danza quits (~francesco@151.57.215.192) (Ping timeout: 248 seconds)
10:35:17 mysl_ joins (~mysl@user/mysl)
10:35:35 × CiaoSen quits (~Jura@2a05:5800:296:dc00:664b:f0ff:fe37:9ef) (Ping timeout: 248 seconds)
10:37:14 ubert joins (~Thunderbi@2001:871:263:95d1:77ed:664c:9083:f304)
10:37:16 × mysl quits (~mysl@user/mysl) (Ping timeout: 258 seconds)
10:40:16 mysl joins (~mysl@user/mysl)
10:42:03 × mysl_ quits (~mysl@user/mysl) (Ping timeout: 246 seconds)
10:42:53 × kuribas quits (~user@ptr-17d51eo6k7h88xpr7hr.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
10:45:18 mysl_ joins (~mysl@user/mysl)
10:46:07 × mysl quits (~mysl@user/mysl) (Ping timeout: 244 seconds)
10:49:13 sm joins (~sm@plaintextaccounting/sm)
10:49:35 × Flow quits (~none@gentoo/developer/flow) (Server closed connection)
10:50:18 mysl joins (~mysl@user/mysl)
10:50:20 Flow joins (~none@gentoo/developer/flow)
10:51:02 Ellenor is now known as AmyMalik
10:51:03 × mysl_ quits (~mysl@user/mysl) (Ping timeout: 248 seconds)
10:54:11 cael__ joins (~quassel@host109-148-244-226.range109-148.btcentralplus.com)
10:54:24 × cael_ quits (~quassel@host109-148-244-226.range109-148.btcentralplus.com) (Ping timeout: 258 seconds)
10:58:35 × Arsen quits (arsen@gentoo/developer/managarm.dev.Arsen) (Server closed connection)
10:58:53 Arsen joins (arsen@gentoo/developer/managarm.dev.Arsen)
10:59:06 mysl_ joins (~mysl@user/mysl)
11:01:18 × mysl quits (~mysl@user/mysl) (Ping timeout: 246 seconds)
11:04:39 mysl joins (~mysl@user/mysl)
11:07:03 × mysl_ quits (~mysl@user/mysl) (Ping timeout: 258 seconds)
11:07:08 × Dykam quits (Dykam@dykam.nl) (Server closed connection)
11:07:17 Dykam joins (Dykam@dykam.nl)
11:11:39 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 258 seconds)
11:13:29 mysl_ joins (~mysl@user/mysl)
11:13:34 × shane quits (~shane@ana.rch.ist) (Server closed connection)
11:13:42 shane joins (~shane@ana.rch.ist)
11:13:59 × mysl quits (~mysl@user/mysl) (Ping timeout: 248 seconds)
11:16:40 xff0x joins (~xff0x@2405:6580:b080:900:775:bab:62a6:3a1d)
11:20:41 JordiGH joins (~jordi@user/jordigh)
11:25:44 sm joins (~sm@plaintextaccounting/sm)
11:27:00 actioninja0 joins (~actioninj@user/actioninja)
11:27:51 × actioninja quits (~actioninj@user/actioninja) (Ping timeout: 255 seconds)
11:27:51 actioninja0 is now known as actioninja
11:27:54 × ubert quits (~Thunderbi@2001:871:263:95d1:77ed:664c:9083:f304) (Ping timeout: 246 seconds)
11:28:22 ubert joins (~Thunderbi@2001:871:263:95d1:270d:fe5e:9aae:336d)
11:30:53 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:33:49 kuribas joins (~user@ptr-17d51eo6k7h88xpr7hr.18120a2.ip6.access.telenet.be)
11:34:57 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
11:35:12 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 246 seconds)
11:36:55 × ubert quits (~Thunderbi@2001:871:263:95d1:270d:fe5e:9aae:336d) (Ping timeout: 248 seconds)
11:44:36 × vglfr quits (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Ping timeout: 245 seconds)
11:54:12 × califax quits (~califax@user/califx) (Remote host closed the connection)
11:54:33 califax joins (~califax@user/califx)
11:56:53 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 258 seconds)
12:10:56 × artem quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Remote host closed the connection)
12:13:36 JordiGH joins (~jordi@user/jordigh)
12:17:35 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 258 seconds)
12:18:35 ulysses4ever joins (~artem@2601:249:4380:8950:f474:e3f8:9806:671)
12:22:19 <sm> @where+ hs-opt-handbook https://haskell.foundation/hs-opt-handbook.github.io/contents.html Haskell Optimization Handbook
12:22:19 <lambdabot> Done.
12:22:47 <sm> lambdabot seems to have had a few shots of espresso. Instant response now!
12:23:51 × stites quits (~stites@130.44.147.204) (Ping timeout: 255 seconds)
12:24:40 × qqq quits (~qqq@92.43.167.61) (Remote host closed the connection)
12:24:51 stites joins (~stites@2607:fb90:ad62:807c:d15b:ce72:ad88:3242)
12:25:18 × flukiluke quits (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Ping timeout: 246 seconds)
12:25:37 flukiluke joins (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962)
12:29:52 × stites quits (~stites@2607:fb90:ad62:807c:d15b:ce72:ad88:3242) (Read error: Connection reset by peer)
12:30:43 × SethTisue quits (sid14912@id-14912.ilkley.irccloud.com) (Server closed connection)
12:30:53 SethTisue joins (sid14912@id-14912.ilkley.irccloud.com)
12:31:54 stites joins (~stites@2607:fb90:ad62:807c:d15b:ce72:ad88:3242)
12:33:01 × sinbad quits (~sinbad@user/sinbad) (Quit: Leaving.)
12:33:16 vglfr joins (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
12:34:48 × ph88^ quits (~ph88@ip5b403cd4.dynamic.kabel-deutschland.de) (Quit: Leaving)
12:40:18 × stites quits (~stites@2607:fb90:ad62:807c:d15b:ce72:ad88:3242) (Read error: Connection reset by peer)
12:40:43 stites joins (~stites@155.33.134.55)
12:51:15 ubert joins (~Thunderbi@178.115.49.191.wireless.dyn.drei.com)
12:55:13 × kuribas quits (~user@ptr-17d51eo6k7h88xpr7hr.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
12:56:21 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Quit: WeeChat 4.0.3)
12:58:39 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
13:01:04 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
13:01:35 × it_ quits (~quassel@v2202212189510211193.supersrv.de) (Quit: ,o>)
13:01:52 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
13:01:56 it_ joins (~quassel@v2202212189510211193.supersrv.de)
13:04:56 sm joins (~sm@plaintextaccounting/sm)
13:06:03 × sm quits (~sm@plaintextaccounting/sm) (Client Quit)
13:06:19 Simikando joins (~Simikando@adsl-dyn91.91-127-22.t-com.sk)
13:08:09 mysl_ is now known as mysl
13:13:10 waleee joins (~waleee@h-176-10-137-138.na.cust.bahnhof.se)
13:18:58 × koolazer quits (~koo@user/koolazer) (Server closed connection)
13:19:03 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
13:20:09 × Simikando quits (~Simikando@adsl-dyn91.91-127-22.t-com.sk) (Read error: Connection reset by peer)
13:20:28 Simikando joins (~Simikando@adsl-dyn91.91-127-22.t-com.sk)
13:24:07 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 248 seconds)
13:24:26 koolazer joins (~koo@user/koolazer)
13:29:29 × texasmynsted quits (~username@99.96.221.112) (Quit: WeeChat 3.0)
13:29:51 azimut joins (~azimut@gateway/tor-sasl/azimut)
13:32:39 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 248 seconds)
13:33:11 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
13:33:33 libertyprime joins (~libertypr@203.96.203.44)
13:33:40 img joins (~img@user/img)
13:33:49 × img quits (~img@user/img) (Remote host closed the connection)
13:34:46 img joins (~img@user/img)
13:44:23 × stites quits (~stites@155.33.134.55) (Read error: Connection reset by peer)
13:44:50 × it_ quits (~quassel@v2202212189510211193.supersrv.de) (Quit: ,o>)
13:45:45 it_ joins (~quassel@v2202212189510211193.supersrv.de)
13:45:55 stites joins (~stites@155.33.134.55)
13:50:54 ezzieygu1wuf joins (~Unknown@user/ezzieyguywuf)
13:51:32 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 250 seconds)
13:53:08 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.0.4)
13:54:24 × Deide quits (d0130db69a@user/deide) (Server closed connection)
14:01:11 <ddellacosta> I didn't realize how weird Alternative is until just now. I feel slightly dirty with how liberally I use guard everywhere.
14:01:49 <[exa]> wait Alternative is weird?
14:02:49 <haskellbridge> <j​ade> news to me as well
14:02:52 <ddellacosta> [exa]: I mean, from reading this https://wiki.haskell.org/Typeclassopedia#Failure_and_choice:_Alternative.2C_MonadPlus.2C_ArrowPlus it seems like there are few instances that work distinctly from each other, and the laws aren't super well thought out
14:03:33 <ddellacosta> and like, one thing in particular that I never considered was how the Monoid instance for Maybe works distinctly from Maybe's own Monoid instance, and that is distinct from how [] works w/Alternative
14:03:56 <ddellacosta> anyways, sorry just going down this rabbit hole and felt like expressing my surprise
14:04:42 <[exa]> ddellacosta: not a big problem, I just wanted to kinda distill what is the weird part
14:04:55 <[exa]> it's certainly surprising in cases, esp. with the left bias
14:05:15 <[exa]> (perhaps the story with Validation might shed some light on that)
14:06:06 JordiGH joins (~jordi@user/jordigh)
14:06:25 <ddellacosta> [exa]: yeah amusingly I came back to read that typeclassopedia entry after starting with trying to figure out how to silence a warning about this in PureScript: https://discourse.purescript.org/t/unbiasing-the-semigroup-instance-for-map/1935, and following an email thread from there
14:06:52 <[exa]> I'd say that people love to ignore the left bias :]
14:07:02 <ddellacosta> I'll take a look at Validation, also not something I've thought much about
14:07:04 <[exa]> btw what's the "Maybe's own Monoid instance" ?
14:07:07 × Simikando quits (~Simikando@adsl-dyn91.91-127-22.t-com.sk) (Ping timeout: 250 seconds)
14:07:37 <ddellacosta> [exa]: to quote directly from that link, as it's a bit buried: "[] is an instance, with empty given by the empty list, and (<|>) equal to (++). It is worth pointing out that this is identical to the Monoid instance for [a], whereas the Alternative and Monoid instances for Maybe are different: the Monoid instance for Maybe a requires a Monoid instance for a, and monoidally combines the contained
14:07:39 <ddellacosta> values when presented with two Justs."
14:08:10 <ddellacosta> puts it better than I can
14:08:49 <[exa]> ah, so it's about that Monoidal and Alternative behavior differs surprisingly
14:09:07 <lortabac> I've always found Alternative weird too
14:09:18 <lortabac> I think there has been a similar discussion in the past here
14:09:26 <ddellacosta> yeah I'm sure, I'm a bit late to the party lol
14:09:48 <lortabac> also what's the meaning of the IO instance?
14:09:49 <ddellacosta> it's interesting though, it is super useful regardless
14:10:03 <ddellacosta> oh yeah that's also funky. It feels a bit like every instance has its own set of laws
14:10:25 <[exa]> ddellacosta: IMO this is more of a Monoid problem. I always see that there's moreless one reasonable and simple way how to do the failure-avoiding instance for Maybe, but there are many ways how to combine Maybes monoidically while technically still being a perfect Monoid
14:10:29 × bcmiller quits (~bm3719@66.42.95.185) (Server closed connection)
14:10:37 <ddellacosta> [exa]: that's a good point
14:10:39 <[exa]> (related: Sum, Product, Endo, ... marks)
14:10:39 bcmiller joins (~bm3719@66.42.95.185)
14:11:10 <ddellacosta> I mean, you could generalize that to the tradeoffs between modules and typeclasses, I suppose
14:11:18 <[exa]> I'm not sure if defaulting to the "natural" behavior in the default instance is somehow supported, like that it would be the only choice or so
14:11:26 <ddellacosta> but yeah Monoid suffers a lot from that
14:11:30 <[exa]> *only _other_ choice than what Alternative does
14:11:34 <lortabac> TBH I've never found Alternative very useful either
14:11:44 <[exa]> it helps here and there
14:11:48 <[exa]> parsecs
14:11:49 <[exa]> :]
14:12:09 <lortabac> except 'asum', we almost never write functions that are generic over Alternative
14:12:10 <ddellacosta> lortabac: it's somewhat trivial but I really like how much minor boilerplate the Maybe instance for guard can eliminate, and yeah for parsing it can be handy
14:12:51 <lortabac> ah yes, there is 'guard'
14:12:57 <lortabac> I hadn't thought about it
14:13:42 <[exa]> ddellacosta: kinda wondering, is there even any other valid implementation of the binary&nullary operation for Maybe that would not be isomorphic to either Alternative or Monoid as we have it now?
14:14:04 <[exa]> except ofc for 1] right bias instead of left 2] trivial case of "all is Nothing"
14:14:36 <[exa]> btw cf.: First, Last -- https://hackage.haskell.org/package/base-4.18.0.0/docs/Data-Monoid.html#t:First
14:15:02 <ddellacosta> I have no idea
14:15:25 <ddellacosta> interesting question tho
14:17:02 <[exa]> I'd say nope, you either don't bring in any assumptions and you can neither combine the valutes nor create a error-less Just; or you start bringing in typeclasses and Monoid assumption is a kindof natural one right
14:18:03 <[exa]> so perhaps the `Alternative a => Alternative (Maybe a)` would be missing, but that overlaps already
14:19:22 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
14:20:55 <[exa]> ddellacosta: and perhaps related, this was a really nice find for me once: https://hackage.haskell.org/package/lens-5.2.3/docs/Control-Lens-Combinators.html#v:ala
14:30:15 × vglfr quits (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Read error: Connection reset by peer)
14:30:24 vglfr joins (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
14:31:35 × bwe quits (~bwe@2a01:4f8:1c1c:4878::2) (Server closed connection)
14:31:43 bwe joins (~bwe@2a01:4f8:1c1c:4878::2)
14:31:51 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:eab7:f748:7d5f:b5dd) (Quit: WeeChat 2.8)
14:37:11 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:42:15 <ddellacosta> [exa]: thank you for that link! I swear I saw that function maybe in a puzzle game online a while back, randomly? ...and didn't follow up on it
14:43:37 <ddellacosta> I cannot for the life of me remember the link to that game though
14:49:18 <ddellacosta> and yeah that makes sense re: possible Monoid instances for that, I agree. Maybe's structure constrains the options pretty simply I guess huh
14:49:29 ph88 joins (~ph88@ip5b403cd4.dynamic.kabel-deutschland.de)
14:50:21 × fendor quits (~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f) (Remote host closed the connection)
14:50:59 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 246 seconds)
14:51:35 × cael__ quits (~quassel@host109-148-244-226.range109-148.btcentralplus.com) (Ping timeout: 248 seconds)
14:51:51 cael_ joins (~quassel@host109-148-244-226.range109-148.btcentralplus.com)
14:52:29 sm joins (~sm@plaintextaccounting/sm)
14:55:24 <ph88> how can i compile this? https://github.com/elaforge/fix-imports i only use stack normally
14:55:40 × acidjnk quits (~acidjnk@p200300d6e7072f302de738f6d26fc170.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
14:58:03 <albet70> is Karp-Rabin related to Edmonds-Karp?
14:58:21 <yushyin> ph88: extra-deps: allows for git repos, i would assume
14:58:50 <[exa]> albet70: in which sense precisely? (50% of folks is shared! :D )
14:59:42 <[exa]> ph88: the cabal.project is borked by user's local files, I guess you should open an issue or so
15:00:23 <[exa]> ph88: you might have luck by just removing this line and wishing that the other package exists https://github.com/elaforge/fix-imports/blob/master/cabal.project#L3
15:01:46 <ph88> yushyin, [exa] i'm getting an error like this https://bpa.st/RK7VA [exa] i did your suggested change in the cabal file
15:02:11 <albet70> [exa] , I don't know, :)
15:02:20 <[exa]> ph88: why not compile just with `cabal run` ?
15:02:46 <[exa]> albet70: anyway rabin-karp is the hashy string search algorithm, and the other is afaik for maximum flows in networks, not very related imo
15:02:48 <ph88> [exa], i don't have cabal only stack
15:03:34 <[exa]> ph88: wait how come? (I didn't think that is possible)
15:05:20 <ph88> [exa], i don't know, i never installed it. I don't have it as a command on the CLI
15:05:28 Simikando joins (~Simikando@adsl-dyn91.91-127-22.t-com.sk)
15:05:51 <[exa]> ph88: maybe try `stack exec cabal -- run` or so
15:06:00 <ph88> ok
15:06:45 <[exa]> ohyeah, here: https://docs.haskellstack.org/en/stable/faq/index.html#can-i-run-cabal-commands-inside-stack-exec
15:06:49 <ph88> Executable named cabal not found on path
15:07:00 <ph88> oh thanks for the link i will look
15:07:33 <[exa]> looks like I misplaced the --
15:07:56 × She quits (haveident@libera/staff/she/her) (Quit: Either upgrades, or the world's ending.)
15:07:57 <[exa]> anyway AFAIK stack must have a cabal binary stashed somewhere, at least internally, so it should work
15:08:04 She joins (haveident@libera/staff/she/her)
15:08:13 <ph88> stack exec cabal -- run
15:08:14 <ph88> stack exec -- cabal exec -- cabal run
15:08:19 <ph88> stack exec -- cabal run
15:08:29 <ph88> tried these 3 but i get the same: Executable named cabal not found on path
15:08:38 <sclv> stack doesn’t have a cabal binaru
15:08:38 Lycurgus joins (~juan@user/Lycurgus)
15:08:46 <sclv> only links the lib
15:08:50 <[exa]> okay that explains it
15:09:05 mc47 joins (~mc47@xmonad/TheMC47)
15:11:17 <ph88> is there any other program that can remove unused imports ?
15:14:22 <[exa]> I just run the ghc with the warning and fix all warnings
15:14:26 <[exa]> and -Werror helps
15:14:41 <sm> stack doesn't use a cabal binary, it links to the Cabal library
15:15:44 bratwurst joins (~blaadsfa@S010610561191f5d6.lb.shawcable.net)
15:16:42 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
15:19:10 <sm> as was just said. dangit eyes, dangit crappy monitor..
15:19:49 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
15:20:35 × Simikando quits (~Simikando@adsl-dyn91.91-127-22.t-com.sk) (Remote host closed the connection)
15:20:52 <sm> I tried building fix-imports with stack, it seems to have very constrained deps and it's hard to figure out the right resolver
15:20:59 <sm> but if you want a cabal binary, you could just install it
15:22:14 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 246 seconds)
15:23:34 <sm> there's also https://hackage.haskell.org/package/hls-refine-imports-plugin
15:24:45 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
15:24:46 × bratwurst quits (~blaadsfa@S010610561191f5d6.lb.shawcable.net) (Ping timeout: 255 seconds)
15:25:04 <sm> and https://hackage.haskell.org/package/importify (2017)
15:29:03 justsomeguy joins (~justsomeg@user/justsomeguy)
15:29:06 ph88^ joins (~ph88@ip5b403cd4.dynamic.kabel-deutschland.de)
15:29:55 sinbad joins (~sinbad@user/sinbad)
15:31:56 × libertyprime quits (~libertypr@203.96.203.44) (Ping timeout: 258 seconds)
15:38:44 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
15:38:46 × stites quits (~stites@155.33.134.55) (Read error: Connection reset by peer)
15:39:11 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b858:d331:34dd:9a83) (Remote host closed the connection)
15:39:26 stites joins (~stites@2607:fb90:ad60:c188:2612:e938:afc1:2f1e)
15:39:28 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
15:40:21 × stites quits (~stites@2607:fb90:ad60:c188:2612:e938:afc1:2f1e) (Read error: Connection reset by peer)
15:40:43 stites joins (~stites@155.33.134.55)
15:45:27 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 248 seconds)
15:48:45 Inst joins (~Inst@120.244.192.250)
15:49:16 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Tschüss)
15:50:14 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
15:51:07 ft joins (~ft@p4fc2ae5a.dip0.t-ipconnect.de)
16:00:19 Sgeo joins (~Sgeo@user/sgeo)
16:10:11 danza joins (~francesco@151.46.222.150)
16:10:34 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
16:14:43 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds)
16:16:24 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:18:42 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
16:18:51 × danza quits (~francesco@151.46.222.150) (Ping timeout: 244 seconds)
16:19:28 × ubert quits (~Thunderbi@178.115.49.191.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
16:20:59 × ph88^ quits (~ph88@ip5b403cd4.dynamic.kabel-deutschland.de) (Quit: Leaving)
16:23:14 acidjnk joins (~acidjnk@p200300d6e7072f30251e7d7a920dd919.dip0.t-ipconnect.de)
16:29:04 arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
16:29:52 <ph88> anyone want to help with this parsing code? https://github.com/elaforge/fix-imports/pull/4 i'm not particularly familiar with the codebase
16:32:04 aaronv joins (~aaronv@user/aaronv)
16:33:07 <ph88> sm, thanks importify looks good
16:33:27 × arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 248 seconds)
16:34:36 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
16:38:30 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:39:26 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:40:44 <sm> because it's six years old, you'll have to work harder to install it
16:49:27 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f)
16:49:42 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f) (Remote host closed the connection)
16:49:57 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f)
16:50:56 danza joins (~francesco@151.46.222.150)
16:52:42 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 246 seconds)
16:53:47 <geekosaur> @where+ rwh http://www.realworldhaskell.org/blog/ http://book.realworldhaskell.org/read/ https://github.com/tssm/up-to-date-real-world-haskell
16:53:47 <lambdabot> Okay.
16:54:29 × sand-witch quits (~m-mzmz6l@vmi833741.contaboserver.net) (Server closed connection)
16:54:46 sand-witch joins (~m-mzmz6l@vmi833741.contaboserver.net)
16:55:10 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:56:59 × danza quits (~francesco@151.46.222.150) (Ping timeout: 246 seconds)
16:57:52 danza joins (~francesco@151.46.222.150)
16:58:26 <monochrom> ph88: When I want it, I use ghc -ddump-minimal-imports
17:02:21 aaronv joins (~aaronv@user/aaronv)
17:02:28 <monochrom> Add -fno-code :)
17:04:50 <EvanR> I heard on betazed they write all their programs with no code!
17:09:00 qqq joins (~qqq@92.43.167.61)
17:11:55 arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
17:16:28 × arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 248 seconds)
17:16:59 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:18:04 × aaronv quits (~aaronv@user/aaronv) (Remote host closed the connection)
17:18:23 aaronv joins (~aaronv@user/aaronv)
17:21:56 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:23:51 × g00gler quits (uid125351@id-125351.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
17:26:47 × danza quits (~francesco@151.46.222.150) (Ping timeout: 248 seconds)
17:28:55 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:30:11 bratwurst joins (~blaadsfa@S010610561191f5d6.lb.shawcable.net)
17:35:03 × bratwurst quits (~blaadsfa@S010610561191f5d6.lb.shawcable.net) (Ping timeout: 246 seconds)
17:37:15 × phma quits (phma@2001:5b0:212a:b168:8a63:fd9c:4a28:c70e) (Read error: Connection reset by peer)
17:37:17 danza joins (~francesco@151.46.222.150)
17:38:38 phma joins (~phma@2001:5b0:210f:2a18:ec08:5fa6:cd25:140c)
17:45:45 × Inst quits (~Inst@120.244.192.250) (Remote host closed the connection)
17:46:10 Inst joins (~Inst@120.244.192.250)
17:47:49 Inst parts (~Inst@120.244.192.250) ()
17:49:34 __monty__ joins (~toonn@user/toonn)
17:50:55 × megaTherion quits (~therion@unix.io) (Quit: ZNC 1.8.2 - https://znc.in)
17:52:01 megaTherion joins (~therion@unix.io)
17:53:29 × megaTherion quits (~therion@unix.io) (Client Quit)
17:54:36 megaTherion joins (~therion@unix.io)
18:02:14 justsomeguy joins (~justsomeg@user/justsomeguy)
18:02:51 lex_ joins (~alex@188.26.233.194)
18:05:11 × danza quits (~francesco@151.46.222.150) (Remote host closed the connection)
18:05:30 danza joins (~francesco@151.46.222.150)
18:08:20 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f) (Remote host closed the connection)
18:08:29 × Typedfern quits (~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net) (Ping timeout: 246 seconds)
18:08:32 Simikando joins (~Simikando@adsl-dyn91.91-127-22.t-com.sk)
18:10:27 × lex_ quits (~alex@188.26.233.194) (Remote host closed the connection)
18:11:17 × danza quits (~francesco@151.46.222.150) (Ping timeout: 246 seconds)
18:17:32 × Simikando quits (~Simikando@adsl-dyn91.91-127-22.t-com.sk) (Quit: Leaving)
18:20:16 danza joins (~francesco@151.46.222.150)
18:23:35 × danza quits (~francesco@151.46.222.150) (Remote host closed the connection)
18:23:37 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f)
18:23:57 danza joins (~francesco@151.46.222.150)
18:24:10 g00gler joins (uid125351@id-125351.uxbridge.irccloud.com)
18:24:25 Typedfern joins (~Typedfern@81.red-83-37-27.dynamicip.rima-tde.net)
18:28:39 × danza quits (~francesco@151.46.222.150) (Ping timeout: 248 seconds)
18:32:49 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
18:34:13 <erisco> Low code and no code just means your programming language is some mix of config files and GUIs
18:38:37 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
18:39:28 gmg joins (~user@user/gehmehgeh)
18:42:36 <EvanR> it takes a huge amount of code to write a GUI. So if code seems to be missing it's in the GUI
18:43:46 pavonia joins (~user@user/siracusa)
18:44:11 <ph88> how can i fix this type error about MonadFail ? https://bpa.st/HWOZ2
18:44:38 <haskellbridge> <j​ean-paul.> ph88: You could add a MonadFail constraint to m
18:44:59 <haskellbridge> <j​ean-paul.> ph88: Or you could make your pattern match complete so you don't need MonadFail
18:45:49 <ph88> jean-paul when i get the constraint i get this https://bpa.st/3TURS i rather get rid of the MonadFail monad if possible
18:46:02 <ph88> ok i will try pattern match complete
18:47:08 × cael_ quits (~quassel@host109-148-244-226.range109-148.btcentralplus.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
18:47:26 cael_ joins (~quassel@host109-148-244-226.range109-148.btcentralplus.com)
18:47:55 × cael_ quits (~quassel@host109-148-244-226.range109-148.btcentralplus.com) (Client Quit)
18:50:13 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 240 seconds)
18:53:47 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
18:54:01 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
18:54:28 danza joins (~francesco@151.46.222.150)
19:02:13 × hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Ping timeout: 240 seconds)
19:05:03 arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
19:05:28 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f) (Remote host closed the connection)
19:06:17 × robobub quits (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
19:09:01 Simikando joins (~Simikando@adsl-dyn91.91-127-22.t-com.sk)
19:09:32 × arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 245 seconds)
19:11:31 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:14:28 <ph88> sm2n, i made a fork https://github.com/flip111/importify/tree/lts-21.10
19:21:34 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
19:26:24 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
19:34:48 <monochrom> ph88: "cabalPath <- fromJust <$> findCabalFile qpPath" will not incur MonadFail. Basically non-exhaustive patterns in do-notation incurs MonadFail.
19:39:56 <ph88> thanks monochrom
19:40:27 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f)
19:44:47 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
19:45:35 gmg joins (~user@user/gehmehgeh)
19:48:58 danza_ joins (~francesco@151.43.253.223)
19:49:11 × danza quits (~francesco@151.46.222.150) (Ping timeout: 248 seconds)
19:53:41 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
19:54:12 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
19:54:25 gmg joins (~user@user/gehmehgeh)
19:55:08 × Simikando quits (~Simikando@adsl-dyn91.91-127-22.t-com.sk) (Quit: Leaving)
19:56:48 × jackneill__ quits (~Jackneill@20014C4E1E101A0091C70064EC2E3AAF.dsl.pool.telekom.hu) (Ping timeout: 246 seconds)
20:07:33 × danza_ quits (~francesco@151.43.253.223) (Ping timeout: 258 seconds)
20:13:07 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
20:19:22 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
20:19:40 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:20:01 sm joins (~sm@plaintextaccounting/sm)
20:20:14 × sm quits (~sm@plaintextaccounting/sm) (Client Quit)
20:22:03 fendor joins (~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f)
20:23:17 × stites quits (~stites@155.33.134.55) (Read error: Connection reset by peer)
20:23:54 stites joins (~stites@155.33.134.55)
20:24:59 × mzg quits (mzg@lazy.unconscious.biz) (Ping timeout: 246 seconds)
20:25:06 mzg joins (mzg@lazy.unconscious.biz)
20:27:39 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:28:07 × stites quits (~stites@155.33.134.55) (Ping timeout: 248 seconds)
20:28:36 stites joins (~stites@2607:fb91:dc9:7a86:c8d0:2613:87c3:be7)
20:35:53 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:37:00 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Read error: Connection reset by peer)
20:39:56 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
20:42:46 Pickchea joins (~private@user/pickchea)
20:44:57 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
20:46:06 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:47:05 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
20:48:51 × stites quits (~stites@2607:fb91:dc9:7a86:c8d0:2613:87c3:be7) (Read error: Connection reset by peer)
20:49:11 stites joins (~stites@130.44.147.204)
20:51:35 sm joins (~sm@plaintextaccounting/sm)
20:55:51 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 248 seconds)
21:00:38 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
21:01:45 × kimiamania quits (~67afdc47@user/kimiamania) (Quit: PegeLinux)
21:02:13 kimiamania joins (~67afdc47@user/kimiamania)
21:02:22 × AlexZenon quits (~alzenon@178.34.160.172) (Ping timeout: 258 seconds)
21:03:54 AlexZenon joins (~alzenon@178.34.160.172)
21:07:03 × michalz quits (~michalz@185.246.207.221) (Remote host closed the connection)
21:08:20 libertyprime joins (~libertypr@203.96.203.44)
21:08:48 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
21:09:45 caryhartline joins (~caryhartl@168.182.58.169)
21:18:32 mmhat joins (~mmh@p200300f1c7178a9eee086bfffe095315.dip0.t-ipconnect.de)
21:19:50 × _xor quits (~xor@ip-50-5-233-250.dynamic.fuse.net) (Quit: Ping timeout (120 seconds))
21:20:08 _xor0 joins (~xor@ip-50-5-233-250.dynamic.fuse.net)
21:23:03 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
21:24:31 sm joins (~sm@plaintextaccounting/sm)
21:25:01 × mmhat quits (~mmh@p200300f1c7178a9eee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.0.4)
21:26:15 × acidjnk quits (~acidjnk@p200300d6e7072f30251e7d7a920dd919.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
21:27:51 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 248 seconds)
21:29:12 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 258 seconds)
21:31:43 sm joins (~sm@plaintextaccounting/sm)
21:36:23 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 248 seconds)
21:36:29 × fendor quits (~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f) (Remote host closed the connection)
21:38:48 powderhorn joins (~powderhor@207-153-12-54.static.fttp.usinternet.com)
21:39:18 × caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline)
21:46:02 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
21:49:04 sm joins (~sm@plaintextaccounting/sm)
21:52:18 × Vajb quits (~Vajb@2001:999:500:7771:18aa:c4e5:e7a9:f44b) (Read error: Connection reset by peer)
21:53:04 Vajb joins (~Vajb@2001:999:500:7771:18aa:c4e5:e7a9:f44b)
21:53:44 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 258 seconds)
21:55:59 wroathe joins (~wroathe@user/wroathe)
22:01:31 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
22:04:35 × raym quits (~ray@user/raym) (Server closed connection)
22:04:51 raym joins (~ray@user/raym)
22:19:02 × son0p quits (~ff@186.121.39.74) (Quit: Bye)
22:22:39 sm joins (~sm@plaintextaccounting/sm)
22:25:02 sinbad parts (~sinbad@user/sinbad) ()
22:25:30 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 246 seconds)
22:27:03 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 248 seconds)
22:31:15 aaronv joins (~aaronv@user/aaronv)
22:37:11 × libertyprime quits (~libertypr@203.96.203.44) (Ping timeout: 246 seconds)
22:37:12 × ulysses4ever quits (~artem@2601:249:4380:8950:f474:e3f8:9806:671) (Read error: Connection reset by peer)
22:37:20 ulysses4ever joins (~artem@c-73-103-90-145.hsd1.in.comcast.net)
22:41:48 <jackdk> It will instead crash your program if `findCabalFile` executes and generates a `Nothing`
22:42:37 <geekosaur> the original probably did as well though
22:42:54 <geekosaur> doesn't fail in IO throw?
22:43:25 <geekosaur> % fail "foo"
22:43:26 <yahb2> *** Exception: user error (foo)
22:45:48 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 246 seconds)
22:47:41 <jackdk> True, but the type system no longer forces you to care. I suppose you can consider that a good thing, or not.
22:53:22 libertyprime joins (~libertypr@203.96.203.44)
22:56:08 sm joins (~sm@plaintextaccounting/sm)
23:00:07 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 248 seconds)
23:00:49 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 258 seconds)
23:01:00 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
23:01:26 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 246 seconds)
23:01:57 son0p joins (~ff@186.121.39.74)
23:03:46 caryhartline joins (~caryhartl@168.182.58.169)
23:08:43 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 255 seconds)
23:10:41 cyphase joins (~cyphase@user/cyphase)
23:11:18 Chioque joins (~mansur@88.125.49.60.jb03-home.tm.net.my)
23:13:17 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
23:13:22 × caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline)
23:18:12 × Chioque quits (~mansur@88.125.49.60.jb03-home.tm.net.my) (Quit: WeeChat 4.0.4)
23:19:19 cptaffe joins (~ZNC@99-47-99-155.lightspeed.ltrkar.sbcglobal.net)
23:22:01 × cptaffe quits (~ZNC@99-47-99-155.lightspeed.ltrkar.sbcglobal.net) (Client Quit)
23:22:01 × cpt\iphone quits (~ZNC@2600:1700:f08:111f::18e7) (Quit: ZNC 1.8.2 - https://znc.in)
23:22:01 × cpt\macbook quits (~ZNC@2600:1700:f08:111f::18e7) (Quit: ZNC 1.8.2 - https://znc.in)
23:22:23 cpt\iphone joins (~iPhone@99-47-99-155.lightspeed.ltrkar.sbcglobal.net)
23:22:54 cptaffe joins (~ZNC@2600:1700:f08:111f::18e7)
23:23:02 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
23:23:49 × cpt\iphone quits (~iPhone@99-47-99-155.lightspeed.ltrkar.sbcglobal.net) (Client Quit)
23:23:53 × cptaffe quits (~ZNC@2600:1700:f08:111f::18e7) (Client Quit)
23:23:55 cptaffe- joins (~ZNC@99-47-99-155.lightspeed.ltrkar.sbcglobal.net)
23:24:22 arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
23:24:58 <EvanR> crash early, crash often
23:25:35 <institor> crash override
23:26:19 cptaffe- is now known as cptaffe
23:27:19 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 248 seconds)
23:28:36 sm joins (~sm@plaintextaccounting/sm)
23:32:06 cyphase joins (~cyphase@user/cyphase)
23:32:24 × arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 246 seconds)
23:32:24 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 246 seconds)
23:33:43 × stites quits (~stites@130.44.147.204) (Ping timeout: 248 seconds)
23:34:15 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 248 seconds)
23:35:12 stites joins (~stites@2607:fb91:dc9:6ccd:6a4b:9556:1e53:57eb)
23:37:38 × powderhorn quits (~powderhor@207-153-12-54.static.fttp.usinternet.com) (Ping timeout: 245 seconds)
23:38:21 danza_ joins (~francesco@151.43.250.219)
23:43:35 × stefan-_ quits (~cri@42dots.de) (Server closed connection)
23:43:51 stefan-_ joins (~cri@42dots.de)
23:47:56 × stites quits (~stites@2607:fb91:dc9:6ccd:6a4b:9556:1e53:57eb) (Read error: Connection reset by peer)
23:48:16 stites joins (~stites@130.44.147.204)
23:49:53 danza__ joins (~francesco@151.37.121.223)
23:52:27 × stites quits (~stites@130.44.147.204) (Ping timeout: 245 seconds)
23:52:27 × danza_ quits (~francesco@151.43.250.219) (Ping timeout: 245 seconds)
23:52:40 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
23:52:41 stites joins (~stites@2607:fb91:dc9:6ccd:6a4b:9556:1e53:57eb)
23:52:55 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 248 seconds)
23:53:39 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
23:54:00 × stites quits (~stites@2607:fb91:dc9:6ccd:6a4b:9556:1e53:57eb) (Read error: Connection reset by peer)
23:54:32 stites joins (~stites@130.44.147.204)
23:54:52 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
23:54:59 Lord_of_Life_ is now known as Lord_of_Life

All times are in UTC on 2023-09-08.