2025/02/08

2025-02-08 00:02:56 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2025-02-08 00:07:10 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-08 00:08:08 +0100 <EvanR> >3rd rate college grad
2025-02-08 00:08:12 +0100 <EvanR> I resemble that remark
2025-02-08 00:08:33 +0100 <EvanR> but also not only do I understand recursion it was actually on the syllabus once
2025-02-08 00:11:20 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-08 00:12:21 +0100foul_owl(~kerry@193.42.0.126) foul_owl
2025-02-08 00:14:28 +0100 <c_wraith> I'm still unsure if understanding recursion was made easier by simultaneously learning how compilers implement it or not.
2025-02-08 00:15:09 +0100michalz(~michalz@185.246.207.197) (Remote host closed the connection)
2025-02-08 00:17:21 +0100 <haskellbridge> <Bowuigi> Knowing about the stack is good for imperative languages but bad for functional languages IMHO
2025-02-08 00:17:50 +0100 <geekosaur> I'm… not sure I ever didn't understand recursion. I recall being annoyed that there was no way to do it in MS-BASIC
2025-02-08 00:19:48 +0100MyNetAz(~MyNetAz@user/MyNetAz) (Remote host closed the connection)
2025-02-08 00:25:33 +0100 <Leary> Yeah, for me recursion was an obvious, intuitive tool for simplifying problems; I'd instead stuggle to solve them /without/ it. Though I may have understood it via the principle of induction.
2025-02-08 00:26:48 +0100MyNetAz(~MyNetAz@user/MyNetAz) MyNetAz
2025-02-08 00:32:13 +0100 <geekosaur> yeh, I can't say whether I'd encountered that by that point or not
2025-02-08 00:32:35 +0100 <geekosaur> but even so, the notion of reducing a problem to a simpler version seemed pretty obvious to me
2025-02-08 00:46:51 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2025-02-08 00:47:44 +0100 <hololeap> I asked this a year back because for some reason this package is hard for me to remember and it's surprisingly difficult to search for
2025-02-08 00:48:13 +0100 <hololeap> but what is the name of the package that contains an Either like data type that accumulates errors?
2025-02-08 00:49:01 +0100 <Leary> @hackage validation
2025-02-08 00:49:01 +0100 <lambdabot> https://hackage.haskell.org/package/validation
2025-02-08 00:49:24 +0100otbergsten(~otbergste@user/otbergsten) ()
2025-02-08 00:49:37 +0100 <hololeap> thanks
2025-02-08 00:51:20 +0100 <hololeap> I also remember there was a related typeclass that was considered to be "between" Applicative and Monad
2025-02-08 00:51:39 +0100 <Leary> @hackage selective
2025-02-08 00:51:39 +0100 <lambdabot> https://hackage.haskell.org/package/selective
2025-02-08 00:53:36 +0100 <hololeap> thank you
2025-02-08 00:55:14 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-08 00:59:22 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-08 01:03:24 +0100foul_owl(~kerry@193.42.0.126) (Ping timeout: 252 seconds)
2025-02-08 01:16:36 +0100robobub(uid248673@id-248673.uxbridge.irccloud.com) robobub
2025-02-08 01:17:50 +0100foul_owl(~kerry@174-21-138-88.tukw.qwest.net) foul_owl
2025-02-08 01:19:25 +0100Square(~Square@user/square) Square
2025-02-08 01:19:43 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-02-08 01:23:24 +0100sprotte24(~sprotte24@p200300d16f162e00a0abf896d629d189.dip0.t-ipconnect.de) (Quit: Leaving)
2025-02-08 01:40:33 +0100 <haskellbridge> <Preetham Gujjula> Is there any way to infer "Eq (f a)" from "(Eq a, Eq1 f)"? Here's a small example:
2025-02-08 01:40:33 +0100 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/txkgrmSDUVjUVWVJRVXKYhNi/LYPi2Ize3LU (21 lines)
2025-02-08 01:41:23 +0100 <haskellbridge> <Preetham Gujjula> Is there any way to infer "Eq (f a)" from "(Eq a, Eq1 f)"? Here's a small example:
2025-02-08 01:41:23 +0100 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/IWoCXjVZUXtnETfIMFBBSOuB/v7p8RIuNF04 (21 lines)
2025-02-08 01:43:58 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-08 01:45:01 +0100 <haskellbridge> <Preetham Gujjula> My apologies everyone, I meant to post this in the Haskell matrix channel
2025-02-08 01:48:08 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-08 01:49:49 +0100 <Leary> Preetham: You can write `newtype F1 f a = F1 (f a); instance (Eq1 f, Eq a) => Eq (F1 f a)` and use `coerce @[f a] @[F1 f a]`.
2025-02-08 01:51:20 +0100 <haskellbridge> <sm> Preetham Gujjula: worked perfectly in my matrix client. :) And in IRC client, it was also readable, with two pastebin links
2025-02-08 01:52:53 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 01:54:50 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 01:55:40 +0100 <haskellbridge> <Preetham Gujjula> Oh good to hear sm :)
2025-02-08 02:02:02 +0100 <haskellbridge> <Preetham Gujjula> Leary: I don't think that idea works, GHC warns:
2025-02-08 02:02:02 +0100 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/AmMeFJGdLlJCilBtJKDYAhqG/0S1DLbftubs (10 lines)
2025-02-08 02:02:46 +0100 <haskellbridge> <Preetham Gujjula> Also why can't I just use the "F1" constructor instead of "coerce"?
2025-02-08 02:08:00 +0100 <haskellbridge> <Preetham Gujjula> Oh wait I see, I can write an implementation for "(==)" using "eq1":
2025-02-08 02:08:00 +0100 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/SGoxowAGeEDwOguEHnahrMWL/IttEtTK99nU (11 lines)
2025-02-08 02:08:18 +0100 <Leary> Preetham: You still have to define `(==)`, but you can do that with `eq1`. Using `coerce` over `map F1` may avoid a needless traversal of the list, though rewrite rules would likely evade it anyway.
2025-02-08 02:10:39 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-02-08 02:13:11 +0100 <haskellbridge> <Preetham Gujjula> I see, thanks Leary!
2025-02-08 02:15:21 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 02:15:44 +0100cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2025-02-08 02:16:29 +0100 <haskellbridge> <Preetham Gujjula> It does feel a little clunky. The current definition of "Eq1" is "class (forall a. Eq a => Eq (f a)) => Eq1 (f :: Type -> Type)", but I noticed that if we write
2025-02-08 02:16:32 +0100 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/KekKHFuFggARKJEfWBCnMgyf/rXzjao_nHrA (6 lines)
2025-02-08 02:17:13 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 02:21:14 +0100 <Leary> You're probably using a version of GHC/base from before that quantified superclass was added, otherwise it should work the same.
2025-02-08 02:22:30 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 02:22:58 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2025-02-08 02:23:30 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 02:24:46 +0100acidjnk_new3(~acidjnk@p200300d6e7283f9788a4d7c575081360.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2025-02-08 02:30:29 +0100zwro(~z@user/zero) (Ping timeout: 248 seconds)
2025-02-08 02:30:50 +0100zero(~z@user/zero) zero
2025-02-08 02:32:02 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-08 02:36:34 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 265 seconds)
2025-02-08 02:45:00 +0100 <haskellbridge> <Preetham Gujjula> Ah yes, you're right it works on later GHCs. Thank you again!
2025-02-08 02:52:10 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 02:53:08 +0100terrorjack(~terrorjac@2a01:4f8:c17:a66e::) (The Lounge - https://thelounge.chat)
2025-02-08 02:54:44 +0100aaronv(~aaronv@user/aaronv) aaronv
2025-02-08 02:55:11 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2025-02-08 02:58:07 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-02-08 02:59:43 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 03:09:38 +0100zero(~z@user/zero) (Read error: Connection reset by peer)
2025-02-08 03:13:03 +0100zero(~z@user/zero) zero
2025-02-08 03:14:36 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds)
2025-02-08 03:19:46 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-08 03:21:24 +0100dostoevsky(~dostoevsk@user/dostoevsky) (Remote host closed the connection)
2025-02-08 03:21:43 +0100dostoevsky(~dostoevsk@user/dostoevsky) dostoevsky
2025-02-08 03:23:56 +0100erdem(~erdem@user/erdem) (Quit: ZNC 1.9.1 - https://znc.in)
2025-02-08 03:24:35 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 268 seconds)
2025-02-08 03:27:03 +0100xff0x(~xff0x@2405:6580:b080:900:a44a:d727:8d11:d274) (Ping timeout: 252 seconds)
2025-02-08 03:28:53 +0100Jeanne-Kamikaze(~Jeanne-Ka@c-73-93-78-113.hsd1.ca.comcast.net) Jeanne-Kamikaze
2025-02-08 03:29:32 +0100emergence7(emergence@vm0.max-p.me) emergence
2025-02-08 03:29:51 +0100emergence(emergence@vm0.max-p.me) (Read error: Connection reset by peer)
2025-02-08 03:29:51 +0100emergence7emergence
2025-02-08 03:30:06 +0100xff0x(~xff0x@2405:6580:b080:900:a44a:d727:8d11:d274)
2025-02-08 03:38:24 +0100erdem(~erdem@user/erdem) erdem
2025-02-08 03:40:13 +0100ColinRobinson(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-02-08 03:41:34 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-02-08 03:49:58 +0100cheater(~Username@user/cheater) cheater
2025-02-08 03:53:33 +0100aaronv(~aaronv@user/aaronv) (Remote host closed the connection)
2025-02-08 03:53:57 +0100aaronv(~aaronv@user/aaronv) aaronv
2025-02-08 04:00:17 +0100aaronv(~aaronv@user/aaronv) (Remote host closed the connection)
2025-02-08 04:00:42 +0100aaronv(~aaronv@user/aaronv) aaronv
2025-02-08 04:00:55 +0100tavare(~tavare@150.129.88.189)
2025-02-08 04:00:55 +0100tavare(~tavare@150.129.88.189) (Changing host)
2025-02-08 04:00:55 +0100tavare(~tavare@user/tavare) tavare
2025-02-08 04:02:53 +0100Guest42(~Guest42@220-233-36-23.ip4.exetel.com.au)
2025-02-08 04:04:14 +0100Guest42(~Guest42@220-233-36-23.ip4.exetel.com.au) (Client Quit)
2025-02-08 04:08:22 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 268 seconds)
2025-02-08 04:08:52 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-08 04:09:53 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-02-08 04:13:18 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 268 seconds)
2025-02-08 04:15:48 +0100fmira(~user@user/fmira) (Ping timeout: 264 seconds)
2025-02-08 04:15:58 +0100 <monochrom> c_wraith: I am arrogant, I say that I am sure recursion is not more easily learned by see how to compile. In fact, has anything been made easier to learn by seeing how to compile it?
2025-02-08 04:16:42 +0100 <c_wraith> for some people, yes.
2025-02-08 04:17:08 +0100 <monochrom> I even go as far as making this joke. (Context: Everyone except me teach recursion by teaching how to execute by hand.) Your computer has been executing recursion for years. Has it learned anything yet?
2025-02-08 04:18:02 +0100 <c_wraith> I have absolutely seen some people go "oh, it's just using a stack" and never have an issue with it again.
2025-02-08 04:18:43 +0100 <monochrom> Have they gone one step further and go "and the stack is just an optimization"?
2025-02-08 04:19:08 +0100 <monochrom> Because if you don't mind a quadratic slowdown, you don't need a stack.
2025-02-08 04:21:42 +0100 <monochrom> (It is still not O(1) space. Every procedure call becomes an inline expansion of the procedure text.)
2025-02-08 04:27:29 +0100 <geekosaur> how well does that work for a non-fixed number of calls?
2025-02-08 04:27:58 +0100 <monochrom> Equally well. I never assumed a fixed number.
2025-02-08 04:29:27 +0100 <monochrom> A functional example goes like this. To execute f(5), it goes: f(5) -> 5 * f(4) -> 5 * (4 * f(3)) -> 5 * (4 * (3 * f(2))) -> ...
2025-02-08 04:30:50 +0100 <monochrom> If I don't have a stack, I just have to scan the long expression "5 * (4 * (3 * f(2)))" for the redex, f(2). This is slow, but I don't need a stack. A stack is there to save a pointer to the f(2) subexpr so I don't have to search.
2025-02-08 04:34:42 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 04:35:26 +0100 <monochrom> (And also a pointer to the 3*f(2) so I don't have to search in the future when I'm ready for it. And so on so forth.)
2025-02-08 04:36:58 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 04:45:23 +0100MyNetAz(~MyNetAz@user/MyNetAz) (Remote host closed the connection)
2025-02-08 04:46:36 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2025-02-08 04:51:10 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 04:52:23 +0100MyNetAz(~MyNetAz@user/MyNetAz) MyNetAz
2025-02-08 04:54:49 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 04:58:37 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-08 05:03:15 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 268 seconds)
2025-02-08 05:04:52 +0100Jeanne-Kamikaze(~Jeanne-Ka@c-73-93-78-113.hsd1.ca.comcast.net) (Quit: Leaving)
2025-02-08 05:07:16 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 05:11:25 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 05:13:00 +0100cheater_(~Username@user/cheater) cheater
2025-02-08 05:16:33 +0100cheater(~Username@user/cheater) (Ping timeout: 265 seconds)
2025-02-08 05:16:37 +0100cheater_cheater
2025-02-08 05:24:27 +0100gabiruh(~gabiruh@vps19177.publiccloud.com.br) (Ping timeout: 252 seconds)
2025-02-08 05:32:10 +0100gabiruh(~gabiruh@vps19177.publiccloud.com.br) gabiruh
2025-02-08 05:41:09 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 05:44:52 +0100emergence7(emergence@vm0.max-p.me) emergence
2025-02-08 05:46:50 +0100emergence(emergence@vm0.max-p.me) (Ping timeout: 252 seconds)
2025-02-08 05:46:50 +0100emergence7emergence
2025-02-08 05:47:42 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-08 05:51:46 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 05:52:45 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 276 seconds)
2025-02-08 05:55:03 +0100aforemny(~aforemny@i577B1279.versanet.de) (Ping timeout: 268 seconds)
2025-02-08 05:55:34 +0100aforemny(~aforemny@2001:9e8:6cc0:9f00:f26a:4821:630d:3b0c) aforemny
2025-02-08 05:57:52 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-02-08 06:01:52 +0100aaronv(~aaronv@user/aaronv) (Remote host closed the connection)
2025-02-08 06:02:34 +0100capslair^(~capslair@108.192.66.114) (Remote host closed the connection)
2025-02-08 06:02:47 +0100MyNetAz(~MyNetAz@user/MyNetAz) (Remote host closed the connection)
2025-02-08 06:04:29 +0100aaronv(~aaronv@user/aaronv) aaronv
2025-02-08 06:09:25 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 06:09:47 +0100MyNetAz(~MyNetAz@user/MyNetAz) MyNetAz
2025-02-08 06:12:04 +0100rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2025-02-08 06:12:37 +0100rvalue(~rvalue@user/rvalue) rvalue
2025-02-08 06:13:46 +0100duckworld(~duckworld@user/duckworld) (Remote host closed the connection)
2025-02-08 06:16:10 +0100euphores(~SASL_euph@user/euphores) (Ping timeout: 252 seconds)
2025-02-08 06:16:57 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 06:18:39 +0100duckworld(~duckworld@user/duckworld) duckworld
2025-02-08 06:19:47 +0100duckworld(~duckworld@user/duckworld) (Remote host closed the connection)
2025-02-08 06:20:23 +0100duckworld(~duckworld@user/duckworld) duckworld
2025-02-08 06:35:46 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-08 06:40:41 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 268 seconds)
2025-02-08 06:40:52 +0100prasad(~Thunderbi@2601:243:c001:3f07::53) (Quit: prasad)
2025-02-08 06:46:18 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 246 seconds)
2025-02-08 06:48:25 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2025-02-08 06:48:45 +0100chexum(~quassel@gateway/tor-sasl/chexum) chexum
2025-02-08 07:01:58 +0100elnegro(elnegro@r186-54-42-10.dialup.adsl.anteldata.net.uy) elnegro
2025-02-08 07:08:50 +0100tabaqui1(~root@87.200.129.102) tabaqui
2025-02-08 07:09:13 +0100elnegro(elnegro@r186-54-42-10.dialup.adsl.anteldata.net.uy) ()
2025-02-08 07:09:42 +0100tavare(~tavare@user/tavare) (Ping timeout: 252 seconds)
2025-02-08 07:09:58 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 07:12:23 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 07:12:46 +0100euphores(~SASL_euph@user/euphores) euphores
2025-02-08 07:16:27 +0100foul_owl(~kerry@174-21-138-88.tukw.qwest.net) (Ping timeout: 268 seconds)
2025-02-08 07:17:21 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2025-02-08 07:18:11 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2025-02-08 07:20:00 +0100tavare(~tavare@150.129.88.189)
2025-02-08 07:20:00 +0100tavare(~tavare@150.129.88.189) (Changing host)
2025-02-08 07:20:00 +0100tavare(~tavare@user/tavare) tavare
2025-02-08 07:23:51 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-08 07:24:41 +0100tnt2(~Thunderbi@user/tnt1) tnt1
2025-02-08 07:25:09 +0100tnt1(~Thunderbi@user/tnt1) (Ping timeout: 246 seconds)
2025-02-08 07:25:09 +0100tnt2tnt1
2025-02-08 07:28:02 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-08 07:28:30 +0100foul_owl(~kerry@193.42.0.122) foul_owl
2025-02-08 07:32:17 +0100igemnace(~igemnace@user/igemnace) (Quit: ZNC 1.9.0+deb2build3 - https://znc.in)
2025-02-08 07:33:15 +0100igemnace(~igemnace@user/igemnace) igemnace
2025-02-08 07:35:20 +0100tnt2(~Thunderbi@user/tnt1) tnt1
2025-02-08 07:36:34 +0100tnt1(~Thunderbi@user/tnt1) (Ping timeout: 260 seconds)
2025-02-08 07:36:34 +0100tnt2tnt1
2025-02-08 07:38:12 +0100takuan(~takuan@d8D86B601.access.telenet.be)
2025-02-08 07:47:13 +0100tnt2(~Thunderbi@user/tnt1) tnt1
2025-02-08 07:47:19 +0100tnt1(~Thunderbi@user/tnt1) (Ping timeout: 244 seconds)
2025-02-08 07:47:19 +0100tnt2tnt1
2025-02-08 07:47:59 +0100arahael(~arahael@user/arahael) (Quit: leaving)