2025-04-06 00:00:04 +0200 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2025-04-06 00:00:34 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2025-04-06 00:00:45 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) chexum |
2025-04-06 00:00:47 +0200 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2025-04-06 00:02:56 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 00:04:04 +0200 | hattckory | (~hattckory@70.27.118.207) (Ping timeout: 260 seconds) |
2025-04-06 00:07:41 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-04-06 00:09:25 +0200 | dhil | (~dhil@2a0c:b381:52e:3600:696a:652d:93f2:5c60) (Ping timeout: 248 seconds) |
2025-04-06 00:11:43 +0200 | tromp | (~textual@2001:1c00:3487:1b00:44a6:f61b:e8c3:9514) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-04-06 00:13:20 +0200 | rini | (~rini@user/rini) (Remote host closed the connection) |
2025-04-06 00:13:33 +0200 | connrs | (~connrs@user/connrs) (Remote host closed the connection) |
2025-04-06 00:13:41 +0200 | connrs | (~connrs@user/connrs) connrs |
2025-04-06 00:19:09 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 00:25:23 +0200 | takuan_dozo | (~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection) |
2025-04-06 00:30:58 +0200 | hgolden_ | (~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 +0200 | hgolden | (~hgolden@2603:8000:9d00:3ed1:1b03:b08c:d961:6530) (Ping timeout: 260 seconds) |
2025-04-06 00:41:34 +0200 | toby-bro | (~toby-bro@user/toby-bro) (Ping timeout: 260 seconds) |
2025-04-06 00:46:02 +0200 | jmcantrell | Guest4344 |
2025-04-06 00:46:02 +0200 | Guest4344 | (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 +0200 | jmcantrell_ | (644f1bed9a@user/jmcantrell) jmcantrell |
2025-04-06 00:49:59 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 00:52:58 +0200 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2025-04-06 00:55:18 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
2025-04-06 01:06:42 +0200 | hgolden_ | (~hgolden@2603:8000:9d00:3ed1:fa19:a3fb:34bb:67a4) (Remote host closed the connection) |
2025-04-06 01:08:55 +0200 | hgolden | (~hgolden@2603:8000:9d00:3ed1:fa19:a3fb:34bb:67a4) hgolden |
2025-04-06 01:09:00 +0200 | anpad | (~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in) |
2025-04-06 01:11:05 +0200 | anpad | (~pandeyan@user/anpad) anpad |
2025-04-06 01:13:30 +0200 | robobub | (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2025-04-06 01:16:46 +0200 | target_i | (~target_i@user/target-i/x-6023099) (Quit: leaving) |
2025-04-06 01:24:21 +0200 | hgolden_ | (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) hgolden |
2025-04-06 01:24:47 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-04-06 01:26:10 +0200 | hgolden | (~hgolden@2603:8000:9d00:3ed1:fa19:a3fb:34bb:67a4) (Ping timeout: 272 seconds) |
2025-04-06 01:26:26 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
2025-04-06 01:32:12 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 01:34:10 +0200 | hiredman | (~hiredman@frontier1.downey.family) (Quit: Lost terminal) |
2025-04-06 01:34:34 +0200 | rawles | (~rawles@user/rawles) rawles |
2025-04-06 01:36:09 +0200 | m5zs7k | (aquares@web10.mydevil.net) (Ping timeout: 244 seconds) |
2025-04-06 01:36:53 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-04-06 01:40:18 +0200 | m5zs7k | (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 +0200 | hattckory | (~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 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 01:49:37 +0200 | hgolden__ | (~hgolden@2603:8000:9d00:3ed1:2fa6:8257:2d41:b9b0) hgolden |
2025-04-06 01:50:33 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
2025-04-06 01:51:30 +0200 | sprotte24_ | (~sprotte24@p200300d16f1fcd00fde87e4fa26f8820.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2025-04-06 01:52:15 +0200 | hgolden | (~hgolden@2603:8000:9d00:3ed1:d319:57ed:d2cb:68a5) hgolden |
2025-04-06 01:52:44 +0200 | hgolden_ | (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) (Ping timeout: 260 seconds) |
2025-04-06 01:53:57 +0200 | hgolden__ | (~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 +0200 | todi | (~todi@p57803331.dip0.t-ipconnect.de) todi |
2025-04-06 01:57:42 +0200 | todi1 | (~todi@p57803331.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
2025-04-06 01:58:34 +0200 | hgolden | (~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 +0200 | hgolden | (~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 +0200 | otto_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 +0200 | otto_s | (~user@p5de2fd95.dip0.t-ipconnect.de) |
2025-04-06 02:09:33 +0200 | hattckory | (~hattckory@70.27.118.207) |
2025-04-06 02:10:53 +0200 | jacopovalanzano | (~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed) |
2025-04-06 02:19:29 +0200 | hattckory | (~hattckory@70.27.118.207) (Ping timeout: 248 seconds) |
2025-04-06 02:30:13 +0200 | acidjnk_new3 | (~acidjnk@p200300d6e71c4f099ca861e17b9ec3ec.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2025-04-06 02:31:01 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 02:41:34 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds) |
2025-04-06 02:53:39 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-04-06 02:53:42 +0200 | amadaluzia | (~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) |
2025-04-06 02:55:59 +0200 | amadaluzia | (~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) (Client Quit) |
2025-04-06 02:56:40 +0200 | amadaluzia | (~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) |
2025-04-06 03:01:52 +0200 | JuanDaugherty | ColinRobinson |
2025-04-06 03:01:58 +0200 | arahael | (~arahael@user/arahael) arahael |
2025-04-06 03:02:21 +0200 | otto_s | (~user@p5de2fd95.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2025-04-06 03:04:11 +0200 | otto_s | (~user@p5de2fb60.dip0.t-ipconnect.de) |
2025-04-06 03:05:12 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 03:05:18 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2025-04-06 03:07:16 +0200 | amadaluzia | (~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 +0200 | amadaluzia | (~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) |
2025-04-06 03:09:32 +0200 | hattckory | (~hattckory@70.27.118.207) |
2025-04-06 03:09:58 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
2025-04-06 03:13:55 +0200 | amadaluzia | (~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 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-04-06 03:19:40 +0200 | amadaluzia_ | (~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) |
2025-04-06 03:20:58 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 03:21:38 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich) |
2025-04-06 03:21:59 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-04-06 03:22:18 +0200 | amadaluzia | (~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) |
2025-04-06 03:23:51 +0200 | amadaluzia_ | (~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) (Client Quit) |
2025-04-06 03:23:51 +0200 | amadaluzia | (~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) (Client Quit) |
2025-04-06 03:24:10 +0200 | amadaluzia | (~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) |
2025-04-06 03:24:41 +0200 | amadaluzia_ | (~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) |
2025-04-06 03:25:37 +0200 | hattckory | (~hattckory@70.27.118.207) (Ping timeout: 248 seconds) |
2025-04-06 03:26:55 +0200 | amadaluzia_ | (~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) (Client Quit) |
2025-04-06 03:26:55 +0200 | amadaluzia | (~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) (Client Quit) |
2025-04-06 03:27:54 +0200 | amadaluzia | (~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) |
2025-04-06 03:29:00 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-04-06 03:29:42 +0200 | amadaluzia | (~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) (Client Quit) |
2025-04-06 03:29:53 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
2025-04-06 03:30:13 +0200 | amadaluzia | (~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) |
2025-04-06 03:34:14 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Ping timeout: 260 seconds) |
2025-04-06 03:37:51 +0200 | amadaluzia | (~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 +0200 | xff0x | (~xff0x@2405:6580:b080:900:5d6b:27d2:3f72:9d18) |
2025-04-06 03:38:26 +0200 | amadaluzia | (~amadaluzi@2a00:23c7:ed8b:6701:f802:c6e0:6002:2ef9) |
2025-04-06 03:40:27 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 03:44:48 +0200 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 244 seconds) |
2025-04-06 03:45:19 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-04-06 03:53:11 +0200 | xff0x | (~xff0x@2405:6580:b080:900:5d6b:27d2:3f72:9d18) (Ping timeout: 252 seconds) |
2025-04-06 03:54:12 +0200 | xff0x | (~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 +0200 | merijn | (~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 +0200 | hiecaq | (~hiecaq@user/hiecaq) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.92)) |
2025-04-06 03:59:16 +0200 | hiecaq | (~hiecaq@user/hiecaq) hiecaq |
2025-04-06 04:00:23 +0200 | xff0x | (~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 +0200 | merijn | (~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 +0200 | op_4 | (~tslil@user/op-4/x-9116473) (Remote host closed the connection) |
2025-04-06 04:05:35 +0200 | op_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 +0200 | cheater | (~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com)) |
2025-04-06 04:08:50 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 04:09:52 +0200 | cheater | (~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 +0200 | cheater | (~Username@user/cheater) (Client Quit) |
2025-04-06 04:12:15 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 04:13:01 +0200 | xff0x | (~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 +0200 | cheater | (~Username@user/cheater) cheater |
2025-04-06 04:17:24 +0200 | merijn | (~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 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds) |
2025-04-06 04:20:11 +0200 | cheater | (~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 +0200 | cheater | (~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 +0200 | hattckory | (~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 +0200 | merijn | (~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 +0200 | merijn | (~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 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 04:43:51 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 04:46:13 +0200 | Square2 | (~Square@user/square) (Ping timeout: 245 seconds) |
2025-04-06 04:51:15 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
2025-04-06 04:57:54 +0200 | nitrix | (~nitrix@user/meow/nitrix) (Quit: ZNC 1.9.1 - https://znc.in) |
2025-04-06 05:11:33 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 05:14:46 +0200 | smalltalkman | (uid545680@id-545680.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2025-04-06 05:16:09 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds) |
2025-04-06 05:19:52 +0200 | tomku | (~tomku@user/tomku) (Ping timeout: 272 seconds) |
2025-04-06 05:24:02 +0200 | nitrix | (~nitrix@user/meow/nitrix) nitrix |
2025-04-06 05:26:38 +0200 | tomku | (~tomku@user/tomku) tomku |
2025-04-06 05:36:36 +0200 | harveypwca | (~harveypwc@2601:246:d080:f6e0:27d6:8cc7:eca9:c46c) (Quit: Leaving) |
2025-04-06 05:39:59 +0200 | amadaluzia | (~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 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 05:48:48 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-04-06 05:48:54 +0200 | notdabs | (~Owner@2600:1700:69cf:9000:58e6:6428:d346:1de6) |
2025-04-06 05:53:00 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
2025-04-06 05:59:33 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 06:04:44 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
2025-04-06 06:15:20 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 06:18:38 +0200 | notdabs | (~Owner@2600:1700:69cf:9000:58e6:6428:d346:1de6) (Read error: Connection reset by peer) |
2025-04-06 06:20:05 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-04-06 06:25:33 +0200 | tromp | (~textual@2001:1c00:3487:1b00:8156:72e2:e83d:bafd) |
2025-04-06 06:27:49 +0200 | tromp | (~textual@2001:1c00:3487:1b00:8156:72e2:e83d:bafd) (Client Quit) |
2025-04-06 06:28:06 +0200 | forell | (~forell@user/forell) (Ping timeout: 268 seconds) |
2025-04-06 06:29:06 +0200 | ColinRobinson | (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
2025-04-06 06:31:06 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 06:33:25 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 06:38:10 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds) |
2025-04-06 06:56:43 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 07:08:18 +0200 | statusbot | (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) statusbot |
2025-04-06 07:08:39 +0200 | statusbot10 | (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Read error: Connection reset by peer) |
2025-04-06 07:09:54 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds) |
2025-04-06 07:26:42 +0200 | takuan | (~takuan@d8D86B601.access.telenet.be) |
2025-04-06 07:40:24 +0200 | thuna` | (~thuna`@user/thuna/x-1480069) (Ping timeout: 244 seconds) |
2025-04-06 07:41:25 +0200 | jmcantrell | (~weechat@user/jmcantrell) (Quit: WeeChat 4.6.0) |
2025-04-06 07:41:25 +0200 | jmcantrell_ | jmcantrell |
2025-04-06 07:56:59 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 08:01:04 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
2025-04-06 08:17:08 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-04-06 08:30:12 +0200 | tabaqui | (~tabaqui@167.71.80.236) (Quit: WeeChat 4.5.2) |
2025-04-06 08:38:13 +0200 | Fangs | (sid141280@id-141280.hampstead.irccloud.com) (Ping timeout: 248 seconds) |
2025-04-06 08:39:00 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-04-06 08:39:27 +0200 | Fangs | (sid141280@id-141280.hampstead.irccloud.com) Fangs |
2025-04-06 08:45:37 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds) |
2025-04-06 08:50:19 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 08:54:31 +0200 | rit | (~rit@2409:40e0:1c:121c:589e:a7ae:8d66:baae) |
2025-04-06 08:59:32 +0200 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-04-06 09:00:00 +0200 | caconym | (~caconym@user/caconym) (Quit: bye) |
2025-04-06 09:00:02 +0200 | tt12310978324354 | (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) (Quit: The Lounge - https://thelounge.chat) |
2025-04-06 09:00:28 +0200 | j1n37- | (~j1n37@user/j1n37) (Ping timeout: 252 seconds) |
2025-04-06 09:00:53 +0200 | caconym | (~caconym@user/caconym) caconym |
2025-04-06 09:04:35 +0200 | tt12310978324354 | (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) tt1231 |
2025-04-06 09:14:50 +0200 | tromp | (~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589) |
2025-04-06 09:15:30 +0200 | tromp | (~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589) (Client Quit) |
2025-04-06 09:17:48 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
2025-04-06 09:18:18 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
2025-04-06 09:18:20 +0200 | tromp | (~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589) |
2025-04-06 09:19:37 +0200 | gadot | Gadot |
2025-04-06 09:19:47 +0200 | rit | (~rit@2409:40e0:1c:121c:589e:a7ae:8d66:baae) (Remote host closed the connection) |
2025-04-06 09:21:37 +0200 | rit | (~rit@152.58.177.31) |
2025-04-06 09:22:02 +0200 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
2025-04-06 09:46:07 +0200 | acidjnk_new3 | (~acidjnk@p200300d6e71c4f1475e75972aae4f669.dip0.t-ipconnect.de) acidjnk |
2025-04-06 09:48:21 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess |
2025-04-06 09:57:09 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-04-06 10:00:55 +0200 | tromp | (~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-04-06 10:01:34 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 10:03:24 +0200 | tromp | (~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589) |
2025-04-06 10:04:17 +0200 | sprotte24 | (~sprotte24@p200300d16f28a1000c1aac2cfe7f30d8.dip0.t-ipconnect.de) |
2025-04-06 10:06:12 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-04-06 10:15:13 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds) |
2025-04-06 10:18:05 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 10:20:16 +0200 | krei-se | (~krei-se@p200300f1cfff387fda9ef3fffe7fdac8.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2025-04-06 10:23:12 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
2025-04-06 10:23:36 +0200 | krei-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 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 10:39:17 +0200 | XZDX | (~xzdx@user/XZDX) (Remote host closed the connection) |
2025-04-06 10:39:44 +0200 | XZDX | (~xzdx@2601:404:ce00:4e51:214:51ff:fe2b:e82e) |
2025-04-06 10:39:49 +0200 | krei-se | (~krei-se@p5dea1c1d.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2025-04-06 10:40:44 +0200 | krei-se | (~krei-se@p200300f1cfff4b46da9ef3fffe7fdac8.dip0.t-ipconnect.de) krei-se |
2025-04-06 10:41:44 +0200 | XZDX | (~xzdx@2601:404:ce00:4e51:214:51ff:fe2b:e82e) (Changing host) |
2025-04-06 10:41:44 +0200 | XZDX | (~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 +0200 | hattckory | (~hattckory@70.27.118.207) |
2025-04-06 10:46:06 +0200 | rit | (~rit@152.58.177.31) (Ping timeout: 240 seconds) |
2025-04-06 10:46:44 +0200 | krei-se- | (~krei-se@p3ee0f5ab.dip0.t-ipconnect.de) krei-se |
2025-04-06 10:47:08 +0200 | krei-se | (~krei-se@p200300f1cfff4b46da9ef3fffe7fdac8.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2025-04-06 10:49:14 +0200 | hattckory | (~hattckory@70.27.118.207) (Ping timeout: 260 seconds) |
2025-04-06 10:53:16 +0200 | acidjnk_new3 | (~acidjnk@p200300d6e71c4f1475e75972aae4f669.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2025-04-06 10:53:38 +0200 | takuan | (~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection) |
2025-04-06 10:56:39 +0200 | AlexZenon | (~alzenon@178.34.162.245) (Quit: ;-) |
2025-04-06 10:59:18 +0200 | AlexNoo | (~AlexNoo@178.34.162.245) (Quit: Leaving) |
2025-04-06 11:04:34 +0200 | lxsameer | (~lxsameer@Serene/lxsameer) lxsameer |
2025-04-06 11:11:29 +0200 | todi | (~todi@p57803331.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in) |
2025-04-06 11:11:40 +0200 | krei-se | (~krei-se@p5dea1cf8.dip0.t-ipconnect.de) krei-se |
2025-04-06 11:12:00 +0200 | krei-se- | (~krei-se@p3ee0f5ab.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2025-04-06 11:12:33 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla |
2025-04-06 11:16:19 +0200 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
2025-04-06 11:17:11 +0200 | krei-se- | (~krei-se@p200300f1cfff4b89da9ef3fffe7fdac8.dip0.t-ipconnect.de) krei-se |
2025-04-06 11:17:24 +0200 | krei-se | (~krei-se@p5dea1cf8.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2025-04-06 11:28:41 +0200 | AlexNoo | (~AlexNoo@178.34.162.245) |
2025-04-06 11:33:55 +0200 | todi | (~todi@p57803331.dip0.t-ipconnect.de) todi |
2025-04-06 11:35:04 +0200 | AlexZenon | (~alzenon@178.34.162.245) |
2025-04-06 11:41:22 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
2025-04-06 11:48:47 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 11:52:23 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 11:53:36 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2025-04-06 11:53:45 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
2025-04-06 11:55:22 +0200 | TMA | (tma@twin.jikos.cz) (Ping timeout: 252 seconds) |
2025-04-06 11:57:03 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
2025-04-06 12:02:15 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 12:12:03 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 12:15:49 +0200 | dhil | (~dhil@2a0c:b381:52e:3600:4c26:24b1:e3bc:1cdd) dhil |
2025-04-06 12:16:49 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds) |
2025-04-06 12:24:48 +0200 | acidjnk_new3 | (~acidjnk@p200300d6e71c4f1484dd604455bfc05c.dip0.t-ipconnect.de) acidjnk |
2025-04-06 12:25:48 +0200 | tromp | (~textual@2001:1c00:3487:1b00:210a:3dd2:fb83:a589) (Ping timeout: 245 seconds) |
2025-04-06 12:35:21 +0200 | m257 | (msa@msa.planetofnix.com) (Quit: Still trying to figure out how bouncers work.) |
2025-04-06 12:41:47 +0200 | sprotte24 | (~sprotte24@p200300d16f28a1000c1aac2cfe7f30d8.dip0.t-ipconnect.de) (Quit: Leaving) |
2025-04-06 12:48:11 +0200 | hattckory | (~hattckory@70.27.118.207) |
2025-04-06 12:51:33 +0200 | msa | (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 +0200 | jespada | (~jespada@r179-25-205-222.dialup.adsl.anteldata.net.uy) jespada |
2025-04-06 13:04:34 +0200 | hattckory | (~hattckory@70.27.118.207) (Ping timeout: 260 seconds) |
2025-04-06 13:09:33 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
2025-04-06 13:14:12 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 13:20:43 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 13:26:03 +0200 | lxsameer | (~lxsameer@Serene/lxsameer) (Ping timeout: 244 seconds) |
2025-04-06 13:34:30 +0200 | acidjnk_new3 | (~acidjnk@p200300d6e71c4f1484dd604455bfc05c.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2025-04-06 13:35:48 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
2025-04-06 13:44:26 +0200 | tremon | (~tremon@83.80.159.219) tremon |
2025-04-06 14:15:11 +0200 | hattckory | (~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 +0200 | hattckory | (~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 +0200 | sprotte24 | (~sprotte24@p200300d16f28a1000c1aac2cfe7f30d8.dip0.t-ipconnect.de) |
2025-04-06 14:31:01 +0200 | Square2 | (~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 +0200 | hattckory | (~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 +0200 | hattckory | (~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 +0200 | TMA | (tma@twin.jikos.cz) TMA |
2025-04-06 14:56:31 +0200 | hiecaq | (~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 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Quit: leaving) |
2025-04-06 15:02:02 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 15:02:37 +0200 | merijn | (~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 +0200 | jacopovalanzano | (~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 +0200 | hattckory | (~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 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2025-04-06 15:30:02 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
2025-04-06 15:45:54 +0200 | forell | (~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 +0200 | rvalue | (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
2025-04-06 15:52:56 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 15:53:18 +0200 | rvalue | (~rvalue@user/rvalue) rvalue |
2025-04-06 15:56:25 +0200 | amadaluzia | (~amadaluzi@user/amadaluzia) amadaluzia |
2025-04-06 15:58:09 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
2025-04-06 16:11:43 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 16:17:59 +0200 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2025-04-06 16:18:57 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds) |
2025-04-06 16:20:54 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds) |
2025-04-06 16:20:54 +0200 | ljdarj1 | ljdarj |
2025-04-06 16:27:19 +0200 | milan | (~milan@88.212.61.169) |
2025-04-06 16:35:09 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 16:44:18 +0200 | smalltalkman | (uid545680@id-545680.hampstead.irccloud.com) smalltalkman |
2025-04-06 16:45:39 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds) |
2025-04-06 16:53:22 +0200 | hacklschorsch | (~flo@2a01:4f9:3a:2296::2) (Ping timeout: 272 seconds) |
2025-04-06 16:58:00 +0200 | segfaultfizzbuzz | (~segfaultf@23-93-74-222.fiber.dynamic.sonic.net) (Quit: segfaultfizzbuzz) |
2025-04-06 17:00:51 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 17:01:46 +0200 | Guest21 | (~Guest21@2600:6c4c:787f:a0a4:d65b:f01e:6eda:2fac) |
2025-04-06 17:05:45 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
2025-04-06 17:07:00 +0200 | Guest21 | (~Guest21@2600:6c4c:787f:a0a4:d65b:f01e:6eda:2fac) (Quit: Client closed) |
2025-04-06 17:07:22 +0200 | acidjnk_new3 | (~acidjnk@p200300d6e71c4f1484a8b96e5b185115.dip0.t-ipconnect.de) acidjnk |
2025-04-06 17:12:52 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
2025-04-06 17:15:52 +0200 | mauke | (~mauke@user/mauke) mauke |
2025-04-06 17:18:58 +0200 | __jmcantrell__ | (~weechat@user/jmcantrell) jmcantrell |
2025-04-06 17:25:11 +0200 | amadaluzia_ | (~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) |
2025-04-06 17:26:50 +0200 | amadaluzia_ | (~amadaluzi@host81-159-254-182.range81-159.btcentralplus.com) (Changing host) |
2025-04-06 17:26:50 +0200 | amadaluzia_ | (~amadaluzi@user/amadaluzia) amadaluzia |
2025-04-06 17:31:43 +0200 | tromp | (~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c) |
2025-04-06 17:48:12 +0200 | picnoir | (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.5.1) |
2025-04-06 17:49:56 +0200 | picnoir | (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) NinjaTrappeur |
2025-04-06 17:51:49 +0200 | dhil | (~dhil@2a0c:b381:52e:3600:4c26:24b1:e3bc:1cdd) (Ping timeout: 248 seconds) |
2025-04-06 18:01:38 +0200 | acidjnk_new3 | (~acidjnk@p200300d6e71c4f1484a8b96e5b185115.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
2025-04-06 18:02:26 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 18:07:40 +0200 | target_i | (~target_i@user/target-i/x-6023099) target_i |
2025-04-06 18:08:59 +0200 | jmcantrell | Guest7797 |
2025-04-06 18:08:59 +0200 | Guest7797 | (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 +0200 | jmcantrell_ | (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 +0200 | hattckory | (~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 +0200 | toby-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 +0200 | amadaluzia | (~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 +0200 | hattckory | (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
2025-04-06 18:37:19 +0200 | ski | idly 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 +0200 | tromp | (~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-04-06 19:00:54 +0200 | ss4 | (~wootehfoo@user/wootehfoot) wootehfoot |
2025-04-06 19:01:13 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2025-04-06 19:01:31 +0200 | ss4 | (~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 +0200 | emojelly | (~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 +0200 | tzh | (~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 +0200 | weary-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 +0200 | XZDX | XZDX_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 +0200 | tromp | (~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 +0200 | econo_ | (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 +0200 | tromp | (~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 +0200 | Square2 | (~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 +0200 | Square | (~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 +0200 | tromp | (~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c) |
2025-04-06 20:08:17 +0200 | j1n37- | (~j1n37@user/j1n37) j1n37 |
2025-04-06 20:09:30 +0200 | j1n37 | (~j1n37@user/j1n37) (Ping timeout: 268 seconds) |
2025-04-06 20:15:54 +0200 | Guest94 | (~Guest94@2402:8100:2713:dce3:44d2:5f5e:34e2:9148) |
2025-04-06 20:16:41 +0200 | Guest94 | (~Guest94@2402:8100:2713:dce3:44d2:5f5e:34e2:9148) (Client Quit) |
2025-04-06 20:19:01 +0200 | pavonia | (~user@user/siracusa) siracusa |
2025-04-06 20:23:18 +0200 | toby-bro | (~toby-bro@user/toby-bro) (Ping timeout: 252 seconds) |
2025-04-06 20:28:49 +0200 | michalz | (~michalz@185.246.207.215) |
2025-04-06 20:36:40 +0200 | tromp | (~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2025-04-06 20:38:01 +0200 | acidjnk_new3 | (~acidjnk@p200300d6e71c4f1484a8b96e5b185115.dip0.t-ipconnect.de) acidjnk |
2025-04-06 20:41:22 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac |
2025-04-06 20:41:32 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Client Quit) |
2025-04-06 20:41:50 +0200 | tromp | (~textual@2001:1c00:3487:1b00:c873:d422:44c2:cc0c) |
2025-04-06 20:48:32 +0200 | XZDX_afk | XZDX |
2025-04-06 20:49:25 +0200 | forell | (~forell@user/forell) (Ping timeout: 248 seconds) |
2025-04-06 20:50:30 +0200 | forell | (~forell@user/forell) forell |
2025-04-06 21:00:04 +0200 | caconym | (~caconym@user/caconym) (Quit: bye) |
2025-04-06 21:00:45 +0200 | caconym | (~caconym@user/caconym) caconym |
2025-04-06 21:06:45 +0200 | kathryn1024_ | (~kathryn10@user/kathryn1024) kathryn1024 |
2025-04-06 21:17:45 +0200 | |cos| | (~libera@loza.netizen.se) |cos| |
2025-04-06 21:17:46 +0200 | amadaluzia | (~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 +0200 | toby-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 +0200 | ham | (~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 +0200 | remexre | (~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 +0200 | hgolden | (~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 +0200 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
2025-04-06 21:58:46 +0200 | hgolden | (~hgolden@2603:8000:9d00:3ed1:1b03:b08c:d961:6530) hgolden |
2025-04-06 22:03:40 +0200 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
2025-04-06 22:05:45 +0200 | ham | (~ham@user/ham) (Quit: WeeChat 3.5) |
2025-04-06 22:06:57 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
2025-04-06 22:11:00 +0200 | AlexZenon | (~alzenon@178.34.162.245) (Ping timeout: 252 seconds) |
2025-04-06 22:16:07 +0200 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
2025-04-06 22:18:29 +0200 | AlexZenon | (~alzenon@178.34.162.245) |
2025-04-06 22:21:19 +0200 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 244 seconds) |
2025-04-06 22:36:40 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-04-06 22:41:11 +0200 | IlyaChernov566 | (~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 +0200 | IlyaChernov566 | (~IlyaChern@82.215.95.81) (Remote host closed the connection) |
2025-04-06 22:48:47 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 22:48:49 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
2025-04-06 22:50:25 +0200 | michalz | (~michalz@185.246.207.215) (Remote host closed the connection) |
2025-04-06 22:55:44 +0200 | sh1n | (~sh1n@2800:2134:583f:e223:7b49:e90d:6522:419d) sh1n |
2025-04-06 22:55:45 +0200 | troydm | (~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 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-04-06 22:58:14 +0200 | Guest90 | (~Guest90@76.78.179.109) |
2025-04-06 22:59:12 +0200 | inca | (~inca@pool-96-255-212-224.washdc.fios.verizon.net) |
2025-04-06 23:04:01 +0200 | inca | (~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 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-04-06 23:11:23 +0200 | troydm | (~troydm@user/troydm) troydm |
2025-04-06 23:14:34 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-04-06 23:16:21 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
2025-04-06 23:24:58 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 245 seconds) |
2025-04-06 23:26:35 +0200 | merijn | (~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 +0200 | merijn | (~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 +0200 | amadaluzia | (~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 +0200 | amadaluzia | (~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 +0200 | merijn | (~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 +0200 | inca | (~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 +0200 | tromp | (~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 +0200 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
2025-04-06 23:47:36 +0200 | kathryn1024_ | (~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? |