Logs on 2021-12-13 (liberachat/#haskell)
| 00:02:49 | <koz> | Can I specify that a test-suite depends on a library, but not its tests? |
| 00:02:56 | <koz> | I'm getting cyclic dependency errors in the solver. |
| 00:04:26 | <hololeap> | that's weird, I would think that what you want would be the default |
| 00:04:44 | <koz> | hololeap: Well, it's not, sadly. |
| 00:04:51 | <hololeap> | this is cabal? |
| 00:04:57 | <koz> | Yup. |
| 00:05:13 | → | alx741 joins (~alx741@157.100.93.160) |
| 00:07:11 | → | curiousgay joins (~curiousga@77-120-141-90.kha.volia.net) |
| 00:07:43 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 00:07:58 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3) |
| 00:09:57 | × | averell quits (~averell@user/averell) (Remote host closed the connection) |
| 00:13:28 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 00:13:31 | <jackdk> | It could be that the package is set up funny, like all the build-depends are in a common stanza or something. I know the nixpkgs haskell infrastructure disables checks on a bunch of libraries to break cycles |
| 00:13:50 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 00:13:53 | × | acidjnk quits (~acidjnk@p200300d0c7271e62c4e0968b1a8deb03.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 00:15:44 | <koz> | jackdk: Not as far as I can tell. |
| 00:16:33 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 00:16:46 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 00:17:14 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 256 seconds) |
| 00:19:50 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 00:20:01 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) |
| 00:20:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 00:20:11 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 00:20:55 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Ping timeout: 252 seconds) |
| 00:21:10 | → | aeka` joins (~aeka@2606:9580:100:c:8757:8ee:ec9c:991c) |
| 00:22:01 | → | slice joins (~slice@user/slice) |
| 00:22:29 | × | aeka quits (~aeka@2606:6080:1002:9:ffc4:b9c1:20ad:82f9) (Ping timeout: 268 seconds) |
| 00:25:36 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) (Remote host closed the connection) |
| 00:27:26 | → | altern joins (~Sergii@altern.corbina.com.ua) |
| 00:27:53 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
| 00:34:21 | <pfurla> | how can I use language pragmas in a .lhs file? |
| 00:34:47 | → | alx741 joins (~alx741@157.100.93.160) |
| 00:35:15 | <jackdk> | `{-# LANGUAGE DataKinds #-}` or whatever at teh very top of the file |
| 00:35:15 | → | shailangsa_ joins (~shailangs@host86-186-127-128.range86-186.btcentralplus.com) |
| 00:36:03 | <geekosaur> | with .lhs I'd expect it to work the same way as anything else in a .lhs, precede with > or wrap in \begin{code} … \end{code} |
| 00:36:26 | <pfurla> | keep saying ``unlit' failed in phase `Literate pre-processor'. (Exit code: 1)` for {-# LANGUAGE LambdaCase #-} |
| 00:36:35 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 00:36:42 | <geekosaur> | I don't think it has to be the absolute first thing in the file because unlit runs before parsing] |
| 00:36:56 | <pfurla> | geekosaur same thing with > |
| 00:38:43 | <monochrom> | worksforme cannotreproduce |
| 00:38:51 | <geekosaur> | same |
| 00:38:56 | <pfurla> | interesting |
| 00:39:10 | <geekosaur> | @where paste |
| 00:39:10 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
| 00:39:16 | <pfurla> | I forgot a > in the last line of the source and it was causing the previous error |
| 00:42:50 | <pfurla> | yeah, ^ was the issue, thanks guys |
| 00:44:04 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) |
| 00:45:19 | × | jgeerds quits (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 268 seconds) |
| 00:50:42 | → | lavaman joins (~lavaman@98.38.249.169) |
| 00:50:53 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 00:54:55 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 00:56:43 | → | meinside joins (uid24933@id-24933.helmsley.irccloud.com) |
| 00:58:05 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 00:58:31 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 01:08:18 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 01:08:32 | × | Stotteren quits (~Stotteren@pool-108-20-79-41.bstnma.fios.verizon.net) (Remote host closed the connection) |
| 01:09:23 | → | alx741 joins (~alx741@157.100.93.160) |
| 01:09:42 | → | img joins (~img@user/img) |
| 01:10:06 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) (Remote host closed the connection) |
| 01:10:43 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) |
| 01:11:10 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Remote host closed the connection) |
| 01:12:23 | × | shailangsa_ quits (~shailangs@host86-186-127-128.range86-186.btcentralplus.com) () |
| 01:13:41 | × | CiaoSen quits (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 01:16:17 | × | altern quits (~Sergii@altern.corbina.com.ua) (Ping timeout: 252 seconds) |
| 01:17:04 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 01:18:08 | × | curiousgay quits (~curiousga@77-120-141-90.kha.volia.net) (Read error: Connection reset by peer) |
| 01:18:35 | → | curiousgay joins (~curiousga@77-120-141-90.kha.volia.net) |
| 01:19:57 | × | mvk quits (~mvk@2607:fea8:5cdd:f000::9788) (Ping timeout: 252 seconds) |
| 01:20:44 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 01:21:36 | × | bollu quits (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 01:25:32 | → | Guest48 joins (~Guest48@wireless-student-pt3-240-232.lut.ac.uk) |
| 01:26:12 | <Guest48> | Hey Im trying to make a function that creates a pattern like this |
| 01:27:13 | <Guest48> | https://imgur.com/a/lMho8qo |
| 01:27:17 | <Guest48> | so it takes 3 values |
| 01:27:19 | <Guest48> | x y z |
| 01:27:55 | → | zebrag joins (~chris@user/zebrag) |
| 01:27:56 | <Guest48> | x is the the height y is the width and z is the steps |
| 01:28:05 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 01:28:13 | <Guest48> | My code right now looks like this |
| 01:28:20 | <Guest48> | steps :: Int -> Int -> String |
| 01:28:21 | <Guest48> | steps n m = putStr (unlines (replicate m (concat(replicate n " " ++ replicate n "*")))) |
| 01:28:57 | <Guest48> | so this creates the steps and the repetition |
| 01:29:49 | × | nattiestnate quits (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.3) |
| 01:29:54 | <Guest48> | but in the picture you can see if I specify n steps it should duplicate n times on a new line all the while the width is x+x every loop |
| 01:30:47 | <Guest48> | I was wondering how do I call my functions n times whilst updating the doubling n |
| 01:30:55 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 01:30:57 | <Guest48> | if anyone could help it would be highly appreciated |
| 01:31:09 | <nosewings> | What do you mean by "steps"? |
| 01:31:35 | <Guest48> | so in the picture the two lines are repeated 4 times downwards |
| 01:31:42 | <Guest48> | then the pattern is reversed |
| 01:31:52 | <Guest48> | forget about the reversed part |
| 01:32:16 | <Guest48> | but the 2 lines repeat 4 times whilst the number of spaces + number of astrexis double |
| 01:32:52 | <nosewings> | So what values of x,y,z would generate the image you posted? |
| 01:33:05 | × | Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:33:46 | <Guest48> | so 2 3 4. 2 being the height, 3 being the width and 4 being steps |
| 01:34:12 | <Guest48> | steps x y takes the height and the width |
| 01:34:15 | <Guest48> | but im struggling on the steps |
| 01:34:31 | → | earendel joins (uid498179@user/earendel) |
| 01:34:32 | <Guest48> | all I would have to do is call steps 4 times and double the x every time its called |
| 01:35:06 | → | alx741 joins (~alx741@157.100.93.160) |
| 01:35:08 | <Guest48> | sorry nosewings does that make sense |
| 01:36:05 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 252 seconds) |
| 01:36:12 | × | dsrt^ quits (~dsrt@wsip-98-188-240-142.mc.at.cox.net) (Remote host closed the connection) |
| 01:37:55 | × | Jing quits (~hedgehog@2604:a840:3::1001) (Remote host closed the connection) |
| 01:38:46 | <nosewings> | Sure, but your type signature for steps doesn't seem right |
| 01:38:53 | <nosewings> | It should be steps :: Int -> Int -> IO () |
| 01:39:58 | <Guest48> | yeah your right |
| 01:40:04 | <Guest48> | I changed that whilst testing something out |
| 01:41:31 | → | Jing joins (~hedgehog@2604:a840:3::1001) |
| 01:42:38 | <Guest48> | nosewings you think you know how to do it? |
| 01:43:23 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 01:45:34 | <nosewings> | OK, so is the idea just that you want to do the same thing some number of times? |
| 01:45:46 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 01:47:01 | <Guest48> | yep |
| 01:47:23 | <Guest48> | nosewings but I need to update the parameters as well |
| 01:47:32 | <nosewings> | OK, there are functions in the standard library for that |
| 01:47:41 | <nosewings> | In this case, replicateM_ will do the job |
| 01:47:50 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 01:48:23 | <Guest48> | is there a way to do without using standard librarys? |
| 01:48:27 | → | mvk joins (~mvk@2607:fea8:5cdd:f000::9788) |
| 01:48:48 | <Guest48> | wait is it in built into haskell? |
| 01:49:14 | <nosewings> | It's not a primitive; it's written in regular haskell |
| 01:49:35 | <Guest48> | yh I can only use primitive |
| 01:49:52 | <nosewings> | Ah, okay |
| 01:50:44 | <nosewings> | Hm, but you're also using unlines, replicate, concat, ++; these are also not primitives |
| 01:51:10 | <nosewings> | Anyway, the way to do this is with recursion |
| 01:51:20 | <Guest48> | sorry im not allowed to import anything |
| 01:51:22 | <Guest48> | thats the base rule |
| 01:51:46 | <nosewings> | Oh, okay |
| 01:51:50 | <Guest48> | if replicateM is like unlines/ replicate/concat then Im allowed to use it |
| 01:52:06 | <nosewings> | It's not in the Prelude, so you can't use it |
| 01:52:11 | <Guest48> | ah right |
| 01:52:13 | <Guest48> | understood |
| 01:52:19 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 250 seconds) |
| 01:52:21 | → | shailangsa joins (~shailangs@host86-186-127-128.range86-186.btcentralplus.com) |
| 01:52:25 | <Guest48> | how would you do this with recursion |
| 01:52:39 | <nosewings> | Actually, I don't think you even have to |
| 01:52:48 | <Guest48> | even better xp |
| 01:52:53 | <nosewings> | If you remove the `putStrLn`, you'll get a function that returns a String |
| 01:53:09 | <nosewings> | Then you want to print z copies of that string |
| 01:53:51 | <Guest48> | so would you use replicate again? |
| 01:54:29 | <nosewings> | Yeah, and then you'll have to concat the resulting string |
| 01:54:38 | <nosewings> | Er, resulting list |
| 01:54:45 | <nosewings> | Might have to be careful with newlines |
| 01:55:19 | <Guest48> | yh I tried that with replicate and concat but it gave me extra new lines |
| 01:55:27 | <Guest48> | because then I had to do unlines again |
| 01:56:47 | <nosewings> | Oh, but do you want to increase the number of asterisks at each step? |
| 01:57:10 | <Guest48> | yep |
| 01:57:17 | <Guest48> | so double them basically |
| 01:57:21 | <Guest48> | and double the amount of spaces |
| 01:57:49 | <Guest48> | not double |
| 01:57:53 | <Guest48> | x+x |
| 01:58:42 | <nosewings> | Okay, so you do have to use recursion |
| 01:59:23 | <Guest48> | no problem |
| 01:59:49 | <nosewings> | (Might be a fancy way to do it without it, but) |
| 02:00:06 | <nosewings> | The other trick is that you need to use some sort of helper function |
| 02:00:18 | <Guest48> | nah recursion is fine |
| 02:00:20 | <nosewings> | Oh, or maybe you don't |
| 02:00:30 | <nosewings> | So it will look something like |
| 02:00:40 | <nosewings> | steps m n 0 = ... |
| 02:00:44 | <nosewings> | steps m n p = ... |
| 02:01:06 | <nosewings> | Where the first one is the case where you have 0 steps left, and the second one is where you still have some steps left to go |
| 02:02:27 | <Guest48> | m has to increase as well |
| 02:02:40 | <nosewings> | Right, so you call the function again with a new value of m |
| 02:03:17 | <Guest48> | so steps m n 0, step m+m n 0, step m+m+m n p etc? |
| 02:03:38 | × | xff0x quits (~xff0x@2001:1a81:5203:4200:40b7:e822:93c8:fd81) (Ping timeout: 268 seconds) |
| 02:03:45 | → | alx741 joins (~alx741@157.100.93.160) |
| 02:04:05 | <nosewings> | The sequence of recursive calls will look like steps m n p, steps m (2*m) (p - 1), steps m (3*m) (p - 2) ... |
| 02:04:07 | → | xff0x joins (~xff0x@port-92-195-24-10.dynamic.as20676.net) |
| 02:04:24 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:04:49 | <Guest48> | okk |
| 02:04:51 | <Guest48> | that makes sense |
| 02:05:00 | <nosewings> | i.e., `steps m n p` should end up calling itself like `steps (2*m) (n+m) (p - 1) |
| 02:05:15 | <nosewings> | You probably will need a helper function too, because you need to remember what the original value of m was |
| 02:05:24 | <Guest48> | got it |
| 02:05:55 | <Guest48> | so what would the helper function do |
| 02:06:33 | <nosewings> | The helper function would do basically all of the work |
| 02:07:22 | <nosewings> | Your function would end up looking something like steps m n p = steps' m n p where steps' x y z = ... |
| 02:07:37 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
| 02:08:09 | <nosewings> | And then steps' calls itself recursively like `steps' (x + m) (y + m) (p - 1) |
| 02:08:46 | <Guest48> | okk let me try and write this down, im new to haskell so im not entirely sure how to write this but Ill see |
| 02:08:50 | <nosewings> | The point is that this lets you remember what the original value of `m` was, so you always increase by the original amount instead of doubling |
| 02:09:03 | <Guest48> | i see |
| 02:09:24 | <Guest48> | whats the base case for the recursion? |
| 02:11:07 | <nosewings> | Something like `steps' x y 0 = ""` |
| 02:11:43 | <Guest48> | got it |
| 02:12:38 | <nosewings> | And then you append the strings at every step |
| 02:13:17 | <Guest48> | in the helper function or the main steps function |
| 02:13:37 | <nosewings> | In the helper function, because `steps` doesn't do anything except call the helper function |
| 02:13:53 | <nosewings> | Oh, look up where-syntax if you're unfamiliar with that keyword |
| 02:14:16 | <Guest48> | got it will do |
| 02:16:21 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 02:19:13 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 02:20:39 | × | Jing quits (~hedgehog@2604:a840:3::1001) (Remote host closed the connection) |
| 02:21:12 | <snake> | my haskell is spinning i wonder how long it will take to finish day 6 like this.. any suggestions? https://dpaste.com/7J4ZKM9FW |
| 02:23:14 | <glguy> | snake: you can probably finish part 1 like that, but not part 2 |
| 02:23:40 | <snake> | yeah lol pt 1 was fast, but pt 2 is just... spinning away |
| 02:24:10 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 256 seconds) |
| 02:24:57 | → | Jing joins (~hedgehog@2604:a840:3::1001) |
| 02:33:24 | → | Guest4846 joins (~Guest48@wireless-student-pt3-240-232.lut.ac.uk) |
| 02:34:29 | → | alx741 joins (~alx741@157.100.93.160) |
| 02:34:35 | <dsal> | snake: 256 is a bigger number than 80. :) |
| 02:34:51 | × | Guest48 quits (~Guest48@wireless-student-pt3-240-232.lut.ac.uk) (Ping timeout: 256 seconds) |
| 02:35:05 | <snake> | mhm, yeah im a total newbie with this haskell / functional stuff |
| 02:35:22 | <dsal> | It's not haskell/functional. This is one of those where the examples gives you a clue. |
| 02:35:34 | <dsal> | For the small example, you'd have a list of 26,984,457,539 fish. |
| 02:36:05 | <snake> | o |
| 02:36:44 | <dsal> | For the 255th run, you'd need to traverse a list about that big and do stuff to each element, including making new elements. |
| 02:37:20 | → | lavaman joins (~lavaman@98.38.249.169) |
| 02:37:44 | <glguy> | We haven't had anything this year that will be particular hard just as a consequence of using Haskell |
| 02:37:51 | <snake> | oh i guess i could just count the newfish |
| 02:38:02 | <snake> | wait AAAH |
| 02:38:03 | <snake> | idk |
| 02:38:28 | <dsal> | I managed to make something really hard by trying to use ST Arrays and having type inference be able to keep up. |
| 02:38:35 | <jackdk> | Why does `transformers` package have an AccumT and a CPS WriterT? Is there a difference? |
| 02:38:38 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 02:38:51 | <snake> | maybe i can use like a count for each fish if they have a synchronized time |
| 02:38:57 | <dsal> | It's pretty weird. I'll have code that works just fine, and then I'll add a newSTRef and it'll suddenly have no idea what these arrays are. |
| 02:41:44 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 02:43:09 | → | spoofer joins (~spoofer@64.185.111.205) |
| 02:45:14 | <glguy> | dsal: which problem had you pull out mutable arrays? |
| 02:45:39 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 02:45:39 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 02:46:16 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 02:47:30 | <Guest4846> | 'steps :: Int -> Int -> Int -> IO () |
| 02:47:31 | <Guest4846> | steps m n p = steps` m n p |
| 02:47:31 | <Guest4846> | where |
| 02:47:32 | <Guest4846> | steps` x y 0 = "" |
| 02:47:32 | <Guest4846> | steps` x y z = steps` (x+n) n (p-1) |
| 02:47:33 | <Guest4846> | steps` x y z = (unlines (replicate y (concat(replicate x " " ++ replicate y "*")))) |
| 02:47:33 | <Guest4846> | ' |
| 02:47:46 | <Guest4846> | im getting some sort of parse error on this code? anyone know why |
| 02:48:15 | <hololeap> | jackdk: AccumT is like a more powerful WriterT or a restricted StateT. It threads state like StateT, so you can `look` at the current state, but it only lets you mappend using `add` |
| 02:48:36 | <jackdk> | hololeap: ah, missed the read-side bit |
| 02:49:02 | <hololeap> | it's fairly useful although it lacks a lot of the mtl instances |
| 02:49:59 | <jackdk> | yeah I'm trying to get a new transformer for amazonka right at the moment - I have "lift MonadFoo through AmazonkaT" but not "lift MonadAmazonka through FooT" |
| 02:50:17 | <dsal> | glguy: I was trying it on day 11. It was… a little faster. |
| 02:50:23 | <dsal> | So much more code. |
| 02:50:28 | <jackdk> | and the design is awkward because ResourceT is a poo sometimes |
| 02:50:55 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 02:51:31 | <jackdk> | the main problem is that if I make the class provide `askEnv :: m Amazonka.Env` then I induce MonadResource constraints everywhere and lose mocking |
| 02:51:46 | <nosewings> | Guest4846: the problem is the backtick |
| 02:52:06 | <nosewings> | Backticks are syntax in Haskell; you need to use an an apostrophe |
| 02:53:56 | <jackdk> | if I make a class with methods like `sendEither :: (AWSRequest req, MonadAmazonka m) => req -> m (Either Error (AWSResponse req))` then I have to give up either GeneralizedNewtypeDeriving or `paginate :: (AWSPager req, MonadAmazonka m) => req -> ConduitT () (AWSResponse req) m ()` |
| 02:55:18 | <jackdk> | if I make a class whose method is a homomorphism from `Free (Coyoneda AWSAction) a -> m a` (a la ocharles), then I have to give up `reconfigure`/`within`/`once`/`timeout` combinators which are "`bracket`-like" |
| 02:55:27 | <jackdk> | very interested in opinions on how best to solve this |
| 02:55:54 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 260 seconds) |
| 02:56:53 | <jackdk> | Axman6: you around? |
| 03:03:18 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 03:03:18 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 03:03:18 | → | wroathe joins (~wroathe@user/wroathe) |
| 03:04:04 | → | alx741 joins (~alx741@157.100.93.160) |
| 03:04:45 | × | lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:08:02 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 03:09:27 | × | curiousgay quits (~curiousga@77-120-141-90.kha.volia.net) (Ping timeout: 250 seconds) |
| 03:10:27 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:10:27 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:10:27 | finn_elija | is now known as FinnElija |
| 03:13:34 | → | jkaye joins (~jkaye@2601:281:8300:7530:d9cd:95:6ff7:6ae4) |
| 03:15:02 | × | Akiva quits (~Akiva@user/Akiva) (Ping timeout: 260 seconds) |
| 03:15:28 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 03:15:56 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 03:15:56 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 03:15:56 | → | wroathe joins (~wroathe@user/wroathe) |
| 03:16:17 | <dibblego> | I'm dad but not around. |
| 03:16:47 | <jackdk> | dibblego: got any opinions onthe problem outlined above? |
| 03:17:06 | <dibblego> | woah context shift |
| 03:17:07 | → | lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
| 03:17:23 | <dibblego> | I'm not good at those without working with actual code tbh |
| 03:18:43 | <dibblego> | oh yeah, I roughly know that problem... I typically give up GeneralizedNewtypeDeriving since the other contenders are too useful to give up |
| 03:21:47 | × | Jing quits (~hedgehog@2604:a840:3::1001) (Remote host closed the connection) |
| 03:22:16 | × | whatif quits (~user@2400:8902::f03c:92ff:fe60:98d8) (Quit: ERC (IRC client for Emacs 26.3)) |
| 03:22:39 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 03:25:48 | → | Jing joins (~hedgehog@2604:a840:3::1001) |
| 03:27:38 | × | td_ quits (~td@muedsl-82-207-238-103.citykom.de) (Ping timeout: 256 seconds) |
| 03:28:07 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 268 seconds) |
| 03:28:39 | × | jkaye quits (~jkaye@2601:281:8300:7530:d9cd:95:6ff7:6ae4) (Ping timeout: 252 seconds) |
| 03:29:16 | → | td_ joins (~td@94.134.91.178) |
| 03:29:20 | → | shapr` joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 03:30:51 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 03:33:02 | × | retroid_ quits (~retro@05412d78.skybroadband.com) (Ping timeout: 268 seconds) |
| 03:33:39 | → | alx741 joins (~alx741@157.100.93.160) |
| 03:35:51 | → | retroid_ joins (~retro@05412d78.skybroadband.com) |
| 03:36:05 | → | mbuf joins (~Shakthi@122.174.40.28) |
| 03:36:29 | <jackdk> | dibblego: here is the problem https://www.irccloud.com/pastebin/JWvF4erR/MTLClassDesign.hs |
| 03:37:54 | × | gustik quits (~gustik@2a01:c844:242f:ba20:72e:7030:46bf:1353) (Quit: Leaving) |
| 03:40:32 | <dibblego> | will look I promise, millions of things stacked |
| 03:42:35 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
| 03:43:48 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1) |
| 03:45:25 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 03:45:46 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 03:48:07 | <hololeap> | jackdk: just a shot in the dark, but have you looked into using polysemy for this? personally, I haven't used it |
| 03:50:25 | <jackdk> | hololeap: in the effect system space I think you would need polysemy or something like it to write something like `within :: Region -> Eff effs a -> Eff effs a`. But the work codebase I'm upgrading is built on MTL and I want to do this right for MTL and opensource it, then worry about effect systems once things mature some more. polysemy needs plugins and isovector is on break from it, eff needs new ghc primops, etc. |
| 03:51:26 | <jackdk> | `freer-simple`, for example, is not powerful enough |
| 03:53:36 | → | see joins (~see@wireless-student-pt3-240-232.lut.ac.uk) |
| 03:53:46 | × | see quits (~see@wireless-student-pt3-240-232.lut.ac.uk) (Client Quit) |
| 03:54:21 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 03:58:12 | <EvanR> | stupid question after reading the ocharles blog link on monad stacks and APIs: why can't the API calls have type IO something |
| 03:59:08 | <EvanR> | is it then impossible to use from an enterprise haskell monad stack technology |
| 03:59:22 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 260 seconds) |
| 04:00:00 | × | Taneb quits (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (Quit: I seem to have stopped.) |
| 04:01:08 | → | Taneb joins (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) |
| 04:01:52 | → | alx741 joins (~alx741@157.100.93.160) |
| 04:02:16 | × | cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50) |
| 04:05:15 | → | bitmapper joins (uid464869@id-464869.lymington.irccloud.com) |
| 04:05:35 | × | Guest4846 quits (~Guest48@wireless-student-pt3-240-232.lut.ac.uk) (Quit: Client closed) |
| 04:06:50 | → | Guest71 joins (~Guest71@167.179.75.123) |
| 04:06:58 | <Guest71> | ?src ($) |
| 04:06:58 | <lambdabot> | f $ x = f x |
| 04:07:03 | <EvanR> | IO is untestable? |
| 04:07:21 | <Guest71> | ?src (%) |
| 04:07:21 | <lambdabot> | x % y = reduce (x * signum y) (abs y) |
| 04:09:36 | <Guest71> | Hi, all. Is my typing of `?src ($)` visible to all of the people here? |
| 04:09:43 | <EvanR> | yes |
| 04:09:56 | <EvanR> | you could privmsg lambdabot if you want |
| 04:10:06 | × | _xor quits (~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer) |
| 04:10:38 | <Guest71> | Ok, I wll try that. Thanks. I just need a way to check sources of commonly used functions. |
| 04:11:18 | <dsal> | Guest71: That's not the actual source. You can click on the source link from the docs. |
| 04:11:34 | <dsal> | The @src thing just gives you a simple model to consider. |
| 04:11:41 | <dsal> | (though sometimes it's right) |
| 04:11:42 | <dsal> | @src fix |
| 04:11:42 | <lambdabot> | fix f = let x = f x in x |
| 04:12:25 | <Guest71> | I wish this functionality will be built into GHCi |
| 04:12:47 | <dsal> | You can easily add things like this to ghci |
| 04:12:59 | <Guest71> | Really? How? |
| 04:13:33 | <dsal> | With :def settings in your .ghci |
| 04:14:02 | <Guest71> | Great, I will try that. Thanks a lot. |
| 04:14:33 | → | _xor joins (~xor@dsl-50-5-233-169.fuse.net) |
| 04:15:17 | <dsal> | Just clicking on "Source" while reading the docs is going to be the most reliable thing, though. |
| 04:15:54 | <jackdk> | EvanR: if you're just providing an API for direct calls, you often can (though a `MonadIO m` constraint) is often easier to use. But yeah, there's two parts AIUI: 1. the testability you mentioned; 2. having some kind of monadic context gives you a good place to stow things like API keys etc |
| 04:16:28 | <Guest71> | No, :def is used to define new commands, but I actually want a way to get definition of built in functions if available if GHCi, so I can find the info without leaving from my terminal. |
| 04:16:28 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 04:17:13 | <EvanR> | I see, open a long term session sort of thing |
| 04:18:43 | <EvanR> | Guest71, ghci generally doesn't have access to sources, and you can download the @src list if you want. But the real sources are also available |
| 04:19:05 | <snake> | my new screaming-fast solution for day 6: https://dpaste.com/7S4S87HV4 |
| 04:19:24 | <EvanR> | oh man |
| 04:20:14 | <EvanR> | I implemented day 6 with 8 registers and now runtime is dominated by loading the program and printing out the answer :( |
| 04:20:40 | <snake> | registers? |
| 04:20:52 | <dsal> | snake: (f0:f1:f2:f3:f4:f5:f6:f7:f8:[]) is [f0, f1, f2, f3, f4, f5, f6, f7, f8] |
| 04:20:59 | <EvanR> | yeah, x86-64 |
| 04:21:07 | <snake> | dsal, thanks :V |
| 04:22:10 | <EvanR> | each day can be computed with 1 add, if you do 9 days at a time, you can get away with no loop breaker checks xD |
| 04:22:23 | <EvanR> | if you do 99 at a time, even better, which loop unroll can help with |
| 04:22:33 | <dsal> | That's a neat way to do it, though it'll complain with -Wall. I saw someone else do that with a tuuple. |
| 04:22:35 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 04:24:04 | shapr` | is now known as shapr |
| 04:26:03 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 04:28:25 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
| 04:31:06 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 256 seconds) |
| 04:33:16 | → | alx741 joins (~alx741@157.100.93.160) |
| 04:34:52 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:37:38 | <pfurla> | snake: you can do `drop 9 . take 10 . iterate breedFishes $ [0..8]` instead of `breedFishes [0..8] 10` |
| 04:38:12 | → | nattiestnate joins (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) |
| 04:42:21 | × | Guest71 quits (~Guest71@167.179.75.123) (Ping timeout: 256 seconds) |
| 04:43:05 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 04:44:57 | <dsal> | drop 9 . take 10 sounds like (!! 10) |
| 04:45:10 | <dsal> | > drop 9 . take 10 $ [1..] |
| 04:45:11 | <lambdabot> | [10] |
| 04:45:13 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:45:13 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 04:45:13 | → | wroathe joins (~wroathe@user/wroathe) |
| 04:45:20 | <dsal> | > [1..] !! 10 |
| 04:45:21 | <EvanR> | (:[]) . (!! 10) xD |
| 04:45:21 | <lambdabot> | 11 |
| 04:45:39 | <dsal> | Off by one... but iterate is zero based. |
| 04:45:40 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 04:45:40 | <EvanR> | it's going to eat the 10 who is alarmed |
| 04:45:44 | <pfurla> | > [1.10] !! 11 |
| 04:45:45 | <lambdabot> | *Exception: Prelude.!!: index too large |
| 04:45:54 | <dsal> | You won't get that with iterate. |
| 04:46:05 | <pfurla> | > drop 11 . take 10 [1..10] |
| 04:46:07 | <lambdabot> | error: |
| 04:46:07 | <lambdabot> | • Couldn't match expected type ‘a -> [a1]’ with actual type ‘[a0]’ |
| 04:46:07 | <lambdabot> | • Possible cause: ‘take’ is applied to too many arguments |
| 04:46:09 | <pfurla> | > drop 11 . take 10 $ [1..10] |
| 04:46:10 | <lambdabot> | [] |
| 04:47:02 | <dsal> | iterate produces an infinite list. you don't have to be careful to not run past the end of it |
| 04:47:13 | <pfurla> | oh, true |
| 04:47:46 | <pfurla> | but I generally ignore unsafe functions |
| 04:48:37 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) (Remote host closed the connection) |
| 04:48:54 | <pfurla> | the problem I wonder if using drop. take. iterate instead of direct recursion will use much more memory |
| 04:50:07 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 04:50:50 | <EvanR> | this problem requires zero ram xD |
| 04:50:52 | <dsal> | Safe is relative. Sometimes you've gotta divide. |
| 04:51:04 | <hololeap> | snake: this is how I did it. similar, but using different tools: https://dpaste.com/EMAJUY2LG |
| 04:51:04 | <dsal> | EvanR: Is that a lot? |
| 04:52:03 | <dsal> | hololeap: what is MonoidalIntMap? |
| 04:53:07 | <xerox> | I'd wager an IntMap containing monoids |
| 04:53:21 | <hololeap> | it's a wrapper around IntMap that gives a different semigroup instance. it basically makes `unionWith (<>)` the semigroup instance |
| 04:53:36 | <jackdk> | why that was never the default instance is beyond me |
| 04:53:43 | <dsal> | oh cool. The default one is kind of unexpected. |
| 04:53:58 | × | InternetCitizen quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 260 seconds) |
| 04:54:01 | <dsal> | I've written that bug a few times. |
| 04:54:11 | <hololeap> | @hackage monoidal-containers |
| 04:54:11 | <lambdabot> | https://hackage.haskell.org/package/monoidal-containers |
| 04:54:20 | <dsal> | Things shouldn't compile if they don't do what I want. |
| 04:54:34 | <int-e> | dsal: easy! |
| 04:54:53 | <int-e> | dsal: it only gets tricky when you expect some things to actually compile |
| 04:54:54 | <dsal> | hololeap: Thanks. I've needed that often. |
| 04:55:13 | <dsal> | int-e: I was doing some ST recently, so I stopped expecting things to compile. |
| 04:55:31 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) |
| 04:55:38 | → | lavaman joins (~lavaman@98.38.249.169) |
| 04:57:46 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 04:59:11 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) (Remote host closed the connection) |
| 05:00:18 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) |
| 05:00:37 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds) |
| 05:01:05 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 05:01:24 | → | deadmarshal joins (~deadmarsh@95.38.117.193) |
| 05:02:50 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 256 seconds) |
| 05:03:34 | × | nattiestnate quits (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.3) |
| 05:03:46 | → | alx741 joins (~alx741@157.100.93.160) |
| 05:04:54 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
| 05:09:14 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 05:15:55 | → | Jing_ joins (~hedgehog@2604:a840:3::10c8) |
| 05:17:55 | × | Jing quits (~hedgehog@2604:a840:3::1001) (Ping timeout: 252 seconds) |
| 05:20:05 | <int-e> | c_wraith: after checking literally billions of initial configuration, https://paste.debian.net/1223190/ is the worst one I have, with 45174 steps before synchronizing. From what I've seen, finding one with 29734 after only 440k attempts was very lucky. |
| 05:20:16 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) (Remote host closed the connection) |
| 05:21:03 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 05:21:13 | × | ees quits (~user@pool-108-18-30-46.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 05:23:10 | → | Guest48 joins (~Guest48@wireless-student-pt3-240-232.lut.ac.uk) |
| 05:23:29 | × | Guest48 quits (~Guest48@wireless-student-pt3-240-232.lut.ac.uk) (Client Quit) |
| 05:29:27 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 05:34:02 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 240 seconds) |
| 05:34:08 | jinsun__ | is now known as jinsun |
| 05:34:57 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 05:35:23 | → | hololeap joins (~hololeap@user/hololeap) |
| 05:39:29 | → | alx741 joins (~alx741@157.100.93.160) |
| 05:40:10 | × | turlando quits (~turlando@user/turlando) (Ping timeout: 260 seconds) |
| 05:40:17 | → | turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it) |
| 05:40:17 | × | turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
| 05:40:17 | → | turlando joins (~turlando@user/turlando) |
| 05:41:36 | <xerox> | int-e: today I have a chance |
| 05:46:05 | → | bollu joins (uid233390@id-233390.helmsley.irccloud.com) |
| 05:46:05 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 05:51:03 | <xerox> | is there nothing like this for lists? file:///Users/user/.ghcup/ghc/9.3.20211020/share/doc/ghc-9.3.20211020/html/libraries/containers/Data-Set.html#v:splitMember |
| 05:52:40 | <int-e> | xerox: that link is surprisingly useless ;-) |
| 05:53:03 | <xerox> | hahaha |
| 05:53:10 | <int-e> | libraries/containers/Data-Set.html#v:splitMember |
| 05:53:11 | <xerox> | I made a point of having it locally but now... I see |
| 05:53:14 | <int-e> | ... |
| 05:53:21 | <int-e> | https://hackage.haskell.org/package/containers-0.6.5.1/docs/Data-Set.html#v:splitMember |
| 05:53:22 | <xerox> | yeah you can figure it out |
| 05:53:52 | <int-e> | This was Firefox screwing with me... I did select the link in the url bar and it still pasted a different selection. |
| 05:54:15 | <EvanR> | Data.Set (and Data.Map) are so cool |
| 05:55:06 | <int-e> | xerox: | (xs, _:ys) <- span (/= '|') "abc|def" -- works as a guard |
| 05:55:24 | <xerox> | > Data.Set.splitMember [] (Data.Set.fromList [["3","4"],["6","8"],[],["fold","along","y","5"]]) |
| 05:55:25 | <lambdabot> | (fromList [],True,fromList [["3","4"],["6","8"],["fold","along","y","5"]]) |
| 05:55:38 | <xerox> | with lists it'd be... *chef kiss* |
| 05:55:46 | <int-e> | huh |
| 05:56:09 | <int-e> | I wouldn't want to rely on "fold" > "9" |
| 05:56:30 | <xerox> | no of course, in the case of lists the ordering would be of the elements of the list, not that :D |
| 05:57:09 | <EvanR> | your set is contaminated |
| 05:57:23 | <EvanR> | with the stringly typed |
| 05:58:27 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds) |
| 06:00:55 | <EvanR> | haskell has advantage on tonights puzzle because it's good at folds |
| 06:01:01 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 06:01:10 | × | deadmarshal quits (~deadmarsh@95.38.117.193) (Ping timeout: 260 seconds) |
| 06:02:17 | <int-e> | EvanR: that's a good pun, I approve |
| 06:02:42 | → | alx741 joins (~alx741@181.199.42.79) |
| 06:05:50 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 260 seconds) |
| 06:09:15 | × | perro quits (~perro@072-191-245-069.res.spectrum.com) (Ping timeout: 252 seconds) |
| 06:10:11 | × | pfurla quits (~pfurla@2804:18:5820:1d6d:95e6:204:998d:de68) (Quit: gone to sleep. ZZZzzz…) |
| 06:16:19 | → | emf joins (~emf@cpe-174-109-36-85.nc.res.rr.com) |
| 06:21:23 | × | emf quits (~emf@cpe-174-109-36-85.nc.res.rr.com) (Ping timeout: 268 seconds) |
| 06:30:28 | → | chomwitt joins (~chomwitt@2a02:587:dc0d:3700:12c3:7bff:fe6d:d374) |
| 06:30:50 | → | Akiva joins (~Akiva@user/Akiva) |
| 06:32:19 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:32:52 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 06:36:32 | → | Guest71 joins (~Guest71@167.179.75.123) |
| 06:38:02 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 256 seconds) |
| 06:40:30 | × | alx741 quits (~alx741@181.199.42.79) (Read error: Connection reset by peer) |
| 06:41:11 | → | alx741 joins (~alx741@157.100.93.160) |
| 06:45:13 | × | Guest71 quits (~Guest71@167.179.75.123) (Quit: Client closed) |
| 06:48:27 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 06:49:24 | → | lavaman joins (~lavaman@98.38.249.169) |
| 06:53:54 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 07:02:41 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 07:03:47 | → | michalz joins (~michalz@185.246.204.122) |
| 07:04:34 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 07:05:32 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:06:39 | → | alx741 joins (~alx741@181.199.42.79) |
| 07:07:02 | → | chele joins (~chele@user/chele) |
| 07:09:30 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 268 seconds) |
| 07:14:36 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 07:18:51 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 250 seconds) |
| 07:20:32 | × | Akiva quits (~Akiva@user/Akiva) (Ping timeout: 256 seconds) |
| 07:21:01 | → | waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
| 07:27:14 | <dmj`> | > (join bimap) (+1) (1,1) |
| 07:27:16 | <lambdabot> | (2,2) |
| 07:30:37 | <hololeap> | :t join bimap |
| 07:30:38 | <lambdabot> | Bifunctor p => (c -> d) -> p c c -> p d d |
| 07:32:12 | × | alx741 quits (~alx741@181.199.42.79) (Read error: Connection reset by peer) |
| 07:38:05 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:40:20 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 07:45:04 | → | cfricke joins (~cfricke@user/cfricke) |
| 07:48:58 | → | alx741 joins (~alx741@157.100.93.160) |
| 07:49:11 | → | maplike joins (~maplike@31.209.100.216) |
| 07:58:45 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:1f7:bbc2:bf58:b649) |
| 08:00:12 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:00:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:00:51 | → | trcc joins (~trcc@eduroam09.au.dk) |
| 08:02:48 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 08:07:04 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 08:16:02 | → | nabaiste^ joins (~nabaiste@wsip-98-188-240-142.mc.at.cox.net) |
| 08:18:00 | → | mncheck joins (~mncheck@193.224.205.254) |
| 08:19:27 | <maplike> | https://stackoverflow.com/a/69651010 - works, so it's likely I am misinterpreting the idea |
| 08:19:44 | <maplike> | since this is about _counting_ combinations, why Solved Cent and not Solved Int? |
| 08:20:36 | → | alx741 joins (~alx741@157.100.93.160) |
| 08:23:16 | <maplike> | in divide, Solved 0/1 presumably signify failure/success? |
| 08:23:49 | <maplike> | in conquer, what does it mean to add the 2 params, a and b, of Pending? What do those 2 values (as Cents) signify? |
| 08:24:10 | <maplike> | in conquer, I would have expected we just need to sum the Solveds. |
| 08:24:12 | × | earendel quits (uid498179@user/earendel) (Quit: Connection closed for inactivity) |
| 08:24:31 | <maplike> | in conquer, a and b are Cents, whereas in divide they were ([Cent], Cent) (aka ChangePuzzleArgs) - I can't see how that transformation happens. |
| 08:24:55 | <maplike> | more questions than lines of code! |
| 08:25:22 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 08:26:12 | × | Jing_ quits (~hedgehog@2604:a840:3::10c8) (Remote host closed the connection) |
| 08:26:14 | → | kuribas joins (~user@ptr-25vy0i9k5aujcskch0c.18120a2.ip6.access.telenet.be) |
| 08:27:01 | → | Jing joins (~hedgehog@125.106.89.200) |
| 08:32:47 | → | phma_ joins (phma@2001:5b0:211c:2a58:d0c:f178:6e2:131e) |
| 08:33:41 | × | phma quits (phma@2001:5b0:212a:ba68:a7e4:c90f:fe43:cf4b) (Read error: Connection reset by peer) |
| 08:39:39 | → | acidjnk joins (~acidjnk@p200300d0c7271e62e04d49a98672dc3b.dip0.t-ipconnect.de) |
| 08:42:40 | → | max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
| 08:48:22 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:48:22 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 08:50:37 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 08:52:41 | <EvanR> | nice post |
| 08:54:30 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds) |
| 08:55:41 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 08:56:47 | → | zer0bitz joins (~zer0bitz@dsl-hkibng32-54fbfb-173.dhcp.inet.fi) |
| 08:57:05 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 08:57:25 | <maplike> | EvanR - the hylo one? |
| 09:04:45 | → | alx741 joins (~alx741@157.100.93.160) |
| 09:05:18 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 09:06:04 | → | jgeerds joins (~jgeerds@55d4ac73.access.ecotel.net) |
| 09:10:38 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 09:11:07 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 09:12:40 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) |
| 09:12:47 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-80cc-6b44-5328-2ea1.res6.spectrum.com) (Remote host closed the connection) |
| 09:14:16 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-d088-4906-a1eb-3fe7.res6.spectrum.com) |
| 09:17:39 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 09:18:53 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-d088-4906-a1eb-3fe7.res6.spectrum.com) (Remote host closed the connection) |
| 09:19:10 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-d088-4906-a1eb-3fe7.res6.spectrum.com) |
| 09:20:35 | → | arjun joins (~arjun@user/arjun) |
| 09:22:22 | ← | nosewings parts (~ngpc@2603-8081-3e05-e2d0-d088-4906-a1eb-3fe7.res6.spectrum.com) () |
| 09:22:33 | → | psygate joins (~psygate@user/psygate) |
| 09:22:40 | × | whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 09:22:49 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-d088-4906-a1eb-3fe7.res6.spectrum.com) |
| 09:22:52 | → | ubert joins (~Thunderbi@2a02:8109:9880:303c:a6e9:4af8:654:3268) |
| 09:23:29 | <psygate> | Given that I have a type 'data State a = Minimum a | Maximum a | Unclassified a', can I unpack a without knowing the specific constructor used? |
| 09:24:21 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-d088-4906-a1eb-3fe7.res6.spectrum.com) (Remote host closed the connection) |
| 09:24:59 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-d088-4906-a1eb-3fe7.res6.spectrum.com) |
| 09:25:03 | → | xkuru joins (~xkuru@user/xkuru) |
| 09:25:29 | × | slice quits (~slice@user/slice) (Quit: zzz) |
| 09:26:41 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-d088-4906-a1eb-3fe7.res6.spectrum.com) (Remote host closed the connection) |
| 09:28:10 | × | trcc quits (~trcc@eduroam09.au.dk) (Remote host closed the connection) |
| 09:31:33 | <kuribas> | psygate: getValue :: State a -> a; getValue (Minimum x) = x; getValue ... |
| 09:32:13 | phma_ | is now known as phma |
| 09:33:30 | <kuribas> | alternatively: data StateDescr = Minimum | Maximum | Unclassified; data State a = State a StateDescr. |
| 09:33:45 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 09:35:40 | → | cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) |
| 09:35:41 | → | alx741 joins (~alx741@157.100.93.160) |
| 09:40:27 | × | Jing quits (~hedgehog@125.106.89.200) (Read error: Connection reset by peer) |
| 09:42:53 | → | trcc joins (~trcc@users-5343.st.net.au.dk) |
| 09:46:47 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 09:46:59 | → | Jing joins (~hedgehog@2604:a840:3::10c8) |
| 09:50:17 | <psygate> | kuribas, i like the second one, thank you |
| 09:51:54 | → | josemotanet joins (~jose@2001:8a0:ee85:a00:d4ef:b473:6a8a:ba2e) |
| 09:52:24 | <psygate> | Ah, and is there a good way to implement Ord based on ''data State a = Minimum a | Maximum a | Unclassified a' ? I dont want to define compare x y for every constructor |
| 09:53:00 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 09:53:24 | → | curiousgay joins (~curiousga@77-120-141-90.kha.volia.net) |
| 09:53:28 | <hololeap> | it depends on what behavior you're looking for |
| 09:54:05 | <hololeap> | do you want Maximum a > Minimum a > Unclassified a ? |
| 09:54:53 | <psygate> | No, I'd like to compare the contained values. |
| 09:54:59 | <kuribas> | only? |
| 09:55:10 | <psygate> | The outer type is just meant as a local wrapper, that ads a tag but shouldn't influence "how" it works |
| 09:55:46 | <kuribas> | instance Ord (State a) where compare (State x _) (State y _) = compare x y |
| 09:59:25 | <hololeap> | if you use the original data structure as opposed to kuribas' alternative, then you would have to a) enumerate all combinations of constructors b) write a function that can extract `a' from any of your constructors and compare on that directly |
| 09:59:29 | <psygate> | That doesn't work. I've got it defined as a "wrapper" so to say |
| 09:59:36 | <psygate> | Do I have to restructure the type to make it work like that? |
| 09:59:51 | <psygate> | Oh okay, well that answers it, thanks hololeap |
| 10:02:12 | → | teo joins (~teo@user/teo) |
| 10:02:20 | <kuribas> | yeah "compare = compare `on` getValue" for the first. |
| 10:02:50 | <hololeap> | by defining an Ord instance for (State a), you're kind of implying that (compare (Minimum 5) (Maximum 5)) is discrete from (compare 5 5). if you really _mean_ that you want to compare the inner values, then write it as such, IMO |
| 10:03:07 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 10:04:50 | <psygate> | I'll use kuribas suggestion for the type, it looks like a much cleaner solution |
| 10:05:37 | <hololeap> | yeah it's like rewriting (a + a + a) as (a * 3) |
| 10:06:19 | <hololeap> | you can do that kind of simple algebra on types, hence the name algebraic data types |
| 10:07:32 | <psygate> | Is there a solution for getter / setter now? I've seen there are record types |
| 10:09:28 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 10:09:30 | <hololeap> | you could use record syntax pretty painlessly here. data State a = State { stateVal :: a, stateDescr :: StateDescr } |
| 10:09:34 | <kuribas> | getter/setter = lens |
| 10:09:54 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 10:10:23 | <hololeap> | that would give you two functions that act as your getters: stateVal :: State a -> a ; stateDescr :: State a -> StateDescr |
| 10:10:23 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit) |
| 10:11:20 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 10:11:24 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit) |
| 10:11:29 | <hololeap> | and you can use record syntax as a setter as well: State 4 Minimum { stateVal = 10 } -- this yields (State 10 Minimum) |
| 10:11:58 | → | kmein_ joins (~weechat@user/kmein) |
| 10:12:22 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Remote host closed the connection) |
| 10:12:24 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 10:13:00 | <hololeap> | that little example would actually have to be written as: (State 4 Minimum) { stateVal = 10 } |
| 10:13:49 | × | kmein quits (~weechat@user/kmein) (Ping timeout: 240 seconds) |
| 10:13:55 | × | mvk quits (~mvk@2607:fea8:5cdd:f000::9788) (Ping timeout: 250 seconds) |
| 10:14:30 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
| 10:15:37 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 10:16:01 | <hololeap> | otherwise the record update would apply to Minimum (an error) as opposed to applying to the State that I'm constructing there |
| 10:17:48 | → | zaquest joins (~notzaques@5.130.79.72) |
| 10:19:48 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:20:27 | <psygate> | Ahhh, and is there a way to constraint the State type to only orderable types? |
| 10:20:43 | <psygate> | Something like 'Ord a => data State a StateDesc' ? |
| 10:21:12 | → | alx741 joins (~alx741@157.100.93.160) |
| 10:21:17 | <hololeap> | you'll want to put `Ord a => ...` on whatever functions actually need it |
| 10:21:27 | <merijn> | psygate: You can't really constraint types |
| 10:23:23 | <psygate> | makes sense, thanks. its been a while that ive used haskell. you may be able to tell. |
| 10:23:35 | <dminuoso> | psygate: We used to be able to do this, but it occured this was mostly pointless. |
| 10:23:51 | <dminuoso> | This does not have any meaningful gains and just artificially limits your code |
| 10:25:12 | → | vpan joins (~0@212.117.1.172) |
| 10:25:42 | <dminuoso> | Instead we place constraints on function definition sites instead, like `f :: Ord a => State a StateDesc`, this has the cute benefit of allowing the creation of State for non-Ord choices of `a` in code regions that does not need `f` |
| 10:25:50 | <dminuoso> | So we get the freedom to write more code |
| 10:26:11 | <dminuoso> | Uh, the above was meant to read `f :: Ord a => State a StateDesc -> T` |
| 10:28:12 | × | arjun quits (~arjun@user/arjun) (Remote host closed the connection) |
| 10:28:36 | → | arjun joins (~arjun@103.57.87.133) |
| 10:30:26 | <hololeap> | if you had an Ord constraint on the whole type, then you wouldn't be able to make a Functor instance for State, for instance, because Functor requires that there are no constraints on `a'. it has to work with any function (a -> b) for _any_ `a' and `b' |
| 10:31:45 | <kuribas> | hololeap: perhaps you could with a GADT? |
| 10:32:58 | <hololeap> | I don't think so. you would run into the same problem that we have with Set no matter how you approach it |
| 10:33:25 | <kuribas> | But that's because Set doesn't have an Ord in the type. |
| 10:34:05 | × | pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer) |
| 10:36:04 | <hololeap> | it might as well. it requires Ord for anything that would involve modifying the data |
| 10:36:45 | → | DNH joins (~DNH@2a02:8108:1100:16d8:41d5:8d83:8f3c:c995) |
| 10:37:44 | <sprout> | can I post my egel solution for day 13, task 2? |
| 10:40:13 | → | madjestic joins (~madjestic@88-159-247-120.fixed.kpn.net) |
| 10:40:59 | <hololeap> | only if it's egel |
| 10:41:02 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
| 10:41:43 | → | pavonia joins (~user@user/siracusa) |
| 10:42:25 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 10:42:30 | <sprout> | yay! |
| 10:42:34 | <sprout> | https://github.com/egel-lang/aoc-2021/blob/main/day13/task2.eg <- day 13, task2, egel solution. just waste cycles on it |
| 10:42:37 | <sprout> | https://pasteboard.co/WUoK7G5rKdWk.png <- with colors! |
| 10:43:17 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
| 10:43:42 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 10:44:19 | <sprout> | for haskellers. egel is roughly untyped impure lambda calculus + constants. so shouldn't be hard to read |
| 10:44:32 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 10:44:35 | <sprout> | (+eager) |
| 10:45:57 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:3700:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds) |
| 10:46:21 | → | earendel joins (uid498179@user/earendel) |
| 10:47:19 | → | deadmarshal joins (~deadmarsh@95.38.114.19) |
| 10:51:07 | → | lavaman joins (~lavaman@98.38.249.169) |
| 10:55:01 | <hololeap> | looks interesting |
| 10:55:37 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 10:57:06 | <kuribas> | egel = e(a)g(er) (hask)el(l)? |
| 10:57:49 | <merijn> | Clearly sprout just likes hedgehogs :p |
| 10:58:30 | <dminuoso> | Eegel is german for Hihrudinea |
| 10:58:45 | <dminuoso> | I assume that is meant. |
| 10:58:48 | <sprout> | nah, it's Dutch for hedgehog. I sometimes have a hedgehog in my garden I try to take care of |
| 10:59:05 | <merijn> | hah! |
| 10:59:08 | <merijn> | I was right! |
| 10:59:26 | <sprout> | I's also a bit of a pun on Python. hedgehogs are somewhat venom resitant |
| 10:59:30 | <sprout> | *resistant |
| 10:59:45 | <merijn> | Shoulda gone for mongoose then :p |
| 11:00:02 | <sprout> | when I add types! |
| 11:00:21 | <kuribas> | sprout: so you wasted a chance for a clever acronym? :-P |
| 11:00:23 | <sprout> | (probably not going to happen) |
| 11:00:49 | → | alx741 joins (~alx741@157.100.93.160) |
| 11:01:12 | <dminuoso> | sprout: What is eager rewriting exactly? |
| 11:01:29 | <dminuoso> | Is that just fancy for graph reduction? |
| 11:01:30 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 11:02:00 | <sprout> | opposite of lazy. I forgot, it's right-to-left bottom up reduction? |
| 11:02:11 | <dminuoso> | right-to-left? |
| 11:02:24 | <sprout> | lazy is top-to-bottom left-to-right, I think. sorry forgot |
| 11:02:38 | dminuoso | does not know what left or right means |
| 11:02:43 | <merijn> | kuribas: As long as you have a theme :p |
| 11:02:49 | <sprout> | yah, when you look at a term graph there are a number of rewrite strategies |
| 11:03:03 | <merijn> | The CS group at my university had a running theme of naming all projects after black and white animals |
| 11:03:37 | <kuribas> | zebra? |
| 11:03:51 | <kuribas> | How many animals are white and black? |
| 11:03:57 | <sprout> | and some of them can fall in a taxonomy of 'what term do I rewrite' |
| 11:04:19 | <merijn> | DAS (badger), Ibis and a bunch of others, I'd have to look up the list |
| 11:04:27 | <sprout> | I think laziness corresponds to always rewriting the top term of the graph, but forgot |
| 11:07:57 | × | DNH quits (~DNH@2a02:8108:1100:16d8:41d5:8d83:8f3c:c995) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:11:34 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 11:12:46 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 11:13:50 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 11:15:45 | × | bollu quits (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 11:17:23 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Ping timeout: 268 seconds) |
| 11:17:35 | → | bollu joins (uid233390@id-233390.helmsley.irccloud.com) |
| 11:20:35 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 11:31:04 | → | alx741 joins (~alx741@157.100.93.160) |
| 11:31:44 | → | InternetCitizen joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 11:34:48 | → | DNH joins (~DNH@2a02:8108:1100:16d8:41d5:8d83:8f3c:c995) |
| 11:36:42 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 260 seconds) |
| 11:39:33 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 11:48:26 | → | altern joins (~Sergii@altern.corbina.com.ua) |
| 11:49:40 | → | CiaoSen joins (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 11:53:00 | → | boris_ joins (~chatzilla@149.62.206.183) |
| 11:55:11 | × | boris_ quits (~chatzilla@149.62.206.183) (Client Quit) |
| 11:56:25 | → | boris_ joins (~chatzilla@149.62.206.183) |
| 11:57:58 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 11:58:33 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 250 seconds) |
| 12:00:20 | → | nunggu joins (~q@gateway/tor-sasl/nunggu) |
| 12:01:41 | × | DNH quits (~DNH@2a02:8108:1100:16d8:41d5:8d83:8f3c:c995) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 12:03:19 | → | DNH joins (~DNH@2a02:8108:1100:16d8:41d5:8d83:8f3c:c995) |
| 12:07:01 | → | trcc_ joins (~trcc@eduroam09.au.dk) |
| 12:07:49 | × | shailangsa quits (~shailangs@host86-186-127-128.range86-186.btcentralplus.com) () |
| 12:07:58 | × | DNH quits (~DNH@2a02:8108:1100:16d8:41d5:8d83:8f3c:c995) (Ping timeout: 268 seconds) |
| 12:08:35 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 12:08:43 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 12:09:23 | × | timCF quits (~timCF@m91-129-100-224.cust.tele2.ee) (Ping timeout: 250 seconds) |
| 12:10:29 | × | trcc quits (~trcc@users-5343.st.net.au.dk) (Ping timeout: 250 seconds) |
| 12:10:39 | × | cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Remote host closed the connection) |
| 12:11:21 | × | trcc_ quits (~trcc@eduroam09.au.dk) (Ping timeout: 250 seconds) |
| 12:12:34 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 12:13:15 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 12:14:49 | × | boris_ quits (~chatzilla@149.62.206.183) (Ping timeout: 252 seconds) |
| 12:15:46 | → | boris_ joins (~chatzilla@149.62.206.183) |
| 12:16:28 | → | SummerSonw joins (~The_viole@203.77.49.232) |
| 12:19:21 | × | jgeerds quits (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 250 seconds) |
| 12:24:08 | → | cfricke joins (~cfricke@user/cfricke) |
| 12:25:13 | × | SummerSonw quits (~The_viole@203.77.49.232) (Ping timeout: 268 seconds) |
| 12:26:25 | → | timCF joins (~timCF@m91-129-100-224.cust.tele2.ee) |
| 12:27:01 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:27:09 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-d348-9a8a-50cc-26de.fixed6.kpn.net) |
| 12:29:05 | → | alx741 joins (~alx741@157.100.93.160) |
| 12:32:28 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 12:35:58 | × | jespada quits (~jespada@87.74.33.157) (Ping timeout: 260 seconds) |
| 12:37:55 | → | jespada joins (~jespada@87.74.33.157) |
| 12:40:01 | × | boris_ quits (~chatzilla@149.62.206.183) (Ping timeout: 268 seconds) |
| 12:40:47 | → | boris_ joins (~chatzilla@149.62.206.183) |
| 12:42:29 | → | Guest4833 joins (~Guest48@wireless-student-pt3-240-232.lut.ac.uk) |
| 12:43:32 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 12:43:37 | → | neverfindme joins (~hayden@158.123.160.43) |
| 12:44:22 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 12:45:28 | → | son0p joins (~ff@2800:484:1d81:b700::4) |
| 12:45:59 | × | gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (Ping timeout: 252 seconds) |
| 12:45:59 | × | Guest4833 quits (~Guest48@wireless-student-pt3-240-232.lut.ac.uk) (Client Quit) |
| 12:46:09 | → | Guest4866 joins (~Guest48@wireless-student-pt3-240-232.lut.ac.uk) |
| 12:46:12 | → | __monty__ joins (~toonn@user/toonn) |
| 12:46:32 | × | Guest4866 quits (~Guest48@wireless-student-pt3-240-232.lut.ac.uk) (Client Quit) |
| 12:46:41 | → | yuyua32 joins (~yuyua32@wireless-student-pt3-240-232.lut.ac.uk) |
| 12:47:31 | × | neverfindme quits (~hayden@158.123.160.43) (Remote host closed the connection) |
| 12:47:54 | → | neverfindme joins (~hayden@158.123.160.43) |
| 12:51:08 | → | notzmv joins (~zmv@user/notzmv) |
| 12:51:23 | → | cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) |
| 12:53:51 | × | curiousgay quits (~curiousga@77-120-141-90.kha.volia.net) (Remote host closed the connection) |
| 12:54:05 | → | cosimone` joins (~user@93-47-228-207.ip115.fastwebnet.it) |
| 12:54:58 | → | curiousgay joins (~curiousga@77-120-141-90.kha.volia.net) |
| 12:55:55 | → | perro joins (~perro@072-191-245-069.res.spectrum.com) |
| 12:56:02 | × | cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 260 seconds) |
| 12:56:31 | → | gabiruh joins (~gabiruh@vps19177.publiccloud.com.br) |
| 13:00:02 | → | alx741 joins (~alx741@157.100.93.160) |
| 13:00:48 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Read error: Connection timed out) |
| 13:01:23 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 252 seconds) |
| 13:01:30 | → | jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 13:09:17 | → | afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b) |
| 13:12:23 | × | altern quits (~Sergii@altern.corbina.com.ua) (Ping timeout: 252 seconds) |
| 13:12:41 | × | boris_ quits (~chatzilla@149.62.206.183) (Quit: ChatZilla 0.10 [SeaMonkey 2.53.10/20211111233623]) |
| 13:13:46 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 13:16:03 | × | arjun quits (~arjun@103.57.87.133) (Ping timeout: 252 seconds) |
| 13:19:05 | × | yuyua32 quits (~yuyua32@wireless-student-pt3-240-232.lut.ac.uk) (Quit: Client closed) |
| 13:24:23 | → | pfurla joins (~pfurla@177.25.184.160) |
| 13:25:51 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 13:26:52 | → | arjun joins (~arjun@103.57.87.133) |
| 13:28:38 | → | chomwitt joins (~chomwitt@ppp-94-67-201-96.home.otenet.gr) |
| 13:29:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 13:30:04 | → | alx741 joins (~alx741@157.100.93.160) |
| 13:33:40 | × | chomwitt quits (~chomwitt@ppp-94-67-201-96.home.otenet.gr) (Ping timeout: 268 seconds) |
| 13:48:30 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 13:49:10 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 13:50:54 | × | azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds) |
| 13:53:21 | → | mimmy joins (~mimmy@72.142.88.18) |
| 13:58:23 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 250 seconds) |
| 13:58:48 | → | SummerSonw joins (~The_viole@203.77.49.232) |
| 14:01:48 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 14:03:27 | × | hololeap quits (~hololeap@user/hololeap) (Excess Flood) |
| 14:03:52 | × | vpan quits (~0@212.117.1.172) (Quit: Leaving.) |
| 14:04:48 | → | hololeap joins (~hololeap@user/hololeap) |
| 14:05:43 | × | neverfindme quits (~hayden@158.123.160.43) (Remote host closed the connection) |
| 14:06:06 | → | neverfindme joins (~hayden@158.123.160.43) |
| 14:06:17 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 14:07:38 | → | alx741 joins (~alx741@157.100.93.160) |
| 14:13:11 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 14:13:23 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 14:13:49 | × | neverfindme quits (~hayden@158.123.160.43) (Ping timeout: 240 seconds) |
| 14:14:07 | → | alx741 joins (~alx741@157.100.93.160) |
| 14:15:16 | → | Guest19 joins (~Guest19@n110-33-34-202.hum1.act.optusnet.com.au) |
| 14:16:47 | × | josemotanet quits (~jose@2001:8a0:ee85:a00:d4ef:b473:6a8a:ba2e) (Quit: WeeChat 3.3) |
| 14:17:22 | → | yuyua32 joins (~yuyua32@wireless-student-pt3-240-232.lut.ac.uk) |
| 14:17:27 | → | shailangsa joins (~shailangs@host86-186-127-128.range86-186.btcentralplus.com) |
| 14:19:25 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 14:20:52 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 14:21:09 | → | burnsidesLlama joins (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
| 14:24:28 | Guest19 | is now known as jz99 |
| 14:26:39 | → | singpolyma joins (8a1e37e5a6@tilde.team/user/singpolyma) |
| 14:27:24 | → | neverfindme joins (~hayden@158.123.160.43) |
| 14:27:25 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 14:27:25 | <singpolyma> | 👋️ I have an error in production: `CallStack (from HasCallStack):\n error, called at DB.hs:116:16 in main:DB` is there a way these days to get that call stack to be deeper than one level? |
| 14:29:00 | kmein_ | is now known as kmein |
| 14:29:53 | → | fr33domlover joins (~fr33@2.55.169.194) |
| 14:31:15 | × | timCF quits (~timCF@m91-129-100-224.cust.tele2.ee) (Quit: leaving) |
| 14:33:20 | <dminuoso> | Does POSIX have a mechanism to determine whether a given file is a symlink or a socket? |
| 14:33:49 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 14:33:49 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 14:33:49 | → | wroathe joins (~wroathe@user/wroathe) |
| 14:36:18 | × | yuyua32 quits (~yuyua32@wireless-student-pt3-240-232.lut.ac.uk) (Quit: Client closed) |
| 14:38:25 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:38:37 | × | mimmy quits (~mimmy@72.142.88.18) (Ping timeout: 240 seconds) |
| 14:39:07 | → | jgeerds joins (~jgeerds@55d4ac73.access.ecotel.net) |
| 14:39:58 | → | mimmy joins (~mimmy@72.142.88.18) |
| 14:40:09 | → | jkaye joins (~jkaye@2601:281:8300:7530:8f84:8d09:7b68:c6ce) |
| 14:43:03 | <[exa]> | dminuoso: lstat? |
| 14:43:23 | <geekosaur> | lstat() aka https://downloads.haskell.org/ghc/latest/docs/html/libraries/unix-2.7.2.2/System-Posix-Files.html#v:getSymbolicLinkStatus |
| 14:43:39 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 14:44:16 | → | alx741 joins (~alx741@157.100.93.160) |
| 14:45:04 | → | yuyua32 joins (~yuyua32@wireless-student-pt3-240-232.lut.ac.uk) |
| 14:45:25 | × | nabaiste^ quits (~nabaiste@wsip-98-188-240-142.mc.at.cox.net) (Remote host closed the connection) |
| 14:46:13 | × | deadmarshal quits (~deadmarsh@95.38.114.19) (Ping timeout: 240 seconds) |
| 14:47:36 | × | yuyua32 quits (~yuyua32@wireless-student-pt3-240-232.lut.ac.uk) (Client Quit) |
| 14:47:59 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 14:49:10 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 14:49:46 | → | alx741 joins (~alx741@157.100.93.160) |
| 14:51:15 | × | InternetCitizen quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 250 seconds) |
| 14:52:05 | × | maplike quits (~maplike@31.209.100.216) (Ping timeout: 256 seconds) |
| 14:56:47 | → | paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) |
| 14:58:59 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 14:59:42 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 14:59:51 | → | mimmy_ joins (~mimmy@37.19.212.189) |
| 15:02:05 | × | mimmy quits (~mimmy@72.142.88.18) (Ping timeout: 250 seconds) |
| 15:02:07 | × | madjestic quits (~madjestic@88-159-247-120.fixed.kpn.net) (Quit: Reconnecting) |
| 15:02:19 | → | madjestic joins (~madjestic@88-159-247-120.fixed.kpn.net) |
| 15:05:44 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection) |
| 15:06:17 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 15:08:41 | × | neverfindme quits (~hayden@158.123.160.43) (Quit: Leaving) |
| 15:08:41 | × | Jing quits (~hedgehog@2604:a840:3::10c8) (Remote host closed the connection) |
| 15:09:48 | → | pfurla_ joins (~pfurla@177.79.117.40) |
| 15:11:07 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 268 seconds) |
| 15:12:25 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 15:12:29 | → | Jing joins (~hedgehog@2604:a840:3::10c8) |
| 15:12:34 | × | pfurla quits (~pfurla@177.25.184.160) (Ping timeout: 256 seconds) |
| 15:13:21 | → | emf joins (~emf@cpe-174-109-36-85.nc.res.rr.com) |
| 15:16:09 | → | alx741 joins (~alx741@157.100.93.160) |
| 15:16:35 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 15:16:54 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:16:54 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 15:16:54 | → | wroathe joins (~wroathe@user/wroathe) |
| 15:17:36 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 15:18:35 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 15:18:54 | <oats> | anyone using emacs and lsp-haskell know how to disable these import suggestions? https://paste.xinu.at/JpHdi/ |
| 15:19:58 | <oats> | I thought it might be `lsp-haskell-refineimports-on' set to nil, but that didn't do it |
| 15:19:59 | × | emf quits (~emf@cpe-174-109-36-85.nc.res.rr.com) (Quit: emf) |
| 15:20:51 | → | emf joins (~emf@cpe-174-109-36-85.nc.res.rr.com) |
| 15:21:35 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 15:22:04 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Ping timeout: 265 seconds) |
| 15:23:00 | <oats> | oh nvm, I think `lsp-haskell-importlens-on' was it |
| 15:26:33 | × | slowtyper quits (~slowtyper@user/slowtyper) (Quit: ZNC 1.8.2 - https://znc.in) |
| 15:26:49 | → | slowtyper joins (~slowtyper@user/slowtyper) |
| 15:27:49 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 15:28:59 | → | emf_ joins (~emf@2620:10d:c091:480::1:cbc8) |
| 15:29:09 | × | emf quits (~emf@cpe-174-109-36-85.nc.res.rr.com) (Ping timeout: 252 seconds) |
| 15:34:35 | → | deadmarshal joins (~deadmarsh@95.38.114.19) |
| 15:35:01 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 15:35:08 | × | SummerSonw quits (~The_viole@203.77.49.232) (Remote host closed the connection) |
| 15:35:32 | → | SummerSonw joins (~The_viole@203.77.49.232) |
| 15:37:35 | <dminuoso> | [exa], geekosaur: Thanks! |
| 15:37:55 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection) |
| 15:37:57 | <dminuoso> | Unrelatedly, does conduit have some efficient way to find a substring in a bytestring conduit? |
| 15:38:18 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 15:38:27 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 15:38:58 | <dminuoso> | Or do I have to roll my own KMP ontop of it? |
| 15:39:22 | × | deadmarshal quits (~deadmarsh@95.38.114.19) (Ping timeout: 260 seconds) |
| 15:43:06 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 260 seconds) |
| 15:43:27 | × | arjun quits (~arjun@103.57.87.133) (Ping timeout: 252 seconds) |
| 15:44:21 | → | alx741 joins (~alx741@157.100.93.160) |
| 15:44:30 | × | mimmy_ quits (~mimmy@37.19.212.189) (Ping timeout: 260 seconds) |
| 15:44:46 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 15:46:50 | × | acidjnk quits (~acidjnk@p200300d0c7271e62e04d49a98672dc3b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 15:46:56 | → | mimmy_ joins (~mimmy@37.19.212.190) |
| 15:51:03 | × | waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 250 seconds) |
| 15:52:26 | × | johnjay quits (~pi@154.6.152.74) (Ping timeout: 268 seconds) |
| 15:53:59 | → | johnjay joins (~pi@154.6.152.74) |
| 15:54:27 | × | emf_ quits (~emf@2620:10d:c091:480::1:cbc8) (Ping timeout: 252 seconds) |
| 15:55:26 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
| 15:55:45 | × | bollu quits (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:55:50 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 15:58:11 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 15:58:55 | → | emf joins (~emf@2620:10d:c091:480::1:cbc8) |
| 16:00:06 | × | acco[m] quits (~accotedom@2001:470:69fc:105::1:3236) (Quit: You have been kicked for being idle) |
| 16:02:30 | → | bollu joins (uid233390@id-233390.helmsley.irccloud.com) |
| 16:03:27 | → | myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net) |
| 16:03:32 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 16:03:43 | → | cfricke joins (~cfricke@user/cfricke) |
| 16:04:46 | × | SummerSonw quits (~The_viole@203.77.49.232) (Ping timeout: 268 seconds) |
| 16:05:12 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 16:06:32 | × | meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 16:06:34 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
| 16:07:56 | × | Jing quits (~hedgehog@2604:a840:3::10c8) (Remote host closed the connection) |
| 16:09:08 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 16:09:12 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-d348-9a8a-50cc-26de.fixed6.kpn.net) (Quit: Leaving) |
| 16:11:35 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:11:39 | → | samlamamma joins (~user@79.138.136.192.mobile.tre.se) |
| 16:12:00 | → | Jing joins (~hedgehog@2604:a840:3::10c8) |
| 16:12:43 | × | burnsidesLlama quits (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Remote host closed the connection) |
| 16:12:58 | × | CiaoSen quits (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 16:13:04 | <samlamamma> | Is finding morphisms between ADT:s easy? F.ex. "Find isomorphism for inductively defined A and inductively defined B" |
| 16:14:06 | → | zebrag joins (~chris@user/zebrag) |
| 16:14:08 | <samlamamma> | It sounds like an interesting and useful problem to me, but maybe I'm too out of the loop to know that this is simple :). I'm thinking it's easy! |
| 16:15:45 | → | alx741 joins (~alx741@157.100.93.160) |
| 16:21:06 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 16:23:58 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Remote host closed the connection) |
| 16:25:02 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 16:25:15 | × | mimmy_ quits (~mimmy@37.19.212.190) (Ping timeout: 252 seconds) |
| 16:26:14 | × | madjestic quits (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 256 seconds) |
| 16:26:33 | → | ephemient joins (uid407513@id-407513.lymington.irccloud.com) |
| 16:27:30 | × | x88x88x quits (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) (Read error: Connection reset by peer) |
| 16:27:49 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 16:28:53 | × | APic quits (~apic@apic.name) (Quit: [TLS] Client upgrade) |
| 16:29:03 | → | APic joins (apic@apic.name) |
| 16:29:38 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 256 seconds) |
| 16:30:26 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 16:32:21 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:35:11 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 16:39:36 | → | mimmy_ joins (~mimmy@37.19.212.189) |
| 16:40:14 | × | mimmy_ quits (~mimmy@37.19.212.189) (Client Quit) |
| 16:40:27 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
| 16:43:43 | <raehik> | Just to confirm, I can't do "mixed" record syntax, right? Like "data A a = A a { a2 :: a } a" |
| 16:43:49 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 16:44:02 | <raehik> | I should just write my own function for it |
| 16:45:05 | → | alx741 joins (~alx741@157.100.93.160) |
| 16:48:26 | <xerox> | what you you want that to do? |
| 16:49:27 | × | johnjay quits (~pi@154.6.152.74) (Ping timeout: 252 seconds) |
| 16:49:58 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:1f7:bbc2:bf58:b649) (Quit: WeeChat 2.8) |
| 16:50:06 | <geekosaur> | projection function for just one field, presumably |
| 16:50:23 | → | burnsidesLlama joins (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
| 16:51:13 | → | johnjay joins (~pi@154.6.152.74) |
| 16:53:02 | × | Jing quits (~hedgehog@2604:a840:3::10c8) (Remote host closed the connection) |
| 16:53:06 | → | lavaman joins (~lavaman@98.38.249.169) |
| 16:54:07 | <c_wraith> | Funny, pattern-matching and construction syntax would both work fine* with that. *though obviously you couldn't match the unnamed field by name |
| 16:55:08 | × | burnsidesLlama quits (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 16:55:55 | <raehik> | c_wraith: what would that look like? I wasn't able to make an "unnamed" field |
| 16:56:02 | <c_wraith> | But it would require a pretty significant change to template haskell code that works with data types, and probably generics too |
| 16:56:23 | <raehik> | Ah I see, there's nothing in the language restricting it |
| 16:56:25 | <c_wraith> | raehik: oh, it's not possible. I was pondering how much would change if it was |
| 16:56:34 | → | Jing joins (~hedgehog@2604:a840:3::10c8) |
| 16:57:33 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 16:57:47 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 16:58:21 | × | pfurla_ quits (~pfurla@177.79.117.40) (Read error: Connection reset by peer) |
| 16:58:25 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
| 16:58:29 | → | pfurla joins (~pfurla@2804:18:585d:1964:1855:cca0:7d18:69de) |
| 16:59:08 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 16:59:50 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:00:20 | <[exa]> | samlamamma: depends on what you want from the morphism. Technically `Integer` is isomorphic to anything. :] |
| 17:00:41 | <c_wraith> | Usually that sort of thing means structural isomorphism |
| 17:00:56 | → | lbseale joins (~ep1ctetus@user/ep1ctetus) |
| 17:01:14 | <geekosaur> | for that matter so is Int#, since that's how computers work with anything that isn't an Int# |
| 17:01:14 | <kuribas> | [exa]: not to Int? |
| 17:01:25 | <[exa]> | ok (*hides a little statue of godel*) |
| 17:01:32 | <[exa]> | kuribas: Int too small :'( |
| 17:01:54 | <kuribas> | anything countable infinite, right? |
| 17:02:05 | <[exa]> | well you can encode the generating function |
| 17:02:08 | <c_wraith> | So like... Fix Maybe is structurally isomorphic to inductive Nat |
| 17:02:58 | <kritzefitz> | kuribas: I don't think computers can work directly with anything uncountably infinite. |
| 17:03:27 | <kuribas> | kritzefitz: maybe symbolically? |
| 17:03:58 | <[exa]> | hm, how complex it is to find a structural morphism? (ie isn't it undecidable if you encode something really ugly like PKP to your types?) |
| 17:04:14 | <c_wraith> | Korrespondence? |
| 17:04:28 | <kritzefitz> | kuribas: Maybe, but wouldn't the symbols be countable and thus be isomorphic to Integer again? |
| 17:04:38 | <[exa]> | c_wraith: I'm from the korresponding part of the word, yeah :D |
| 17:04:38 | <monochrom> | Symbolically, you can only have countably many symbols. |
| 17:04:45 | <[exa]> | correspondence for sure. :D |
| 17:05:10 | <monochrom> | For example, Mathematica can still only represent countably many real numbers, not all real numbers. |
| 17:05:40 | <c_wraith> | [exa]: but yeah, when you start using data types with extra restrictions on them (GADTs), you can make structural properties arbitrarily complex |
| 17:05:42 | <monochrom> | Unless you go constructivism and declare "all real numbers" = "all constructible real numbers". |
| 17:06:59 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 17:07:03 | <[exa]> | actually (I hit this a while ago and kinda forgot to solve for myself) -- there's only countably infinite of constructible real numbers right? (because of the number of programs to construct them) |
| 17:07:12 | <c_wraith> | yes |
| 17:07:25 | <monochrom> | or number of strings you can write down |
| 17:07:25 | <c_wraith> | there are only countably infinite possible programs |
| 17:07:41 | <[exa]> | hmm |
| 17:07:50 | <[exa]> | any example of inconstructible one? |
| 17:07:55 | <kuribas> | kritzefitz: actually, computers cannot deal with anything infinite |
| 17:07:56 | <[exa]> | (not asking anyone to construct it) |
| 17:07:56 | <c_wraith> | I'm sure you can create a programming language such that possible programs = strings :) |
| 17:08:06 | <c_wraith> | [exa]: Chitin's Omega |
| 17:08:21 | <c_wraith> | err. Chaitin |
| 17:08:30 | <[exa]> | uuuuuuh gooood, I didn't know this |
| 17:08:32 | <[exa]> | thanks |
| 17:08:48 | <c_wraith> | he is not a waxy exoskeleton |
| 17:08:51 | <c_wraith> | even if that'd be cool |
| 17:09:05 | <monochrom> | So even if you are classical and accept "I don't have to write how to produce, I just have to write a predicate for what to satisfy", which still is a string, as long as you are formal, you can only specify countably many real numbers. |
| 17:09:15 | <samlamamma> | Yup, interest really comes from me wasting time writing functions going from different serialization formats |
| 17:09:42 | <monochrom> | Which brings us to: There are countable models of set theory. |
| 17:10:15 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 17:10:50 | <[exa]> | yap I recall some of that, but I completely missed this halting probability |
| 17:12:49 | <samlamamma> | At work I write C/C++ in a meager environment. This means that I have to write a lot of boring code. So of course I'm interested in program |
| 17:12:49 | <samlamamma> | synthesis to help me out |
| 17:12:52 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:13:32 | <monochrom> | Now that the OP is here, my turn to talk about that. Generally, "isomorphism" is ambiguous in the Haskell community. Try it: Define "isomorphism". |
| 17:14:14 | → | alx741 joins (~alx741@157.100.93.160) |
| 17:14:18 | <monochrom> | I may even be able to claim s/ambiguous/a buzzword/, i.e., you don't even know of one definition, lack alone multiple definitions. |
| 17:14:42 | <[exa]> | samlamamma: the conversion problem is hard. There are lenses to avoid conversion completely (allow you to work kinda the same way with many structures) and in Hs it's pretty easy to make a relatively universal ADT for all possibilities (which is roughly how pandoc went around that) |
| 17:14:57 | <samlamamma> | Probably f: A -> B, g: B -> A s.t. f(g(b)) == id(b) ^ g(f(a)) == id(a) for all a, b |
| 17:15:34 | <[exa]> | samlamamma: not sure if any of that applies to C++ though, probably depends on what data you represent |
| 17:15:35 | <samlamamma> | Proof of isomorphism is given by finding g and f |
| 17:15:49 | <monochrom> | That's just bijection. But sure. Now see [exa]'s Integer answer. |
| 17:16:20 | <monochrom> | Does that help with understanding the correspondence between serialization formats? |
| 17:16:21 | [exa] | hides the godel statue deeper in the bag |
| 17:16:22 | <samlamamma> | monochrom: But it's a lossless bijection, so what am I missing? (reading int ans now) |
| 17:16:23 | <monochrom> | I bet no. |
| 17:17:04 | → | pfurla_ joins (~pfurla@2804:18:5002:3d2c:db:f3d4:1503:ae07) |
| 17:17:49 | <[exa]> | samlamamma: isomorphism differs from bijection in the assurance that it preserves some predefined structure. Actually the Integer answer is quite borderline on that |
| 17:18:04 | <[exa]> | predefined/assumed/required |
| 17:18:28 | <monochrom> | For example, both XML and Markdown are in bijection with Integer. |
| 17:18:32 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 17:18:32 | <[exa]> | samlamamma: what data types you have there? (just curious) |
| 17:18:35 | <samlamamma> | Right, but this "preserves [...]" would have to be encoded in some logical predicate |
| 17:18:50 | <[exa]> | samlamamma: yes, usually you have "relations to keep working" |
| 17:18:54 | <samlamamma> | [exa]: Oh, just D-Bus messages and JSON. |
| 17:19:00 | <monochrom> | That still doesn't help you with conversion, or alternatively to argue that there can't be a conversion. |
| 17:19:21 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 17:19:25 | × | pfurla quits (~pfurla@2804:18:585d:1964:1855:cca0:7d18:69de) (Ping timeout: 240 seconds) |
| 17:20:22 | <samlamamma> | monochrom: I imagine that in most "reasonable" cases finding a conversion (let's not be classical) might be easy. After all, programmers can do it easily |
| 17:20:45 | <monochrom> | Yeah, about that. |
| 17:20:53 | <monochrom> | Programmers make bugs just as easily. |
| 17:21:03 | <samlamamma> | Haha :-) |
| 17:21:43 | <[exa]> | samlamamma: anyway, in this case in Hs you'd probabl just parse/format the dbus format to/from Aeson and let the rest generate jsons and yamls for you :] |
| 17:21:51 | <monochrom> | I don't accept "programmers can do it easily". I only accept "programmers can do it with bugs easily". |
| 17:22:53 | <samlamamma> | monochrom: That's fair enough! |
| 17:22:56 | <samlamamma> | [exa]: Yeah, "someone else having done the work" is the real answer here, but not as interesting! |
| 17:24:03 | <[exa]> | let's go to the morphisms then, what are the operations you're doing on the stuff? |
| 17:24:14 | × | ubert quits (~Thunderbi@2a02:8109:9880:303c:a6e9:4af8:654:3268) (Remote host closed the connection) |
| 17:24:33 | <[exa]> | if it's just conversion, the "common middle format" is usually the way, preferably with a good ADT |
| 17:24:42 | → | pfurla joins (~pfurla@177.79.126.164) |
| 17:24:43 | <samlamamma> | I'd just like to give input/output examples and have my computer throw programs at me in <100ms and having me refine its responses with more |
| 17:24:44 | <samlamamma> | examples and logic! What's so hard about that??? /sarcasm |
| 17:25:21 | → | burnsidesLlama joins (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
| 17:25:32 | <samlamamma> | [exa]: That's the boring part, we're not doing anything with the data. We're just shuffling it around. |
| 17:25:37 | × | kuribas quits (~user@ptr-25vy0i9k5aujcskch0c.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 17:26:13 | <samlamamma> | But now I think we're getting into org issues with my work re why no one has put in the effort for a common library to do this |
| 17:26:13 | <samlamamma> | stuff for us :-) |
| 17:26:18 | <[exa]> | good, just implement instance FromJson Dbus, instance ToJson Dbus, then convert=id |
| 17:26:45 | <EvanR> | isn't bijection literally shuffling things around |
| 17:26:50 | <EvanR> | in some sense |
| 17:26:53 | <[exa]> | yap |
| 17:27:22 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 17:27:23 | × | pfurla_ quits (~pfurla@2804:18:5002:3d2c:db:f3d4:1503:ae07) (Ping timeout: 268 seconds) |
| 17:29:03 | → | yuyua32 joins (~yuyua32@wireless-student-pt3-240-232.lut.ac.uk) |
| 17:29:05 | × | ystael quits (~ystael@user/ystael) (Read error: Connection reset by peer) |
| 17:30:37 | × | burnsidesLlama quits (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 17:32:43 | × | thevishy quits (~Nishant@2405:201:f005:c007:81f3:ee3c:76f0:8869) (Ping timeout: 252 seconds) |
| 17:32:43 | → | yhsiveht joins (~Nishant@2405:201:f005:c007:d93e:9746:14f0:2f69) |
| 17:34:05 | × | yhsiveht quits (~Nishant@2405:201:f005:c007:d93e:9746:14f0:2f69) (Client Quit) |
| 17:37:33 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
| 17:37:53 | × | yuyua32 quits (~yuyua32@wireless-student-pt3-240-232.lut.ac.uk) (Quit: Client closed) |
| 17:37:54 | → | deadmarshal joins (~deadmarsh@95.38.114.19) |
| 17:37:56 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 17:39:13 | → | pfurla_ joins (~pfurla@177.79.116.198) |
| 17:40:51 | × | pfurla quits (~pfurla@177.79.126.164) (Read error: Connection reset by peer) |
| 17:41:51 | × | notzmv quits (~zmv@user/notzmv) (Remote host closed the connection) |
| 17:42:54 | → | notzmv joins (~zmv@user/notzmv) |
| 17:43:51 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 17:43:51 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 17:43:54 | allbery_b | is now known as geekosaur |
| 17:45:52 | → | alx741 joins (~alx741@157.100.93.160) |
| 17:47:14 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 17:49:06 | → | InternetCitizen joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 17:50:06 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:50:06 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 17:50:06 | → | wroathe joins (~wroathe@user/wroathe) |
| 17:50:46 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
| 17:53:10 | × | pfurla_ quits (~pfurla@177.79.116.198) (Read error: Connection reset by peer) |
| 17:54:16 | → | samlamam` joins (~user@2a02:aa1:1608:7ad3:e9b0:545c:1f5b:b2ec) |
| 17:56:34 | × | samlamamma quits (~user@79.138.136.192.mobile.tre.se) (Ping timeout: 260 seconds) |
| 17:56:47 | → | pfurla joins (~pfurla@2804:18:5804:7c6e:974:c347:e60e:e6) |
| 17:57:29 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 17:57:45 | × | samlamam` quits (~user@2a02:aa1:1608:7ad3:e9b0:545c:1f5b:b2ec) (Remote host closed the connection) |
| 17:58:54 | × | fr33domlover quits (~fr33@2.55.169.194) (Ping timeout: 260 seconds) |
| 17:59:27 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 18:00:54 | × | mbuf quits (~Shakthi@122.174.40.28) (Quit: Leaving) |
| 18:01:58 | × | xff0x quits (~xff0x@port-92-195-24-10.dynamic.as20676.net) (Quit: xff0x) |
| 18:03:32 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
| 18:03:59 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 18:05:21 | × | lechner quits (~lechner@debian/lechner) (Ping timeout: 252 seconds) |
| 18:05:45 | × | bollu quits (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:08:25 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection) |
| 18:11:23 | → | xff0x joins (~xff0x@2001:1a81:5245:500:35c3:4c34:eb85:8494) |
| 18:11:58 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 18:12:12 | → | arjun joins (~arjun@103.57.87.133) |
| 18:13:04 | <dminuoso> | Lazy IO strikes again. |
| 18:13:40 | × | arjun quits (~arjun@103.57.87.133) (Remote host closed the connection) |
| 18:13:51 | → | alx741 joins (~alx741@157.100.93.160) |
| 18:13:58 | → | arjun joins (~arjun@103.57.87.133) |
| 18:14:23 | <dminuoso> | I think? |
| 18:14:24 | <dminuoso> | openBinaryFile: resource busy (file is locked) |
| 18:15:29 | <dminuoso> | This is so annoying, cant even figure out why :( |
| 18:16:08 | <EvanR> | windows? |
| 18:16:17 | <dminuoso> | Linux |
| 18:16:27 | × | jz99 quits (~Guest19@n110-33-34-202.hum1.act.optusnet.com.au) (Quit: Client closed) |
| 18:16:53 | → | lavaman joins (~lavaman@98.38.249.169) |
| 18:17:07 | → | Guest19 joins (~Guest19@n110-33-34-202.hum1.act.optusnet.com.au) |
| 18:17:08 | <dminuoso> | Im recursing nested zip files using `zip`, and for each entry I use withSystemTempFile, I write it to the provided handle, and then use `zip` to open the provided path |
| 18:17:22 | <dminuoso> | And in that recursive zip I get that error |
| 18:17:30 | → | nvmd joins (~nvmd@user/nvmd) |
| 18:17:44 | <dminuoso> | The writing happens using Data.ByteString.hPut |
| 18:18:08 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-d088-4906-a1eb-3fe7.res6.spectrum.com) |
| 18:18:13 | × | sander quits (~sander@user/sander) (Ping timeout: 240 seconds) |
| 18:18:34 | → | sander joins (~sander@user/sander) |
| 18:18:40 | <dminuoso> | I wonder, does the GHC RTS employ some kind of internal locking when opening files? |
| 18:18:45 | → | CiaoSen joins (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 18:19:11 | <EvanR> | so opening a file for reading that is already open for writing and in the middle of things. But I thought writing wasn't lazy at all |
| 18:20:21 | <dminuoso> | I was suspecting lazy IO anyhow |
| 18:20:25 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Remote host closed the connection) |
| 18:21:11 | <dminuoso> | I naively expected to simply get two separate file descriptors under the hood |
| 18:21:16 | <EvanR> | are you closing the file before opening it |
| 18:22:31 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:22:36 | <dminuoso> | Nope |
| 18:22:57 | <dminuoso> | https://hackage.haskell.org/package/base-4.16.0.0/docs/System-IO.html#g:8 suggests this would be fine |
| 18:23:09 | <dminuoso> | oh, but maybe I didnt read the warning right |
| 18:23:40 | <dminuoso> | I first start with a write handler via withSystemTempFile, and then (hopefully) a read only handle using zip |
| 18:24:07 | <dminuoso> | https://hackage.haskell.org/package/zip-1.7.2/docs/src/Codec.Archive.Zip.Internal.html#scanArchive |
| 18:24:07 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 18:24:12 | → | xkuru joins (~xkuru@user/xkuru) |
| 18:24:21 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 18:24:28 | <EvanR> | if openBinaryFile error is about the large zip file you're reading, makes sense |
| 18:24:39 | <EvanR> | if it's about the temp file, not sure |
| 18:24:54 | <EvanR> | oh, are you trying to lazy I/O open the temp file... |
| 18:25:33 | <dminuoso> | Seems that way |
| 18:26:31 | <EvanR> | what if you strict open the temp file xD |
| 18:26:49 | <dminuoso> | Well I guess I can simply close the file and manage it with bracket myself |
| 18:26:52 | <dolio> | What is "strict open"? |
| 18:27:44 | → | x88x88x joins (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) |
| 18:28:21 | <dminuoso> | Anyway, the RTS has some kind of lockFile that mkFD uses |
| 18:28:27 | × | jgeerds quits (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 268 seconds) |
| 18:28:33 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 18:28:33 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 18:28:33 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:28:39 | <dminuoso> | Sadly without any comments or documentation. :( |
| 18:28:39 | <EvanR> | Data.ByteString.getContents |
| 18:29:06 | <EvanR> | er |
| 18:29:08 | <EvanR> | hGetContents |
| 18:29:29 | <dolio> | Okay, so nothing to do with opening a file. |
| 18:30:02 | <EvanR> | yeah |
| 18:30:17 | <dminuoso> | But judging from a skim, it seems that the RTS does not allow having two simultaneous non-ReadMode handles to the same file |
| 18:32:13 | <EvanR> | that's a concrete that to be tested |
| 18:32:19 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 18:32:21 | <EvanR> | to see if it's false at least |
| 18:32:33 | <EvanR> | concrete thing* |
| 18:32:45 | <dminuoso> | Well the code in mkFD is quite clear |
| 18:32:54 | <dminuoso> | It's just surprising because zip actually opens in ReadMode |
| 18:33:07 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 18:34:11 | <EvanR> | the docs for lazy bytestring suggests there's a lock on something that's being lazy I/O read |
| 18:34:15 | → | mmhat joins (~mmh@55d455f3.access.ecotel.net) |
| 18:35:22 | <dminuoso> | Im not using lazy bytestrings though |
| 18:36:08 | <EvanR> | oh |
| 18:36:38 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
| 18:37:34 | → | ystael joins (~ystael@user/ystael) |
| 18:37:55 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection) |
| 18:39:01 | × | arjun quits (~arjun@103.57.87.133) (Quit: Leaving) |
| 18:40:48 | → | edrx joins (~Eduardo@2804:18:581c:883f:998:719e:3903:d0a1) |
| 18:41:32 | → | waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
| 18:42:05 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 18:42:26 | → | alx741 joins (~alx741@157.100.93.160) |
| 18:43:33 | × | epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:44:21 | <edrx> | hi! I am learning Agda using Wadler's PLFA and Peter Selinger's lectures. Both Wadler and Selinger _define_ the logical connectives in their tutorials, but I can't find references to where these definitions are in Agda's stdlib... is there a module of Agda that I can import and that defines _∧_, _∨_, _↔_, etc, for truth-values? |
| 18:47:04 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 18:47:10 | <earendel> | kritzefitz: hm. calculus can deal with infinitely small margins. lim->0 .. |
| 18:47:41 | × | Guest19 quits (~Guest19@n110-33-34-202.hum1.act.optusnet.com.au) (Quit: Client closed) |
| 18:49:00 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 18:49:24 | × | InternetCitizen quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 268 seconds) |
| 18:49:56 | → | kayvank joins (~user@52-119-115-185.PUBLIC.monkeybrains.net) |
| 18:51:19 | <earendel> | however the coastline of england is infinitely long. the more precise you measure, the longer it gets. :) |
| 18:51:24 | × | pfurla quits (~pfurla@2804:18:5804:7c6e:974:c347:e60e:e6) (Quit: gone to sleep. ZZZzzz…) |
| 18:51:28 | <earendel> | rough huh? |
| 18:51:56 | <dolio> | It probably isn't. |
| 18:51:56 | <EvanR> | even though there possible haskell programs is countable, you can't create a list of all Stream Bool (that could be generated by haskell) |
| 18:52:19 | <earendel> | dolio: it is. |
| 18:52:20 | <EvanR> | in haskell |
| 18:52:25 | <geekosaur> | isn't that just another form of zeno's paradox? |
| 18:52:49 | <dolio> | earendel: No, that's some idealized nonsense people say when talking about fractals. |
| 18:53:07 | <dolio> | The coastline of England isn't an actual mathematical fractal. |
| 18:53:40 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 18:53:57 | <EvanR> | yeah if you walk around it you get somewhere |
| 18:53:57 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Client Quit) |
| 18:53:58 | <earendel> | its not idealised. it says the more precise you measure the longer it gets. |
| 18:54:07 | <monochrom> | I like an idealized England. :) |
| 18:54:54 | <dolio> | Okay, prove that it will always get longer the more precisely you measure. |
| 18:55:27 | <geekosaur> | it's idealised if only because there are limits both to precision and to fractal expansion in the real world as opposed to the mathematical one |
| 18:55:38 | <dolio> | Right. |
| 18:56:15 | <earendel> | which is a fact. it also elegenantly points at limitations as of primary: limits of the machines we use to compute. and time memory it would take too. for infinity it would be a lot. especially at its ends. |
| 18:56:31 | → | burnsidesLlama joins (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
| 18:58:54 | → | econo joins (uid147250@user/econo) |
| 18:58:56 | <monochrom> | "The closer you look, the less you see." |
| 19:00:31 | <earendel> | dolio: ok. imagine you put a grid over england. of some arbitrary resolution. now you can draw the coast of england using nodes at the grid-snaps. now: the higer the resolution gets, the more precise you can map the coast on it right? so far so good. now consider this. the shortest distance between two points/nodes is .. a line! now if you add more nodes (higher resolution) the distance between the points can only get longer or stay equally long |
| 19:00:31 | <earendel> | (with the additional node being exactly on that line) |
| 19:01:08 | → | lechner joins (~lechner@debian/lechner) |
| 19:01:15 | <geekosaur> | so have you heard of zeno's paradox? |
| 19:01:18 | <monochrom> | You do not want your precision to exceed the atomic level (say). Because at that point the whole notion of "coast line" dissolves. |
| 19:01:35 | <dsal> | That describes how I understand things. |
| 19:01:54 | <monochrom> | But then once you bound your precision, you stop at a finite answer. |
| 19:02:10 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 19:02:12 | <monochrom> | Also technically you no longer have a fractal. |
| 19:02:25 | <dsal> | My gap of understanding has infinite precision. |
| 19:02:26 | <dolio> | Eventually they stay equally long, because the real coastline of England isn't actually a fractal. |
| 19:02:31 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 19:02:43 | <monochrom> | But I'm OK with an idealized English notion. We have idealized circles too. |
| 19:03:24 | <geekosaur> | for that matter, have you heard of banach-tarski? |
| 19:03:24 | <earendel> | one more on infinity; if the universe is infinite (and so far we can look now it seems to be perfectly flat .. ergo infinite) it was infinite even as the observable universe was the size close to smallest (at big bang) |
| 19:03:53 | <dolio> | I see no reason to assume the universe is infinite, either. |
| 19:04:12 | × | edrx quits (~Eduardo@2804:18:581c:883f:998:719e:3903:d0a1) (Ping timeout: 268 seconds) |
| 19:05:00 | <earendel> | one more. during the inflation. the universe expanded in a very short time by the same factor it has expanded it expanded since then till today. and! by that time it was the size of an orange. |
| 19:05:03 | → | alx741 joins (~alx741@157.100.93.160) |
| 19:05:12 | earendel | drops the mike |
| 19:05:13 | <monochrom> | The Banach-Tarski paradox says that England can exit Europe twice in a row. (1st was Brexit, 2nd was losing the Euro Cup.) >:) |
| 19:05:22 | <EvanR> | lol |
| 19:06:59 | <EvanR> | anyway, countable uncountable is another one of those things that gets fantastic descriptions because it rarely has any practical relevance |
| 19:07:13 | <EvanR> | so no one gets the opportunity to call bullshit |
| 19:08:28 | <dolio> | Countability is much more interesting constructively. |
| 19:09:11 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-d088-4906-a1eb-3fe7.res6.spectrum.com) (Remote host closed the connection) |
| 19:09:26 | <dolio> | Like, you can't show that the extended naturals are countable, so the continuum hyptothesis is obviously false. :þ |
| 19:09:34 | <earendel> | im no good in maths, but from what i get informatics don't deal with limitations of hardware like egineers do. if something halts, it wouldn't matter if the universe still would exist at that time. it will halt. |
| 19:09:36 | <earendel> | lol |
| 19:10:04 | <earendel> | not that engineering has no merits! |
| 19:10:41 | <earendel> | and from what i get this is where you were pointing at. fuck circles. all is a polygon. xd the holy n-eck |
| 19:10:49 | × | jkaye quits (~jkaye@2601:281:8300:7530:8f84:8d09:7b68:c6ce) (Ping timeout: 250 seconds) |
| 19:10:49 | <dolio> | There are probably constructively acceptable axioms that make it uncountable (like 'not countable'), even. |
| 19:11:38 | <EvanR> | in my mind there is a positive notion of uncountable somehow |
| 19:11:42 | <dolio> | Some continuity principle. |
| 19:11:48 | <boxscape> | ski: I think you had some notation in mind for the existential version (if that makes sense) of => at some point? I don't remember what it was, but just wanted to note, there's some discussion about what it should be in https://github.com/ghc-proposals/ghc-proposals/pull/473 - at least I think it's the same idea |
| 19:11:59 | <monochrom> | *> |
| 19:12:00 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 19:12:08 | <boxscape> | ah, right |
| 19:12:09 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 19:12:13 | <dolio> | Oh yeah. Uncountable is actually stronger. Like, for any enumeration, you can produce a value not in the enumeration. |
| 19:12:56 | → | boxscape_ joins (~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de) |
| 19:13:01 | → | jkaye joins (~jkaye@2601:281:8300:7530:770c:7340:e88b:8722) |
| 19:13:12 | <boxscape> | wait, ski isn't even online. Why is matrix telling me otherwise >:( |
| 19:13:20 | <dolio> | But, the extended naturals are just not provably countable if you don't add principles, because in classical mathematics they are countable. |
| 19:13:25 | × | deadmarshal quits (~deadmarsh@95.38.114.19) (Ping timeout: 250 seconds) |
| 19:14:31 | <EvanR> | principles are cool |
| 19:14:42 | → | pgib joins (~textual@173.38.117.69) |
| 19:14:44 | <EvanR> | principals, usually not |
| 19:15:20 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
| 19:15:44 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 19:16:48 | → | nosewings joins (~ngpc@2603-8081-3e05-e2d0-43bd-64a7-1221-490e.res6.spectrum.com) |
| 19:19:03 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 19:22:00 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 19:23:27 | → | dsrt^ joins (~dsrt@wsip-98-188-240-142.mc.at.cox.net) |
| 19:24:53 | <earendel> | princesses are best <3 |
| 19:25:11 | <earendel> | printhesses |
| 19:27:01 | × | Jing quits (~hedgehog@2604:a840:3::10c8) (Remote host closed the connection) |
| 19:29:22 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Remote host closed the connection) |
| 19:30:46 | → | alx741 joins (~alx741@157.100.93.160) |
| 19:30:53 | → | Akiva joins (~Akiva@user/Akiva) |
| 19:31:25 | → | Jing joins (~hedgehog@2604:a840:3::10c8) |
| 19:31:32 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
| 19:31:42 | → | ubert joins (~Thunderbi@p200300ecdf1abbd3ca03b07f10ffc657.dip0.t-ipconnect.de) |
| 19:32:40 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 19:36:27 | → | raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 19:36:38 | → | fr33domlover joins (~fr33@2.55.171.43) |
| 19:40:02 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 19:40:56 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 19:43:30 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:45:01 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 19:48:19 | <sm> | why does cabal fail on m1 mac with "unrecognized instruction mnemonic" / "you need clang" errors here: https://bpa.st/FJ2Q ? |
| 19:48:39 | <sm> | `cabal` is an x86 binary |
| 19:49:57 | <sclv> | i think its a ghc issue where its only able to compile for m1 via llvm? |
| 19:51:22 | <sm> | thanks, I'll ask them |
| 19:52:42 | <geekosaur> | if cabal is an x86 binary then it should be trying to build for x86, but the followup error suggests it's trying to build natively |
| 19:53:04 | <geekosaur> | "you need clang" is one of ghc's typically oh-so-helpful suggestions :) |
| 19:54:09 | <geekosaur> | I guess this in part because the assembly shown pretty clearly expects ; to be a comment character, which iirc it is on x86 |
| 19:57:33 | × | Akiva quits (~Akiva@user/Akiva) (Ping timeout: 252 seconds) |
| 19:57:51 | → | alx741 joins (~alx741@157.100.93.160) |
| 20:00:38 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
| 20:00:47 | <sm> | indeed.. I believe homebrew's haskell binaries switched to arm binaries semi recently. `brew install cabal-install` got me an arm cabal binary, which fixed it |
| 20:05:16 | × | juhp quits (~juhp@128.106.188.82) (Ping timeout: 268 seconds) |
| 20:10:21 | → | juhp joins (~juhp@128.106.188.82) |
| 20:10:48 | → | nattiestnate joins (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) |
| 20:12:00 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 20:15:59 | × | mcglk quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer) |
| 20:18:00 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 20:19:07 | → | mcglk joins (~mcglk@131.191.49.120) |
| 20:20:16 | → | coot joins (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) |
| 20:26:52 | → | bollu joins (uid233390@id-233390.helmsley.irccloud.com) |
| 20:27:41 | → | deadmarshal joins (~deadmarsh@95.38.114.19) |
| 20:29:01 | → | alx741 joins (~alx741@181.199.42.79) |
| 20:31:36 | × | Morrow quits (~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection) |
| 20:32:10 | × | deadmarshal quits (~deadmarsh@95.38.114.19) (Ping timeout: 256 seconds) |
| 20:36:29 | → | briandaed joins (~root@185.234.208.208.r.toneticgroup.pl) |
| 20:38:51 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Remote host closed the connection) |
| 20:39:49 | → | Akiva joins (~Akiva@user/Akiva) |
| 20:39:50 | × | alx741 quits (~alx741@181.199.42.79) (Read error: Connection reset by peer) |
| 20:40:30 | → | alx741 joins (~alx741@157.100.93.160) |
| 20:42:19 | <dminuoso> | EvanR: By the way, I ended up just closing the file before zip opened it. |
| 20:42:29 | <dminuoso> | Cant for my life figure out why GHC gives me these file is locked errors here. |
| 20:43:19 | <monochrom> | Is this on Windows? |
| 20:43:36 | <dminuoso> | No, this is on Linux |
| 20:43:41 | <monochrom> | Ah yikes. |
| 20:44:24 | × | briandaed quits (~root@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal) |
| 20:44:52 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 20:49:03 | <johnw> | anyone else noticed that foldl' f z xs is morally equivalent to execState (mapM_ f xs) z, where f :: a -> State b ()? |
| 20:49:15 | <dminuoso> | openTempFile "/tmp" "foo.ext" >>= \(path, handle) -> openFile path ReadMode |
| 20:49:20 | <dminuoso> | This is a quick reproducer |
| 20:49:41 | <dminuoso> | I suspect there's some strange interaction between the way openTempFile obtains a file handle and the RTS locking code on `openFile` |
| 20:49:49 | <johnw> | (though I may need a strictified version of State for that to be true) |
| 20:49:55 | <dminuoso> | It's definitely a bug, just not sure whether its a documentation bug or a behavioral bug |
| 20:51:11 | <dolio> | That's essentially the same observation as mapAccumL/R being mapM. |
| 20:52:08 | × | fr33domlover quits (~fr33@2.55.171.43) (Ping timeout: 268 seconds) |
| 20:52:39 | <dolio> | Just where the output isn't interesting. |
| 20:53:05 | <monochrom> | johnw: Yes, it is also how Jeremy Gibbons generalizes APL to all of (Traversable t, Representable t). |
| 20:53:47 | <monochrom> | https://link.springer.com/chapter/10.1007/978-3-662-54434-1_21 |
| 20:56:14 | <dminuoso> | let path = "./openfile.bug" in do { openFile path ReadWriteMode; openFile path ReadMode } |
| 20:56:14 | × | Jing quits (~hedgehog@2604:a840:3::10c8) (Remote host closed the connection) |
| 20:56:18 | <dminuoso> | An even simpler reproducer |
| 20:56:19 | → | lavaman joins (~lavaman@98.38.249.169) |
| 20:56:27 | <monochrom> | Err, (Applicative t, Traversable t, Representable t) |
| 20:57:22 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3) |
| 20:57:23 | <dminuoso> | The way I read 41.3.4 File locking, this should be permisseable |
| 20:58:24 | <dminuoso> | Am I misreading the report? |
| 20:59:39 | <dolio> | "there may either be many handles on the same file which manage input, or just one handle on the file which manages output" |
| 20:59:51 | <dminuoso> | That or is meant exclusively, I presume? |
| 20:59:51 | <dolio> | It sounds like one writer locks the file. |
| 21:00:18 | → | Jing joins (~hedgehog@2604:a840:3::10c8) |
| 21:00:19 | <dolio> | I guess. |
| 21:00:25 | <geekosaur> | yes |
| 21:00:37 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 21:00:38 | <geekosaur> | I read it the same way dolio does: the or is exclusive |
| 21:00:56 | <dolio> | I mean, I might not read it that way, but that's clearly what GHC is doing. |
| 21:01:15 | <dolio> | So, considering the actual behavior, that or is exclusive. |
| 21:01:16 | <dminuoso> | "If any open or semi-closed handle is managing a file for output, no new handle can be allocated for that file" |
| 21:01:23 | <geekosaur> | either … or is generally exclusive to me |
| 21:01:34 | → | alx741 joins (~alx741@157.100.93.160) |
| 21:01:54 | <dminuoso> | Okay, I think I kept reading it with the expectation to allow simultaneous multiple reader and one writer handle.. |
| 21:02:21 | × | smartin quits (~Thunderbi@88.135.18.171) (Remote host closed the connection) |
| 21:02:40 | → | smartin joins (~Thunderbi@88.135.18.171) |
| 21:02:45 | × | cosimone` quits (~user@93-47-228-207.ip115.fastwebnet.it) (Remote host closed the connection) |
| 21:02:58 | → | acidjnk joins (~acidjnk@p200300d0c7271e77ede7a7f9d267d612.dip0.t-ipconnect.de) |
| 21:04:50 | → | cosimone joins (~user@93-47-228-207.ip115.fastwebnet.it) |
| 21:04:55 | <dolio> | That's also kind of a common concurrency pattern. Multiple readers at a time. Single writer at a time, and readers and writers block one another. |
| 21:06:35 | × | coot quits (~coot@2a02:a310:e03f:8500:933a:39ca:ef4e:37cb) (Quit: coot) |
| 21:06:40 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 21:07:12 | <geekosaur> | problem is that behaves oddly with disk files as the writer may change what you just read or even delete it (see ftruncate) |
| 21:07:34 | <geekosaur> | sockets and pipes are another story |
| 21:08:47 | <geekosaur> | a reader may even have buffered data that no longer exists |
| 21:08:47 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 21:10:07 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 21:10:18 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:10:56 | × | AkechiShiro quits (~licht@2a01:e0a:5f9:9681:1473:3dff:fe42:56a9) (Changing host) |
| 21:10:56 | → | AkechiShiro joins (~licht@user/akechishiro) |
| 21:11:33 | <dolio> | Oh yeah, I guess with "either" in there I'd most likely read it as exclusive anyway. |
| 21:15:48 | → | slice joins (~slice@user/slice) |
| 21:17:53 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 21:21:14 | → | Morrow joins (~quassel@bzq-110-168-31-106.red.bezeqint.net) |
| 21:21:31 | × | nosewings quits (~ngpc@2603-8081-3e05-e2d0-43bd-64a7-1221-490e.res6.spectrum.com) (Ping timeout: 252 seconds) |
| 21:25:41 | → | alx741 joins (~alx741@157.100.93.160) |
| 21:26:36 | × | Neuromancer quits (~Neuromanc@user/neuromancer) (Remote host closed the connection) |
| 21:26:37 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 21:28:58 | × | Morrow quits (~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection) |
| 21:30:00 | → | Morrow joins (~quassel@bzq-110-168-31-106.red.bezeqint.net) |
| 21:30:48 | × | nattiestnate quits (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.3) |
| 21:37:20 | × | Akiva quits (~Akiva@user/Akiva) (Ping timeout: 256 seconds) |
| 21:39:28 | → | Akiva joins (~Akiva@user/Akiva) |
| 21:40:34 | → | cjb joins (~cjb@user/cjb) |
| 21:41:02 | × | CiaoSen quits (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 21:41:53 | <dmj`> | encodeStrict in aeson wouldn't be a bad idea |
| 21:42:34 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 21:44:45 | → | dmenz joins (~dmenz@2804:14d:5cd4:5e94::1) |
| 21:47:36 | → | pfurla joins (~pfurla@177.25.178.222) |
| 21:48:25 | → | jgeerds joins (~jgeerds@55d4ac73.access.ecotel.net) |
| 21:48:45 | × | zer0bitz quits (~zer0bitz@dsl-hkibng32-54fbfb-173.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 21:51:55 | → | Kauto joins (~Kauto@wireless-student-pt10-182-232.lut.ac.uk) |
| 21:52:09 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Remote host closed the connection) |
| 21:53:38 | × | Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep) |
| 21:59:46 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 22:00:16 | → | alx741 joins (~alx741@181.199.42.79) |
| 22:01:19 | → | vicfred joins (~vicfred@user/vicfred) |
| 22:02:54 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:03:28 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:05:12 | × | jgeerds quits (~jgeerds@55d4ac73.access.ecotel.net) (Remote host closed the connection) |
| 22:05:24 | → | jgeerds joins (~jgeerds@55d4ac73.access.ecotel.net) |
| 22:10:09 | × | alx741 quits (~alx741@181.199.42.79) (Read error: Connection reset by peer) |
| 22:10:45 | → | alx741 joins (~alx741@157.100.93.160) |
| 22:11:44 | → | pavonia joins (~user@user/siracusa) |
| 22:11:58 | → | madjestic joins (~madjestic@88-159-247-120.fixed.kpn.net) |
| 22:12:11 | → | azimut_ joins (~azimut@gateway/tor-sasl/azimut) |
| 22:13:19 | → | BrokenClutch joins (~pioneer@2804:d41:c2b2:be00:da32:623d:efa3:7121) |
| 22:13:21 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds) |
| 22:13:57 | → | ees joins (~user@pool-108-18-30-46.washdc.fios.verizon.net) |
| 22:14:20 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:15:14 | → | InternetCitizen joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 22:16:09 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 22:16:10 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 22:16:25 | <BrokenClutch> | I know that this will sound dumb, but I developed a strong opinion about most haskell books (that I've read at least). |
| 22:16:25 | <BrokenClutch> | They are holding hands too much, like "let's make a software together xoxo" (which is fine), I miss a little of cppreference on haskell, like: |
| 22:16:25 | <BrokenClutch> | 1) Give definition of thing; 2) Give 4 to 6 examples in order from very simple/abstract things to very pratical and complex ones. |
| 22:16:25 | <BrokenClutch> | Correct me if I'm wrong |
| 22:16:53 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 22:18:47 | <jackdk> | BrokenClutch: I see what you're saying but I found when I was learning that the definitions are often just outside people's zones of proximal development. Also you can sometimes find that sort of stuff in haddocks rather than books. |
| 22:19:12 | <dmj`> | BrokenClutch: hmm, which books are you referring to? I didn't see any xoxo in LYAH, but I might have overlooked that section ... I'd always go to the typeclassopedia instead of other books, unless its on RTS stuff |
| 22:19:53 | <jackdk> | I think "xoxo" is referring to things like cute pictures (LYAH), goat jokes (HPFFP), etc. |
| 22:20:35 | <jackdk> | For typeclasses in particular, I've had the most success with "here is a repeated pattern. here is a typeclass that captures the pattern. here are some operations you can write using only the typeclass. here is how those operations behave for each instance" |
| 22:21:31 | <BrokenClutch> | jackdk: Me too |
| 22:21:58 | <jackdk> | just pointing out that it's a an additional step before the cppreference-style stuff you were talking about |
| 22:22:02 | <dsal> | BrokenClutch: haddock has all the definitions. It's pretty much all I use anymore. |
| 22:22:19 | <Rembane> | Hoogle is the best. |
| 22:22:42 | <BrokenClutch> | dmj: The best one was haskell in depth, it have those flaws that I've said but they've written good things about development |
| 22:22:57 | <dsal> | Yeah, hoogle is great when you know what something looks like but don't know what it's called. |
| 22:23:06 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds) |
| 22:23:09 | <BrokenClutch> | dsal: Too little information, I'm not saying that's bad. I'm just missing cppreference. |
| 22:23:45 | <BrokenClutch> | I'm doing a combo of GHCI + hoogle + lambdabot + haskell report |
| 22:24:00 | <dsal> | @hoogle a -> Maybe b -> Either a b |
| 22:24:01 | <lambdabot> | Data.Either.Combinators maybeToRight :: b -> Maybe a -> Either b a |
| 22:24:01 | <lambdabot> | Rebase.Prelude maybeToRight :: () => b -> Maybe a -> Either b a |
| 22:24:01 | <lambdabot> | Network.Haskoin.Util maybeToEither :: b -> Maybe a -> Either b a |
| 22:25:05 | <dsal> | I don't miss cppreference. There's a part of learning anything new that is disorienting. |
| 22:25:06 | <dmj`> | BrokenClutch: Interesting, yea hackage might be best, or just .... raw source, that is probably the best tbh... back in my day we didn't have "books", we had broken haskell wiki links, darcs checkouts, cabal sandbox tarballs, and blue / white hackage pages w/ no source hyperlinks. |
| 22:25:06 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 22:26:30 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 22:26:58 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 22:28:05 | × | ees quits (~user@pool-108-18-30-46.washdc.fios.verizon.net) (Remote host closed the connection) |
| 22:28:26 | <monochrom> | The Haskell 2010 Report has all the definitions, but no examples. |
| 22:28:34 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:28:47 | <monochrom> | The blogosphere tutorials have all the examples, but no definition. |
| 22:28:53 | <monochrom> | Ah, what if you read both. |
| 22:30:12 | <BrokenClutch> | monochrom: I forgot to say what I'm doing to solve that! I've downloaded a lot of source codes, git-annex source is helping me a lot |
| 22:30:15 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 22:30:56 | <BrokenClutch> | and when the people who write the definition write the examples too, everything becomes better connected |
| 22:31:09 | <BrokenClutch> | bad comma, sorry |
| 22:36:30 | × | michalz quits (~michalz@185.246.204.122) (Remote host closed the connection) |
| 22:36:31 | × | burnsidesLlama quits (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Remote host closed the connection) |
| 22:40:17 | × | smartin quits (~Thunderbi@88.135.18.171) (Quit: smartin) |
| 22:43:47 | × | Akiva quits (~Akiva@user/Akiva) (Ping timeout: 250 seconds) |
| 22:45:07 | × | jkaye quits (~jkaye@2601:281:8300:7530:770c:7340:e88b:8722) (Ping timeout: 252 seconds) |
| 22:45:31 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 22:48:07 | → | pfurla[m] joins (uid345156@id-345156.tinside.irccloud.com) |
| 22:48:44 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 22:53:09 | ← | BrokenClutch parts (~pioneer@2804:d41:c2b2:be00:da32:623d:efa3:7121) () |
| 22:55:37 | → | kranius_ joins (~kranius@222.186.245.213.rev.sfr.net) |
| 22:57:57 | × | emf quits (~emf@2620:10d:c091:480::1:cbc8) (Ping timeout: 252 seconds) |
| 23:00:55 | → | coot joins (~coot@89-64-85-93.dynamic.chello.pl) |
| 23:02:13 | × | kranius_ quits (~kranius@222.186.245.213.rev.sfr.net) (Read error: Connection reset by peer) |
| 23:02:27 | → | kranius_ joins (~kranius@222.186.245.213.rev.sfr.net) |
| 23:03:18 | → | alx741 joins (~alx741@181.199.42.79) |
| 23:03:28 | × | kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
| 23:04:05 | × | slowtyper quits (~slowtyper@user/slowtyper) (Quit: ZNC 1.8.2 - https://znc.in) |
| 23:04:21 | → | slowtyper joins (~slowtyper@user/slowtyper) |
| 23:04:58 | × | kranius_ quits (~kranius@222.186.245.213.rev.sfr.net) (Read error: Connection reset by peer) |
| 23:05:15 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 23:05:30 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 23:05:46 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 23:06:11 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 23:06:59 | × | cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds) |
| 23:07:27 | → | kranius_ joins (~kranius@222.186.245.213.rev.sfr.net) |
| 23:10:43 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 23:11:31 | × | myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Quit: Leaving) |
| 23:12:49 | <jackdk> | Axman6/dibblego: did you read that big ol' snippet I posted? I'm thinking of giving up mocking and splitting `MonadAmazonka` into `Monad m => MonadAmazonka m => MonadAmazonkaPager m`, where `MonadAmazonkaPager` provides the `paginate`/`paginateEither` operations; this makes `MonadAmazonka` GND-able |
| 23:14:16 | <jackdk> | For practical use, people are gonna need `askEnv` and `localEnv`, which essentially locks the class to implementation details of `AmazonkaT` anyway |
| 23:14:35 | × | dmenz quits (~dmenz@2804:14d:5cd4:5e94::1) (Ping timeout: 268 seconds) |
| 23:15:04 | <geekosaur> | @tell BrokenClutch if you're looking for source code, you can start with xmonad and then move on to xmonad-contrib (most modules within being self-contained) |
| 23:15:04 | <lambdabot> | Consider it noted. |
| 23:15:19 | → | emf joins (~emf@2600:1700:841:cc20:184c:c9e0:41bd:a50) |
| 23:16:23 | <dibblego> | haven't had a chance sorry mate, will do it |
| 23:18:12 | × | alx741 quits (~alx741@181.199.42.79) (Read error: Connection reset by peer) |
| 23:18:17 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 23:18:35 | <jackdk> | Everyone wants a new release, nobody wants to pick up a shovel and help dig |
| 23:18:49 | → | alx741 joins (~alx741@157.100.93.160) |
| 23:18:50 | → | emf_ joins (~emf@2620:10d:c091:480::1:e5d2) |
| 23:19:00 | <jackdk> | (I know you're not in the amazonkaverse, but it's more of a general vent) |
| 23:19:35 | × | emf quits (~emf@2600:1700:841:cc20:184c:c9e0:41bd:a50) (Ping timeout: 252 seconds) |
| 23:20:08 | × | pfurla quits (~pfurla@177.25.178.222) (Ping timeout: 268 seconds) |
| 23:20:53 | <geekosaur> | isn't that how it usually goes? |
| 23:21:16 | <jackdk> | I guess |
| 23:22:47 | × | nfd quits (~nfd@user/nfd) (Ping timeout: 250 seconds) |
| 23:24:16 | × | psygate quits (~psygate@user/psygate) (Quit: Leaving) |
| 23:26:21 | × | nvmd quits (~nvmd@user/nvmd) (Quit: Later, nerds.) |
| 23:26:34 | → | nvmd joins (~nvmd@user/nvmd) |
| 23:29:58 | → | cheater joins (~Username@user/cheater) |
| 23:31:15 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 250 seconds) |
| 23:31:16 | <zero> | > length [0,1,2,undefined,7,8,9] |
| 23:31:18 | <lambdabot> | 7 |
| 23:31:49 | <dibblego> | just got an exam on Friday, so that's my spare time atm |
| 23:32:29 | → | pfurla joins (~pfurla@177.25.178.222) |
| 23:32:33 | <zero> | > [0,1,2,undefined,7,8,9] !! 4 |
| 23:32:34 | <lambdabot> | 7 |
| 23:32:37 | <zero> | > [0,1,2,undefined,7,8,9] !! 3 |
| 23:32:39 | <lambdabot> | *Exception: Prelude.undefined |
| 23:33:37 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:33:42 | × | kranius_ quits (~kranius@222.186.245.213.rev.sfr.net) (Ping timeout: 268 seconds) |
| 23:33:53 | × | cosimone quits (~user@93-47-228-207.ip115.fastwebnet.it) (Ping timeout: 252 seconds) |
| 23:34:50 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) (Remote host closed the connection) |
| 23:34:54 | <zero> | is this because Cons is the head in WHNF ? |
| 23:35:02 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f458:37c0:1547:7436) |
| 23:35:10 | <zero> | (Cons = (:)) |
| 23:35:15 | × | acidsys quits (~LSD@2.lsd.systems) (Quit: I love you.) |
| 23:35:36 | <geekosaur> | yes, or put otherwise they only access the spine of the list, not the values |
| 23:35:41 | × | alx741 quits (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
| 23:35:48 | → | acidsys joins (~LSD@2.lsd.systems) |
| 23:35:52 | <zero> | all right |
| 23:36:19 | <geekosaur> | in fact !! doesn't touch the value either, it's MuEval's attempt to print it afterward that throws the exception |
| 23:36:29 | <dibblego> | > length [[0,1,2,undefined,7,8,9] !! 3] |
| 23:36:31 | <lambdabot> | 1 |
| 23:36:39 | <c_wraith> | put yet another way: evaluating either argument to (:) doesn't cause any evaluation of the other. |
| 23:36:56 | <EvanR> | > [0, 1, 2, let x = x in x, 3, 4] !! 4 |
| 23:36:58 | <lambdabot> | 3 |
| 23:37:35 | <EvanR> | now we know it's not being touched, as opposed to hiding an exception |
| 23:37:57 | × | teo quits (~teo@user/teo) (Ping timeout: 250 seconds) |
| 23:38:43 | <EvanR> | haskell is such a safe language, just by touching values you may explode, freeze |
| 23:39:54 | <zero> | nice |
| 23:40:53 | <zero> | that reminded me of a beautiful poem by Robert Frost |
| 23:40:53 | <jackdk> | dibblego: I am happy with how I've decided to do things (single typeclass with a haddock note for people writing their own instances), so if you don't get to weigh in, that's cool |
| 23:41:05 | <dibblego> | ok |
| 23:41:11 | <xsperry> | is it really better if the freezing happens right away, before the values are even created? |
| 23:41:19 | <xsperry> | as it would in a strict language |
| 23:41:32 | × | jgeerds quits (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 240 seconds) |
| 23:41:58 | <xsperry> | the end result is still a crashing of freezing program |
| 23:42:05 | <zero> | xsperry: if you think it is in a specific context, you can force its evaluatioon |
| 23:42:18 | <xsperry> | s/of/or |
| 23:42:39 | × | earendel quits (uid498179@user/earendel) (Quit: Connection closed for inactivity) |
| 23:42:47 | <xsperry> | zero, I know, I'm just arguing that this wouldn't make it any better or safer, whether done manually or automatically |
| 23:43:01 | <EvanR> | the beauty is when your program doesn't freeze or crash and produces useful results despite bombs and bottoms |
| 23:43:24 | <EvanR> | unlike a strict language |
| 23:44:44 | → | mdrake joins (~bc8147f2@cerf.good1.com) |
| 23:45:48 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
| 23:46:06 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
| 23:46:19 | × | d34df00d quits (~d34df00d@2600:1700:8c60:3a10::48) (Remote host closed the connection) |
| 23:46:36 | × | bollu quits (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 23:46:43 | × | max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection) |
| 23:47:01 | × | Jing quits (~hedgehog@2604:a840:3::10c8) (Remote host closed the connection) |
| 23:47:02 | <int-e> | c_wraith: more adventures in dumbo octopus land: there are *long* loops: https://paste.debian.net/1223336/ |
| 23:47:04 | <mdrake> | hi. is it ok to upgrade to 9.2.1 if I only care about linux and windows platforms? |
| 23:47:25 | <mdrake> | or is it still too buggy to make the switch |
| 23:47:27 | <zero> | also there's the fact that you can have considerable guarantees that bombs and botoms don't exist |
| 23:47:33 | <c_wraith> | as far as I know, the big issues are only on ARM, yes |
| 23:47:54 | → | Jing joins (~hedgehog@2604:a840:3::10c8) |
| 23:48:14 | <c_wraith> | int-e: dang. that's one hell of a long cycle |
| 23:48:38 | <mdrake> | when can we expect stack to upgrade to 9.2.1? |
| 23:49:01 | × | nvmd quits (~nvmd@user/nvmd) (Quit: Later, nerds.) |
| 23:49:02 | <monochrom> | Laziness enables more abstractions. |
| 23:49:18 | <c_wraith> | I doubt it will. I suspect stack won't upgrade until 9.2.2 |
| 23:49:33 | <mdrake> | :| |
| 23:49:47 | <c_wraith> | because they don't want a stack release labeled "not for use on new MacBooks" |
| 23:49:53 | <zero> | monochrom: i intuitively agree, but may i ask how so? |
| 23:50:28 | <mdrake> | and how far away is 9.2.2, months? half a year? |
| 23:50:32 | <mdrake> | +away |
| 23:50:54 | <c_wraith> | probably not this month, due to the holidays. but I'd hope for January |
| 23:51:01 | <mdrake> | that's not so bad |
| 23:51:03 | <monochrom> | "f x y z = if x>0 then y else z, don't eval z if x>0, don't eval y if x<=0" cannot be user-defined in an eager language. |
| 23:52:02 | <monochrom> | This explains why a lot of control constructs are merely library functions in Haskell, but have to be at the mercy of the language designers in other languages. |
| 23:52:22 | × | coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
| 23:52:44 | <jackdk> | IIRC there's a mean question in SICP about this exact point |
| 23:53:36 | → | alx741 joins (~alx741@157.100.93.160) |
| 23:54:08 | <dibblego> | Has anyone ever asked for a strict if/then/else or && [for whatever reason, for whatever language]? |
| 23:54:42 | <EvanR> | your cpu evaluates both sides and cancels the loser when the bool test is ready xD |
| 23:54:51 | <EvanR> | luckily they can't explode (?) |
| 23:54:55 | <hpc> | dibblego: i think people are more likely to ask for "i don't want to care if it is strict or lazy" |
| 23:55:06 | <monochrom> | "cancel explosion" |
| 23:55:21 | <geekosaur> | > zip "abcdefg" [1..] -- try this in a strict language |
| 23:55:23 | <lambdabot> | [('a',1),('b',2),('c',3),('d',4),('e',5),('f',6),('g',7)] |
| 23:55:26 | <mdrake> | strict if isn't even an if, is it? just two blocks of code executed/evaluated |
| 23:55:49 | <geekosaur> | for that matter |
| 23:55:53 | <geekosaur> | > [1..] |
| 23:55:54 | <lambdabot> | [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,... |
| 23:56:05 | <dibblego> | ...with a value |
| 23:56:49 | <mdrake> | I think this is a nicely written article about all the benefits of laziness. http://augustss.blogspot.com/2011/05/more-points-for-lazy-evaluation-in.html |
| 23:58:03 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 23:59:13 | <monochrom> | John Hughes's "why FP matters" is also halfly "why laziness matters". Its many examples assume lazy lists. |
All times are in UTC on 2021-12-13.