2025/04/06

2025-04-06 00:00:04 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2025-04-06 00:00:34 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2025-04-06 00:00:45 +0200chexum(~quassel@gateway/tor-sasl/chexum) chexum
2025-04-06 00:00:47 +0200gmg(~user@user/gehmehgeh) gehmehgeh
2025-04-06 00:02:56 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 00:04:04 +0200hattckory(~hattckory@70.27.118.207) (Ping timeout: 260 seconds)
2025-04-06 00:07:41 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-06 00:09:25 +0200dhil(~dhil@2a0c:b381:52e:3600:696a:652d:93f2:5c60) (Ping timeout: 248 seconds)
2025-04-06 00:11:43 +0200tromp(~textual@2001:1c00:3487:1b00:44a6:f61b:e8c3:9514) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-06 00:13:20 +0200rini(~rini@user/rini) (Remote host closed the connection)
2025-04-06 00:13:33 +0200connrs(~connrs@user/connrs) (Remote host closed the connection)
2025-04-06 00:13:41 +0200connrs(~connrs@user/connrs) connrs
2025-04-06 00:19:09 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 00:25:23 +0200takuan_dozo(~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
2025-04-06 00:30:58 +0200hgolden_(~hgolden@2603:8000:9d00:3ed1:fa19:a3fb:34bb:67a4) hgolden
2025-04-06 00:31:09 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2025-04-06 00:33:59 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:1b03:b08c:d961:6530) (Ping timeout: 260 seconds)
2025-04-06 00:41:34 +0200toby-bro(~toby-bro@user/toby-bro) (Ping timeout: 260 seconds)
2025-04-06 00:46:02 +0200jmcantrellGuest4344
2025-04-06 00:46:02 +0200Guest4344(644f1bed9a@user/jmcantrell) (Killed (molybdenum.libera.chat (Nickname regained by services)))
2025-04-06 00:46:02 +0200__jmcantrell__jmcantrell
2025-04-06 00:46:10 +0200jmcantrell_(644f1bed9a@user/jmcantrell) jmcantrell
2025-04-06 00:49:59 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 00:52:58 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-04-06 00:55:18 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-04-06 01:06:42 +0200hgolden_(~hgolden@2603:8000:9d00:3ed1:fa19:a3fb:34bb:67a4) (Remote host closed the connection)
2025-04-06 01:08:55 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:fa19:a3fb:34bb:67a4) hgolden
2025-04-06 01:09:00 +0200anpad(~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in)
2025-04-06 01:11:05 +0200anpad(~pandeyan@user/anpad) anpad
2025-04-06 01:13:30 +0200robobub(uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2025-04-06 01:16:46 +0200target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2025-04-06 01:24:21 +0200hgolden_(~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) hgolden
2025-04-06 01:24:47 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-06 01:26:10 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:fa19:a3fb:34bb:67a4) (Ping timeout: 272 seconds)
2025-04-06 01:26:26 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-04-06 01:32:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 01:34:10 +0200hiredman(~hiredman@frontier1.downey.family) (Quit: Lost terminal)
2025-04-06 01:34:34 +0200rawles(~rawles@user/rawles) rawles
2025-04-06 01:36:09 +0200m5zs7k(aquares@web10.mydevil.net) (Ping timeout: 244 seconds)
2025-04-06 01:36:53 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-06 01:40:18 +0200m5zs7k(aquares@web10.mydevil.net) m5zs7k
2025-04-06 01:44:59 +0200 <haskellbridge> <sm> ! we'll pretend we didn't hear that
2025-04-06 01:45:18 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 01:47:10 +0200 <EvanR> ikr
2025-04-06 01:47:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 01:49:37 +0200hgolden__(~hgolden@2603:8000:9d00:3ed1:2fa6:8257:2d41:b9b0) hgolden
2025-04-06 01:50:33 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-04-06 01:51:30 +0200sprotte24_(~sprotte24@p200300d16f1fcd00fde87e4fa26f8820.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2025-04-06 01:52:15 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:d319:57ed:d2cb:68a5) hgolden
2025-04-06 01:52:44 +0200hgolden_(~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) (Ping timeout: 260 seconds)
2025-04-06 01:53:57 +0200hgolden__(~hgolden@2603:8000:9d00:3ed1:2fa6:8257:2d41:b9b0) (Ping timeout: 252 seconds)
2025-04-06 01:56:20 +0200 <monochrom> The cause of concern is that you will not run your web app on your PC, you will run it on virtual hosting where your budget allows only 0.5GB RAM for example.
2025-04-06 01:57:19 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-04-06 01:57:42 +0200todi1(~todi@p57803331.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2025-04-06 01:58:34 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:d319:57ed:d2cb:68a5) (Ping timeout: 260 seconds)
2025-04-06 02:03:54 +0200 <EvanR> on web you have a cosmic struggle between needing to use less resources and just use more resources
2025-04-06 02:04:21 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:2fa6:8257:2d41:b9b0) hgolden
2025-04-06 02:04:40 +0200 <EvanR> web apps used to be written in C!
2025-04-06 02:05:26 +0200 <monochrom> It's not a struggle, it's a synergy! Use less resource on your server, offload it to using more resource on the customer web browser!
2025-04-06 02:05:34 +0200otto_s(~user@p5de2f9f0.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2025-04-06 02:05:57 +0200 <EvanR> just send them the whole database and have them filter it
2025-04-06 02:06:00 +0200 <monochrom> "less is more" = less burden on me is more burden on you!
2025-04-06 02:07:14 +0200otto_s(~user@p5de2fd95.dip0.t-ipconnect.de)
2025-04-06 02:09:33 +0200hattckory(~hattckory@70.27.118.207)
2025-04-06 02:10:53 +0200jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed)
2025-04-06 02:19:29 +0200hattckory(~hattckory@70.27.118.207) (Ping timeout: 248 seconds)
2025-04-06 02:30:13 +0200acidjnk_new3(~acidjnk@p200300d6e71c4f099ca861e17b9ec3ec.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2025-04-06 02:31:01 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 02:41:34 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds)
2025-04-06 02:53:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-06 02:53:42 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9)
2025-04-06 02:55:59 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) (Client Quit)
2025-04-06 02:56:40 +0200amadaluzia(~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com)
2025-04-06 03:01:52 +0200JuanDaughertyColinRobinson
2025-04-06 03:01:58 +0200arahael(~arahael@user/arahael) arahael
2025-04-06 03:02:21 +0200otto_s(~user@p5de2fd95.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2025-04-06 03:04:11 +0200otto_s(~user@p5de2fb60.dip0.t-ipconnect.de)
2025-04-06 03:05:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 03:05:18 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2025-04-06 03:07:16 +0200amadaluzia(~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) (Quit: Hi, this is Paul Allen. I'm being called away to London for a few days. Meredith, I'll call you when I get back. Hasta la vista, baby.)
2025-04-06 03:07:38 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9)
2025-04-06 03:09:32 +0200hattckory(~hattckory@70.27.118.207)
2025-04-06 03:09:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-06 03:13:55 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) (Quit: Hi, this is Paul Allen. I'm being called away to London for a few days. Meredith, I'll call you when I get back. Hasta la vista, baby.)
2025-04-06 03:15:21 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-06 03:19:40 +0200amadaluzia_(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9)
2025-04-06 03:20:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 03:21:38 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich)
2025-04-06 03:21:59 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-06 03:22:18 +0200amadaluzia(~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com)
2025-04-06 03:23:51 +0200amadaluzia_(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) (Client Quit)
2025-04-06 03:23:51 +0200amadaluzia(~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) (Client Quit)
2025-04-06 03:24:10 +0200amadaluzia(~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com)
2025-04-06 03:24:41 +0200amadaluzia_(~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com)
2025-04-06 03:25:37 +0200hattckory(~hattckory@70.27.118.207) (Ping timeout: 248 seconds)
2025-04-06 03:26:55 +0200amadaluzia_(~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) (Client Quit)
2025-04-06 03:26:55 +0200amadaluzia(~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) (Client Quit)
2025-04-06 03:27:54 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9)
2025-04-06 03:29:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-06 03:29:42 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) (Client Quit)
2025-04-06 03:29:53 +0200wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-04-06 03:30:13 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9)
2025-04-06 03:34:14 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 260 seconds)
2025-04-06 03:37:51 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) (Quit: Hi, this is Paul Allen. I'm being called away to London for a few days. Meredith, I'll call you when I get back. Hasta la vista, baby.)
2025-04-06 03:37:59 +0200xff0x(~xff0x@2405:6580:b080:900:5d6b:27d2:3f72:9d18)
2025-04-06 03:38:26 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9)
2025-04-06 03:40:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 03:44:48 +0200machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 244 seconds)
2025-04-06 03:45:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-06 03:53:11 +0200xff0x(~xff0x@2405:6580:b080:900:5d6b:27d2:3f72:9d18) (Ping timeout: 252 seconds)
2025-04-06 03:54:12 +0200xff0x(~xff0x@2405:6580:b080:900:3e40:a734:5781:f378)
2025-04-06 03:55:35 +0200 <tabaqui> While learning Elixir, I found that they have so called "pins" in pattern matching. Like, you can associate a variable with a value and then match to this variable. In Haskell, afaik, it is impossible. Is it some hard compiler restriction, or something?
2025-04-06 03:56:22 +0200 <tabaqui> Like, in Elixir you can "x = 5; case y of ^x -> <something>".
2025-04-06 03:56:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 03:56:40 +0200 <tabaqui> And it will match y to 5 without new bindings
2025-04-06 03:56:46 +0200 <geekosaur> you use guards in Haskell
2025-04-06 03:56:56 +0200 <geekosaur> just a quirk of the language
2025-04-06 03:57:29 +0200 <tabaqui> Guards aren't quite the same, boolean blindness f.e.
2025-04-06 03:57:54 +0200 <geekosaur> hypotheticslly thy could add that ability, although I suppose it would require some new pattern matching machinery; Haskell patters match structure, not values
2025-04-06 03:58:06 +0200hiecaq(~hiecaq@user/hiecaq) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.92))
2025-04-06 03:59:16 +0200hiecaq(~hiecaq@user/hiecaq) hiecaq
2025-04-06 04:00:23 +0200xff0x(~xff0x@2405:6580:b080:900:3e40:a734:5781:f378) (Quit: xff0x)
2025-04-06 04:01:40 +0200 <monochrom> I don't know Elixir so there is no use telling me "it's called pin in Elixir".
2025-04-06 04:01:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-06 04:02:16 +0200 <monochrom> But it sounds like for example "f xs@(x : xt) = (x, xs, xt)"
2025-04-06 04:02:35 +0200 <monochrom> > case [0,1,2] of xs@(x : xt) -> (x, xs, xt)
2025-04-06 04:02:37 +0200 <lambdabot> (0,[0,1,2],[1,2])
2025-04-06 04:04:55 +0200 <tabaqui> monochrom: here you bind variables xs, x and t with some new values. With "pins" you can declare some variables before and then match without bindings
2025-04-06 04:05:04 +0200op_4(~tslil@user/op-4/x-9116473) (Remote host closed the connection)
2025-04-06 04:05:35 +0200op_4(~tslil@user/op-4/x-9116473) op_4
2025-04-06 04:06:52 +0200 <tabaqui> geekosaur: Yeah, I suspect it has to do with structural matchmaking. Just wanted to make sure it's not something that could be easily added with new sugar.
2025-04-06 04:07:23 +0200 <geekosaur> sugar wouldn't do it, no
2025-04-06 04:08:02 +0200cheater(~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com))
2025-04-06 04:08:50 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 04:09:52 +0200cheater(~Username@user/cheater) cheater
2025-04-06 04:10:23 +0200 <monochrom> If it is just a cute way to say "x == y", then Haskell already has ==. If it is actually as profound as full-blown Prolog unification, then consider the Curry language.
2025-04-06 04:10:25 +0200cheater(~Username@user/cheater) (Client Quit)
2025-04-06 04:12:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 04:13:01 +0200xff0x(~xff0x@2405:6580:b080:900:2d8c:c4f2:3458:8ce1)
2025-04-06 04:13:54 +0200 <geekosaur> there's also an additional complication: if you match against a literal number, it desugars to a guard, so you lose anyway
2025-04-06 04:16:02 +0200cheater(~Username@user/cheater) cheater
2025-04-06 04:17:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-06 04:17:53 +0200 <monochrom> Yeah matching against 5, whether that 5 was hardcoded or obtained during run time, is a very point-defeating example of speaking against boolean blindness.
2025-04-06 04:19:13 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2025-04-06 04:20:11 +0200cheater(~Username@user/cheater) (Client Quit)
2025-04-06 04:20:22 +0200 <EvanR> the pin is like taking the value of the variable and using it as a pattern
2025-04-06 04:20:32 +0200 <EvanR> which requires ==
2025-04-06 04:20:44 +0200 <EvanR> it's done for you in the case of a constant pattern
2025-04-06 04:20:50 +0200 <EvanR> laskdjfasdkfj
2025-04-06 04:20:59 +0200cheater(~Username@user/cheater) cheater
2025-04-06 04:21:24 +0200 <EvanR> in the case of numeric, char, string constants (anything else?)
2025-04-06 04:22:10 +0200 <EvanR> not all data types in haskell have an == and so this wouldn't universally work like in elixir
2025-04-06 04:22:21 +0200 <monochrom> I guess I gave Elixir way too much credit for entertaining the remote possibility that it may do something half as interesting as logic programming.
2025-04-06 04:22:42 +0200 <monochrom> One more data point for being more cynical.
2025-04-06 04:22:54 +0200 <EvanR> I found an interesting thing about elixir
2025-04-06 04:22:57 +0200 <geekosaur> Char acts like an actual constructor, and String like a list of them. this guard business is specific to Num, and is why Num used to have Eq as a "superclass"
2025-04-06 04:23:09 +0200 <EvanR> alright numeric constants
2025-04-06 04:24:00 +0200 <EvanR> the interest thing about elixir is the === operator, which differs from == in that it doesn't convert numerics between int and float, and distinguishes -0.0 from 0.0
2025-04-06 04:24:05 +0200 <EvanR> it follows this law
2025-04-06 04:24:21 +0200 <EvanR> if x === y then f(x) === f(y) (assuming f is a pure function)
2025-04-06 04:25:15 +0200 <EvanR> elixir carefully prints out its values in such a way you can't violate that law
2025-04-06 04:25:24 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds)
2025-04-06 04:25:26 +0200 <monochrom> That's actually nice.
2025-04-06 04:25:42 +0200 <Leary> tabaqui: There's no issue of "boolean blindness" in equality testing. Both `((== x) -> True) -> ...` and `y | x == y -> ...` are perfectly good Haskell equivalents.
2025-04-06 04:25:48 +0200 <EvanR> as far as I could tell after an afternoon of trying
2025-04-06 04:26:16 +0200 <Leary> Though it would be nice if we could write `pattern Is x = (== x) -> True`.
2025-04-06 04:28:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 04:29:39 +0200 <geekosaur> oh, and the special handling of numeric literals is because they're functions in Haskell (wrapped in fromInteger or fromRational as appropriate)
2025-04-06 04:32:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-06 04:38:48 +0200 <geekosaur> (I don't know if this is extended to IsString)
2025-04-06 04:40:37 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 04:43:51 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 04:46:13 +0200Square2(~Square@user/square) (Ping timeout: 245 seconds)
2025-04-06 04:51:15 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-04-06 04:57:54 +0200nitrix(~nitrix@user/meow/nitrix) (Quit: ZNC 1.9.1 - https://znc.in)
2025-04-06 05:11:33 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 05:14:46 +0200smalltalkman(uid545680@id-545680.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2025-04-06 05:16:09 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds)
2025-04-06 05:19:52 +0200tomku(~tomku@user/tomku) (Ping timeout: 272 seconds)
2025-04-06 05:24:02 +0200nitrix(~nitrix@user/meow/nitrix) nitrix
2025-04-06 05:26:38 +0200tomku(~tomku@user/tomku) tomku
2025-04-06 05:36:36 +0200harveypwca(~harveypwc@2601:246:d080:f6e0:27d6:8cc7:eca9:c46c) (Quit: Leaving)
2025-04-06 05:39:59 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) (ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.1))
2025-04-06 05:48:01 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 05:48:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-06 05:48:54 +0200notdabs(~Owner@2600:1700:69cf:9000:58e6:6428:d346:1de6)
2025-04-06 05:53:00 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-04-06 05:59:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 06:04:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-06 06:15:20 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 06:18:38 +0200notdabs(~Owner@2600:1700:69cf:9000:58e6:6428:d346:1de6) (Read error: Connection reset by peer)
2025-04-06 06:20:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-06 06:25:33 +0200tromp(~textual@2001:1c00:3487:1b00:8156:72e2:e83d:bafd)
2025-04-06 06:27:49 +0200tromp(~textual@2001:1c00:3487:1b00:8156:72e2:e83d:bafd) (Client Quit)
2025-04-06 06:28:06 +0200forell(~forell@user/forell) (Ping timeout: 268 seconds)
2025-04-06 06:29:06 +0200ColinRobinson(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-04-06 06:31:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 06:33:25 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 06:38:10 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-04-06 06:56:43 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 07:08:18 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) statusbot
2025-04-06 07:08:39 +0200statusbot10(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Read error: Connection reset by peer)
2025-04-06 07:09:54 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds)
2025-04-06 07:26:42 +0200takuan(~takuan@d8D86B601.access.telenet.be)
2025-04-06 07:40:24 +0200thuna`(~thuna`@user/thuna/x-1480069) (Ping timeout: 244 seconds)
2025-04-06 07:41:25 +0200jmcantrell(~weechat@user/jmcantrell) (Quit: WeeChat 4.6.0)
2025-04-06 07:41:25 +0200jmcantrell_jmcantrell
2025-04-06 07:56:59 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 08:01:04 +0200wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-04-06 08:17:08 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-06 08:30:12 +0200tabaqui(~tabaqui@167.71.80.236) (Quit: WeeChat 4.5.2)
2025-04-06 08:38:13 +0200Fangs(sid141280@id-141280.hampstead.irccloud.com) (Ping timeout: 248 seconds)
2025-04-06 08:39:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-06 08:39:27 +0200Fangs(sid141280@id-141280.hampstead.irccloud.com) Fangs
2025-04-06 08:45:37 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2025-04-06 08:50:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 08:54:31 +0200rit(~rit@2409:40e0:1c:121c:589e:a7ae:8d66:baae)
2025-04-06 08:59:32 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-06 09:00:00 +0200caconym(~caconym@user/caconym) (Quit: bye)
2025-04-06 09:00:02 +0200tt12310978324354(~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) (Quit: The Lounge - https://thelounge.chat)
2025-04-06 09:00:28 +0200j1n37-(~j1n37@user/j1n37) (Ping timeout: 252 seconds)
2025-04-06 09:00:53 +0200caconym(~caconym@user/caconym) caconym
2025-04-06 09:04:35 +0200tt12310978324354(~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) tt1231
2025-04-06 09:14:50 +0200tromp(~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589)
2025-04-06 09:15:30 +0200tromp(~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589) (Client Quit)
2025-04-06 09:17:48 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2025-04-06 09:18:18 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-04-06 09:18:20 +0200tromp(~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589)
2025-04-06 09:19:37 +0200gadotGadot
2025-04-06 09:19:47 +0200rit(~rit@2409:40e0:1c:121c:589e:a7ae:8d66:baae) (Remote host closed the connection)
2025-04-06 09:21:37 +0200rit(~rit@152.58.177.31)
2025-04-06 09:22:02 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-04-06 09:46:07 +0200acidjnk_new3(~acidjnk@p200300d6e71c4f1475e75972aae4f669.dip0.t-ipconnect.de) acidjnk
2025-04-06 09:48:21 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess
2025-04-06 09:57:09 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-06 10:00:55 +0200tromp(~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-06 10:01:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 10:03:24 +0200tromp(~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589)
2025-04-06 10:04:17 +0200sprotte24(~sprotte24@p200300d16f28a1000c1aac2cfe7f30d8.dip0.t-ipconnect.de)
2025-04-06 10:06:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-06 10:15:13 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-04-06 10:18:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 10:20:16 +0200krei-se(~krei-se@p200300f1cfff387fda9ef3fffe7fdac8.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2025-04-06 10:23:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-06 10:23:36 +0200krei-se(~krei-se@p5dea1c1d.dip0.t-ipconnect.de) krei-se
2025-04-06 10:30:40 +0200 <haskellbridge> <Liamzee> wait, this code depends on undefined behavior, right?
2025-04-06 10:30:43 +0200 <haskellbridge> <Liamzee> https://web.archive.org/web/20200809232447/https://benchmarksgame-team.pages.debian.net/benchmarks…
2025-04-06 10:31:06 +0200 <haskellbridge> <Liamzee> actually, you know what, i'll switch ghc versions and see if it works with 8.10
2025-04-06 10:35:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 10:39:17 +0200XZDX(~xzdx@user/XZDX) (Remote host closed the connection)
2025-04-06 10:39:44 +0200XZDX(~xzdx@2601:404:ce00:4e51:214:51ff:fe2b:e82e)
2025-04-06 10:39:49 +0200krei-se(~krei-se@p5dea1c1d.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2025-04-06 10:40:44 +0200krei-se(~krei-se@p200300f1cfff4b46da9ef3fffe7fdac8.dip0.t-ipconnect.de) krei-se
2025-04-06 10:41:44 +0200XZDX(~xzdx@2601:404:ce00:4e51:214:51ff:fe2b:e82e) (Changing host)
2025-04-06 10:41:44 +0200XZDX(~xzdx@user/XZDX) XZDX
2025-04-06 10:42:35 +0200 <haskellbridge> <Liamzee> it sort of works, i don't have the optimization pass level right, and i can't figure out how ot set O2, not least because I lost access to llvm 10. Then it segfaults on the 110th digit. So, almost definitely undefined behavior
2025-04-06 10:44:06 +0200hattckory(~hattckory@70.27.118.207)
2025-04-06 10:46:06 +0200rit(~rit@152.58.177.31) (Ping timeout: 240 seconds)
2025-04-06 10:46:44 +0200krei-se-(~krei-se@p3ee0f5ab.dip0.t-ipconnect.de) krei-se
2025-04-06 10:47:08 +0200krei-se(~krei-se@p200300f1cfff4b46da9ef3fffe7fdac8.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2025-04-06 10:49:14 +0200hattckory(~hattckory@70.27.118.207) (Ping timeout: 260 seconds)
2025-04-06 10:53:16 +0200acidjnk_new3(~acidjnk@p200300d6e71c4f1475e75972aae4f669.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2025-04-06 10:53:38 +0200takuan(~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
2025-04-06 10:56:39 +0200AlexZenon(~alzenon@178.34.162.245) (Quit: ;-)
2025-04-06 10:59:18 +0200AlexNoo(~AlexNoo@178.34.162.245) (Quit: Leaving)
2025-04-06 11:04:34 +0200lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2025-04-06 11:11:29 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
2025-04-06 11:11:40 +0200krei-se(~krei-se@p5dea1cf8.dip0.t-ipconnect.de) krei-se
2025-04-06 11:12:00 +0200krei-se-(~krei-se@p3ee0f5ab.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2025-04-06 11:12:33 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2025-04-06 11:16:19 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-04-06 11:17:11 +0200krei-se-(~krei-se@p200300f1cfff4b89da9ef3fffe7fdac8.dip0.t-ipconnect.de) krei-se
2025-04-06 11:17:24 +0200krei-se(~krei-se@p5dea1cf8.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2025-04-06 11:28:41 +0200AlexNoo(~AlexNoo@178.34.162.245)
2025-04-06 11:33:55 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-04-06 11:35:04 +0200AlexZenon(~alzenon@178.34.162.245)
2025-04-06 11:41:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-06 11:48:47 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 11:52:23 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 11:53:36 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2025-04-06 11:53:45 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-04-06 11:55:22 +0200TMA(tma@twin.jikos.cz) (Ping timeout: 252 seconds)
2025-04-06 11:57:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-06 12:02:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 12:12:03 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 12:15:49 +0200dhil(~dhil@2a0c:b381:52e:3600:4c26:24b1:e3bc:1cdd) dhil
2025-04-06 12:16:49 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-04-06 12:24:48 +0200acidjnk_new3(~acidjnk@p200300d6e71c4f1484dd604455bfc05c.dip0.t-ipconnect.de) acidjnk
2025-04-06 12:25:48 +0200tromp(~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589) (Ping timeout: 245 seconds)
2025-04-06 12:35:21 +0200m257(msa@msa.planetofnix.com) (Quit: Still trying to figure out how bouncers work.)
2025-04-06 12:41:47 +0200sprotte24(~sprotte24@p200300d16f28a1000c1aac2cfe7f30d8.dip0.t-ipconnect.de) (Quit: Leaving)
2025-04-06 12:48:11 +0200hattckory(~hattckory@70.27.118.207)
2025-04-06 12:51:33 +0200msa(msa@msa.planetofnix.com)
2025-04-06 12:53:59 +0200__monty__(~toonn@user/toonn) toonn
2025-04-06 12:55:06 +0200 <ski> Elixir borrowed this from Erlang, which got it from Prolog. in the two latter, there is no explicit annotation for "don't shadow, match on value of variable", rather this always happens, if the variable is already in scope. iirc Oz does have a specific notation for getting a "read-only" view of a logic variable, which you can't instantiate, though
2025-04-06 12:56:12 +0200 <ski> (useful when you want to hand of the not-yet-instantiated result of a computation, e.g. to another thread (or just callback, say), not allowing it to instantiating it, only inspecting its value)
2025-04-06 13:02:02 +0200jespada(~jespada@r179-25-205-222.dialup.adsl.anteldata.net.uy) jespada
2025-04-06 13:04:34 +0200hattckory(~hattckory@70.27.118.207) (Ping timeout: 260 seconds)
2025-04-06 13:09:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-06 13:14:12 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 13:20:43 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 13:26:03 +0200lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 244 seconds)
2025-04-06 13:34:30 +0200acidjnk_new3(~acidjnk@p200300d6e71c4f1484dd604455bfc05c.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2025-04-06 13:35:48 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-04-06 13:44:26 +0200tremon(~tremon@83.80.159.219) tremon
2025-04-06 14:15:11 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 14:19:50 +0200 <haskellbridge> <thirdofmay18081814goya> hm. is there any construct, or monad, that allows you to extract information about where "let ... = ..." statements are within the value?
2025-04-06 14:20:01 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-04-06 14:20:29 +0200 <haskellbridge> <thirdofmay18081814goya> the value being a value of type "m ()" with "Monad m" (or something like it)
2025-04-06 14:20:33 +0200 <merijn> I don't understand what that even means?
2025-04-06 14:21:08 +0200 <merijn> How would you even query that?
2025-04-06 14:22:18 +0200 <int-e> there's TemplateHaskell
2025-04-06 14:22:28 +0200 <merijn> int-e: That leaves my 2nd question :p
2025-04-06 14:22:38 +0200 <merijn> So I guess the real issue here is: What is your actual problem?
2025-04-06 14:22:50 +0200 <merijn> Because this sounds like an X-Y problem :)
2025-04-06 14:28:05 +0200sprotte24(~sprotte24@p200300d16f28a1000c1aac2cfe7f30d8.dip0.t-ipconnect.de)
2025-04-06 14:31:01 +0200Square2(~Square@user/square) Square
2025-04-06 14:31:16 +0200 <haskellbridge> <thirdofmay18081814goya> merijn: well that's my own question and the problem of interest, but spitballing a bit, some variation of an "Accum [(Int, ?)] m" monad where the bind "m a -> (a -> m b) -> m b" adds a value "(Int, b)" to the accumulated stack, where the "Int" value tracks how many binds there have been so far, and disallowing (somehow?) "let _ = _" without "in".
2025-04-06 14:31:48 +0200 <haskellbridge> <thirdofmay18081814goya> "[(Int, ?)]" being a type of list of pairs heterogeneous on the right side
2025-04-06 14:32:14 +0200 <haskellbridge> <thirdofmay18081814goya> int-e: I've been thinking about digging into it for this sort of thing yeah
2025-04-06 14:32:16 +0200 <merijn> Does that even obey the Monad laws?
2025-04-06 14:33:54 +0200 <haskellbridge> <thirdofmay18081814goya> i would believe so, seems to me that this is a slight variation on a state monad
2025-04-06 14:34:21 +0200 <merijn> I mean, simple counter example
2025-04-06 14:34:28 +0200hattckory(~hattckory@70.27.118.207)
2025-04-06 14:34:43 +0200 <merijn> Your description seems to violate "x >>= pure" being the same as "x"
2025-04-06 14:36:40 +0200 <haskellbridge> <thirdofmay18081814goya> hm
2025-04-06 14:41:59 +0200hattckory(~hattckory@70.27.118.207) (Ping timeout: 260 seconds)
2025-04-06 14:49:30 +0200 <Leary> A let statement is just the first half of a let-in expression obscured by sugar.
2025-04-06 14:50:24 +0200 <Leary> As for counting binds, iirc you can do it lawfully if `pure` has -1.
2025-04-06 14:50:51 +0200 <merijn> Leary: no
2025-04-06 14:51:08 +0200 <merijn> hmm, actually, maybe that no longer violates my example
2025-04-06 14:51:15 +0200 <merijn> But I'm not convinced that's lawful
2025-04-06 14:53:32 +0200TMA(tma@twin.jikos.cz) TMA
2025-04-06 14:56:31 +0200hiecaq(~hiecaq@user/hiecaq) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.92))
2025-04-06 15:01:07 +0200 <haskellbridge> <thirdofmay18081814goya> merijn: a first and probably wrong attempt: "doval :: MyAccumMonad [(Int, Int + a)] ()", "doval = do x <- double 7; y <- x + 1; pure ()" s.t. it produces a value "((), [(0, Fst 14), (1, Fst 15)])", where "data a + b = Fst a | Snd b". could we do some version of "pure x = (x, [])"?
2025-04-06 15:01:35 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Quit: leaving)
2025-04-06 15:02:02 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 15:02:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 15:04:10 +0200 <ski> is `x' there an `Int', or ?
2025-04-06 15:04:25 +0200jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
2025-04-06 15:04:37 +0200 <haskellbridge> <thirdofmay18081814goya> you're right that "x + 1" doesn't typecheck
2025-04-06 15:05:14 +0200 <ski> perhaps you means `y <- pure (x + 1)' in place of `y <- x + 1'
2025-04-06 15:05:31 +0200 <ski> or perhaps some other function in place of `pure'
2025-04-06 15:06:25 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-04-06 15:07:12 +0200 <haskellbridge> <thirdofmay18081814goya> right good observation, I'll think about whether this could be salvaged at all
2025-04-06 15:08:25 +0200 <merijn> Maybe take a stepback and tell us what you're trying to accomplish :)
2025-04-06 15:09:07 +0200 <haskellbridge> <thirdofmay18081814goya> ultimately, logging that's not syntax-intrusive
2025-04-06 15:09:40 +0200 <haskellbridge> <thirdofmay18081814goya> or more specifically: whether this necessarily needs to be a metaprogram, or whether this can be done internally to the type system
2025-04-06 15:29:38 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2025-04-06 15:30:02 +0200ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2025-04-06 15:45:54 +0200forell(~forell@user/forell) forell
2025-04-06 15:51:44 +0200 <ski> logging what ?
2025-04-06 15:52:00 +0200 <ski> you could have an explicit logging-operation, you know ?
2025-04-06 15:52:45 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2025-04-06 15:52:56 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 15:53:18 +0200rvalue(~rvalue@user/rvalue) rvalue
2025-04-06 15:56:25 +0200amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-06 15:58:09 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-04-06 16:11:43 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 16:17:59 +0200ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-04-06 16:18:57 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-04-06 16:20:54 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
2025-04-06 16:20:54 +0200ljdarj1ljdarj
2025-04-06 16:27:19 +0200milan(~milan@88.212.61.169)
2025-04-06 16:35:09 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 16:44:18 +0200smalltalkman(uid545680@id-545680.hampstead.irccloud.com) smalltalkman
2025-04-06 16:45:39 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds)
2025-04-06 16:53:22 +0200hacklschorsch(~flo@2a01:4f9:3a:2296::2) (Ping timeout: 272 seconds)
2025-04-06 16:58:00 +0200segfaultfizzbuzz(~segfaultf@23-93-74-222.fiber.dynamic.sonic.net) (Quit: segfaultfizzbuzz)
2025-04-06 17:00:51 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 17:01:46 +0200Guest21(~Guest21@2600:6c4c:787f:a0a4:d65b:f01e:6eda:2fac)
2025-04-06 17:05:45 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-04-06 17:07:00 +0200Guest21(~Guest21@2600:6c4c:787f:a0a4:d65b:f01e:6eda:2fac) (Quit: Client closed)
2025-04-06 17:07:22 +0200acidjnk_new3(~acidjnk@p200300d6e71c4f1484a8b96e5b185115.dip0.t-ipconnect.de) acidjnk
2025-04-06 17:12:52 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-04-06 17:15:52 +0200mauke(~mauke@user/mauke) mauke
2025-04-06 17:18:58 +0200__jmcantrell__(~weechat@user/jmcantrell) jmcantrell
2025-04-06 17:25:11 +0200amadaluzia_(~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com)
2025-04-06 17:26:50 +0200amadaluzia_(~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) (Changing host)
2025-04-06 17:26:50 +0200amadaluzia_(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-06 17:31:43 +0200tromp(~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c)
2025-04-06 17:48:12 +0200picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.5.1)
2025-04-06 17:49:56 +0200picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) NinjaTrappeur
2025-04-06 17:51:49 +0200dhil(~dhil@2a0c:b381:52e:3600:4c26:24b1:e3bc:1cdd) (Ping timeout: 248 seconds)
2025-04-06 18:01:38 +0200acidjnk_new3(~acidjnk@p200300d6e71c4f1484a8b96e5b185115.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2025-04-06 18:02:26 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 18:07:40 +0200target_i(~target_i@user/target-i/x-6023099) target_i
2025-04-06 18:08:59 +0200jmcantrellGuest7797
2025-04-06 18:08:59 +0200Guest7797(644f1bed9a@user/jmcantrell) (Killed (copper.libera.chat (Nickname regained by services)))
2025-04-06 18:08:59 +0200__jmcantrell__jmcantrell
2025-04-06 18:09:08 +0200jmcantrell_(644f1bed9a@user/jmcantrell) jmcantrell
2025-04-06 18:14:54 +0200 <monochrom> Counting binds does not break the associative law, it just can break the identity laws. But with pure contributing -1, (m >>= pure) has the same count as m because you have x+1-1. SImilarly for the other identity law.
2025-04-06 18:15:22 +0200 <monochrom> But I don't like to tell people about this. Counting binds is every beginners favourite anti-monad anti-pattern.
2025-04-06 18:15:45 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-04-06 18:20:01 +0200 <monochrom> This is what the model "monad/>>= is programmable semicolon" gets right. In C programming, do people even imagine writing a program that counts its own lines of code?
2025-04-06 18:22:52 +0200toby-bro(~toby-bro@user/toby-bro) toby-bro
2025-04-06 18:24:19 +0200 <enikar> why one would want to count bind?
2025-04-06 18:24:34 +0200 <ski> dubious reasons
2025-04-06 18:24:51 +0200 <enikar> I don't understand the use case.
2025-04-06 18:24:52 +0200 <monochrom> :)
2025-04-06 18:26:58 +0200amadaluzia(~amadaluzi@user/amadaluzia) (Ping timeout: 244 seconds)
2025-04-06 18:27:12 +0200 <monochrom> Not to endorse it, but presumably the monad also does something else, and the author hides a counter increment in bind as a proxy to count cost.
2025-04-06 18:27:42 +0200 <enikar> let monads do their job :)
2025-04-06 18:27:50 +0200 <monochrom> Of course we know the right way is to hide the counter increment is the something else.
2025-04-06 18:28:06 +0200 <monochrom> s/is the/in the/
2025-04-06 18:28:32 +0200 <ski> i recall doing a CGI monad, which had an `io :: (Show a,Read a) => IO a -> CGI a' operation, caching the result of `IO' operations, serializing them into the generated page (when a query was generated), so that the program could then be resumed, fastforwarded to the point where it left off, to continue on
2025-04-06 18:29:21 +0200 <ski> it sounded like thirdofmay18081814goya wanted something a bit reminiscent of the caching part, but for every bind automatically
2025-04-06 18:33:46 +0200 <monochrom> Spin-off exercise: Suppose x +++ y = x + y + 1. Prove that +++ is a monoid operation with -1 as the identity. >:)
2025-04-06 18:36:05 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-06 18:37:19 +0200skiidly ponders making this into a word group
2025-04-06 18:37:21 +0200 <mauke> and inverse x' = -x - 2?
2025-04-06 18:37:40 +0200__monty__(~toonn@user/toonn) (Quit: Lost terminal)
2025-04-06 18:39:11 +0200 <ski> i suppose you could take coproduct of the given group, and the group of integers
2025-04-06 18:39:39 +0200 <ski> (note, arbitrary groups, not abelian ones)
2025-04-06 18:42:06 +0200 <ski> hmm .. no, that doesn't quite work. coproduct would identify the neutral elements of the two groups
2025-04-06 18:42:57 +0200 <ski> but we want the neutral element of the given group to be identified with `-1', not with `1', of the group of integers
2025-04-06 18:43:49 +0200 <ski> er .. i suppose, not with `0'. same issue, though
2025-04-06 18:53:22 +0200tromp(~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-06 19:00:54 +0200ss4(~wootehfoo@user/wootehfoot) wootehfoot
2025-04-06 19:01:13 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2025-04-06 19:01:31 +0200ss4(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2025-04-06 19:03:32 +0200__monty__(~toonn@user/toonn) toonn
2025-04-06 19:04:04 +0200emojelly(~eselber_p@user/endojelly) endojelly
2025-04-06 19:04:42 +0200 <emojelly> So I have the following function in my type class:
2025-04-06 19:04:44 +0200 <emojelly> class MonadTransControl t => MonadTransCombine t where
2025-04-06 19:04:46 +0200 <emojelly> ...
2025-04-06 19:04:48 +0200 <emojelly> combineC :: forall m1 m2 a1 a2. (t m1 a1) -> (t m2 a2) -> Maybe (StT t a1) -> Maybe (StT t a2) -> StT t (Maybe a1, Maybe a2)
2025-04-06 19:05:36 +0200 <emojelly> Those first two arguments, of type (t m1 a1) and (t m2 a2), are only there to disambiguate the type. Otherwise, ghc complains that all the "St t"s are ambiguous.
2025-04-06 19:05:37 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2025-04-06 19:05:55 +0200 <emojelly> Is there a more elegant way to do that, than passing arguments which are not actually used for anything?
2025-04-06 19:06:42 +0200 <emojelly> All the information about the (t m1 a1) and (t m2 a2) are containing in (StT t a1) (StT t a2) respectively, that's pretty much their point.
2025-04-06 19:07:30 +0200 <c_wraith> with that particular class definition, all that you normally should need to disambiguate is t
2025-04-06 19:08:24 +0200 <c_wraith> unless StT is a type family?
2025-04-06 19:09:06 +0200 <emojelly> it is, yeah!
2025-04-06 19:09:16 +0200 <c_wraith> well that makes it a ton more complicated.
2025-04-06 19:09:33 +0200 <emojelly> It's actually a type family from MonadTransControl (which is a relatively common class), but it's the same if I define it myself of course.
2025-04-06 19:09:51 +0200 <c_wraith> But you still should only need to disambiguate t itself somehow, not m1 m2 a1 or a2
2025-04-06 19:10:03 +0200 <emojelly> Yeah. I've been wondering about using proxies... but then I think I have to pass a Proxy instead?
2025-04-06 19:10:26 +0200 <emojelly> Yeah that's possible... I don't quite remember if I had to disambiguate both.
2025-04-06 19:11:01 +0200 <haskellbridge> <hellwolf> options:
2025-04-06 19:11:01 +0200 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/JYSfMNZqjiXzhkfTeJfRrGsX/9kwQ5Tzz6so (4 lines)
2025-04-06 19:14:41 +0200 <emojelly> Type applications seem at least a bit cleaner than "gratuitous" arguments...
2025-04-06 19:14:45 +0200 <emojelly> How can I do 1.?
2025-04-06 19:15:54 +0200 <emojelly> I know very little about the theory behind the system, I guess the class does not unify "t" across all its definitions somehow...
2025-04-06 19:16:19 +0200 <c_wraith> the problem is that it never actually uses t in the definition of combineC
2025-04-06 19:16:22 +0200 <haskellbridge> <hellwolf> class A a b | a -> b
2025-04-06 19:16:22 +0200 <haskellbridge> This means that knowing "a" uniquely determins "b"
2025-04-06 19:16:26 +0200 <emojelly> (have to run, will read later, thanks for the help so far!)
2025-04-06 19:16:34 +0200 <haskellbridge> <hellwolf> GHC will check that
2025-04-06 19:16:45 +0200 <c_wraith> err, in the type of
2025-04-06 19:16:47 +0200 <haskellbridge> <hellwolf> type family has similar mechanism; which has its own limitation.
2025-04-06 19:16:50 +0200 <emojelly> yeah but I'm not sure how to use a fundep here when there's only a single type?
2025-04-06 19:17:00 +0200 <c_wraith> But it needs to know what t is to select an instance
2025-04-06 19:17:22 +0200 <haskellbridge> <hellwolf> I don't know if it applies to your case. But I do see "StT t a1", I wonder what is StT.
2025-04-06 19:17:35 +0200 <emojelly> It's a type family
2025-04-06 19:17:46 +0200 <haskellbridge> <hellwolf> then you may use typefamilydependencies
2025-04-06 19:17:58 +0200 <haskellbridge> <hellwolf> but there is a lot of limitations, usually it won't work for you
2025-04-06 19:18:03 +0200 <emojelly> for illustration, pretend the same class would define:
2025-04-06 19:18:05 +0200 <emojelly> type StT t a :: *
2025-04-06 19:18:11 +0200 <haskellbridge> <hellwolf> check the doc, it has a list of rules when you can or cannot define dependencies
2025-04-06 19:18:41 +0200 <emojelly> (StT is actually coming from MonadTransControl, but shouldn't matter)
2025-04-06 19:18:57 +0200 <emojelly> ok, really gotta run now, but I'll read if there's anything more! Thanks again for the help so far!
2025-04-06 19:21:14 +0200 <haskellbridge> <hellwolf> okay. https://hackage.haskell.org/package/monad-control-1.0.3.1/docs/src/Control.Monad.Trans.Control.htm…
2025-04-06 19:21:15 +0200 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/yxUTAVDLAhEYmWfAmyqvumAm/BKPqvW_Oq7A (4 lines)
2025-04-06 19:21:43 +0200 <haskellbridge> <hellwolf> unless it's really polymorphic to any m1 m2, then for a good reason, you will need to use type applications
2025-04-06 19:23:23 +0200 <haskellbridge> <hellwolf> with 9.10, you have an alternative syntax (which will be used for even more complicated use case) that is RequiredTypeArguments (or vdq, mouthfully, visible dependent quantification)
2025-04-06 19:24:05 +0200 <haskellbridge> <hellwolf> with typeapplication, the annoying thing is that you need to know what's the order of the type variables, with type class's type variables come first. you can also use @_ to skip ones that you don't care
2025-04-06 19:24:16 +0200 <haskellbridge> <hellwolf> with vdq, it's part of the regular currying order.
2025-04-06 19:30:00 +0200weary-traveler(~user@user/user363627) user363627
2025-04-06 19:32:58 +0200 <milan> Hello I just found I can pattern match on cons (:) and I can't on add (+). I managed to find that cons is constructor and add is just function. How can I in ghci find what functions are also constructors and thus can be used in pattern matching?
2025-04-06 19:34:07 +0200 <haskellbridge> <hellwolf> > :! Maybe
2025-04-06 19:34:18 +0200 <haskellbridge> <hellwolf> :i Maybe
2025-04-06 19:34:32 +0200XZDXXZDX_afk
2025-04-06 19:34:40 +0200 <geekosaur> leave a blank line. but lambdabot doesn't understand :i anyway
2025-04-06 19:35:08 +0200tromp(~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c)
2025-04-06 19:35:09 +0200 <haskellbridge> <geekosaur> %% :i Maybe
2025-04-06 19:35:21 +0200 <haskellbridge> <geekosaur> oh, crap, they removed that again
2025-04-06 19:35:58 +0200 <hellwolf> %% :i Maybe
2025-04-06 19:35:59 +0200 <yahb2> https://paste.tomsmeding.com/AtPoarKA
2025-04-06 19:36:12 +0200 <geekosaur> (whether the bridge lets that work or npot seems to depend on version, and they don't provide config for it)
2025-04-06 19:36:58 +0200 <hellwolf> yahb2 is just one regex away from AGI
2025-04-06 19:37:17 +0200 <mauke> milan: if it starts with : it's a constructor
2025-04-06 19:37:23 +0200 <mauke> or an uppercase letter
2025-04-06 19:38:39 +0200 <hellwolf> type name can also start with ":", right?
2025-04-06 19:38:58 +0200 <mauke> > case sqrt (-2) of x :+ y -> show x <> " + " <> show y <> "i"
2025-04-06 19:39:00 +0200 <lambdabot> "0.0 + 1.4142135623730951i"
2025-04-06 19:39:31 +0200 <mauke> type names are weird now
2025-04-06 19:40:36 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2025-04-06 19:40:46 +0200 <mauke> I think all symbols can be used at the start of type names
2025-04-06 19:46:42 +0200 <hellwolf> https://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17700010.2 <-- is that even part of haskell2012
2025-04-06 19:46:46 +0200 <hellwolf> *2010
2025-04-06 19:48:24 +0200 <geekosaur> TypeOperators is default these days, I think? (at least if you turn on NoStarIsType so they're available)
2025-04-06 19:48:33 +0200 <geekosaur> …if that's the question
2025-04-06 19:50:00 +0200tromp(~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-06 19:51:29 +0200 <milan> mauke: Thanks
2025-04-06 19:53:28 +0200 <hellwolf> I see. I didn't realize it was an language extension.
2025-04-06 19:54:36 +0200 <geekosaur> pretty much anything related to type level stuff is an extension
2025-04-06 19:54:46 +0200 <kqr> merijn, late response, sorry. how do I dump out a GC report? is that -s? I mean yes, practically speaking, building the data structure currently takes 250 MB, but I there's no theoretical reason it should take significantly more space to build it than represent it.
2025-04-06 19:57:20 +0200Square2(~Square@user/square) (Remote host closed the connection)
2025-04-06 19:57:48 +0200 <monochrom> milan: Data constructors start with capital letters, e.g., "Just" rather than "just"; or in the symbol case start with colon, e.g., ":+" rather than "+".
2025-04-06 19:58:24 +0200 <monochrom> Oh, already answered, heh.
2025-04-06 19:58:26 +0200Square(~Square@user/square) Square
2025-04-06 19:59:57 +0200 <milan> monochrom: Thank you.
2025-04-06 20:00:36 +0200 <milan> Could + be defined as constructor too?
2025-04-06 20:01:34 +0200 <monochrom> I am somewhat uncertain what that would mean, but likely no.
2025-04-06 20:03:19 +0200 <hellwolf> no. term level has a clear rule: only infix type constructors may start with (:). see https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/infix_tycons.html#infix-tycons. What's not clear to me is that is it part of haskell2010.
2025-04-06 20:03:50 +0200 <hellwolf> oh, also, "which are required to begin with a :."
2025-04-06 20:03:54 +0200 <hellwolf> goes both ways.
2025-04-06 20:04:32 +0200 <hellwolf> term level functions or variables may not start with (:)
2025-04-06 20:06:06 +0200tromp(~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c)
2025-04-06 20:08:17 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-06 20:09:30 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 268 seconds)
2025-04-06 20:15:54 +0200Guest94(~Guest94@2402:8100:2713:dce3:44d2:5f5e:34e2:9148)
2025-04-06 20:16:41 +0200Guest94(~Guest94@2402:8100:2713:dce3:44d2:5f5e:34e2:9148) (Client Quit)
2025-04-06 20:19:01 +0200pavonia(~user@user/siracusa) siracusa
2025-04-06 20:23:18 +0200toby-bro(~toby-bro@user/toby-bro) (Ping timeout: 252 seconds)
2025-04-06 20:28:49 +0200michalz(~michalz@185.246.207.215)
2025-04-06 20:36:40 +0200tromp(~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-06 20:38:01 +0200acidjnk_new3(~acidjnk@p200300d6e71c4f1484a8b96e5b185115.dip0.t-ipconnect.de) acidjnk
2025-04-06 20:41:22 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2025-04-06 20:41:32 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Client Quit)
2025-04-06 20:41:50 +0200tromp(~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c)
2025-04-06 20:48:32 +0200XZDX_afkXZDX
2025-04-06 20:49:25 +0200forell(~forell@user/forell) (Ping timeout: 248 seconds)
2025-04-06 20:50:30 +0200forell(~forell@user/forell) forell
2025-04-06 21:00:04 +0200caconym(~caconym@user/caconym) (Quit: bye)
2025-04-06 21:00:45 +0200caconym(~caconym@user/caconym) caconym
2025-04-06 21:06:45 +0200kathryn1024_(~kathryn10@user/kathryn1024) kathryn1024
2025-04-06 21:17:45 +0200|cos|(~libera@loza.netizen.se) |cos|
2025-04-06 21:17:46 +0200amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-06 21:19:54 +0200|cos|sees koala_man lists this channel in relation to shellcheck, and my question is in relation to those two topics. (anyone may answer)
2025-04-06 21:21:07 +0200 <|cos|> i'm naively looking at building shellcheck on haiku. the docs says it requires haskell. haiku has some hugs98 implementation of haskell.
2025-04-06 21:21:51 +0200 <|cos|> should one understand that shellcheck practically needs ghc, or is there more than a snowflakes chance in hell to succeed a build with hugs98?
2025-04-06 21:22:01 +0200toby-bro(~toby-bro@user/toby-bro) toby-bro
2025-04-06 21:23:32 +0200 <|cos|> when it comes to haskell i'm lost in general, and specifically for building shellcheck i get stuck at not having something called `cabal`
2025-04-06 21:25:46 +0200 <EvanR> cabal comes with ghc
2025-04-06 21:26:06 +0200 <EvanR> it's the build system
2025-04-06 21:26:32 +0200 <EvanR> but "all it does" is issue compiler commands
2025-04-06 21:26:51 +0200 <EvanR> it's not strictly necessary to compile something
2025-04-06 21:35:13 +0200 <mauke> cabal used to support hugs, at least early on, right?
2025-04-06 21:35:33 +0200 <EvanR> does hugs even "build" stuff?
2025-04-06 21:36:10 +0200 <mauke> |cos|: you're probably not going to have much luck there. hugs is a haskell interpreter (written in C), so there's not much "building" you're going to get out of it
2025-04-06 21:36:54 +0200ham(~ham@user/ham) ham
2025-04-06 21:37:08 +0200 <mauke> also, there hasn't been a hugs release in the last ... 20 years?
2025-04-06 21:37:37 +0200 <|cos|> i figured the answer would be something like this, but it never hurts to ask. thanks! (:
2025-04-06 21:37:49 +0200remexre(~remexre@user/remexre) (Remote host closed the connection)
2025-04-06 21:38:18 +0200 <mauke> basically, anything not explicitly written in what amounts to an ancient haskell dialect won't run on it
2025-04-06 21:38:46 +0200 <|cos|> the next question, probably with a similar answer, then becomes: would one have any hope of running ghc on top of haiku?
2025-04-06 21:38:56 +0200 <EvanR> written in C is good because at least you won't need a working haskell compiler to compiler hugs
2025-04-06 21:39:33 +0200 <mauke> wait, was haiku the beos thing?
2025-04-06 21:39:58 +0200 <|cos|> typ, that's the thing. and i notice there is a thread at https://discuss.haiku-os.org/t/ghc-haskell-compiler/677
2025-04-06 21:42:25 +0200 <EvanR> yes
2025-04-06 21:43:01 +0200 <EvanR> can GHC be ported to haiku, yes
2025-04-06 21:43:22 +0200 <EvanR> will you or me be the one to do it? situation unclear
2025-04-06 21:48:44 +0200 <monochrom> Very clear, the answer is "no". :)
2025-04-06 21:49:08 +0200 <|cos|> it appears to be more of a bug fix than a full port, according to that thread. but, yeah. answer is likely still no.
2025-04-06 21:49:30 +0200 <EvanR> well that thread is 15 years old
2025-04-06 21:49:39 +0200 <EvanR> none of the information may be relevant
2025-04-06 21:51:58 +0200 <energizer> what is the difference between mconcat and fold?
2025-04-06 21:52:12 +0200 <EvanR> :t mconcat
2025-04-06 21:52:13 +0200 <lambdabot> Monoid a => [a] -> a
2025-04-06 21:52:15 +0200 <EvanR> :t fold
2025-04-06 21:52:16 +0200 <lambdabot> (Foldable t, Monoid m) => t m -> m
2025-04-06 21:52:38 +0200 <energizer> what is the point of mconcat then? doesn't fold do the job?
2025-04-06 21:52:46 +0200 <|cos|> the thread might have started fiftheen years ago, but the latest post is merely four years old.
2025-04-06 21:53:05 +0200 <EvanR> Foldable is a lot newer in history than Monoid
2025-04-06 21:53:28 +0200 <EvanR> so it's one of many cases of more general library functions becoming available and the special cases not being removed so as not to break anything
2025-04-06 21:54:02 +0200 <|cos|> but nah. i'm not invested enough to debug and fix assembler generation specific to x86_64. :/
2025-04-06 21:54:46 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:2fa6:8257:2d41:b9b0) (Remote host closed the connection)
2025-04-06 21:55:18 +0200 <EvanR> see also the debate over whether "map" is pointless since there is fmap
2025-04-06 21:58:12 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-06 21:58:46 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:1b03:b08c:d961:6530) hgolden
2025-04-06 22:03:40 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2025-04-06 22:05:45 +0200ham(~ham@user/ham) (Quit: WeeChat 3.5)
2025-04-06 22:06:57 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2025-04-06 22:11:00 +0200AlexZenon(~alzenon@178.34.162.245) (Ping timeout: 252 seconds)
2025-04-06 22:16:07 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-06 22:18:29 +0200AlexZenon(~alzenon@178.34.162.245)
2025-04-06 22:21:19 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 244 seconds)
2025-04-06 22:36:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-06 22:41:11 +0200IlyaChernov566(~IlyaChern@82.215.95.81)
2025-04-06 22:43:03 +0200 <IlyaChernov566> I, for one, think Elon is doing a wonderful job
2025-04-06 22:43:27 +0200 <EvanR> this channel is about haskell, a programming language
2025-04-06 22:43:34 +0200IlyaChernov566(~IlyaChern@82.215.95.81) (Remote host closed the connection)
2025-04-06 22:48:47 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 22:48:49 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-04-06 22:50:25 +0200michalz(~michalz@185.246.207.215) (Remote host closed the connection)
2025-04-06 22:55:44 +0200sh1n(~sh1n@2800:2134:583f:e223:7b49:e90d:6522:419d) sh1n
2025-04-06 22:55:45 +0200troydm(~troydm@user/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2025-04-06 22:57:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-06 22:58:14 +0200Guest90(~Guest90@76.78.179.109)
2025-04-06 22:59:12 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-06 23:04:01 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2025-04-06 23:08:48 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2025-04-06 23:10:49 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 23:11:23 +0200troydm(~troydm@user/troydm) troydm
2025-04-06 23:14:34 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-06 23:16:21 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-06 23:24:58 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 245 seconds)
2025-04-06 23:26:35 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 23:27:09 +0200 <hellwolf> I made a lineartype mutable vector hack for https://0xd34df00d.me/posts/2024/09/naive-nfas.html#linear-vectors
2025-04-06 23:27:22 +0200 <hellwolf> now it is almost as fast as the ST monad version.
2025-04-06 23:28:04 +0200 <hellwolf> not sure where contributing to the remaining the slow factor
2025-04-06 23:31:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-04-06 23:32:17 +0200 <EvanR> confirmed linearity probably doesn't bear on performance in haskell
2025-04-06 23:32:30 +0200 <EvanR> it's more of a type system thing
2025-04-06 23:33:03 +0200 <haskellbridge> <hellwolf> I can't come up with a something that can show case linearity + par/pseq yet
2025-04-06 23:33:09 +0200 <haskellbridge> <hellwolf> that's where ST monad wouldn't be able to do
2025-04-06 23:33:48 +0200 <EvanR> parallel programming ought to bear on performance
2025-04-06 23:33:56 +0200 <haskellbridge> <hellwolf> but I do generally agree that linearity is a type safety feature.
2025-04-06 23:34:20 +0200 <haskellbridge> <hellwolf> and there is a lot of millage we could get with it.
2025-04-06 23:34:39 +0200 <haskellbridge> <hellwolf> I did this experiment because I wanted to make sure it doesn't have fundamental performance issue.
2025-04-06 23:34:54 +0200 <haskellbridge> <hellwolf> in theory, it shouldn't. But in practice, it lacks a few library.
2025-04-06 23:35:02 +0200 <haskellbridge> <hellwolf> especially the unboxed immutable data types.
2025-04-06 23:35:15 +0200 <haskellbridge> <hellwolf> that's why I made the hack to just see if I am missing sometthing
2025-04-06 23:35:33 +0200 <haskellbridge> <hellwolf> I will wrap up the code a little and share it here.
2025-04-06 23:35:37 +0200 <EvanR> using unsafe such and such maybe you can write the library
2025-04-06 23:35:56 +0200 <haskellbridge> <hellwolf> yea, not I used unsafe with mutable unboxed vector
2025-04-06 23:36:08 +0200 <haskellbridge> <hellwolf> s/not//
2025-04-06 23:37:04 +0200 <EvanR> interesting that the unboxed code ended up with a tight gc-less loop
2025-04-06 23:37:17 +0200 <EvanR> good for performance, but bad for interruptibility
2025-04-06 23:38:15 +0200 <haskellbridge> <hellwolf> If the language allow you to organize code into safe and unsafe blocks nicely, I think that is fine.
2025-04-06 23:38:45 +0200 <EvanR> the unsafe kernel of trust hidden in an "internal" module with a type safe interface
2025-04-06 23:38:49 +0200amadaluzia(~amadaluzi@user/amadaluzia) (Ping timeout: 260 seconds)
2025-04-06 23:38:56 +0200 <haskellbridge> <hellwolf> Some people may even push for complete separation of syntax and semantics
2025-04-06 23:39:10 +0200amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-06 23:39:21 +0200 <monochrom> We were hoping that IO was how we would organize code into safe and unsafe blocks. :)
2025-04-06 23:39:46 +0200 <haskellbridge> <hellwolf> that's boomer tech
2025-04-06 23:39:49 +0200 <haskellbridge> <hellwolf> :p
2025-04-06 23:40:03 +0200 <EvanR> if the non IO language was total then maybe, but still probably not
2025-04-06 23:40:30 +0200 <monochrom> What happens is that different people define "safe" differently.
2025-04-06 23:40:58 +0200 <monochrom> E.g., I totally (pun!) accept partial functions as safe. Apparently I'm in the minority.
2025-04-06 23:41:00 +0200 <haskellbridge> <hellwolf> https://safe.js.org/
2025-04-06 23:41:14 +0200 <haskellbridge> <hellwolf> sorry, that was a random post.
2025-04-06 23:41:18 +0200 <c_wraith> Safe Haskell kind of crashed and burned because no one agrees what safe means
2025-04-06 23:41:34 +0200 <EvanR> my webserver is totally safe. Somebody uploads a request which triggers a partial function call leading to freeze up
2025-04-06 23:41:47 +0200 <c_wraith> my web server is totally safe, because I didn't start it.
2025-04-06 23:42:20 +0200 <EvanR> safe -> js -> Void
2025-04-06 23:42:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-06 23:43:27 +0200 <EvanR> "safe" gets brought up in conjunction with rust, maybe they have a definition
2025-04-06 23:43:54 +0200 <monochrom> Why do I feel that "complete separation of syntax and semantics" is the definition of cryptography? :)
2025-04-06 23:44:16 +0200 <EvanR> I'm not sure what an example of incomplete separation of syntax and semantics is
2025-04-06 23:45:32 +0200 <EvanR> even in lisp, if you try, you'll see it's two different things
2025-04-06 23:45:47 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-06 23:46:08 +0200 <haskellbridge> <hellwolf> but back to the linearity + parallelism, I do believe there can be an inspirational example where linearity provides reasource safety and convenience of coding (no need for monads), while parallism using par/pseq gives it the ultimate edge over ST monad.
2025-04-06 23:46:20 +0200 <haskellbridge> <hellwolf> another day..
2025-04-06 23:47:12 +0200tromp(~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-06 23:47:32 +0200 <EvanR> monads and linear types aren't mutually exclusive competing things
2025-04-06 23:47:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-06 23:47:36 +0200kathryn1024_(~kathryn10@user/kathryn1024) (Ping timeout: 264 seconds)
2025-04-06 23:48:17 +0200 <EvanR> linear base has several linear monads
2025-04-06 23:48:54 +0200 <hellwolf> monad necessarily sequentialize things.
2025-04-06 23:49:06 +0200 <EvanR> no?
2025-04-06 23:49:27 +0200 <monochrom> The Identity Monad doesn't sequentialize things.
2025-04-06 23:50:13 +0200 <monochrom> What you want to state instead is that there is no guarantee that an arbitrary monad doesn't sequentialize things.
2025-04-06 23:50:15 +0200 <EvanR> e.g. Par is a monad