2023/09/08

2023-09-08 00:00:24 +0200fendor(~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f) (Remote host closed the connection)
2023-09-08 00:01:16 +0200son0p(~ff@186.121.39.74)
2023-09-08 00:05:14 +0200immae(~immae@2a01:4f8:141:53e7::)
2023-09-08 00:05:14 +0200EvanR(~EvanR@user/evanr) (Quit: Leaving)
2023-09-08 00:06:35 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 258 seconds)
2023-09-08 00:09:35 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-09-08 00:11:47 +0200g00gler(uid125351@id-125351.uxbridge.irccloud.com)
2023-09-08 00:24:36 +0200bjobjo(~bjobjo@user/bjobjo) (Ping timeout: 258 seconds)
2023-09-08 00:24:58 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8)
2023-09-08 00:31:22 +0200bjobjo(~bjobjo@user/bjobjo)
2023-09-08 00:32:12 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-09-08 00:35:48 +0200falafel(~falafel@62.175.113.194.dyn.user.ono.com)
2023-09-08 00:37:26 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-09-08 00:40:18 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-09-08 00:44:13 +0200Pickchea(~private@user/pickchea)
2023-09-08 00:45:47 +0200JordiGH(~jordi@user/jordigh)
2023-09-08 00:46:12 +0200 <JordiGH> Anyone know the history of why records got called "records"? (say, why not a word like "structs"?)
2023-09-08 00:46:18 +0200 <JordiGH> Did it come from ML?
2023-09-08 00:46:25 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-09-08 00:50:48 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-09-08 00:51:34 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 244 seconds)
2023-09-08 00:52:10 +0200kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-09-08 00:52:41 +0200Guest|3(~Guest|3@93-136-208-249.adsl.net.t-com.hr)
2023-09-08 00:52:54 +0200 <Guest|3> Hello, anyone here?
2023-09-08 00:53:18 +0200 <institor> nope
2023-09-08 00:53:55 +0200 <Guest|3> I need to make light and shadows simulation in haskell so i have a few questions
2023-09-08 00:54:53 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2023-09-08 00:55:39 +0200 <Guest|3> https://pastebin.com/raw/6DS18y5g
2023-09-08 01:01:27 +0200rune_(sid21167@id-21167.ilkley.irccloud.com) (Server closed connection)
2023-09-08 01:01:34 +0200rune_(sid21167@id-21167.ilkley.irccloud.com)
2023-09-08 01:02:09 +0200 <int-e> phew, it's a cellular automaton, not a raytracer
2023-09-08 01:02:23 +0200 <int-e> (or is it)
2023-09-08 01:03:06 +0200 <Guest|3> i would prefer not to use raytracing but i dont see a way around it
2023-09-08 01:05:02 +0200 <int-e> Yeah I didn't read enough of the code :P
2023-09-08 01:06:12 +0200 <int-e> But now I'm confused about how light is supposed to spread. So I'll ask whether you've considered using Data.Array or Data.Vector instead? replacing indexed elements in a list of lists is awkward.
2023-09-08 01:08:23 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
2023-09-08 01:09:04 +0200 <Guest|3> https://pastebin.com/raw/J2sQdicP
2023-09-08 01:10:10 +0200 <Guest|3> https://pastebin.com/XF0XCLwg
2023-09-08 01:10:11 +0200falafel(~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 246 seconds)
2023-09-08 01:10:27 +0200edmundnoble_(sid229620@id-229620.helmsley.irccloud.com) (Server closed connection)
2023-09-08 01:10:36 +0200edmundnoble_(sid229620@id-229620.helmsley.irccloud.com)
2023-09-08 01:12:14 +0200 <int-e> So it's a limited distance flooding? A bit like this? http://paste.debian.net/1291314/
2023-09-08 01:13:47 +0200 <Guest|3> Yes, the provided code simulates a form of limited distance flooding for determining which points are illuminated by a light source and which are in shadow due to obstacles. It uses a ray-casting approach to check if a point on the grid is visible from the light source. If a ray from the light source to a point intersects with any obstacle before
2023-09-08 01:13:48 +0200 <Guest|3> reaching that point, the point is considered to be in shadow.
2023-09-08 01:14:11 +0200 <int-e> Which is a fairly standard breadth first search task unless the distance becomes very big. (Going breadth first allows you to enumerate each of the "illuminated" cells only once, and not care about the same cell arising from different paths)
2023-09-08 01:14:31 +0200 <Guest|3> It doesn't take into account advanced lighting effects like reflections, refractions, or global illumination, but it provides a basic understanding of how light interacts with obstacles within a certain distance of the light source.
2023-09-08 01:15:17 +0200wroathe(~wroathe@user/wroathe)
2023-09-08 01:15:32 +0200 <int-e> It's not like rays at all, it's more like pouring sand into a maze and stop when it reaches a certain height. (sand tends to have a linear falloff that's the same in all directions)
2023-09-08 01:15:52 +0200 <institor> what a great analogy
2023-09-08 01:16:37 +0200 <Guest|3> This approach is conceptually similar to BFS, as you correctly pointed out, and it doesn't involve actual rays in the traditional sense.
2023-09-08 01:16:38 +0200 <Guest|3> In this sand-filling approach, the illumination falls off linearly as you move away from the light source, and it's consistent in all directions, which is a simplified but effective way to model basic lighting and shadows within a bounded area.
2023-09-08 01:16:38 +0200 <Guest|3> Thank you for clarifying, and I appreciate your correc
2023-09-08 01:16:53 +0200 <Guest|3> correction
2023-09-08 01:20:12 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-09-08 01:20:35 +0200 <Guest|3> Do you have any useful information i can use?
2023-09-08 01:20:59 +0200 <int-e> Note that https://pastebin.com/raw/6DS18y5g is a depth first search... so while updating the grid as soon as you enter a cell avoids visiting the cell more than once during the search, you'll often arrive at a cell for the first time by a detour (go right, then up, then left, rather than going up directly) so the path lengths are not what you want.
2023-09-08 01:21:28 +0200 <int-e> I have not tried to understand https://pastebin.com/raw/J2sQdicP
2023-09-08 01:21:43 +0200mysl(~mysl@user/mysl) (Ping timeout: 240 seconds)
2023-09-08 01:22:07 +0200 <Guest|3> Yes i made few versions. Can you check 2nd one?
2023-09-08 01:24:05 +0200 <Guest|3> Code 1 - Grid-based Light Simulation
2023-09-08 01:24:06 +0200 <Guest|3> Functionality:
2023-09-08 01:24:06 +0200 <Guest|3> This code simulates light spreading from a light source in a grid-based environment with obstacles (stones).
2023-09-08 01:24:07 +0200 <Guest|3> It uses a 2D grid represented as a list of lists of characters (Grid) to model the environment.
2023-09-08 01:24:07 +0200 <Guest|3> Obstacles are randomly placed in the grid, and the light spreads through the grid, marking illuminated areas with '*' characters.
2023-09-08 01:24:08 +0200 <Guest|3> The grid is printed to the console to visualize the illuminated areas.
2023-09-08 01:24:08 +0200 <Guest|3> Key Components:
2023-09-08 01:24:09 +0200 <Guest|3> Grid data type: Represents the 2D grid.
2023-09-08 01:24:09 +0200 <Guest|3> addObstacles function: Adds obstacles to the grid.
2023-09-08 01:24:10 +0200 <Guest|3> replaceElement function: Replaces an element in the grid at a specified position.
2023-09-08 01:24:10 +0200 <Guest|3> spreadLight function: Simulates the spreading of light from the source.
2023-09-08 01:24:11 +0200 <Guest|3> main function: Orchestrates the entire simulation.
2023-09-08 01:24:11 +0200 <Guest|3> Code 2 - Ray-based Light Simulation
2023-09-08 01:24:12 +0200 <Guest|3> Functionality:
2023-09-08 01:24:12 +0200 <Guest|3> This code simulates light propagation from a light source to obstacles using rays and checks for intersections with obstacles.
2023-09-08 01:24:13 +0200 <Guest|3> It uses a grid of points (grid) and calculates whether each point is illuminated by the given light source.
2023-09-08 01:24:13 +0200 <Guest|3> The illuminated areas are represented with spaces (' ') in the output.
2023-09-08 01:24:14 +0200 <Guest|3> Key Components:
2023-09-08 01:24:55 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-09-08 01:25:47 +0200 <Guest|3> the comparison provided is generated by an AI based on the code snippets provided
2023-09-08 01:26:01 +0200 <int-e> So you're actually intersecting lines and circles there
2023-09-08 01:26:37 +0200 <Guest|3> yes
2023-09-08 01:27:05 +0200cael_(~quassel@host109-148-244-226.range109-148.btcentralplus.com) (Ping timeout: 258 seconds)
2023-09-08 01:27:27 +0200 <int-e> I'm not going to check the math but it's not enough for the ray to intersect the circle... you also have to check whether you've reached the circle.
2023-09-08 01:27:29 +0200mysl(~mysl@user/mysl)
2023-09-08 01:27:51 +0200xff0x(~xff0x@2405:6580:b080:900:cb93:4506:eebb:2c0b) (Ping timeout: 258 seconds)
2023-09-08 01:28:25 +0200 <Guest|3> Yes that check is essential.
2023-09-08 01:28:47 +0200 <Guest|3> https://pastebin.com/XF0XCLwg ive added some comments here
2023-09-08 01:29:13 +0200 <int-e> oh it's up there in illuminate... hmm.
2023-09-08 01:29:43 +0200 <Guest|3> indeed
2023-09-08 01:29:56 +0200xff0x(~xff0x@178.255.149.135)
2023-09-08 01:33:01 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds)
2023-09-08 01:34:05 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net) (Read error: Connection reset by peer)
2023-09-08 01:34:27 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net)
2023-09-08 01:34:28 +0200 <Guest|3> So what do you think
2023-09-08 01:34:50 +0200Lears(~Leary]@user/Leary/x-0910699) (Remote host closed the connection)
2023-09-08 01:34:54 +0200 <int-e> https://en.wikipedia.org/wiki/File:Power_point_simple.svg ... note how the tangent is shorter than the distance to the center?
2023-09-08 01:35:04 +0200[Leary](~Leary]@user/Leary/x-0910699)
2023-09-08 01:35:07 +0200 <int-e> and how do you know whether the circle is in front of you or behind you?
2023-09-08 01:35:39 +0200 <int-e> I won't work out any formulas for this.
2023-09-08 01:35:47 +0200mysl(~mysl@user/mysl) (Ping timeout: 245 seconds)
2023-09-08 01:36:14 +0200 <int-e> Note also that the ray could potentially start inside an obstacle, or that the target could be inside an obstacle.
2023-09-08 01:37:35 +0200kaskal(~kaskal@213-147-167-98.nat.highway.webapn.at) (Server closed connection)
2023-09-08 01:38:18 +0200 <Guest|3> The function isIntersection checks whether the ray intersects with an obstacle
2023-09-08 01:39:19 +0200 <int-e> I rather suspect it checks the whole line, not just a ray.
2023-09-08 01:39:57 +0200xff0x(~xff0x@178.255.149.135) (Ping timeout: 245 seconds)
2023-09-08 01:40:44 +0200 <Guest|3>  The provided code indeed checks the entire line segment between the light source and the target point, rather than just a single ray.
2023-09-08 01:40:45 +0200 <Guest|3> In this code, the isIntersection function checks if the line segment between the light source and the target point intersects with an obstacle. It considers the entire line segment, not just a single ray, when determining if an intersection occurs.
2023-09-08 01:41:59 +0200kaskal(~kaskal@213-147-167-98.nat.highway.webapn.at)
2023-09-08 01:42:10 +0200xff0x(~xff0x@2405:6580:b080:900:cb93:4506:eebb:2c0b)
2023-09-08 01:46:18 +0200mysl(~mysl@user/mysl)
2023-09-08 01:47:00 +0200 <int-e> it doesn't check a line segment, it checks the whole line (extended indefinitely at both ends)
2023-09-08 01:52:32 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 244 seconds)
2023-09-08 01:53:09 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
2023-09-08 01:54:04 +0200 <Guest|3> Do i switch to python cuz of simplicity?
2023-09-08 01:54:06 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-09-08 01:57:33 +0200 <int-e> Sure if you're more comfortable with that... the problem in this particular program seems to be figuring out the formulas; Haskell won't help you with that any more than any other language really.
2023-09-08 02:01:34 +0200Guest|3(~Guest|3@93-136-208-249.adsl.net.t-com.hr) (Quit: Connection closed)
2023-09-08 02:04:33 +0200Guest12(~Guest12@187.83.249.216.dyn.smithville.net)
2023-09-08 02:09:26 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 246 seconds)
2023-09-08 02:09:33 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 246 seconds)
2023-09-08 02:11:22 +0200qhong(~qhong@DN160vrd000d6kpg009l6c0000fj.stanford.edu) (Read error: Connection reset by peer)
2023-09-08 02:11:57 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-09-08 02:12:03 +0200apteryx(~maxim@dsl-159-106.b2b2c.ca) (Ping timeout: 246 seconds)
2023-09-08 02:12:04 +0200cafkafk_(~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
2023-09-08 02:23:56 +0200Guest12(~Guest12@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
2023-09-08 02:27:16 +0200stites(~stites@2607:fb90:ad62:807c:d15b:ce72:ad88:3242) (Read error: Connection reset by peer)
2023-09-08 02:27:37 +0200stites(~stites@130.44.147.204)
2023-09-08 02:27:52 +0200cafkafk_(~cafkafk@fsf/member/cafkafk)
2023-09-08 02:30:36 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 246 seconds)
2023-09-08 02:31:13 +0200bratwurst(~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Ping timeout: 240 seconds)
2023-09-08 02:33:10 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 02:34:00 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 255 seconds)
2023-09-08 02:35:54 +0200califax(~califax@user/califx) (Remote host closed the connection)
2023-09-08 02:35:59 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2023-09-08 02:36:05 +0200califax_(~califax@user/califx)
2023-09-08 02:37:14 +0200yosef`(~yosef`@user/yosef/x-2947716)
2023-09-08 02:37:22 +0200califax_califax
2023-09-08 02:42:20 +0200YoungFrog(~youngfrog@2a02:a03f:ca07:f900:fffe:2aed:9333:96be) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
2023-09-08 02:42:41 +0200YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
2023-09-08 02:49:09 +0200bratwurst(~blaadsfa@S010610561191f5d6.lb.shawcable.net)
2023-09-08 02:53:57 +0200Guest|3(~Guest|3@93-136-208-249.adsl.net.t-com.hr)
2023-09-08 02:54:00 +0200 <Guest|3> Hello me again with light and shadows!
2023-09-08 02:54:13 +0200 <Guest|3> [1 of 1] Compiling Main ( main.hs, main.o )
2023-09-08 02:54:14 +0200 <Guest|3> main.hs:1:1: error:Could not find module System.Random'
2023-09-08 02:54:14 +0200 <Guest|3>     Use -v (or :set -v` in ghci) to see a list of the files searched for.
2023-09-08 02:54:15 +0200 <Guest|3>   |
2023-09-08 02:54:15 +0200 <Guest|3> 1 | import System.Random
2023-09-08 02:54:16 +0200 <Guest|3>   | ^^^^^^^^^^^^^^^^^^^^
2023-09-08 02:54:16 +0200 <Guest|3> Trying to run a code
2023-09-08 02:54:17 +0200 <Guest|3> please help
2023-09-08 02:56:23 +0200 <yushyin> it's a module from the random package
2023-09-08 02:56:38 +0200 <Guest|3> import System.Random
2023-09-08 02:56:38 +0200 <Guest|3> -- Define a type alias for the grid as a 2D list of characters
2023-09-08 02:56:39 +0200 <Guest|3> type Grid = [[Char]]
2023-09-08 02:56:39 +0200 <Guest|3> -- Define a data type for simulation parameters
2023-09-08 02:56:40 +0200 <Guest|3> data SimulationParameters = SimulationParameters
2023-09-08 02:56:40 +0200 <Guest|3>   { simulationWidth :: Int -- Width of the simulation area
2023-09-08 02:56:41 +0200 <Guest|3>   , simulationHeight :: Int -- Height of the simulation area
2023-09-08 02:56:41 +0200 <Guest|3>   , gridWidth :: Int -- Width of the grid
2023-09-08 02:56:42 +0200 <Guest|3>   , gridHeight :: Int -- Height of the grid
2023-09-08 02:56:42 +0200 <Guest|3>   , lightIntensity :: Int -- Intensity of the light
2023-09-08 02:56:43 +0200 <Guest|3>   , numberOfObstacles :: Int -- Number of obstacles
2023-09-08 02:56:43 +0200 <Guest|3>   }
2023-09-08 02:56:44 +0200 <Guest|3> -- Initialize an empty grid filled with spaces
2023-09-08 02:56:44 +0200 <Guest|3> emptyGrid :: Int -> Int -> Grid
2023-09-08 02:56:45 +0200 <Guest|3> emptyGrid width height = replicate height (replicate width ' ')
2023-09-08 02:56:45 +0200 <Guest|3> -- Define the position of the light source
2023-09-08 02:56:46 +0200 <Guest|3> lightSource :: (Int, Int)
2023-09-08 02:56:46 +0200 <Guest|3> lightSource = (5, 5)
2023-09-08 02:56:47 +0200sinbad(~sinbad@user/sinbad) (Quit: Leaving.)
2023-09-08 02:56:53 +0200 <yushyin> you would need to add this to your dependencies
2023-09-08 02:56:57 +0200 <Guest|3> -- Function to replace an element at a specific position in the grid
2023-09-08 02:56:58 +0200 <Guest|3> replaceElement :: Grid -> Int -> Int -> Char -> Grid
2023-09-08 02:56:58 +0200 <Guest|3> replaceElement grid x y newElement =
2023-09-08 02:56:59 +0200 <Guest|3>   take y grid ++
2023-09-08 02:56:59 +0200 <Guest|3>   [take x (grid !! y) ++ [newElement] ++ drop (x + 1) (grid !! y)] ++
2023-09-08 02:57:00 +0200 <Guest|3>   drop (y + 1) grid
2023-09-08 02:57:00 +0200 <Guest|3> -- Function to spread light from the source
2023-09-08 02:57:01 +0200 <Guest|3> spreadLight :: Grid -> (Int, Int) -> Int -> Grid
2023-09-08 02:57:01 +0200 <Guest|3> spreadLight grid _ 0 = grid
2023-09-08 02:57:02 +0200 <Guest|3> spreadLight grid (x, y) intensity
2023-09-08 02:57:02 +0200 <Guest|3>   | x < 0 || x >= gridWidthParam || y < 0 || y >= gridHeightParam = grid
2023-09-08 02:57:03 +0200 <Guest|3>   | grid !! y !! x /= ' ' && grid !! y !! x /= '#' = grid
2023-09-08 02:57:03 +0200 <Guest|3>   | otherwise =
2023-09-08 02:57:04 +0200 <Guest|3>     let updatedGrid = replaceElement grid x y '*' -- Place light at (x, y)
2023-09-08 02:57:04 +0200 <Guest|3>     in foldl (\g (dx, dy) -> spreadLight g (x + dx, y + dy) (intensity - 1))
2023-09-08 02:57:05 +0200 <Guest|3>              updatedGrid [(1, 0), (-1, 0), (0, 1), (0, -1)] -- Recursively spread light
2023-09-08 02:57:05 +0200 <Guest|3> -- Function to round positions of objects in the grid with real numbers
2023-09-08 02:57:06 +0200 <Guest|3> roundGridPositions :: Grid -> Grid
2023-09-08 02:57:09 +0200 <yushyin> please use the paste service from the topic, lol
2023-09-08 02:57:19 +0200 <Guest|3> where and how
2023-09-08 02:57:20 +0200 <Guest|3> sorry it bugged out
2023-09-08 02:57:59 +0200 <Guest|3> how do i add to my dependencies
2023-09-08 02:58:10 +0200 <yushyin> "Paste code/errors: https://paste.tomsmeding.com "
2023-09-08 02:59:44 +0200 <yushyin> https://cabal.readthedocs.io/en/3.4/getting-started.html#adding-dependencies here is how you do it with cabal
2023-09-08 02:59:50 +0200 <Guest|3> https://paste.tomsmeding.com/1bXo7hqg/raw/1
2023-09-08 03:01:04 +0200EvanR(~EvanR@user/evanr)
2023-09-08 03:01:13 +0200 <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
2023-09-08 03:04:36 +0200 <institor> if you need random access into the grid
2023-09-08 03:04:45 +0200 <institor> don't use linked lists of linked lists
2023-09-08 03:04:48 +0200 <institor> use data.vector
2023-09-08 03:05:37 +0200 <institor> which has nicer facilities for updating/replacing elements anyway
2023-09-08 03:06:40 +0200 <institor> but this probably doesn't matter
2023-09-08 03:07:06 +0200 <Guest|3> yes but i will still need to import something
2023-09-08 03:07:12 +0200 <Guest|3> i think thats the problem
2023-09-08 03:07:17 +0200 <Guest|3> or is it in my code?
2023-09-08 03:08:26 +0200 <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
2023-09-08 03:08:52 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net) (Ping timeout: 255 seconds)
2023-09-08 03:10:10 +0200 <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
2023-09-08 03:10:54 +0200 <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
2023-09-08 03:12:32 +0200 <Guest|3> i'll try
2023-09-08 03:13:48 +0200 <Guest|3> cabal repl -b random RayBasedLightSimulation.hs tried to run this but didnt work
2023-09-08 03:14:02 +0200 <Axman6> "didn't work"
2023-09-08 03:14:06 +0200 <Axman6> ok
2023-09-08 03:14:12 +0200 <Guest|3> PS D:\haskel> cabal repl -b random RayBasedLightSimulation2
2023-09-08 03:14:13 +0200 <Guest|3> cabal-3.6.2.0.exe: Cannot open a repl for the package
2023-09-08 03:14:13 +0200 <Guest|3> RayBasedLightSimulation2, it is not in this project (either directly or
2023-09-08 03:14:14 +0200 <Guest|3> indirectly). If you want to add it to the project then edit the cabal.project
2023-09-08 03:14:14 +0200 <Guest|3> file.
2023-09-08 03:14:20 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-09-08 03:14:34 +0200 <Axman6> do not paste multiple lines in here please! you've been told at least once before
2023-09-08 03:14:43 +0200 <Guest|3> sorry
2023-09-08 03:15:26 +0200 <Axman6> try cabal repl -b random, and then :load RayBasedLightSimulation.hs inside ghci
2023-09-08 03:17:05 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-09-08 03:17:05 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-09-08 03:17:05 +0200wroathe(~wroathe@user/wroathe)
2023-09-08 03:19:39 +0200 <Guest|3> can i use https://www.tutorialspoint.com/compile_haskell_online.php this?
2023-09-08 03:20:36 +0200 <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
2023-09-08 03:20:59 +0200 <Guest|3> yes but i need online interpreter
2023-09-08 03:21:40 +0200 <Guest|3> i just need to test this code if it works
2023-09-08 03:21:47 +0200 <Guest|3> and i cant
2023-09-08 03:23:08 +0200 <Axman6> have you tried https://play.haskell.org
2023-09-08 03:23:17 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2023-09-08 03:24:02 +0200 <Axman6> looks like it works there (though you have an error in your code so it doesn't currently compile)
2023-09-08 03:24:12 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-09-08 03:24:23 +0200 <Guest|3> yes i needed to know which error it was
2023-09-08 03:24:30 +0200 <Guest|3> blindly i can't
2023-09-08 03:24:34 +0200 <Guest|3> and time is of the essence
2023-09-08 03:24:38 +0200 <Axman6> ... did you try it?
2023-09-08 03:24:45 +0200 <yushyin> is this homework?
2023-09-08 03:24:56 +0200 <Guest|3> yes homework
2023-09-08 03:25:04 +0200 <Axman6> we can only help you so much if you are unwilling to do anything at all to help yourself
2023-09-08 03:25:05 +0200 <Guest|3> u can call it that
2023-09-08 03:25:13 +0200 <Guest|3> a job requirement
2023-09-08 03:25:26 +0200 <Guest|3> im trying to help myself
2023-09-08 03:25:30 +0200 <Guest|3> im stuck for 2 hours
2023-09-08 03:25:43 +0200 <Axman6> then paste your code into play.haskell.org and hit run
2023-09-08 03:25:44 +0200 <Guest|3> blindly trying to setup this official office laptop with no permissions
2023-09-08 03:26:51 +0200 <Guest|3> https://pastebin.com/dXGJk0S3
2023-09-08 03:27:08 +0200 <Guest|3> idk how to fix this
2023-09-08 03:28:04 +0200 <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
2023-09-08 03:29:21 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-09-08 03:30:06 +0200 <institor> @type chunksOf
2023-09-08 03:30:07 +0200 <lambdabot> Int -> [e] -> [[e]]
2023-09-08 03:30:27 +0200 <Axman6> @hoogle chunksOf
2023-09-08 03:30:27 +0200 <lambdabot> Data.Sequence chunksOf :: Int -> Seq a -> Seq (Seq a)
2023-09-08 03:30:28 +0200 <lambdabot> Data.Sequence.Internal chunksOf :: Int -> Seq a -> Seq (Seq a)
2023-09-08 03:30:28 +0200 <lambdabot> Data.Text chunksOf :: Int -> Text -> [Text]
2023-09-08 03:30:33 +0200 <Axman6> @more
2023-09-08 03:30:38 +0200 <Axman6> :(
2023-09-08 03:30:41 +0200 <institor> :chunksOf 1 [1..20]
2023-09-08 03:30:46 +0200 <institor> @chunksOf 1 [1..20]
2023-09-08 03:30:46 +0200 <lambdabot> Unknown command, try @list
2023-09-08 03:30:47 +0200 <institor> @list
2023-09-08 03:30:47 +0200 <lambdabot> What module? Try @listmodules for some ideas.
2023-09-08 03:30:51 +0200 <institor> @listmodules
2023-09-08 03:30:51 +0200 <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
2023-09-08 03:30:51 +0200 <lambdabot> seen slap source spell system tell ticker todo topic type undo unlambda unmtl version where
2023-09-08 03:30:56 +0200 <institor> @eval chunksOf 1 [1..20]
2023-09-08 03:31:11 +0200 <Axman6> > chunksOf 3 [1..20]
2023-09-08 03:31:12 +0200 <lambdabot> [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18],[19,20]]
2023-09-08 03:31:19 +0200 <int-e> institor: It's '> ' or "@run '
2023-09-08 03:31:31 +0200 <int-e> @help eval
2023-09-08 03:31:32 +0200 <lambdabot> eval. Do nothing (perversely)
2023-09-08 03:31:37 +0200 <Guest|3> https://pastebin.com/xQLfsbCN
2023-09-08 03:31:47 +0200 <int-e> (I /assume/ that this clashed with another bot somewhere)
2023-09-08 03:32:20 +0200 <int-e> > iterate (drop 3) [1..20] -- a start
2023-09-08 03:32:23 +0200 <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,...
2023-09-08 03:32:32 +0200 <Guest|3> i dont understand
2023-09-08 03:32:34 +0200 <int-e> > iterate (drop 3) [1..4] -- a start
2023-09-08 03:32:36 +0200 <lambdabot> [[1,2,3,4],[4],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[...
2023-09-08 03:34:17 +0200 <Guest|3> Can somebody
2023-09-08 03:34:23 +0200 <Guest|3> please help me fix this code https://pastebin.com/6dmGuH2G
2023-09-08 03:35:32 +0200 <Axman6> not without knowing the errors we can't.
2023-09-08 03:36:02 +0200 <Guest|3> https://pastebin.com/qeRQcM3Y
2023-09-08 03:36:05 +0200 <Guest|3> errors
2023-09-08 03:36:33 +0200 <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
2023-09-08 03:37:22 +0200 <Guest|3> you mean about cabal?
2023-09-08 03:37:35 +0200 <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?
2023-09-08 03:37:50 +0200 <Axman6> no, i mean play.haskell.org
2023-09-08 03:38:04 +0200 <Guest|3> ok
2023-09-08 03:38:22 +0200 <Guest|3> i was confused by lambdabot
2023-09-08 03:38:56 +0200 <Axman6> oh I was wrong, they're not in Grid, I got mixed up with SimulationParameters
2023-09-08 03:39:41 +0200 <Guest|3> i think i fixed it can you please check
2023-09-08 03:39:57 +0200 <Guest|3> https://pastebin.com/RtdJfMgm
2023-09-08 03:40:01 +0200 <Axman6> ... you can check it, paste it into play.haskell.org ad hit run, like I said
2023-09-08 03:40:18 +0200 <Guest|3> it runs
2023-09-08 03:40:21 +0200 <Guest|3> wow
2023-09-08 03:40:27 +0200 <Guest|3> but does it do what its supposed to do
2023-09-08 03:40:39 +0200 <Axman6> If you'd like our help, the least you can do is pay attention to the help we're giving you.
2023-09-08 03:40:53 +0200 <Axman6> I have no idea, you tell us, it's not our code, nor our homework
2023-09-08 03:41:12 +0200 <Guest|3> its not for homework its for job, people depend on the push
2023-09-08 03:41:24 +0200 <yushyin> it runs, ship it!
2023-09-08 03:41:34 +0200 <Axman6> ... then isn't it your job to check that it works?
2023-09-08 03:41:47 +0200 <monochrom> Not my job.
2023-09-08 03:41:58 +0200 <Guest|3> could you atleast comment on the code from a professional view
2023-09-08 03:42:02 +0200 <monochrom> Well, unless I'm the one getting your pay.
2023-09-08 03:42:04 +0200 <Axman6> We're here to help you figure out how to write haskell, not to do your job for you
2023-09-08 03:42:24 +0200 <Guest|3> i never asked you to write a single line of code.
2023-09-08 03:42:25 +0200 <monochrom> Homework likewise: Unless I'm the one getting your marks.
2023-09-08 03:42:51 +0200 <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
2023-09-08 03:42:54 +0200 <monochrom> Well I don't have time figuring out what your code does either. I'm not getting paid here.
2023-09-08 03:43:17 +0200 <institor> it sounds like an interview question
2023-09-08 03:43:21 +0200 <Guest|3> its not about getting paid
2023-09-08 03:43:33 +0200 <monochrom> It is always about getting paid, and it is always personal.
2023-09-08 03:43:48 +0200 <Guest|3> well unfortunately im not getting paid for this work
2023-09-08 03:43:55 +0200 <monochrom> There is no "free beer, free speech". There is only free market, free samples.
2023-09-08 03:44:49 +0200 <Axman6> Guest|3: if this is for a job interview, then the point is to demonstrate your skills, not ours.
2023-09-08 03:45:03 +0200 <Axman6> there's also a very good chance that whoever is interviewing you is also in this channel
2023-09-08 03:45:28 +0200 <Guest|3> so when i presented you this code what did u notice, or what would you say to rate it
2023-09-08 03:45:55 +0200 <int-e> I noticed the total lack of explanation of what it does, and what changed compared to the previous version.
2023-09-08 03:46:07 +0200 <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
2023-09-08 03:46:27 +0200otto_s(~user@p5de2f794.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-09-08 03:46:54 +0200 <monochrom> This is why I stick to the socratic method. It already makes that assumption. Always.
2023-09-08 03:47:15 +0200 <Guest|3> i think i commented fair amount of code..
2023-09-08 03:47:15 +0200 <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?
2023-09-08 03:47:40 +0200 <institor> everything is Microsoft's work in this brave new world
2023-09-08 03:47:45 +0200 <monochrom> People need to get paid for code review, too.
2023-09-08 03:47:48 +0200 <institor> copilot will write everything for you
2023-09-08 03:48:01 +0200otto_s(~user@p5de2ff65.dip0.t-ipconnect.de)
2023-09-08 03:48:05 +0200 <monochrom> Also soon enough you will find that your managers write 0 lines of code and still get paid.
2023-09-08 03:48:16 +0200 <institor> Guest|3: if you're not sure what it does maybe you should test it and find out
2023-09-08 03:48:30 +0200 <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
2023-09-08 03:48:38 +0200 <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
2023-09-08 03:49:04 +0200 <institor> there is a spurious do block in the code
2023-09-08 03:49:11 +0200 <institor> should use a where or let clause instead
2023-09-08 03:49:11 +0200 <monochrom> Ugh individual characters don't do anything....
2023-09-08 03:49:19 +0200 <Guest|3> yes but is the result satisfying, from a thrid person point of view. i made it on my vision
2023-09-08 03:50:00 +0200 <institor> does this even typecheck
2023-09-08 03:50:17 +0200 <monochrom> Yes, it already runs.
2023-09-08 03:50:25 +0200 <institor> i guess lists are a monad...
2023-09-08 03:50:37 +0200 <monochrom> Yes, I love abusing that too. :)
2023-09-08 03:50:38 +0200 <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?
2023-09-08 03:50:50 +0200 <Guest|3> i want ur help of course
2023-09-08 03:51:00 +0200 <institor> man i should just open a consultancy
2023-09-08 03:51:04 +0200 <institor> and start yelling at people for doing things wrong
2023-09-08 03:51:08 +0200 <institor> that would be the life
2023-09-08 03:51:14 +0200 <monochrom> and getting paid too
2023-09-08 03:51:15 +0200 <Guest|3> i want to learn
2023-09-08 03:51:17 +0200g00gler(uid125351@id-125351.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-09-08 03:51:17 +0200 <Guest|3> thats why im here
2023-09-08 03:51:18 +0200 <institor> monochrom: exactly
2023-09-08 03:51:33 +0200 <monochrom> This is why I took up the 2nd best: Teaching. >:)
2023-09-08 03:52:07 +0200 <monochrom> Yell at wrong students and give them failing grades and saving the world and getting the... pay. >:)
2023-09-08 03:52:14 +0200 <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
2023-09-08 03:52:47 +0200 <institor> folding with a recursive call to something that is at least O(n)?
2023-09-08 03:52:52 +0200 <institor> lol
2023-09-08 03:53:07 +0200 <monochrom> I'm sure lots of people write like that in C, too.
2023-09-08 03:53:08 +0200 <Guest|3> like this axman6? https://pastebin.com/F9qhjfBG
2023-09-08 03:53:15 +0200 <Axman6> but that said, it's not a particularly easy thing to write, so can't blame someone who's relatively new to thelanguage
2023-09-08 03:53:50 +0200 <Axman6> I don't know what you changed
2023-09-08 03:54:03 +0200 <monochrom> I saw world-class programming competition contesters using linear search for priority queue extract-min for dijkstra.
2023-09-08 03:54:30 +0200 <monochrom> err, contestants! I hate English.
2023-09-08 03:54:40 +0200 <Guest|3> https://pastebin.com/Jdq9xfv6
2023-09-08 03:54:59 +0200 <institor> i probably couldn't implement a heap from memory
2023-09-08 03:55:13 +0200 <int-e> monochrom: valid if it's fast enough for your purpose
2023-09-08 03:55:19 +0200 <int-e> KISS and all that
2023-09-08 03:55:34 +0200 <monochrom> Oh but they didn't write it off their head either. It is their on-paper code library they brought into the contest!
2023-09-08 03:55:45 +0200 <institor> damn
2023-09-08 03:55:52 +0200 <institor> i wish i could just bring my red-black tree implementation everywhere
2023-09-08 03:55:53 +0200 <institor> that would be dope
2023-09-08 03:55:58 +0200 <Axman6> Guest|3: do you know how much time updateElement takes to run? (not in terms of time but how expensive it is)
2023-09-08 03:56:25 +0200 <int-e> monochrom: everything to save a few minutes or even seconds, eh
2023-09-08 03:56:30 +0200 <Axman6> there's a fairly nice GADT red-black tree implementation right?
2023-09-08 03:56:50 +0200aaronv(~aaronv@user/aaronv) (Quit: Leaving)
2023-09-08 03:56:55 +0200 <institor> yeah but i wanted to try to reimplement the algorithms given in CLRS
2023-09-08 03:56:58 +0200 <int-e> monochrom: I imagine they also have a faster version (with more code) to copy if they need it?
2023-09-08 03:56:59 +0200 <institor> and it's a good excuse for quickcheck too
2023-09-08 03:57:03 +0200td_(~td@i53870915.versanet.de) (Ping timeout: 246 seconds)
2023-09-08 03:57:10 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 03:57:12 +0200 <monochrom> I didn't find it.
2023-09-08 03:57:16 +0200 <int-e> fun
2023-09-08 03:57:31 +0200 <monochrom> But I can accept that it is fast enough "because C".
2023-09-08 03:58:02 +0200 <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
2023-09-08 03:58:04 +0200Guest|3(~Guest|3@93-136-208-249.adsl.net.t-com.hr) (Quit: Connection closed)
2023-09-08 03:58:06 +0200 <institor> for better spatial locality and caching
2023-09-08 03:58:06 +0200 <Axman6> sorry, meant replaceElement
2023-09-08 03:58:11 +0200int-etends to use Data.Map as a quick&dirty priority queue with minView for extracting the smallest element
2023-09-08 03:58:16 +0200 <institor> sometimes the engineering just takes precedence
2023-09-08 03:58:21 +0200 <monochrom> Typing in a real priority queue can waste time even if you just have to transcribe it from your papers.
2023-09-08 03:58:50 +0200 <int-e> (there's a lot of caveats here... notably, avoiding duplicate keys)
2023-09-08 03:58:59 +0200td_(~td@i5387090D.versanet.de)
2023-09-08 03:59:11 +0200 <int-e> Actually, I lied. I use Data.Set (Prio, Value)
2023-09-08 03:59:12 +0200 <Axman6> Data.Map.Map is a real priority queue
2023-09-08 03:59:26 +0200 <int-e> Precisely because of the duplicate key problem.
2023-09-08 03:59:30 +0200Guest|3(~Guest|3@93-136-208-249.adsl.net.t-com.hr)
2023-09-08 03:59:40 +0200 <institor> heh so
2023-09-08 03:59:43 +0200 <institor> Data.Map is a balanced binary tree?
2023-09-08 03:59:44 +0200 <Guest|3> so you all are teachers like Albert?
2023-09-08 04:00:09 +0200 <monochrom> Yes Data.Map is a balanced binary search tree.
2023-09-08 04:00:11 +0200 <int-e> institor: Yes. size-balanced
2023-09-08 04:00:19 +0200 <institor> interesting..
2023-09-08 04:00:23 +0200 <int-e> (which is an implementation detail of course)
2023-09-08 04:00:27 +0200 <int-e> Data.IntMap is a trie
2023-09-08 04:00:43 +0200 <institor> don't maps/dictionaries as an abstract data type demand O(1) access though
2023-09-08 04:00:53 +0200 <institor> well i guess there's collisions which could degenerate to O(n)
2023-09-08 04:01:34 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 258 seconds)
2023-09-08 04:01:35 +0200 <Axman6> Who's Albert?
2023-09-08 04:01:35 +0200 <institor> well who's doing the "demanding" i guess...
2023-09-08 04:01:43 +0200 <int-e> Well... no, the abstract interface generally just specifies behavior (input, output), not runtime.
2023-09-08 04:01:58 +0200 <Guest|3> monochrom
2023-09-08 04:02:03 +0200 <monochrom> Data structure academia accepts O(lg n).
2023-09-08 04:02:18 +0200 <institor> i suppose it's the data structure that determines runtime
2023-09-08 04:02:19 +0200 <int-e> And with persistent data structures, you often have O(log(n)) everything anyway.
2023-09-08 04:02:20 +0200 <monochrom> To some extent they recognize that O(1) is impossible.
2023-09-08 04:02:26 +0200 <institor> and association lists also constitute a dictionary...
2023-09-08 04:02:59 +0200 <int-e> (well, Theta(log(n)) is what I really mean)
2023-09-08 04:03:21 +0200xff0x(~xff0x@2405:6580:b080:900:cb93:4506:eebb:2c0b) (Ping timeout: 246 seconds)
2023-09-08 04:03:52 +0200bratwurst(~blaadsfa@S010610561191f5d6.lb.shawcable.net) (Ping timeout: 258 seconds)
2023-09-08 04:04:43 +0200 <Axman6> RAM is ln n, so that's the bst we can do
2023-09-08 04:05:18 +0200 <int-e> isn't the usualy model O(sqrt(n)) even
2023-09-08 04:05:49 +0200 <int-e> (because ultimately it's about distance and energy dissipation)
2023-09-08 04:11:16 +0200 <int-e> (Oh but I also wouldn't use a priority queue for a plain breadth first search.)
2023-09-08 04:11:44 +0200 <monochrom> Right, that just needs an unpriority fifo queue.
2023-09-08 04:12:23 +0200 <int-e> I generally just compute a level of the tree at a time, often as a plain list.
2023-09-08 04:12:37 +0200 <monochrom> Iterative deepening?
2023-09-08 04:13:07 +0200 <int-e> Nah, that would start from the root each time.
2023-09-08 04:13:45 +0200 <int-e> I'm thinking of `next_level = curent_level >>= successors` (conceptually; there'll be code for weeding out duplicates somewhere)
2023-09-08 04:15:38 +0200 <int-e> It's just what I feel is a sweet spot when trading between amount of code and wasted memory.
2023-09-08 04:16:31 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-09-08 04:20:20 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:b858:d331:34dd:9a83) (Remote host closed the connection)
2023-09-08 04:20:35 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:b858:d331:34dd:9a83)
2023-09-08 04:22:20 +0200qhong(~qhong@DN160vrd000d6kpg009l6c0000fj.stanford.edu)
2023-09-08 04:28:42 +0200todi(~todi@p4fd1a685.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2023-09-08 04:28:47 +0200td_(~td@i5387090D.versanet.de) (Ping timeout: 258 seconds)
2023-09-08 04:29:06 +0200todi(~todi@p4fd1ab34.dip0.t-ipconnect.de)
2023-09-08 04:29:28 +0200 <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)
2023-09-08 04:29:44 +0200 <EvanR> clear as mud
2023-09-08 04:30:02 +0200mysl_(~mysl@user/mysl)
2023-09-08 04:30:37 +0200td_(~td@i53870905.versanet.de)
2023-09-08 04:30:39 +0200mysl(~mysl@user/mysl) (Ping timeout: 246 seconds)
2023-09-08 04:31:00 +0200 <EvanR> with careful accounting of everything except hash tables, hash tables beat everything by a long shot
2023-09-08 04:33:12 +0200Guest|3(~Guest|3@93-136-208-249.adsl.net.t-com.hr) (Quit: Connection closed)
2023-09-08 04:33:47 +0200 <EvanR> I wonder what absurd more careful O rating hash tables actually would get awarded
2023-09-08 04:36:03 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-09-08 04:38:31 +0200 <int-e> EvanR: it's far from a theoretical concern: https://en.wikipedia.org/wiki/Collision_attack#Hash_flooding
2023-09-08 04:39:08 +0200ddellacosta(~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 258 seconds)
2023-09-08 04:39:28 +0200qhong(~qhong@DN160vrd000d6kpg009l6c0000fj.stanford.edu) (Remote host closed the connection)
2023-09-08 04:40:29 +0200 <EvanR> oof
2023-09-08 04:40:52 +0200ddellacosta(~ddellacos@ool-44c738de.dyn.optonline.net)
2023-09-08 04:43:00 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2023-09-08 04:45:27 +0200 <monochrom> Claim O(0). >:)
2023-09-08 04:46:01 +0200 <int-e> I always claim O(1).
2023-09-08 04:46:21 +0200 <int-e> (Nobody will demonstrate that I'm wrong in my lifetime.)
2023-09-08 04:47:17 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-09-08 04:48:09 +0200 <int-e> Though O(0) has merits. "Nobody will spend any time on this for large enough input size."
2023-09-08 04:48:20 +0200 <monochrom> I do that too but only for "termination". >:)
2023-09-08 04:48:28 +0200 <monochrom> Or rather, my thesis supervisor does.
2023-09-08 04:51:03 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2023-09-08 04:53:09 +0200 <EvanR> clearly we've been thinking about it upside down the whole time, like temperature = 1/coldness
2023-09-08 04:58:52 +0200 <int-e> is this #bad-physics now
2023-09-08 05:01:06 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 05:02:31 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 258 seconds)
2023-09-08 05:03:00 +0200 <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.
2023-09-08 05:06:19 +0200litharge(litharge@libera/bot/litharge) (Ping timeout: 600 seconds)
2023-09-08 05:06:21 +0200 <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
2023-09-08 05:07:00 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-09-08 05:08:07 +0200aaronv(~aaronv@user/aaronv) (Quit: Leaving)
2023-09-08 05:08:25 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 05:09:22 +0200 <EvanR> ok I messed that up because you can go higher than infinitely hot
2023-09-08 05:10:02 +0200aforemny(~aforemny@i59f516dc.versanet.de) (Ping timeout: 246 seconds)
2023-09-08 05:10:17 +0200aforemny_(~aforemny@2001:9e8:6cd9:400:79dd:b9ae:d530:5eae)
2023-09-08 05:11:36 +0200litharge(litharge@libera/bot/litharge)
2023-09-08 05:13:01 +0200merijn(~merijn@088-129-128-083.dynamic.caiway.nl)
2023-09-08 05:17:33 +0200merijn(~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 250 seconds)
2023-09-08 05:18:43 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-09-08 05:35:13 +0200ubert(~Thunderbi@77.119.210.130.wireless.dyn.drei.com) (Ping timeout: 244 seconds)
2023-09-08 05:46:17 +0200artem(~artem@c-73-103-90-145.hsd1.in.comcast.net)
2023-09-08 05:46:17 +0200ulysses4ever(~artem@c-73-103-90-145.hsd1.in.comcast.net) (Read error: Connection reset by peer)
2023-09-08 05:55:08 +0200yosef`(~yosef`@user/yosef/x-2947716) (Quit: Client closed)
2023-09-08 05:55:35 +0200FeuermagierGuest7409
2023-09-08 05:55:35 +0200Guest7409(~Feuermagi@user/feuermagier) (Killed (cadmium.libera.chat (Nickname regained by services)))
2023-09-08 05:55:40 +0200Feuermagier(~Feuermagi@user/feuermagier)
2023-09-08 05:56:24 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 246 seconds)
2023-09-08 05:56:57 +0200Feuermagier(~Feuermagi@user/feuermagier) (Max SendQ exceeded)
2023-09-08 05:57:20 +0200Feuermagier(~Feuermagi@user/feuermagier)
2023-09-08 05:59:17 +0200litharge(litharge@libera/bot/litharge) (Remote host closed the connection)
2023-09-08 05:59:25 +0200litharge(litharge@libera/bot/litharge)
2023-09-08 06:06:43 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-09-08 06:07:57 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 06:09:18 +0200Lycurgus(~juan@user/Lycurgus)
2023-09-08 06:24:03 +0200JordiGH(~jordi@user/jordigh) (Ping timeout: 246 seconds)
2023-09-08 06:30:36 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Remote host closed the connection)
2023-09-08 06:31:39 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-09-08 06:32:09 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Tschüss)
2023-09-08 06:36:31 +0200caryhartline(~caryhartl@168.182.58.169)
2023-09-08 06:40:04 +0200talismanick(~user@2601:204:ef80:2980::c39)
2023-09-08 06:40:39 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Ping timeout: 258 seconds)
2023-09-08 06:41:07 +0200vglfr(~vglfr@88.155.1.251)
2023-09-08 06:42:55 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 250 seconds)
2023-09-08 06:44:12 +0200EvanR(~EvanR@user/evanr) (Quit: Leaving)
2023-09-08 06:44:34 +0200caryhartline(~caryhartl@168.182.58.169) (Quit: caryhartline)
2023-09-08 06:44:52 +0200aforemny_(~aforemny@2001:9e8:6cd9:400:79dd:b9ae:d530:5eae) (Ping timeout: 258 seconds)
2023-09-08 06:45:10 +0200EvanR(~EvanR@user/evanr)
2023-09-08 06:49:00 +0200acidjnk(~acidjnk@p200300d6e7072f302de738f6d26fc170.dip0.t-ipconnect.de)
2023-09-08 06:49:41 +0200nckx(nckx@libera/staff/owl/nckx) (*.net *.split)
2023-09-08 06:50:03 +0200nckx(nckx@libera/staff/owl/nckx)
2023-09-08 06:51:26 +0200caryhartline(~caryhartl@168.182.58.169)
2023-09-08 06:53:42 +0200vglfr(~vglfr@88.155.1.251) (Ping timeout: 245 seconds)
2023-09-08 06:54:09 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-09-08 06:55:38 +0200aforemny(~aforemny@i59F516ED.versanet.de)
2023-09-08 06:57:00 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-09-08 07:07:34 +0200systemfault(sid267009@id-267009.uxbridge.irccloud.com) (Changing host)
2023-09-08 07:07:34 +0200systemfault(sid267009@about/typescript/member/systemfault)
2023-09-08 07:16:20 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-09-08 07:19:02 +0200jackneill__(~Jackneill@20014C4E1E101A0091C70064EC2E3AAF.dsl.pool.telekom.hu)
2023-09-08 07:20:14 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-09-08 07:20:51 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-09-08 07:21:38 +0200qqq(~qqq@92.43.167.61)
2023-09-08 07:31:04 +0200Inst(~Inst@120.244.192.250)
2023-09-08 07:31:22 +0200 <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
2023-09-08 07:31:42 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-09-08 07:31:58 +0200caryhartline(~caryhartl@168.182.58.169) (Quit: caryhartline)
2023-09-08 07:32:44 +0200caryhartline(~caryhartl@168.182.58.169)
2023-09-08 07:33:01 +0200 <Inst> https://cdn.discordapp.com/attachments/280036215477239809/1149577202833309736/image.png
2023-09-08 07:33:24 +0200 <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
2023-09-08 07:33:32 +0200Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 246 seconds)
2023-09-08 07:35:41 +0200talismanick(~user@2601:204:ef80:2980::c39) (Remote host closed the connection)
2023-09-08 07:40:13 +0200 <EvanR> Inst, or delete the type signature and read the docs to see what you wrote xD
2023-09-08 07:40:48 +0200Pixi`(~Pixi@user/pixi)
2023-09-08 07:40:51 +0200 <Inst> top-level binding with no type signature
2023-09-08 07:43:21 +0200 <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)
2023-09-08 07:43:25 +0200 <EvanR> writing*
2023-09-08 07:43:41 +0200Pixi(~Pixi@user/pixi) (Ping timeout: 246 seconds)
2023-09-08 07:45:54 +0200 <Inst> I mean I'm the kind of guy who's done foo | bool1 = bar1 | bool2 = bar2 as an experiment
2023-09-08 07:45:58 +0200 <Inst> which is perfectly valid Haskell
2023-09-08 07:46:30 +0200 <Axman6> Is that supposed to be surprising?
2023-09-08 07:48:13 +0200 <Inst> it's non-standard, I usually do foo arg1; | bool1 = bar1; | bool2 = bar2...
2023-09-08 07:48:43 +0200 <mauke> that's a syntax error
2023-09-08 07:49:12 +0200 <Inst> the first one or the second one? The second one is only a syntax error because of the ellipsis
2023-09-08 07:49:24 +0200 <mauke> the second one is a syntax error because of the ;
2023-09-08 07:49:30 +0200 <int-e> I suspect the `;` was just meant to delimit lines
2023-09-08 07:49:42 +0200 <int-e> not sure, of course
2023-09-08 07:49:51 +0200 <Inst> oh, yeah, it is a syntax error because of the offset rule
2023-09-08 07:49:55 +0200michalz(~michalz@185.246.207.221)
2023-09-08 07:50:13 +0200 <Inst> since it's considered to start on a new line
2023-09-08 07:50:27 +0200 <Inst> and then terminates the definition
2023-09-08 07:50:40 +0200 <int-e> there's nothing wrong with foo | cond1 = val1 | cond2 = val2 except for readability if it's all on one line.
2023-09-08 07:51:06 +0200 <int-e> (and worries about completeness of the conditions)
2023-09-08 07:51:28 +0200 <Inst> i think it's valid if it's foo |...
2023-09-08 07:51:40 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 248 seconds)
2023-09-08 07:51:41 +0200 <Inst> i.e, it's in a where clause and you're defining a non-function value based on other data
2023-09-08 07:52:41 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 07:53:00 +0200 <mauke> > let x | otherwise = "hi" in x
2023-09-08 07:53:01 +0200 <lambdabot> "hi"
2023-09-08 07:53:43 +0200Inst(~Inst@120.244.192.250) (Remote host closed the connection)
2023-09-08 07:54:02 +0200Inst(~Inst@120.244.192.250)
2023-09-08 08:00:00 +0200 <Axman6> > let foo x | otherwise /= x = "Oh" | otherwise = "Ok" in foo True
2023-09-08 08:00:02 +0200 <lambdabot> "Ok"
2023-09-08 08:00:39 +0200 <int-e> Oh ok!
2023-09-08 08:01:49 +0200 <Inst> wait, you guys never try foo | bool1 = bar1 | bool2 = bar2 idioms?
2023-09-08 08:01:51 +0200 <int-e> > let f otherwise | otherwise = 1 | True = 0 in map f [False ..]
2023-09-08 08:01:54 +0200 <Inst> and I mean with proper whitespacing
2023-09-08 08:01:54 +0200 <lambdabot> [0,1]
2023-09-08 08:02:18 +0200 <Axman6> feature flags syntax
2023-09-08 08:02:23 +0200 <mauke> > let foo x | False <- x = "Oh" | True = "Ok" in foo True
2023-09-08 08:02:24 +0200 <lambdabot> "Ok"
2023-09-08 08:02:31 +0200 <int-e> > [() | False]
2023-09-08 08:02:32 +0200 <lambdabot> []
2023-09-08 08:02:40 +0200 <int-e> > [() | True]
2023-09-08 08:02:42 +0200 <lambdabot> [()]
2023-09-08 08:02:56 +0200 <Axman6> even more fun with monad comprehensions
2023-09-08 08:02:59 +0200 <Inst> int-e: you knew that'd work, right?
2023-09-08 08:03:15 +0200 <Inst> i was told [foo | bool] is fairly standard
2023-09-08 08:03:22 +0200 <int-e> Inst: it is
2023-09-08 08:03:29 +0200 <int-e> it's also surprisingly useful
2023-09-08 08:03:46 +0200 <Axman6> it's quite a nice alternative to guard for lists
2023-09-08 08:03:57 +0200 <Inst> i've used it with <> to append terms, although obv I freak out a little bit about performance
2023-09-08 08:04:03 +0200 <Inst> then fold on the resulting list
2023-09-08 08:04:13 +0200 <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
2023-09-08 08:04:28 +0200 <mauke> > let f xs | []<-xs = 0 | _ : xs<-xs = f xs + 1 in f "four"
2023-09-08 08:04:29 +0200 <lambdabot> 4
2023-09-08 08:04:35 +0200mxs(~mxs@user/mxs) (Server closed connection)
2023-09-08 08:04:43 +0200mxs(~mxs@user/mxs)
2023-09-08 08:04:55 +0200 <int-e> pattern guards are a bit less common
2023-09-08 08:04:58 +0200 <Inst> int-e: well, a production haskeller was impressed because he never thought about it, probably because it was smelly
2023-09-08 08:05:18 +0200 <Inst> and was thinking about putting it out as an interview question (he doesn't do interviews)
2023-09-08 08:06:34 +0200 <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.
2023-09-08 08:06:36 +0200 <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 -}..
2023-09-08 08:06:52 +0200 <Inst> then standard put boolean guards on another line
2023-09-08 08:07:00 +0200 <mauke> > let f xs | []<-xs = 0 | _ : (f->xs)<-xs = xs + 1 in f "four"
2023-09-08 08:07:01 +0200 <lambdabot> 4
2023-09-08 08:07:05 +0200 <Inst> also I'd argue that it's smelly when you're doing a complex chain of conditionals
2023-09-08 08:07:11 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-09-08 08:07:11 +0200 <int-e> even without extensions like view patterns
2023-09-08 08:07:25 +0200 <Inst> if you're setting a variable based on inputs, and there's very few guards, it's not that bad
2023-09-08 08:08:03 +0200 <Inst> where color | bool1 = Red | bool2 = Green | bool3 = Blue isn't bad, is it?
2023-09-08 08:09:20 +0200 <Axman6> I feel like I'd opt for MultiwayIf there, but mostly because I wouldn't think of doing it that way
2023-09-08 08:11:38 +0200 <Axman6> I've definitely seen where something | cond = a | cond2 = b | otherwise = c in real code though
2023-09-08 08:12:12 +0200 <Inst> yeah tbh it's probably still less readable than XMultiWayIf
2023-09-08 08:15:34 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
2023-09-08 08:15:56 +0200 <Inst> or, rather in this case, just properly formatting the thing with a line extension + guards on separate lines
2023-09-08 08:16:55 +0200 <Inst> the one thing i'd kill for syntactically, though, is being able to inline kind signatures in data declarations, though
2023-09-08 08:17:12 +0200 <Inst> you can do that with the type ariables, but not with the base type constructor
2023-09-08 08:19:20 +0200yosef`(~yosef`@user/yosef/x-2947716)
2023-09-08 08:19:23 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2023-09-08 08:20:48 +0200swamp_(~zmt00@user/zmt00) (Remote host closed the connection)
2023-09-08 08:21:08 +0200swamp_(~zmt00@user/zmt00)
2023-09-08 08:24:04 +0200noctux(~noctux@user/noctux) (Server closed connection)
2023-09-08 08:24:13 +0200noctux(~noctux@user/noctux)
2023-09-08 08:39:43 +0200aaronv(~aaronv@user/aaronv) (Remote host closed the connection)
2023-09-08 08:40:03 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 08:40:35 +0200gaze___(sid387101@id-387101.helmsley.irccloud.com) (Server closed connection)
2023-09-08 08:40:39 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:eab7:f748:7d5f:b5dd)
2023-09-08 08:40:44 +0200gaze___(sid387101@id-387101.helmsley.irccloud.com)
2023-09-08 08:42:46 +0200chele(~chele@user/chele)
2023-09-08 08:46:57 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-09-08 08:46:57 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-09-08 08:47:37 +0200qhong(~qhong@rescomp-21-400677.stanford.edu)
2023-09-08 08:50:37 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
2023-09-08 08:52:43 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-09-08 08:59:35 +0200 <Axman6> phma: wanna share that code again and we'll make it go superfast?
2023-09-08 09:00:07 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 248 seconds)
2023-09-08 09:05:08 +0200chromoblob(~user@37.113.180.113)
2023-09-08 09:05:09 +0200 <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...)
2023-09-08 09:06:52 +0200 <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
2023-09-08 09:09:43 +0200chromoblob(~user@37.113.180.113) (Ping timeout: 248 seconds)
2023-09-08 09:09:55 +0200sinbad(~sinbad@user/sinbad)
2023-09-08 09:11:51 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
2023-09-08 09:13:21 +0200Fischmiep(~Fischmiep@user/Fischmiep) (Ping timeout: 245 seconds)
2023-09-08 09:14:41 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-09-08 09:16:27 +0200 <phma> here's the repo, I just pushed it: https://github.com/phma/wring-twistree
2023-09-08 09:17:45 +0200 <phma> I looked at Data.Bits and found there's (.>>.), which is shorter when infixed
2023-09-08 09:18:07 +0200 <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.
2023-09-08 09:19:22 +0200 <Axman6> oh right, I forgot about that (:
2023-09-08 09:19:46 +0200 <int-e> Vector.fromList is probably where that story comes from?
2023-09-08 09:19:49 +0200 <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.
2023-09-08 09:19:54 +0200 <Axman6> yes, that's likely
2023-09-08 09:20:10 +0200Fischmiep(~Fischmiep@user/Fischmiep)
2023-09-08 09:20:37 +0200 <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)
2023-09-08 09:20:43 +0200Inst(~Inst@120.244.192.250) (Ping timeout: 240 seconds)
2023-09-08 09:21:24 +0200 <Axman6> or shift and .|. I guess, if you're going (x,y) -> index
2023-09-08 09:21:42 +0200 <phma> Running the bytes through the s-boxes seems pretty fast. I think I'll leave it as is.
2023-09-08 09:22:11 +0200 <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.
2023-09-08 09:23:05 +0200cafkafk_(~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
2023-09-08 09:23:07 +0200 <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)
2023-09-08 09:23:31 +0200 <phma> how do I use LLVM?
2023-09-08 09:23:34 +0200cafkafk_(~cafkafk@fsf/member/cafkafk)
2023-09-08 09:24:19 +0200 <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
2023-09-08 09:25:46 +0200 <phma> 16.5 s, not much change
2023-09-08 09:26:03 +0200 <phma> now I'll try the unsafe shift
2023-09-08 09:26:10 +0200 <Axman6> No, it's not a magic bullet, it can't make slow code fast magically sadly
2023-09-08 09:26:14 +0200fendor(~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f)
2023-09-08 09:26:22 +0200 <phma> now one of the args to shift is negative, I'll have to flip it
2023-09-08 09:27:31 +0200 <Axman6> you should also try using unsafeAt instead of (!)
2023-09-08 09:27:59 +0200 <Axman6> if you know it'll always be negative, then just make it positive and shift the other direction
2023-09-08 09:28:35 +0200 <phma> I'm running test.sh before and after to make sure that I don't mess up the algorithm with unsafe shifts
2023-09-08 09:28:51 +0200 <Axman6> sensible :)
2023-09-08 09:29:21 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:b858:d331:34dd:9a83) (Remote host closed the connection)
2023-09-08 09:29:28 +0200 <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)
2023-09-08 09:29:50 +0200 <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
2023-09-08 09:30:13 +0200 <Axman6> probie: this is very array heavy code so should be a good candidate for LLVM
2023-09-08 09:30:57 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 09:31:47 +0200 <phma> does unsafe shift work right when you shift a byte by 8?
2023-09-08 09:32:10 +0200 <Axman6> probably not
2023-09-08 09:32:28 +0200 <Axman6> you need to make sure the inputs are between 0 and 7
2023-09-08 09:32:31 +0200 <Axman6> IIRC
2023-09-08 09:32:44 +0200 <phma> the Rust code didn't work right, I had to make an if statement
2023-09-08 09:33:32 +0200gmg(~user@user/gehmehgeh)
2023-09-08 09:33:56 +0200 <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
2023-09-08 09:33:59 +0200 <int-e> rust has dedicated bit rotation operation
2023-09-08 09:34:18 +0200 <Axman6> this requires shifting in bits from a different word though
2023-09-08 09:34:28 +0200 <int-e> ah
2023-09-08 09:34:30 +0200mmhat(~mmh@p200300f1c7178a9eee086bfffe095315.dip0.t-ipconnect.de)
2023-09-08 09:34:35 +0200 <Axman6> so it's a global rotation, not rotation of a single byte
2023-09-08 09:34:41 +0200mmhat(~mmh@p200300f1c7178a9eee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
2023-09-08 09:34:54 +0200 <Axman6> (for very small definitions of "global")
2023-09-08 09:34:58 +0200 <phma> test passed so far
2023-09-08 09:34:58 +0200 <int-e> yeah, missed that.
2023-09-08 09:36:21 +0200cfricke(~cfricke@user/cfricke)
2023-09-08 09:36:52 +0200 <phma> I'm doing it twice per byte (one left shift, one right shift).
2023-09-08 09:37:48 +0200 <phma> rotBitcount rotates an entire buffer (1 MiB in the timed code) by its population count
2023-09-08 09:38:09 +0200 <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
2023-09-08 09:38:43 +0200 <phma> that's what the rust does
2023-09-08 09:39:06 +0200 <phma> but the haskell is working properly, at least on this cpu
2023-09-08 09:39:10 +0200 <Axman6> seems like a sensible performance improvement (which in the crypto world is generally regarded as A Bad Idea)
2023-09-08 09:39:23 +0200 <phma> hein?
2023-09-08 09:39:30 +0200 <Axman6> since a timing attack could tell when the pop count is a multiple of 8 very easily then
2023-09-08 09:39:39 +0200 <phma> ah
2023-09-08 09:40:29 +0200 <phma> test 524288, almost done
2023-09-08 09:41:13 +0200shawwwn(sid6132@id-6132.helmsley.irccloud.com) (Server closed connection)
2023-09-08 09:41:22 +0200shawwwn(sid6132@id-6132.helmsley.irccloud.com)
2023-09-08 09:41:41 +0200 <phma> 15.2 s
2023-09-08 09:41:57 +0200 <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
2023-09-08 09:41:59 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-09-08 09:42:22 +0200 <phma> the pop count could be 0 mod 8 on one round, and 5 mod 8 the next
2023-09-08 09:42:55 +0200 <Axman6> so you'd use (8 - n) `mod` 8 (or .&. 0x7)
2023-09-08 09:42:57 +0200 <phma> changing shift by 8 to shift by 8 is wrong though, it'll combine two whole bytes into one output byte
2023-09-08 09:43:15 +0200 <phma> I mean to shif by 0
2023-09-08 09:43:35 +0200AmyMalik(ellenor@callbox.trd.is) (Server closed connection)
2023-09-08 09:43:53 +0200 <Axman6> oh right, yeah a mask there would be useful
2023-09-08 09:46:57 +0200 <phma> How can I tell if I specialized it to the right type?
2023-09-08 09:47:09 +0200 <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
2023-09-08 09:47:26 +0200 <Axman6> what is 'it'?
2023-09-08 09:47:36 +0200 <phma> rotBitcount
2023-09-08 09:48:11 +0200mechap(~mechap@user/mechap)
2023-09-08 09:48:20 +0200 <phma> I'm on AMD
2023-09-08 09:48:38 +0200 <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
2023-09-08 09:49:37 +0200 <phma> RBIT looks fun
2023-09-08 09:50:01 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-09-08 09:50:06 +0200 <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
2023-09-08 09:50:37 +0200 <Axman6> because that's exactly what UBFX does
2023-09-08 09:52:21 +0200 <phma> is there a REV32?
2023-09-08 09:52:48 +0200 <phma> the key schedule would use REV16 if it were on ARM
2023-09-08 09:52:49 +0200 <Axman6> https://developer.arm.com/documentation/ddi0602/2022-09/Base-Instructions/REV32--Reverse-bytes-in-…
2023-09-08 09:54:40 +0200 <phma> make sure it has been what?
2023-09-08 09:55:57 +0200micro(~micro@user/micro) (Ping timeout: 260 seconds)
2023-09-08 09:56:58 +0200 <phma> Axman6: you seem to have broken off your sentence. What's the rest of the sentence?
2023-09-08 09:57:33 +0200td_(~td@i53870905.versanet.de) (Quit: waking up from the american dream ...)
2023-09-08 09:57:38 +0200 <Axman6> specialised
2023-09-08 09:57:57 +0200 <phma> how do I do that?
2023-09-08 09:57:59 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-09-08 09:58:43 +0200 <Axman6> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/pragmas.html#specialize-pragma
2023-09-08 09:59:18 +0200mechap(~mechap@user/mechap) (Ping timeout: 246 seconds)
2023-09-08 10:00:19 +0200 <phma> I think I have to specialize roundEncrypt and roundDecrypt too, those are what call rotBitcount
2023-09-08 10:00:27 +0200She(haveident@libera/staff/she/her) (Quit: Either upgrades, or the world's ending.)
2023-09-08 10:01:30 +0200mechap(~mechap@user/mechap)
2023-09-08 10:03:15 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:b858:d331:34dd:9a83)
2023-09-08 10:03:49 +0200micro(~micro@user/micro)
2023-09-08 10:07:20 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-09-08 10:07:32 +0200Ellenor(ellenor@callbox.trd.is)
2023-09-08 10:07:36 +0200Fischmiep(~Fischmiep@user/Fischmiep) (Ping timeout: 255 seconds)
2023-09-08 10:07:51 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-09-08 10:07:57 +0200She(haveident@libera/staff/she/her)
2023-09-08 10:08:02 +0200CiaoSen(~Jura@2a05:5800:296:dc00:664b:f0ff:fe37:9ef)
2023-09-08 10:10:54 +0200Fischmiep(~Fischmiep@user/Fischmiep)
2023-09-08 10:11:55 +0200 <phma> Time is now down to 10 s
2023-09-08 10:12:07 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 248 seconds)
2023-09-08 10:15:13 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-09-08 10:15:13 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-09-08 10:15:13 +0200finn_elijaFinnElija
2023-09-08 10:15:43 +0200 <phma> safe or unsafe shift makes no difference to the run time
2023-09-08 10:20:30 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-09-08 10:21:54 +0200aaronv(~aaronv@user/aaronv) (Quit: Leaving)
2023-09-08 10:22:47 +0200mechap(~mechap@user/mechap) (Ping timeout: 248 seconds)
2023-09-08 10:24:55 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 248 seconds)
2023-09-08 10:28:43 +0200 <phma> rotBitcount now takes 9.6% of the time.
2023-09-08 10:29:07 +0200td_(~td@i53870905.versanet.de)
2023-09-08 10:29:11 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-09-08 10:31:57 +0200phma(~phma@host-67-44-208-5.hnremote.net) (Read error: Connection reset by peer)
2023-09-08 10:32:44 +0200shachaf(~shachaf@user/shachaf) (Server closed connection)
2023-09-08 10:32:47 +0200phma(phma@2001:5b0:212a:b168:8a63:fd9c:4a28:c70e)
2023-09-08 10:32:53 +0200shachaf(~shachaf@user/shachaf)
2023-09-08 10:37:00 +0200caryhartline(~caryhartl@168.182.58.169) (Quit: caryhartline)
2023-09-08 10:49:31 +0200yosef`(~yosef`@user/yosef/x-2947716) (Quit: Client closed)
2023-09-08 10:49:36 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2023-09-08 10:57:30 +0200ubert(~Thunderbi@2001:871:263:95d1:53a2:cab9:2747:4277)
2023-09-08 11:03:41 +0200ft(~ft@p3e9bc1b6.dip0.t-ipconnect.de) (Quit: leaving)
2023-09-08 11:05:08 +0200chromoblob(~user@37.113.180.113)
2023-09-08 11:09:55 +0200danza(~francesco@151.57.215.192)
2023-09-08 11:11:03 +0200chromoblob(~user@37.113.180.113) (Ping timeout: 255 seconds)
2023-09-08 11:12:23 +0200ubert(~Thunderbi@2001:871:263:95d1:53a2:cab9:2747:4277) (Ping timeout: 248 seconds)
2023-09-08 11:14:10 +0200ubert(~Thunderbi@2001:871:263:95d1:bc24:1a8e:fab7:1bea)
2023-09-08 11:17:11 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-09-08 11:20:32 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 11:21:03 +0200sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-09-08 11:21:20 +0200danza(~francesco@151.57.215.192) (Remote host closed the connection)
2023-09-08 11:21:42 +0200danza(~francesco@151.57.215.192)
2023-09-08 11:22:28 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2023-09-08 11:22:31 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 248 seconds)
2023-09-08 11:24:09 +0200cawfee(~root@2406:3003:2077:2758::babe) (Server closed connection)
2023-09-08 11:24:28 +0200cawfee(~root@2406:3003:2077:2758::babe)
2023-09-08 11:26:15 +0200danza(~francesco@151.57.215.192) (Ping timeout: 248 seconds)
2023-09-08 11:27:15 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 11:27:16 +0200sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-09-08 11:32:10 +0200m1dnight(~christoph@78-22-4-67.access.telenet.be) (Quit: WeeChat 4.0.2)
2023-09-08 11:32:38 +0200m1dnight(~christoph@78-22-4-67.access.telenet.be)
2023-09-08 11:34:13 +0200g00gler(uid125351@id-125351.uxbridge.irccloud.com)
2023-09-08 11:38:43 +0200kuribas(~user@ptr-17d51eo6k7h88xpr7hr.18120a2.ip6.access.telenet.be)
2023-09-08 11:40:27 +0200NinjaTrappeur(~ninja@user/ninjatrappeur) (Changing host)
2023-09-08 11:40:27 +0200NinjaTrappeur(~ninja@about/aquilenet/vodoo/NinjaTrappeur)
2023-09-08 11:43:31 +0200cael_(~quassel@host109-148-244-226.range109-148.btcentralplus.com)
2023-09-08 11:49:24 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-09-08 11:53:46 +0200haveo(~haveo@sl35.iuwt.fr) (Ping timeout: 245 seconds)
2023-09-08 11:53:47 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-09-08 11:59:06 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-09-08 11:59:13 +0200driib(~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
2023-09-08 11:59:59 +0200driib(~driib@vmi931078.contaboserver.net)
2023-09-08 12:02:34 +0200caubert_(~caubert@user/caubert) (Quit: WeeChat 3.8)
2023-09-08 12:02:45 +0200caubert(~caubert@user/caubert)
2023-09-08 12:05:39 +0200haveo(~haveo@sl35.iuwt.fr)
2023-09-08 12:08:04 +0200mysl(~mysl@user/mysl)
2023-09-08 12:09:10 +0200mysl_(~mysl@user/mysl) (Ping timeout: 258 seconds)
2023-09-08 12:14:03 +0200_d0t(~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 255 seconds)
2023-09-08 12:17:18 +0200mysl_(~mysl@user/mysl)
2023-09-08 12:17:52 +0200_d0t(~{-d0t-}@user/-d0t-/x-7915216)
2023-09-08 12:19:08 +0200mysl(~mysl@user/mysl) (Ping timeout: 258 seconds)
2023-09-08 12:20:04 +0200mysl_mysl
2023-09-08 12:20:21 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 246 seconds)
2023-09-08 12:22:18 +0200mysl_(~mysl@user/mysl)
2023-09-08 12:22:47 +0200ubert(~Thunderbi@2001:871:263:95d1:bc24:1a8e:fab7:1bea) (Ping timeout: 248 seconds)
2023-09-08 12:23:00 +0200danza(~francesco@151.57.215.192)
2023-09-08 12:24:53 +0200mysl(~mysl@user/mysl) (Ping timeout: 258 seconds)
2023-09-08 12:27:19 +0200mysl(~mysl@user/mysl)
2023-09-08 12:28:07 +0200mysl_(~mysl@user/mysl) (Ping timeout: 248 seconds)
2023-09-08 12:30:04 +0200danza(~francesco@151.57.215.192) (Ping timeout: 248 seconds)
2023-09-08 12:35:17 +0200mysl_(~mysl@user/mysl)
2023-09-08 12:35:35 +0200CiaoSen(~Jura@2a05:5800:296:dc00:664b:f0ff:fe37:9ef) (Ping timeout: 248 seconds)
2023-09-08 12:37:14 +0200ubert(~Thunderbi@2001:871:263:95d1:77ed:664c:9083:f304)
2023-09-08 12:37:16 +0200mysl(~mysl@user/mysl) (Ping timeout: 258 seconds)
2023-09-08 12:40:16 +0200mysl(~mysl@user/mysl)
2023-09-08 12:42:03 +0200mysl_(~mysl@user/mysl) (Ping timeout: 246 seconds)
2023-09-08 12:42:53 +0200kuribas(~user@ptr-17d51eo6k7h88xpr7hr.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2023-09-08 12:45:18 +0200mysl_(~mysl@user/mysl)
2023-09-08 12:46:07 +0200mysl(~mysl@user/mysl) (Ping timeout: 244 seconds)
2023-09-08 12:49:13 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 12:49:35 +0200Flow(~none@gentoo/developer/flow) (Server closed connection)
2023-09-08 12:50:18 +0200mysl(~mysl@user/mysl)
2023-09-08 12:50:20 +0200Flow(~none@gentoo/developer/flow)
2023-09-08 12:51:02 +0200EllenorAmyMalik
2023-09-08 12:51:03 +0200mysl_(~mysl@user/mysl) (Ping timeout: 248 seconds)
2023-09-08 12:54:11 +0200cael__(~quassel@host109-148-244-226.range109-148.btcentralplus.com)
2023-09-08 12:54:24 +0200cael_(~quassel@host109-148-244-226.range109-148.btcentralplus.com) (Ping timeout: 258 seconds)
2023-09-08 12:58:35 +0200Arsen(arsen@gentoo/developer/managarm.dev.Arsen) (Server closed connection)
2023-09-08 12:58:53 +0200Arsen(arsen@gentoo/developer/managarm.dev.Arsen)
2023-09-08 12:59:06 +0200mysl_(~mysl@user/mysl)
2023-09-08 13:01:18 +0200mysl(~mysl@user/mysl) (Ping timeout: 246 seconds)
2023-09-08 13:04:39 +0200mysl(~mysl@user/mysl)
2023-09-08 13:07:03 +0200mysl_(~mysl@user/mysl) (Ping timeout: 258 seconds)
2023-09-08 13:07:08 +0200Dykam(Dykam@dykam.nl) (Server closed connection)
2023-09-08 13:07:17 +0200Dykam(Dykam@dykam.nl)
2023-09-08 13:11:39 +0200sm(~sm@plaintextaccounting/sm) (Ping timeout: 258 seconds)
2023-09-08 13:13:29 +0200mysl_(~mysl@user/mysl)
2023-09-08 13:13:34 +0200shane(~shane@ana.rch.ist) (Server closed connection)
2023-09-08 13:13:42 +0200shane(~shane@ana.rch.ist)
2023-09-08 13:13:59 +0200mysl(~mysl@user/mysl) (Ping timeout: 248 seconds)
2023-09-08 13:16:40 +0200xff0x(~xff0x@2405:6580:b080:900:775:bab:62a6:3a1d)
2023-09-08 13:20:41 +0200JordiGH(~jordi@user/jordigh)
2023-09-08 13:25:44 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 13:27:00 +0200actioninja0(~actioninj@user/actioninja)
2023-09-08 13:27:51 +0200actioninja(~actioninj@user/actioninja) (Ping timeout: 255 seconds)
2023-09-08 13:27:51 +0200actioninja0actioninja
2023-09-08 13:27:54 +0200ubert(~Thunderbi@2001:871:263:95d1:77ed:664c:9083:f304) (Ping timeout: 246 seconds)
2023-09-08 13:28:22 +0200ubert(~Thunderbi@2001:871:263:95d1:270d:fe5e:9aae:336d)
2023-09-08 13:30:53 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-09-08 13:33:49 +0200kuribas(~user@ptr-17d51eo6k7h88xpr7hr.18120a2.ip6.access.telenet.be)
2023-09-08 13:34:57 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-09-08 13:35:12 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 246 seconds)
2023-09-08 13:36:55 +0200ubert(~Thunderbi@2001:871:263:95d1:270d:fe5e:9aae:336d) (Ping timeout: 248 seconds)
2023-09-08 13:44:36 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Ping timeout: 245 seconds)
2023-09-08 13:54:12 +0200califax(~califax@user/califx) (Remote host closed the connection)
2023-09-08 13:54:33 +0200califax(~califax@user/califx)
2023-09-08 13:56:53 +0200JordiGH(~jordi@user/jordigh) (Ping timeout: 258 seconds)
2023-09-08 14:10:56 +0200artem(~artem@c-73-103-90-145.hsd1.in.comcast.net) (Remote host closed the connection)
2023-09-08 14:13:36 +0200JordiGH(~jordi@user/jordigh)
2023-09-08 14:17:35 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 258 seconds)
2023-09-08 14:18:35 +0200ulysses4ever(~artem@2601:249:4380:8950:f474:e3f8:9806:671)
2023-09-08 14:22:19 +0200 <sm> @where+ hs-opt-handbook https://haskell.foundation/hs-opt-handbook.github.io/contents.html Haskell Optimization Handbook
2023-09-08 14:22:19 +0200 <lambdabot> Done.
2023-09-08 14:22:47 +0200 <sm> lambdabot seems to have had a few shots of espresso. Instant response now!
2023-09-08 14:23:51 +0200stites(~stites@130.44.147.204) (Ping timeout: 255 seconds)
2023-09-08 14:24:40 +0200qqq(~qqq@92.43.167.61) (Remote host closed the connection)
2023-09-08 14:24:51 +0200stites(~stites@2607:fb90:ad62:807c:d15b:ce72:ad88:3242)
2023-09-08 14:25:18 +0200flukiluke(~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Ping timeout: 246 seconds)
2023-09-08 14:25:37 +0200flukiluke(~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962)
2023-09-08 14:29:52 +0200stites(~stites@2607:fb90:ad62:807c:d15b:ce72:ad88:3242) (Read error: Connection reset by peer)
2023-09-08 14:30:43 +0200SethTisue(sid14912@id-14912.ilkley.irccloud.com) (Server closed connection)
2023-09-08 14:30:53 +0200SethTisue(sid14912@id-14912.ilkley.irccloud.com)
2023-09-08 14:31:54 +0200stites(~stites@2607:fb90:ad62:807c:d15b:ce72:ad88:3242)
2023-09-08 14:33:01 +0200sinbad(~sinbad@user/sinbad) (Quit: Leaving.)
2023-09-08 14:33:16 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-09-08 14:34:48 +0200ph88^(~ph88@ip5b403cd4.dynamic.kabel-deutschland.de) (Quit: Leaving)
2023-09-08 14:40:18 +0200stites(~stites@2607:fb90:ad62:807c:d15b:ce72:ad88:3242) (Read error: Connection reset by peer)
2023-09-08 14:40:43 +0200stites(~stites@155.33.134.55)
2023-09-08 14:51:15 +0200ubert(~Thunderbi@178.115.49.191.wireless.dyn.drei.com)
2023-09-08 14:55:13 +0200kuribas(~user@ptr-17d51eo6k7h88xpr7hr.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
2023-09-08 14:56:21 +0200ddellacosta(~ddellacos@ool-44c738de.dyn.optonline.net) (Quit: WeeChat 4.0.3)
2023-09-08 14:58:39 +0200ddellacosta(~ddellacos@ool-44c738de.dyn.optonline.net)
2023-09-08 15:01:04 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-09-08 15:01:35 +0200it_(~quassel@v2202212189510211193.supersrv.de) (Quit: ,o>)
2023-09-08 15:01:52 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-09-08 15:01:56 +0200it_(~quassel@v2202212189510211193.supersrv.de)
2023-09-08 15:04:56 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 15:06:03 +0200sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-09-08 15:06:19 +0200Simikando(~Simikando@adsl-dyn91.91-127-22.t-com.sk)
2023-09-08 15:08:09 +0200mysl_mysl
2023-09-08 15:13:10 +0200waleee(~waleee@h-176-10-137-138.na.cust.bahnhof.se)
2023-09-08 15:18:58 +0200koolazer(~koo@user/koolazer) (Server closed connection)
2023-09-08 15:19:03 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-09-08 15:20:09 +0200Simikando(~Simikando@adsl-dyn91.91-127-22.t-com.sk) (Read error: Connection reset by peer)
2023-09-08 15:20:28 +0200Simikando(~Simikando@adsl-dyn91.91-127-22.t-com.sk)
2023-09-08 15:24:07 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 248 seconds)
2023-09-08 15:24:26 +0200koolazer(~koo@user/koolazer)
2023-09-08 15:29:29 +0200texasmynsted(~username@99.96.221.112) (Quit: WeeChat 3.0)
2023-09-08 15:29:51 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-09-08 15:32:39 +0200JordiGH(~jordi@user/jordigh) (Ping timeout: 248 seconds)
2023-09-08 15:33:11 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2023-09-08 15:33:33 +0200libertyprime(~libertypr@203.96.203.44)
2023-09-08 15:33:40 +0200img(~img@user/img)
2023-09-08 15:33:49 +0200img(~img@user/img) (Remote host closed the connection)
2023-09-08 15:34:46 +0200img(~img@user/img)
2023-09-08 15:44:23 +0200stites(~stites@155.33.134.55) (Read error: Connection reset by peer)
2023-09-08 15:44:50 +0200it_(~quassel@v2202212189510211193.supersrv.de) (Quit: ,o>)
2023-09-08 15:45:45 +0200it_(~quassel@v2202212189510211193.supersrv.de)
2023-09-08 15:45:55 +0200stites(~stites@155.33.134.55)
2023-09-08 15:50:54 +0200ezzieygu1wuf(~Unknown@user/ezzieyguywuf)
2023-09-08 15:51:32 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 250 seconds)
2023-09-08 15:53:08 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.0.4)
2023-09-08 15:54:24 +0200Deide(d0130db69a@user/deide) (Server closed connection)
2023-09-08 16:01:11 +0200 <ddellacosta> I didn't realize how weird Alternative is until just now. I feel slightly dirty with how liberally I use guard everywhere.
2023-09-08 16:01:49 +0200 <[exa]> wait Alternative is weird?
2023-09-08 16:02:49 +0200 <haskellbridge> <j​ade> news to me as well
2023-09-08 16:02:52 +0200 <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
2023-09-08 16:03:33 +0200 <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
2023-09-08 16:03:56 +0200 <ddellacosta> anyways, sorry just going down this rabbit hole and felt like expressing my surprise
2023-09-08 16:04:42 +0200 <[exa]> ddellacosta: not a big problem, I just wanted to kinda distill what is the weird part
2023-09-08 16:04:55 +0200 <[exa]> it's certainly surprising in cases, esp. with the left bias
2023-09-08 16:05:15 +0200 <[exa]> (perhaps the story with Validation might shed some light on that)
2023-09-08 16:06:06 +0200JordiGH(~jordi@user/jordigh)
2023-09-08 16:06:25 +0200 <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
2023-09-08 16:06:52 +0200 <[exa]> I'd say that people love to ignore the left bias :]
2023-09-08 16:07:02 +0200 <ddellacosta> I'll take a look at Validation, also not something I've thought much about
2023-09-08 16:07:04 +0200 <[exa]> btw what's the "Maybe's own Monoid instance" ?
2023-09-08 16:07:07 +0200Simikando(~Simikando@adsl-dyn91.91-127-22.t-com.sk) (Ping timeout: 250 seconds)
2023-09-08 16:07:37 +0200 <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
2023-09-08 16:07:39 +0200 <ddellacosta> values when presented with two Justs."
2023-09-08 16:08:10 +0200 <ddellacosta> puts it better than I can
2023-09-08 16:08:49 +0200 <[exa]> ah, so it's about that Monoidal and Alternative behavior differs surprisingly
2023-09-08 16:09:07 +0200 <lortabac> I've always found Alternative weird too
2023-09-08 16:09:18 +0200 <lortabac> I think there has been a similar discussion in the past here
2023-09-08 16:09:26 +0200 <ddellacosta> yeah I'm sure, I'm a bit late to the party lol
2023-09-08 16:09:48 +0200 <lortabac> also what's the meaning of the IO instance?
2023-09-08 16:09:49 +0200 <ddellacosta> it's interesting though, it is super useful regardless
2023-09-08 16:10:03 +0200 <ddellacosta> oh yeah that's also funky. It feels a bit like every instance has its own set of laws
2023-09-08 16:10:25 +0200 <[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
2023-09-08 16:10:29 +0200bcmiller(~bm3719@66.42.95.185) (Server closed connection)
2023-09-08 16:10:37 +0200 <ddellacosta> [exa]: that's a good point
2023-09-08 16:10:39 +0200 <[exa]> (related: Sum, Product, Endo, ... marks)
2023-09-08 16:10:39 +0200bcmiller(~bm3719@66.42.95.185)
2023-09-08 16:11:10 +0200 <ddellacosta> I mean, you could generalize that to the tradeoffs between modules and typeclasses, I suppose
2023-09-08 16:11:18 +0200 <[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
2023-09-08 16:11:26 +0200 <ddellacosta> but yeah Monoid suffers a lot from that
2023-09-08 16:11:30 +0200 <[exa]> *only _other_ choice than what Alternative does
2023-09-08 16:11:34 +0200 <lortabac> TBH I've never found Alternative very useful either
2023-09-08 16:11:44 +0200 <[exa]> it helps here and there
2023-09-08 16:11:48 +0200 <[exa]> parsecs
2023-09-08 16:11:49 +0200 <[exa]> :]
2023-09-08 16:12:09 +0200 <lortabac> except 'asum', we almost never write functions that are generic over Alternative
2023-09-08 16:12:10 +0200 <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
2023-09-08 16:12:51 +0200 <lortabac> ah yes, there is 'guard'
2023-09-08 16:12:57 +0200 <lortabac> I hadn't thought about it
2023-09-08 16:13:42 +0200 <[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?
2023-09-08 16:14:04 +0200 <[exa]> except ofc for 1] right bias instead of left 2] trivial case of "all is Nothing"
2023-09-08 16:14:36 +0200 <[exa]> btw cf.: First, Last -- https://hackage.haskell.org/package/base-4.18.0.0/docs/Data-Monoid.html#t:First
2023-09-08 16:15:02 +0200 <ddellacosta> I have no idea
2023-09-08 16:15:25 +0200 <ddellacosta> interesting question tho
2023-09-08 16:17:02 +0200 <[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
2023-09-08 16:18:03 +0200 <[exa]> so perhaps the `Alternative a => Alternative (Maybe a)` would be missing, but that overlaps already
2023-09-08 16:19:22 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-09-08 16:20:55 +0200 <[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
2023-09-08 16:30:15 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Read error: Connection reset by peer)
2023-09-08 16:30:24 +0200vglfr(~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
2023-09-08 16:31:35 +0200bwe(~bwe@2a01:4f8:1c1c:4878::2) (Server closed connection)
2023-09-08 16:31:43 +0200bwe(~bwe@2a01:4f8:1c1c:4878::2)
2023-09-08 16:31:51 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:eab7:f748:7d5f:b5dd) (Quit: WeeChat 2.8)
2023-09-08 16:37:11 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-09-08 16:42:15 +0200 <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
2023-09-08 16:43:37 +0200 <ddellacosta> I cannot for the life of me remember the link to that game though
2023-09-08 16:49:18 +0200 <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
2023-09-08 16:49:29 +0200ph88(~ph88@ip5b403cd4.dynamic.kabel-deutschland.de)
2023-09-08 16:50:21 +0200fendor(~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f) (Remote host closed the connection)
2023-09-08 16:50:59 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 246 seconds)
2023-09-08 16:51:35 +0200cael__(~quassel@host109-148-244-226.range109-148.btcentralplus.com) (Ping timeout: 248 seconds)
2023-09-08 16:51:51 +0200cael_(~quassel@host109-148-244-226.range109-148.btcentralplus.com)
2023-09-08 16:52:29 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 16:55:24 +0200 <ph88> how can i compile this? https://github.com/elaforge/fix-imports i only use stack normally
2023-09-08 16:55:40 +0200acidjnk(~acidjnk@p200300d6e7072f302de738f6d26fc170.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2023-09-08 16:58:03 +0200 <albet70> is Karp-Rabin related to Edmonds-Karp?
2023-09-08 16:58:21 +0200 <yushyin> ph88: extra-deps: allows for git repos, i would assume
2023-09-08 16:58:50 +0200 <[exa]> albet70: in which sense precisely? (50% of folks is shared! :D )
2023-09-08 16:59:42 +0200 <[exa]> ph88: the cabal.project is borked by user's local files, I guess you should open an issue or so
2023-09-08 17:00:23 +0200 <[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
2023-09-08 17:01:46 +0200 <ph88> yushyin, [exa] i'm getting an error like this https://bpa.st/RK7VA [exa] i did your suggested change in the cabal file
2023-09-08 17:02:11 +0200 <albet70> [exa] , I don't know, :)
2023-09-08 17:02:20 +0200 <[exa]> ph88: why not compile just with `cabal run` ?
2023-09-08 17:02:46 +0200 <[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
2023-09-08 17:02:48 +0200 <ph88> [exa], i don't have cabal only stack
2023-09-08 17:03:34 +0200 <[exa]> ph88: wait how come? (I didn't think that is possible)
2023-09-08 17:05:20 +0200 <ph88> [exa], i don't know, i never installed it. I don't have it as a command on the CLI
2023-09-08 17:05:28 +0200Simikando(~Simikando@adsl-dyn91.91-127-22.t-com.sk)
2023-09-08 17:05:51 +0200 <[exa]> ph88: maybe try `stack exec cabal -- run` or so
2023-09-08 17:06:00 +0200 <ph88> ok
2023-09-08 17:06:45 +0200 <[exa]> ohyeah, here: https://docs.haskellstack.org/en/stable/faq/index.html#can-i-run-cabal-commands-inside-stack-exec
2023-09-08 17:06:49 +0200 <ph88> Executable named cabal not found on path
2023-09-08 17:07:00 +0200 <ph88> oh thanks for the link i will look
2023-09-08 17:07:33 +0200 <[exa]> looks like I misplaced the --
2023-09-08 17:07:56 +0200She(haveident@libera/staff/she/her) (Quit: Either upgrades, or the world's ending.)
2023-09-08 17:07:57 +0200 <[exa]> anyway AFAIK stack must have a cabal binary stashed somewhere, at least internally, so it should work
2023-09-08 17:08:04 +0200She(haveident@libera/staff/she/her)
2023-09-08 17:08:13 +0200 <ph88> stack exec cabal -- run
2023-09-08 17:08:14 +0200 <ph88> stack exec -- cabal exec -- cabal run
2023-09-08 17:08:19 +0200 <ph88> stack exec -- cabal run
2023-09-08 17:08:29 +0200 <ph88> tried these 3 but i get the same: Executable named cabal not found on path
2023-09-08 17:08:38 +0200 <sclv> stack doesn’t have a cabal binaru
2023-09-08 17:08:38 +0200Lycurgus(~juan@user/Lycurgus)
2023-09-08 17:08:46 +0200 <sclv> only links the lib
2023-09-08 17:08:50 +0200 <[exa]> okay that explains it
2023-09-08 17:09:05 +0200mc47(~mc47@xmonad/TheMC47)
2023-09-08 17:11:17 +0200 <ph88> is there any other program that can remove unused imports ?
2023-09-08 17:14:22 +0200 <[exa]> I just run the ghc with the warning and fix all warnings
2023-09-08 17:14:26 +0200 <[exa]> and -Werror helps
2023-09-08 17:14:41 +0200 <sm> stack doesn't use a cabal binary, it links to the Cabal library
2023-09-08 17:15:44 +0200bratwurst(~blaadsfa@S010610561191f5d6.lb.shawcable.net)
2023-09-08 17:16:42 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-09-08 17:19:10 +0200 <sm> as was just said. dangit eyes, dangit crappy monitor..
2023-09-08 17:19:49 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-09-08 17:20:35 +0200Simikando(~Simikando@adsl-dyn91.91-127-22.t-com.sk) (Remote host closed the connection)
2023-09-08 17:20:52 +0200 <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
2023-09-08 17:20:59 +0200 <sm> but if you want a cabal binary, you could just install it
2023-09-08 17:22:14 +0200dcoutts(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 246 seconds)
2023-09-08 17:23:34 +0200 <sm> there's also https://hackage.haskell.org/package/hls-refine-imports-plugin
2023-09-08 17:24:45 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-09-08 17:24:46 +0200bratwurst(~blaadsfa@S010610561191f5d6.lb.shawcable.net) (Ping timeout: 255 seconds)
2023-09-08 17:25:04 +0200 <sm> and https://hackage.haskell.org/package/importify (2017)
2023-09-08 17:29:03 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-09-08 17:29:06 +0200ph88^(~ph88@ip5b403cd4.dynamic.kabel-deutschland.de)
2023-09-08 17:29:55 +0200sinbad(~sinbad@user/sinbad)
2023-09-08 17:31:56 +0200libertyprime(~libertypr@203.96.203.44) (Ping timeout: 258 seconds)
2023-09-08 17:38:44 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-09-08 17:38:46 +0200stites(~stites@155.33.134.55) (Read error: Connection reset by peer)
2023-09-08 17:39:11 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:b858:d331:34dd:9a83) (Remote host closed the connection)
2023-09-08 17:39:26 +0200stites(~stites@2607:fb90:ad60:c188:2612:e938:afc1:2f1e)
2023-09-08 17:39:28 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-09-08 17:40:21 +0200stites(~stites@2607:fb90:ad60:c188:2612:e938:afc1:2f1e) (Read error: Connection reset by peer)
2023-09-08 17:40:43 +0200stites(~stites@155.33.134.55)
2023-09-08 17:45:27 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 248 seconds)
2023-09-08 17:48:45 +0200Inst(~Inst@120.244.192.250)
2023-09-08 17:49:16 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Tschüss)
2023-09-08 17:50:14 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-09-08 17:51:07 +0200ft(~ft@p4fc2ae5a.dip0.t-ipconnect.de)
2023-09-08 18:00:19 +0200Sgeo(~Sgeo@user/sgeo)
2023-09-08 18:10:11 +0200danza(~francesco@151.46.222.150)
2023-09-08 18:10:34 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-09-08 18:14:43 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds)
2023-09-08 18:16:24 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-09-08 18:18:42 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-09-08 18:18:51 +0200danza(~francesco@151.46.222.150) (Ping timeout: 244 seconds)
2023-09-08 18:19:28 +0200ubert(~Thunderbi@178.115.49.191.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2023-09-08 18:20:59 +0200ph88^(~ph88@ip5b403cd4.dynamic.kabel-deutschland.de) (Quit: Leaving)
2023-09-08 18:23:14 +0200acidjnk(~acidjnk@p200300d6e7072f30251e7d7a920dd919.dip0.t-ipconnect.de)
2023-09-08 18:29:04 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-09-08 18:29:52 +0200 <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
2023-09-08 18:32:04 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 18:33:07 +0200 <ph88> sm, thanks importify looks good
2023-09-08 18:33:27 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 248 seconds)
2023-09-08 18:34:36 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2023-09-08 18:38:30 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2023-09-08 18:39:26 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-09-08 18:40:44 +0200 <sm> because it's six years old, you'll have to work harder to install it
2023-09-08 18:49:27 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f)
2023-09-08 18:49:42 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f) (Remote host closed the connection)
2023-09-08 18:49:57 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f)
2023-09-08 18:50:56 +0200danza(~francesco@151.46.222.150)
2023-09-08 18:52:42 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 246 seconds)
2023-09-08 18:53:47 +0200 <geekosaur> @where+ rwh http://www.realworldhaskell.org/blog/ http://book.realworldhaskell.org/read/ https://github.com/tssm/up-to-date-real-world-haskell
2023-09-08 18:53:47 +0200 <lambdabot> Okay.
2023-09-08 18:54:29 +0200sand-witch(~m-mzmz6l@vmi833741.contaboserver.net) (Server closed connection)
2023-09-08 18:54:46 +0200sand-witch(~m-mzmz6l@vmi833741.contaboserver.net)
2023-09-08 18:55:10 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-09-08 18:56:59 +0200danza(~francesco@151.46.222.150) (Ping timeout: 246 seconds)
2023-09-08 18:57:52 +0200danza(~francesco@151.46.222.150)
2023-09-08 18:58:26 +0200 <monochrom> ph88: When I want it, I use ghc -ddump-minimal-imports
2023-09-08 19:02:21 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 19:02:28 +0200 <monochrom> Add -fno-code :)
2023-09-08 19:04:50 +0200 <EvanR> I heard on betazed they write all their programs with no code!
2023-09-08 19:09:00 +0200qqq(~qqq@92.43.167.61)
2023-09-08 19:11:55 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-09-08 19:16:28 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 248 seconds)
2023-09-08 19:16:59 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-09-08 19:18:04 +0200aaronv(~aaronv@user/aaronv) (Remote host closed the connection)
2023-09-08 19:18:23 +0200aaronv(~aaronv@user/aaronv)
2023-09-08 19:21:56 +0200chele(~chele@user/chele) (Remote host closed the connection)
2023-09-08 19:23:51 +0200g00gler(uid125351@id-125351.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-09-08 19:26:47 +0200danza(~francesco@151.46.222.150) (Ping timeout: 248 seconds)
2023-09-08 19:28:55 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-09-08 19:30:11 +0200bratwurst(~blaadsfa@S010610561191f5d6.lb.shawcable.net)
2023-09-08 19:35:03 +0200bratwurst(~blaadsfa@S010610561191f5d6.lb.shawcable.net) (Ping timeout: 246 seconds)
2023-09-08 19:37:15 +0200phma(phma@2001:5b0:212a:b168:8a63:fd9c:4a28:c70e) (Read error: Connection reset by peer)
2023-09-08 19:37:17 +0200danza(~francesco@151.46.222.150)
2023-09-08 19:38:38 +0200phma(~phma@2001:5b0:210f:2a18:ec08:5fa6:cd25:140c)
2023-09-08 19:45:45 +0200Inst(~Inst@120.244.192.250) (Remote host closed the connection)
2023-09-08 19:46:10 +0200Inst(~Inst@120.244.192.250)
2023-09-08 19:47:49 +0200Inst(~Inst@120.244.192.250) ()
2023-09-08 19:49:34 +0200__monty__(~toonn@user/toonn)
2023-09-08 19:50:55 +0200megaTherion(~therion@unix.io) (Quit: ZNC 1.8.2 - https://znc.in)
2023-09-08 19:52:01 +0200megaTherion(~therion@unix.io)
2023-09-08 19:53:29 +0200megaTherion(~therion@unix.io) (Client Quit)
2023-09-08 19:54:36 +0200megaTherion(~therion@unix.io)
2023-09-08 20:02:14 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-09-08 20:02:51 +0200lex_(~alex@188.26.233.194)
2023-09-08 20:05:11 +0200danza(~francesco@151.46.222.150) (Remote host closed the connection)
2023-09-08 20:05:30 +0200danza(~francesco@151.46.222.150)
2023-09-08 20:08:20 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f) (Remote host closed the connection)
2023-09-08 20:08:29 +0200Typedfern(~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net) (Ping timeout: 246 seconds)
2023-09-08 20:08:32 +0200Simikando(~Simikando@adsl-dyn91.91-127-22.t-com.sk)
2023-09-08 20:10:27 +0200lex_(~alex@188.26.233.194) (Remote host closed the connection)
2023-09-08 20:11:17 +0200danza(~francesco@151.46.222.150) (Ping timeout: 246 seconds)
2023-09-08 20:17:32 +0200Simikando(~Simikando@adsl-dyn91.91-127-22.t-com.sk) (Quit: Leaving)
2023-09-08 20:20:16 +0200danza(~francesco@151.46.222.150)
2023-09-08 20:23:35 +0200danza(~francesco@151.46.222.150) (Remote host closed the connection)
2023-09-08 20:23:37 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f)
2023-09-08 20:23:57 +0200danza(~francesco@151.46.222.150)
2023-09-08 20:24:10 +0200g00gler(uid125351@id-125351.uxbridge.irccloud.com)
2023-09-08 20:24:25 +0200Typedfern(~Typedfern@81.red-83-37-27.dynamicip.rima-tde.net)
2023-09-08 20:28:39 +0200danza(~francesco@151.46.222.150) (Ping timeout: 248 seconds)
2023-09-08 20:32:49 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-09-08 20:34:13 +0200 <erisco> Low code and no code just means your programming language is some mix of config files and GUIs
2023-09-08 20:38:37 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2023-09-08 20:39:28 +0200gmg(~user@user/gehmehgeh)
2023-09-08 20:42:36 +0200 <EvanR> it takes a huge amount of code to write a GUI. So if code seems to be missing it's in the GUI
2023-09-08 20:43:46 +0200pavonia(~user@user/siracusa)
2023-09-08 20:44:11 +0200 <ph88> how can i fix this type error about MonadFail ? https://bpa.st/HWOZ2
2023-09-08 20:44:38 +0200 <haskellbridge> <j​ean-paul.> ph88: You could add a MonadFail constraint to m
2023-09-08 20:44:59 +0200 <haskellbridge> <j​ean-paul.> ph88: Or you could make your pattern match complete so you don't need MonadFail
2023-09-08 20:45:49 +0200 <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
2023-09-08 20:46:02 +0200 <ph88> ok i will try pattern match complete
2023-09-08 20:47:08 +0200cael_(~quassel@host109-148-244-226.range109-148.btcentralplus.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2023-09-08 20:47:26 +0200cael_(~quassel@host109-148-244-226.range109-148.btcentralplus.com)
2023-09-08 20:47:55 +0200cael_(~quassel@host109-148-244-226.range109-148.btcentralplus.com) (Client Quit)
2023-09-08 20:50:13 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 240 seconds)
2023-09-08 20:53:47 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-09-08 20:54:01 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-09-08 20:54:28 +0200danza(~francesco@151.46.222.150)
2023-09-08 21:02:13 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net) (Ping timeout: 240 seconds)
2023-09-08 21:05:03 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
2023-09-08 21:05:28 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f) (Remote host closed the connection)
2023-09-08 21:06:17 +0200robobub(uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-09-08 21:09:01 +0200Simikando(~Simikando@adsl-dyn91.91-127-22.t-com.sk)
2023-09-08 21:09:32 +0200arahael(~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 245 seconds)
2023-09-08 21:11:31 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-09-08 21:14:28 +0200 <ph88> sm2n, i made a fork https://github.com/flip111/importify/tree/lts-21.10
2023-09-08 21:21:34 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-09-08 21:26:24 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-09-08 21:34:48 +0200 <monochrom> ph88: "cabalPath <- fromJust <$> findCabalFile qpPath" will not incur MonadFail. Basically non-exhaustive patterns in do-notation incurs MonadFail.
2023-09-08 21:39:56 +0200 <ph88> thanks monochrom
2023-09-08 21:40:27 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:1030:d66f:8de7:984f)
2023-09-08 21:44:47 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2023-09-08 21:45:35 +0200gmg(~user@user/gehmehgeh)
2023-09-08 21:48:58 +0200danza_(~francesco@151.43.253.223)
2023-09-08 21:49:11 +0200danza(~francesco@151.46.222.150) (Ping timeout: 248 seconds)
2023-09-08 21:53:41 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2023-09-08 21:54:12 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
2023-09-08 21:54:25 +0200gmg(~user@user/gehmehgeh)
2023-09-08 21:55:08 +0200Simikando(~Simikando@adsl-dyn91.91-127-22.t-com.sk) (Quit: Leaving)
2023-09-08 21:56:48 +0200jackneill__(~Jackneill@20014C4E1E101A0091C70064EC2E3AAF.dsl.pool.telekom.hu) (Ping timeout: 246 seconds)
2023-09-08 22:07:33 +0200danza_(~francesco@151.43.253.223) (Ping timeout: 258 seconds)
2023-09-08 22:13:07 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-09-08 22:19:22 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-09-08 22:19:40 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-09-08 22:20:01 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 22:20:14 +0200sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-09-08 22:22:03 +0200fendor(~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f)
2023-09-08 22:23:17 +0200stites(~stites@155.33.134.55) (Read error: Connection reset by peer)
2023-09-08 22:23:54 +0200stites(~stites@155.33.134.55)
2023-09-08 22:24:59 +0200mzg(mzg@lazy.unconscious.biz) (Ping timeout: 246 seconds)
2023-09-08 22:25:06 +0200mzg(mzg@lazy.unconscious.biz)
2023-09-08 22:27:39 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-09-08 22:28:07 +0200stites(~stites@155.33.134.55) (Ping timeout: 248 seconds)
2023-09-08 22:28:36 +0200stites(~stites@2607:fb91:dc9:7a86:c8d0:2613:87c3:be7)
2023-09-08 22:35:53 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-09-08 22:37:00 +0200ddellacosta(~ddellacos@ool-44c738de.dyn.optonline.net) (Read error: Connection reset by peer)
2023-09-08 22:39:56 +0200ddellacosta(~ddellacos@ool-44c738de.dyn.optonline.net)
2023-09-08 22:42:46 +0200Pickchea(~private@user/pickchea)
2023-09-08 22:44:57 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-09-08 22:46:06 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-09-08 22:47:05 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-09-08 22:48:51 +0200stites(~stites@2607:fb91:dc9:7a86:c8d0:2613:87c3:be7) (Read error: Connection reset by peer)
2023-09-08 22:49:11 +0200stites(~stites@130.44.147.204)
2023-09-08 22:51:35 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 22:55:51 +0200sm(~sm@plaintextaccounting/sm) (Ping timeout: 248 seconds)
2023-09-08 23:00:38 +0200falafel(~falafel@62.175.113.194.dyn.user.ono.com)
2023-09-08 23:01:45 +0200kimiamania(~67afdc47@user/kimiamania) (Quit: PegeLinux)
2023-09-08 23:02:13 +0200kimiamania(~67afdc47@user/kimiamania)
2023-09-08 23:02:22 +0200AlexZenon(~alzenon@178.34.160.172) (Ping timeout: 258 seconds)
2023-09-08 23:03:54 +0200AlexZenon(~alzenon@178.34.160.172)
2023-09-08 23:07:03 +0200michalz(~michalz@185.246.207.221) (Remote host closed the connection)
2023-09-08 23:08:20 +0200libertyprime(~libertypr@203.96.203.44)
2023-09-08 23:08:48 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2023-09-08 23:09:45 +0200caryhartline(~caryhartl@168.182.58.169)
2023-09-08 23:18:32 +0200mmhat(~mmh@p200300f1c7178a9eee086bfffe095315.dip0.t-ipconnect.de)
2023-09-08 23:19:50 +0200_xor(~xor@ip-50-5-233-250.dynamic.fuse.net) (Quit: Ping timeout (120 seconds))
2023-09-08 23:20:08 +0200_xor0(~xor@ip-50-5-233-250.dynamic.fuse.net)
2023-09-08 23:23:03 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-09-08 23:24:31 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 23:25:01 +0200mmhat(~mmh@p200300f1c7178a9eee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.0.4)
2023-09-08 23:26:15 +0200acidjnk(~acidjnk@p200300d6e7072f30251e7d7a920dd919.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2023-09-08 23:27:51 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 248 seconds)
2023-09-08 23:29:12 +0200sm(~sm@plaintextaccounting/sm) (Ping timeout: 258 seconds)
2023-09-08 23:31:43 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 23:36:23 +0200sm(~sm@plaintextaccounting/sm) (Ping timeout: 248 seconds)
2023-09-08 23:36:29 +0200fendor(~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f) (Remote host closed the connection)
2023-09-08 23:38:48 +0200powderhorn(~powderhor@207-153-12-54.static.fttp.usinternet.com)
2023-09-08 23:39:18 +0200caryhartline(~caryhartl@168.182.58.169) (Quit: caryhartline)
2023-09-08 23:46:02 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-09-08 23:49:04 +0200sm(~sm@plaintextaccounting/sm)
2023-09-08 23:52:18 +0200Vajb(~Vajb@2001:999:500:7771:18aa:c4e5:e7a9:f44b) (Read error: Connection reset by peer)
2023-09-08 23:53:04 +0200Vajb(~Vajb@2001:999:500:7771:18aa:c4e5:e7a9:f44b)
2023-09-08 23:53:44 +0200sm(~sm@plaintextaccounting/sm) (Ping timeout: 258 seconds)
2023-09-08 23:55:59 +0200wroathe(~wroathe@user/wroathe)