Logs on 2024-12-13 (liberachat/#haskell)
| 00:00:15 | → | rstromlund joins (~user@resi-86-63-140-12.isp.ozarksgo.net) |
| 00:00:15 | × | rstromlund quits (~user@resi-86-63-140-12.isp.ozarksgo.net) (Changing host) |
| 00:00:15 | → | rstromlund joins (~user@user/rstromlund) |
| 00:03:36 | × | Square quits (~Square@user/square) (Ping timeout: 252 seconds) |
| 00:04:35 | × | rstromlund quits (~user@user/rstromlund) (Ping timeout: 244 seconds) |
| 00:05:54 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 00:10:55 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 00:12:44 | → | __jmcantrell__ joins (~weechat@user/jmcantrell) |
| 00:12:47 | jmcantrell | is now known as Guest2459 |
| 00:12:47 | × | Guest2459 quits (644f1bed9a@user/jmcantrell) (Killed (copper.libera.chat (Nickname regained by services))) |
| 00:12:47 | __jmcantrell__ | is now known as jmcantrell |
| 00:12:55 | → | jmcantrell_ joins (644f1bed9a@user/jmcantrell) |
| 00:18:59 | → | Smiles joins (uid551636@id-551636.lymington.irccloud.com) |
| 00:21:17 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 00:25:36 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 00:32:42 | × | xff0x quits (~xff0x@2405:6580:b080:900:30ee:920a:5b76:45fa) (Ping timeout: 276 seconds) |
| 00:36:41 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 00:41:25 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 00:52:04 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 00:54:50 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 00:58:36 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 01:01:46 | → | cuteguest joins (~cuteguest@2601:602:680:2280::5d66) |
| 01:01:48 | → | rstromlund joins (~user@user/rstromlund) |
| 01:02:28 | → | dustee joins (~dustee@2601:43:100:2710:f40e:3554:f28f:fa0b) |
| 01:03:55 | <cuteguest> | hiii ^_^ is there a way to have a GADT or type family or something where there is like a 1 - 1 match for all values of the input? what i mean is.. lets say i have a GADT that is like: data Fumbo (b :: Bool) where.. so that there is always only one constructor for Fumbo True and Fumbo False? |
| 01:05:32 | <EvanR> | what if you just used Bool |
| 01:05:46 | <Leary> | @hackage singletons |
| 01:05:47 | <lambdabot> | https://hackage.haskell.org/package/singletons |
| 01:05:49 | <Leary> | cuteguest: ^ |
| 01:06:20 | <cuteguest> | woahg.. hav i landed in dependent type territory? |
| 01:06:54 | × | rstromlund quits (~user@user/rstromlund) (Ping timeout: 265 seconds) |
| 01:06:58 | <cuteguest> | i hav slightly heard of these thank you |
| 01:07:53 | <geekosaur> | I'm trying to figure out if you maybe just need an injective type family? |
| 01:09:04 | <cuteguest> | hmm hmm hmm hmm |
| 01:10:06 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 01:10:33 | × | sprotte24 quits (~sprotte24@p200300d16f14d100e5c9a68ab6a328e8.dip0.t-ipconnect.de) (Quit: Leaving) |
| 01:12:51 | <cuteguest> | testing somthings |
| 01:15:26 | <Axman6> | definitely sounds like singletons to me |
| 01:15:36 | → | dpratt joins (~dpratt@165.225.220.148) |
| 01:15:50 | <cuteguest> | the thing thats nice about GADTs is that whenever i have a like a thing "class Flimbly a where; type R :: a -> Type" i can plug the GADT in the instance for R but i cant do that with type families |
| 01:16:45 | <cuteguest> | singletons hmm.. |
| 01:18:28 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 01:18:31 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 01:19:56 | → | rstromlund joins (~user@user/rstromlund) |
| 01:20:03 | <Axman6> | cuteguest: https://blog.jle.im/entry/introduction-to-singletons-1.html is probably a better introduction than the package docs, which are pretty impenetrable |
| 01:20:19 | <cuteguest> | tysm ^_^ |
| 01:22:05 | <dpratt> | haven't even gotten to the hard parts of day 12 and my `getRegion` function is quite slow -- any pointers or suggestions? https://gist.github.com/dgpratt/86b713c7dfadc748ae05fa1021750bb2 |
| 01:23:01 | → | ljdarj1 joins (~Thunderbi@user/ljdarj) |
| 01:23:03 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 01:26:45 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds) |
| 01:26:45 | ljdarj1 | is now known as ljdarj |
| 01:28:11 | × | dustee quits (~dustee@2601:43:100:2710:f40e:3554:f28f:fa0b) (Quit: Client closed) |
| 01:28:43 | <cuteguest> | are you doing a code advent calendar? : ) |
| 01:29:31 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 01:29:51 | <dpratt> | cuteguest guess you're asking me, in which case yes (well...I guess I am whether or not you asked me) |
| 01:30:15 | <cuteguest> | i was asking you ^ .^ |
| 01:30:56 | <dpratt> | I like Haskell a lot, but I don't have much excuse/reason to use it. But when AoC comes around, I try to get as far as I can with Haskell solutions. |
| 01:31:43 | <cuteguest> | aww thats cool |
| 01:31:47 | <cuteguest> | haskell is great i think |
| 01:31:56 | × | cuteguest quits (~cuteguest@2601:602:680:2280::5d66) (Quit: Client closed) |
| 01:32:09 | → | cuteguest joins (~cuteguest@c-73-239-49-112.hsd1.wa.comcast.net) |
| 01:33:25 | <dpratt> | glguy you have any advice for my slow function above? |
| 01:33:42 | × | ethantwardy quits (user@user/ethantwardy) (Quit: WeeChat 4.3.2) |
| 01:34:09 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 01:36:50 | <c_wraith> | dpratt: is it slow, or looping forever? |
| 01:37:25 | <dpratt> | c_wraith slow -- `getRegion plotMap (1,1)` takes about 30s |
| 01:37:35 | <c_wraith> | On which input, anyway? |
| 01:37:54 | × | CrunchyFlakes quits (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 01:37:57 | <c_wraith> | I mean, 30s is just implausible. today isn't a performance challenge. Just a "figure out how to do that" challenge. |
| 01:38:06 | <dpratt> | c_wraith on the "real" input |
| 01:38:19 | <dpratt> | c_wraith I agree, no idea why it takes so long |
| 01:40:21 | → | CrunchyFlakes joins (~CrunchyFl@31.19.233.78) |
| 01:40:33 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 01:42:10 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 01:42:58 | <c_wraith> | ok, the only way it's going to be 30s is if it's going exponential |
| 01:43:50 | <c_wraith> | ah. and it is. |
| 01:44:51 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 01:44:54 | <c_wraith> | your definition of adjacent (line 26) is insufficient. It's sharing the same visited map with each recursive call. It needs to thread updates along. |
| 01:44:57 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:47:49 | <c_wraith> | consider what it's going to do with a big square of the same plot type, starting at a corner. The recursive calls to the next two will know the corner was visited. But the recursive calls from each of those will not know about the other one. |
| 01:48:04 | <c_wraith> | That's still going to add up to exponential growth as you cross the whole square. |
| 01:48:10 | <dpratt> | c_wraith ah, ok, thanks for pointing that out -- I suppose that means I should figure out how to make this a "stateful" computation |
| 01:48:40 | <dpratt> | c_wraith makes sense, thanks! |
| 01:49:12 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 01:49:19 | × | falafel quits (~falafel@2603:8000:b4f0:62a0:8070:b236:970b:b0e8) (Ping timeout: 260 seconds) |
| 02:00:15 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 02:04:27 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 02:13:00 | × | dpratt quits (~dpratt@165.225.220.148) (Quit: Client closed) |
| 02:15:37 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 02:18:40 | × | cuteguest quits (~cuteguest@c-73-239-49-112.hsd1.wa.comcast.net) (Ping timeout: 240 seconds) |
| 02:19:57 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 02:27:53 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 245 seconds) |
| 02:30:59 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 02:35:24 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 02:35:49 | × | rstromlund quits (~user@user/rstromlund) (Ping timeout: 245 seconds) |
| 02:44:59 | × | homo quits (~homo@user/homo) (Quit: homo) |
| 02:45:23 | → | homo joins (~homo@user/homo) |
| 02:46:21 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 02:50:49 | → | harveypwca joins (~harveypwc@2601:246:d080:b40:1889:d9bf:2dd8:b288) |
| 02:54:09 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 02:54:13 | → | housemate joins (~housemate@2001:8004:27a8:24d3:b2cb:2bd8:520f:6d21) |
| 02:55:20 | × | housemate quits (~housemate@2001:8004:27a8:24d3:b2cb:2bd8:520f:6d21) (Remote host closed the connection) |
| 02:55:42 | → | housemate joins (~housemate@2001:8004:27a8:24d3:b2cb:2bd8:520f:6d21) |
| 03:06:01 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 03:10:36 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 03:10:43 | × | eL_Bart0- quits (eL_Bart0@dietunichtguten.org) (Ping timeout: 252 seconds) |
| 03:11:26 | × | OftenFaded quits (~OftenFade@user/tisktisk) (Quit: Client closed) |
| 03:15:01 | × | sam113101 quits (~sam@modemcable220.199-203-24.mc.videotron.ca) (Quit: WeeChat 4.4.3) |
| 03:26:30 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 03:31:08 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 03:34:13 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 03:37:15 | × | Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 03:40:56 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 03:41:40 | → | gmg joins (~user@user/gehmehgeh) |
| 03:41:53 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 03:46:54 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 03:51:03 | → | rstromlund joins (~user@user/rstromlund) |
| 03:53:59 | × | td_ quits (~td@i5387090C.versanet.de) (Ping timeout: 244 seconds) |
| 03:55:32 | × | rstromlund quits (~user@user/rstromlund) (Ping timeout: 244 seconds) |
| 03:56:10 | → | td_ joins (~td@i5387093F.versanet.de) |
| 03:57:47 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 04:04:19 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 04:10:11 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 04:12:50 | × | housemate quits (~housemate@2001:8004:27a8:24d3:b2cb:2bd8:520f:6d21) (Quit: Nothing to see here. I wasn't there. I take IRC seriously. https://files.catbox.moe/4e9k81.pdf) |
| 04:14:03 | × | gorignak quits (~gorignak@user/gorignak) (Quit: quit) |
| 04:14:15 | → | gorignak joins (~gorignak@user/gorignak) |
| 04:15:50 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 04:19:39 | → | OftenFaded joins (~OftenFade@user/tisktisk) |
| 04:20:16 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 04:22:44 | → | homo_ joins (~homo@user/homo) |
| 04:23:27 | × | homo quits (~homo@user/homo) (Ping timeout: 246 seconds) |
| 04:23:28 | homo_ | is now known as homo |
| 04:25:24 | → | Elena59 joins (~Elena@37.25.86.87) |
| 04:26:58 | × | Elena59 quits (~Elena@37.25.86.87) (Client Quit) |
| 04:31:13 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 04:35:19 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
| 04:35:40 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 04:36:16 | → | ethantwardy joins (user@user/ethantwardy) |
| 04:37:36 | → | aforemny joins (~aforemny@i577B130D.versanet.de) |
| 04:38:40 | × | aforemny_ quits (~aforemny@2001:9e8:6cd1:7b00:688b:324:5065:e57a) (Ping timeout: 260 seconds) |
| 04:46:35 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 04:49:50 | × | harveypwca quits (~harveypwc@2601:246:d080:b40:1889:d9bf:2dd8:b288) (Quit: Leaving) |
| 04:51:06 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 04:52:40 | × | youthlic quits (~Thunderbi@user/youthlic) (Quit: youthlic) |
| 04:54:53 | → | youthlic joins (~Thunderbi@user/youthlic) |
| 05:01:59 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 05:04:44 | × | alp quits (~alp@2001:861:8ca0:4940:4155:329b:9129:3e66) (Remote host closed the connection) |
| 05:05:00 | → | alp joins (~alp@2001:861:8ca0:4940:1c03:a77a:acae:42) |
| 05:06:27 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 05:15:12 | × | rekahsoft quits (~rekahsoft@bras-base-orllon1103w-grc-06-76-69-85-220.dsl.bell.ca) (Remote host closed the connection) |
| 05:17:22 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 05:21:49 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 05:32:45 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 05:34:11 | → | sam113101 joins (~sam@modemcable220.199-203-24.mc.videotron.ca) |
| 05:39:30 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 05:39:31 | → | michalz joins (~michalz@185.246.207.197) |
| 05:51:22 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 05:51:40 | × | OftenFaded quits (~OftenFade@user/tisktisk) (Ping timeout: 240 seconds) |
| 05:56:15 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 05:58:21 | × | gorignak quits (~gorignak@user/gorignak) (Quit: quit) |
| 05:59:56 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 06:02:02 | → | gorignak joins (~gorignak@user/gorignak) |
| 06:04:24 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 06:08:15 | → | falafel joins (~falafel@2603:8000:b4f0:62a0:a2ac:33fd:6c9:13bb) |
| 06:15:16 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 06:20:27 | × | cptaffe quits (~cptaffe@user/cptaffe) (Ping timeout: 276 seconds) |
| 06:22:16 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 06:23:06 | → | cptaffe joins (~cptaffe@user/cptaffe) |
| 06:33:26 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 06:38:09 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 06:39:18 | × | falafel quits (~falafel@2603:8000:b4f0:62a0:a2ac:33fd:6c9:13bb) (Ping timeout: 276 seconds) |
| 06:42:48 | → | Smiles joins (uid551636@id-551636.lymington.irccloud.com) |
| 06:44:29 | × | mange quits (~user@user/mange) (Remote host closed the connection) |
| 06:48:52 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 06:53:27 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 06:55:15 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 06:56:03 | → | housemate joins (~housemate@2001:8004:27a8:259e:1908:8615:d13f:227b) |
| 06:57:18 | → | CiaoSen joins (~Jura@2a05:5800:209:ac00:ca4b:d6ff:fec1:99da) |
| 06:57:44 | <iqubic> | What's the size of Haskell's Ints, and how does that differ from Integer? |
| 06:59:28 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 07:00:53 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 07:01:57 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:04:00 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 07:05:15 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 07:07:47 | <probie> | "Haskell"'s Ints are "at least 30 bits". With GHC they're machine word sized (so probably 64 bit). Integer's are (in theory) unbounded, although it used to be the case that they couldn't handle an `Integer` that took more than 4GB to represent |
| 07:07:57 | <probie> | s/Integer's/Integers/ |
| 07:09:07 | <probie> | (Integers in GHC which are backed with gmp, that is) |
| 07:10:09 | × | acidsys quits (~crameleon@openSUSE/member/crameleon) (Ping timeout: 248 seconds) |
| 07:13:25 | <iqubic> | That makes sense. |
| 07:15:03 | × | housemate quits (~housemate@2001:8004:27a8:259e:1908:8615:d13f:227b) (Read error: Connection reset by peer) |
| 07:16:02 | <haskellbridge> | <hellwolf> fwiw, there is a difference between ** vs. ^ |
| 07:16:22 | <haskellbridge> | <hellwolf> :t (**) |
| 07:16:54 | <haskellbridge> | <hellwolf> :t (^) |
| 07:17:28 | <haskellbridge> | <hellwolf> hmm, i can only use this bot when i am using irc, i guess |
| 07:18:27 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 07:20:20 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:23:36 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 07:24:13 | <iqubic> | :t (**) |
| 07:24:14 | <lambdabot> | Floating a => a -> a -> a |
| 07:24:18 | <iqubic> | :t (^) |
| 07:24:19 | <lambdabot> | (Integral b, Num a) => a -> b -> a |
| 07:24:36 | <iqubic> | I got you, fam! |
| 07:27:10 | <c_wraith> | I think the current limit on Integer is that the gmp representation can't have more 2^64 or more "limbs". Where I guess a limb is a machine word. That's more memory than most computers have. |
| 07:29:03 | <iqubic> | Cool. So, for Advent of Code I should be fine with just Ints. |
| 07:29:24 | × | ft quits (~ft@p508db9c7.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 07:29:26 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 07:30:12 | <iqubic> | Other langauges have Ints and Longs, but Haskell doesn't really. |
| 07:30:45 | → | vpan joins (~vpan@212.117.1.172) |
| 07:31:46 | <c_wraith> | I actually used Integer today, but that was sort of accidental because I was using Rational, and Rational = Ratio Integer. I *could* have used Ratio Int, but... that's two tokens! |
| 07:32:32 | × | mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Remote host closed the connection) |
| 07:33:03 | → | acidsys joins (~crameleon@openSUSE/member/crameleon) |
| 07:34:19 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 07:34:28 | → | mhatta joins (~mhatta@www21123ui.sakura.ne.jp) |
| 07:36:21 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:38:29 | <probie> | hellowolf: try adding a blank new line before commands to lambdabot |
| 07:38:37 | × | CiaoSen quits (~Jura@2a05:5800:209:ac00:ca4b:d6ff:fec1:99da) (Ping timeout: 252 seconds) |
| 07:38:47 | <probie> | s/hellowolf/hellwolf/ |
| 07:38:57 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 07:40:30 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:40:46 | → | housemate joins (~housemate@2001:8004:1640:2cb0::12e) |
| 07:44:32 | → | briandaed joins (~root@user/briandaed) |
| 07:46:37 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 07:49:31 | → | CiaoSen joins (~Jura@2a05:5800:209:ac00:ca4b:d6ff:fec1:99da) |
| 07:49:43 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 07:53:32 | <haskellbridge> | <hellwolf> got it |
| 07:53:32 | <haskellbridge> | :t div |
| 07:53:33 | <lambdabot> | Integral a => a -> a -> a |
| 07:54:22 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 07:54:32 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 07:55:06 | <haskellbridge> | <hellwolf> :t (180 * (10 ^ 18)) "div" 3600 * 24 |
| 07:55:29 | <haskellbridge> | <hellwolf> bot pls |
| 07:55:30 | <haskellbridge> | :t (180 * (10 ^ 18)) "div" 3600 * 24 |
| 07:55:42 | <lambdabot> | (Num a, Num t, Num ([Char] -> t -> a)) => a |
| 07:56:09 | <haskellbridge> | <hellwolf> 🫠 |
| 07:58:09 | → | falafel joins (~falafel@2603:8000:b4f0:62a0:b2f3:1ea5:3edd:91fa) |
| 08:00:02 | × | caconym quits (~caconym@user/caconym) (Quit: bye) |
| 08:00:40 | → | caconym joins (~caconym@user/caconym) |
| 08:01:00 | <haskellbridge> | <hellwolf> bot pls |
| 08:01:00 | <haskellbridge> | : (180 * (10 ^ 18)) "div" 3600 * 24 |
| 08:01:31 | <haskellbridge> | <hellwolf> bot pls |
| 08:01:31 | <haskellbridge> | :eval (180 * (10 ^ 18)) "div" 3600 * 24 |
| 08:01:53 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 08:06:11 | <probie> | It's `>` if you want lambdabot to execute something |
| 08:06:29 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 08:07:40 | <c_wraith> | well, `> `. The space is necessary. |
| 08:07:51 | × | tcard_ quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving) |
| 08:11:07 | → | Square joins (~Square@user/square) |
| 08:11:38 | → | ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) |
| 08:15:30 | <haskellbridge> | <hellwolf> bot pls |
| 08:15:30 | <haskellbridge> | > (180 * (10 ^ 18)) "div" 3600 * 24 |
| 08:15:32 | <lambdabot> | error: |
| 08:15:32 | <lambdabot> | • Could not deduce (Num t0) |
| 08:15:32 | <lambdabot> | from the context: (Num a, Num t, Num ([Char] -> t -> a)) |
| 08:15:51 | <haskellbridge> | <hellwolf> bot pls |
| 08:15:51 | <haskellbridge> | > (180 * (10 ^ 18)) "div" 3600 * 24 :: Integer |
| 08:15:52 | <lambdabot> | error: |
| 08:15:52 | <lambdabot> | • No instance for (Num ([Char] -> Integer -> Integer)) |
| 08:15:52 | <lambdabot> | arising from a use of ‘*’ |
| 08:16:12 | <c_wraith> | hellwolf: you're using "" instead of `` |
| 08:16:19 | <c_wraith> | > 10 `div` 2 |
| 08:16:20 | <lambdabot> | 5 |
| 08:16:47 | <haskellbridge> | <hellwolf> it's the mobile client of element... |
| 08:17:17 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 08:17:53 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 08:18:53 | <probie> | You might just have to write `div` in prefix form if element (or the bridge) is replacing backticks with double quotes |
| 08:22:05 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2) |
| 08:26:24 | <briandaed> | :t (180 * (10 ^ 18)) `div` 3600 * 24 |
| 08:26:25 | <lambdabot> | Integral a => a |
| 08:27:02 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 08:27:15 | <int-e> | briandaed: do you want (3600 * 24) |
| 08:27:30 | <int-e> | (aka 86400 but that's not the point) |
| 08:28:04 | <int-e> | or maybe I should be asking hellwolf |
| 08:29:08 | <briandaed> | nah, just playing with hellwolf's test |
| 08:33:46 | <hololeap> | hi, I have a question about immutable data and data sharing with ghc |
| 08:35:12 | <hololeap> | is it correct that data is shared when you make copies of immutable data, but this gets complicated with Text where sharing parts of a utf-8 string could result in corruption? |
| 08:36:18 | <hololeap> | eg compacted data is harder to share than a list of data fragments |
| 08:36:25 | <c_wraith> | sharing can't corrupt things - only mutating can. |
| 08:36:33 | <int-e> | It's not really corruption that you have to worry about... the problem you can run into is that when you extract a single word from a big chunk of text, that single-word Text value can keep the whole chunk alive. |
| 08:36:43 | <int-e> | So you can potentially waste a ton of memory. |
| 08:38:02 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 08:38:13 | → | tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
| 08:38:15 | <c_wraith> | But yeah, you can accidentally hold a gigabyte buffer when you only care about a few characters. |
| 08:39:04 | × | housemate quits (~housemate@2001:8004:1640:2cb0::12e) (Ping timeout: 272 seconds) |
| 08:39:07 | <int-e> | When bytestring liberally used `inlinePerformIO` that lead to corruption though. It was a bug. |
| 08:40:04 | → | housemate joins (~housemate@2001:8004:1680:927::12e) |
| 08:40:18 | <hololeap> | I was just thinking about how ghc might try to reduce data duplication with immutable data, but my ideas fell apart when I started thinking about Text |
| 08:42:17 | <probie> | That's what things like Data.Text.copy (https://hackage.haskell.org/package/text-2.1.2/docs/Data-Text.html#v:copy) are for. But you have to manually do it, GHC won't do it for you |
| 08:42:29 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 08:44:08 | <hololeap> | but GHC will do it for you with [Char]? |
| 08:44:57 | <c_wraith> | Eh. Not exactly. |
| 08:45:18 | <c_wraith> | You can end up using a lot more memory than you intended because of sharing lists, too |
| 08:45:20 | <int-e> | There's a hack for avoiding duplicate `Char` values arising from decoding C strings. Other than that, no, GHC's runtime won't deduplicate data for you. |
| 08:45:42 | <int-e> | (There's no hash-consing to throw in a related keyword.) |
| 08:45:47 | <c_wraith> | the classic example is let xs = [1 .. 100000000 ] in xs ++ xs |
| 08:46:08 | <c_wraith> | The sharing there destroys the ability to stream the list |
| 08:46:24 | <hololeap> | like, if I say: a = ['a','b','c']; b = a |
| 08:46:34 | <hololeap> | will there be two copies of ['a','b','c'] in memory? |
| 08:46:42 | <c_wraith> | No. |
| 08:49:07 | <hololeap> | how about if I said: f (y:ys) = y:['q']; b = f a |
| 08:49:15 | <hololeap> | would there be two copies of 'a' in memory? |
| 08:50:38 | <int-e> | no. |
| 08:50:54 | <c_wraith> | in general, if you're looking at it at an implementation level, variables in GHC correspond to pointers. |
| 08:51:09 | <int-e> | if you evaluate `b` that ends up as ['a','q'] where the 'a' is shared with the one in `a`. |
| 08:51:45 | <hololeap> | ok. that pretty much answers my question. |
| 08:51:47 | <hololeap> | ty! |
| 08:51:53 | × | Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:52:06 | <hololeap> | that's what I thought but I had to confirm |
| 08:53:25 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 08:53:33 | <int-e> | Keep in mind that lists are linked lists. Each evaluated non-empty list x:xs is a heap cell for the constructor : with a pointer to x and a pointer to xs. |
| 08:54:13 | <int-e> | and [x,y] is x:(y:[]) |
| 08:54:40 | <int-e> | so you can share list elements and list tails |
| 08:55:11 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 08:55:13 | <int-e> | > tails [1,2,3,4] -- lots of sharing here |
| 08:55:14 | <lambdabot> | [[1,2,3,4],[2,3,4],[3,4],[4],[]] |
| 08:55:24 | <int-e> | > inits [1,2,3,4] -- only elements are shared here |
| 08:55:25 | <lambdabot> | [[],[1],[1,2],[1,2,3],[1,2,3,4]] |
| 08:55:28 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:55:49 | <hololeap> | usually I assume ghc does the most sensible thing but sometimes I have to check :D |
| 08:56:16 | <int-e> | you can destroy sharing easily |
| 08:56:55 | <int-e> | map id xs will create a copy of xs sharing the elements but with an entirely new spine (all the : constructors) |
| 08:57:35 | <hololeap> | that's interesting |
| 08:57:50 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 08:59:13 | <hololeap> | does that ever become an issue? |
| 08:59:24 | <int-e> | (Hmm, unless GHC has a rewrite rule for `map id = id` somewhere; I don't know that.) |
| 08:59:34 | <hololeap> | or does the GC keep up with it |
| 09:00:41 | <hololeap> | I know gc thrash can be an issue in itself |
| 09:01:33 | <int-e> | if you use `coerce` a lot, convincing the compiler that `fmap coerce = coerce` can be very helpful. I've seen hacks around that in lens. |
| 09:02:28 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 09:02:43 | <int-e> | (`coerce` *operates* like `id` even though it changes the type) |
| 09:03:12 | <hololeap> | right, it's basically yelling at the compiler "these two things are the same thing!" |
| 09:03:58 | <hololeap> | or, I guess "these two representations of the same thing are equal" |
| 09:04:01 | <probie> | int-e: It doesn't have `map id = id` directly, but it may unfold to one. `map id xs` definitely reduces to at least `build (\c n -> foldr c n xs)`, and I think GHC might have rules that further reduce that to id |
| 09:04:24 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 264 seconds) |
| 09:09:09 | <int-e> | probie: Yeah there should be a rule to turn build + foldr back into id. So instead of `map id` I should probably use an ad-hoc recursive function, foo (x:xs) = x : foo xs; foo [] = [] |
| 09:12:13 | <hololeap> | is there any way in ghci to see if two variables point to the same data in memory? |
| 09:13:51 | <int-e> | kind of |
| 09:14:29 | <int-e> | there's `reallyUnsafePointerEquality` in GHC.Exts (or some abbreviation thereof, I can't look it up right now) |
| 09:15:17 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 09:15:44 | <int-e> | It can produce false negatives, and there are rare circumstances under which it can flip from true to false too. |
| 09:19:50 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 09:23:34 | → | acidjnk_new joins (~acidjnk@p200300d6e7283f423cf02b510a599160.dip0.t-ipconnect.de) |
| 09:27:20 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 09:30:31 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 09:31:27 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 09:31:53 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 244 seconds) |
| 09:31:53 | jmcantrell_ | is now known as jmcantrell |
| 09:31:55 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 09:38:53 | → | Digitteknohippie joins (~user@user/digit) |
| 09:40:39 | × | Digit quits (~user@user/digit) (Ping timeout: 276 seconds) |
| 09:41:51 | → | jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 09:42:45 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 09:44:44 | × | falafel quits (~falafel@2603:8000:b4f0:62a0:b2f3:1ea5:3edd:91fa) (Ping timeout: 260 seconds) |
| 09:47:29 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 09:50:29 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 244 seconds) |
| 09:50:33 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:52:06 | → | sprotte24 joins (~sprotte24@p200300d16f08ae001421f9574c92b051.dip0.t-ipconnect.de) |
| 09:52:17 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 09:58:07 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 09:59:57 | <probie> | There's a safe way to do it (dwelling in IO). I've done it before (although it has false negatives), I just can't remember it off the top of my head |
| 10:01:21 | × | housemate quits (~housemate@2001:8004:1680:927::12e) (Ping timeout: 248 seconds) |
| 10:04:06 | <Leary> | probie: Probably `StableName`. |
| 10:06:03 | → | mari-estel joins (~mari-este@user/mari-estel) |
| 10:07:45 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 10:08:06 | Digitteknohippie | is now known as Digit |
| 10:09:39 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 10:09:49 | <probie> | Leary: that's the one. I need a hoogle clone that searches my memory |
| 10:17:44 | → | Smiles joins (uid551636@id-551636.lymington.irccloud.com) |
| 10:19:04 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 10:24:53 | → | JuanDaugherty joins (~juan@user/JuanDaugherty) |
| 10:25:42 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 10:31:38 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2) |
| 10:32:11 | × | CrunchyFlakes quits (~CrunchyFl@31.19.233.78) (Read error: Connection reset by peer) |
| 10:32:42 | × | homo quits (~homo@user/homo) (Quit: homo) |
| 10:35:01 | → | CrunchyFlakes joins (~CrunchyFl@31.19.233.78) |
| 10:35:32 | → | homo joins (~homo@user/homo) |
| 10:39:06 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 10:43:26 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 10:48:16 | × | CiaoSen quits (~Jura@2a05:5800:209:ac00:ca4b:d6ff:fec1:99da) (Ping timeout: 272 seconds) |
| 10:49:53 | → | ubert joins (~Thunderbi@p200300ecdf117c5bfeb2bbe2c0c50acc.dip0.t-ipconnect.de) |
| 10:54:28 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 10:58:57 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 11:04:54 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 11:08:18 | → | __monty__ joins (~toonn@user/toonn) |
| 11:09:41 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 11:11:39 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 11:20:18 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 11:25:18 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 11:33:09 | arthurvl | is now known as earthy |
| 11:35:41 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 11:40:05 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 11:40:15 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 11:47:07 | × | mari-estel quits (~mari-este@user/mari-estel) () |
| 11:51:04 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 11:55:22 | × | sprotte24 quits (~sprotte24@p200300d16f08ae001421f9574c92b051.dip0.t-ipconnect.de) (Quit: Leaving) |
| 11:57:53 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
| 11:59:43 | → | __monty_1 joins (~toonn@user/toonn) |
| 12:00:54 | × | __monty__ quits (~toonn@user/toonn) (Killed (NickServ (GHOST command used by __monty_1))) |
| 12:00:59 | __monty_1 | is now known as __monty__ |
| 12:01:50 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:05:45 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 12:05:53 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 12:09:09 | → | CiaoSen joins (~Jura@2a05:5800:209:ac00:ca4b:d6ff:fec1:99da) |
| 12:10:21 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 12:20:46 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 12:21:14 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 12:23:30 | → | xff0x joins (~xff0x@2405:6580:b080:900:33bd:b9d7:1cc6:1151) |
| 12:28:18 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 12:33:23 | → | housemate joins (~housemate@2001:8004:1680:45b::12e) |
| 12:35:40 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:39:21 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 12:41:38 | → | Digitteknohippie joins (~user@user/digit) |
| 12:42:58 | × | Digit quits (~user@user/digit) (Ping timeout: 252 seconds) |
| 12:43:42 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 12:46:00 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:50:34 | × | housemate quits (~housemate@2001:8004:1680:45b::12e) (Quit: Nothing to see here. I wasn't there. I take IRC seriously. https://files.catbox.moe/4e9k81.pdf) |
| 12:51:44 | Digitteknohippie | is now known as Digit |
| 12:54:44 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 12:54:49 | × | doyougnu quits (~doyougnu@syn-045-046-170-068.res.spectrum.com) (Ping timeout: 252 seconds) |
| 12:55:00 | → | doyougnu joins (~doyougnu@syn-045-046-170-068.res.spectrum.com) |
| 12:59:35 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 13:00:20 | × | ubert quits (~Thunderbi@p200300ecdf117c5bfeb2bbe2c0c50acc.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 13:06:53 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 13:07:37 | → | srazkvt joins (~sarah@user/srazkvt) |
| 13:11:13 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 13:16:45 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 13:22:16 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 13:22:30 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 13:23:25 | → | eL_Bart0 joins (eL_Bart0@dietunichtguten.org) |
| 13:25:37 | → | ubert joins (~Thunderbi@p200300ecdf117c5bcbacc4208e66254f.dip0.t-ipconnect.de) |
| 13:30:33 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 13:31:24 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 13:41:38 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 13:43:37 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 13:46:05 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 13:47:23 | → | ft joins (~ft@p508db9c7.dip0.t-ipconnect.de) |
| 13:51:45 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 13:57:01 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 13:58:58 | × | GdeVolpiano quits (~GdeVolpia@user/GdeVolpiano) (Read error: Connection reset by peer) |
| 13:59:40 | → | GdeVolpiano joins (~GdeVolpia@user/GdeVolpiano) |
| 14:01:47 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 14:04:47 | × | tinjamin4 quits (~tinjamin@banshee.h4x0r.space) (Quit: The Lounge - https://thelounge.chat) |
| 14:06:32 | → | tinjamin4 joins (~tinjamin@banshee.h4x0r.space) |
| 14:06:43 | → | Fabric joins (~Fabric@167.136.189.80.dyn.plus.net) |
| 14:06:59 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2) |
| 14:07:14 | → | simplystuart joins (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) |
| 14:07:52 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 14:12:19 | × | vpan quits (~vpan@212.117.1.172) (Quit: Leaving.) |
| 14:12:30 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 14:18:59 | → | dpratt joins (~dpratt@165.225.220.148) |
| 14:23:25 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 14:25:09 | → | weary-traveler joins (~user@user/user363627) |
| 14:26:09 | × | simplystuart quits (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Ping timeout: 246 seconds) |
| 14:26:32 | → | simplystuart joins (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) |
| 14:27:56 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 14:30:34 | × | CiaoSen quits (~Jura@2a05:5800:209:ac00:ca4b:d6ff:fec1:99da) (Ping timeout: 260 seconds) |
| 14:44:17 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 14:49:24 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 14:54:24 | → | rekahsoft joins (~rekahsoft@bras-base-orllon1103w-grc-06-76-69-85-220.dsl.bell.ca) |
| 14:55:08 | × | mceresa quits (~mceresa@user/mceresa) (Remote host closed the connection) |
| 14:56:26 | → | mceresa joins (~mceresa@user/mceresa) |
| 14:57:50 | × | dpratt quits (~dpratt@165.225.220.148) (Quit: Client closed) |
| 14:59:05 | × | alp quits (~alp@2001:861:8ca0:4940:1c03:a77a:acae:42) (Remote host closed the connection) |
| 14:59:24 | → | alp joins (~alp@2001:861:8ca0:4940:fe35:b2c7:be3f:81c) |
| 14:59:40 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 15:00:47 | × | alp quits (~alp@2001:861:8ca0:4940:fe35:b2c7:be3f:81c) (Remote host closed the connection) |
| 15:01:06 | → | alp joins (~alp@2001:861:8ca0:4940:c731:528a:cc7b:83c4) |
| 15:02:28 | × | alp quits (~alp@2001:861:8ca0:4940:c731:528a:cc7b:83c4) (Remote host closed the connection) |
| 15:02:47 | → | alp joins (~alp@2001:861:8ca0:4940:6356:ce55:f764:8f07) |
| 15:04:09 | × | alp quits (~alp@2001:861:8ca0:4940:6356:ce55:f764:8f07) (Remote host closed the connection) |
| 15:04:29 | → | alp joins (~alp@2001:861:8ca0:4940:1fde:7520:470c:b702) |
| 15:04:59 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 15:05:50 | × | alp quits (~alp@2001:861:8ca0:4940:1fde:7520:470c:b702) (Remote host closed the connection) |
| 15:06:09 | → | alp joins (~alp@2001:861:8ca0:4940:a0f8:bb83:fcc1:1af2) |
| 15:07:31 | × | alp quits (~alp@2001:861:8ca0:4940:a0f8:bb83:fcc1:1af2) (Remote host closed the connection) |
| 15:07:49 | → | alp joins (~alp@2001:861:8ca0:4940:368f:e308:67fd:150f) |
| 15:08:54 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 15:09:31 | → | alp_ joins (~alp@2001:861:8ca0:4940:bbaf:78a6:fe4b:94e9) |
| 15:10:54 | × | alp_ quits (~alp@2001:861:8ca0:4940:bbaf:78a6:fe4b:94e9) (Remote host closed the connection) |
| 15:11:12 | → | alp_ joins (~alp@2001:861:8ca0:4940:3ebc:4e24:bba7:15f2) |
| 15:12:08 | × | ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
| 15:12:35 | × | alp_ quits (~alp@2001:861:8ca0:4940:3ebc:4e24:bba7:15f2) (Remote host closed the connection) |
| 15:12:52 | × | alp quits (~alp@2001:861:8ca0:4940:368f:e308:67fd:150f) (Ping timeout: 252 seconds) |
| 15:12:52 | → | alp_ joins (~alp@2001:861:8ca0:4940:86cd:64ae:1e47:4ab3) |
| 15:14:35 | → | alp__ joins (~alp@128-79-174-146.hfc.dyn.abo.bbox.fr) |
| 15:15:28 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 15:17:41 | × | alp_ quits (~alp@2001:861:8ca0:4940:86cd:64ae:1e47:4ab3) (Ping timeout: 252 seconds) |
| 15:18:18 | × | acidjnk_new quits (~acidjnk@p200300d6e7283f423cf02b510a599160.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 15:18:54 | → | dpratt joins (~dpratt@165.225.220.148) |
| 15:19:32 | × | remexre quits (~remexre@user/remexre) (Ping timeout: 252 seconds) |
| 15:19:34 | × | dpratt quits (~dpratt@165.225.220.148) (Client Quit) |
| 15:20:00 | → | dpratt joins (~dpratt@165.225.220.148) |
| 15:24:33 | × | dostoevsky quits (~dostoevsk@user/dostoevsky) (Quit: dostoevsky) |
| 15:26:09 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 15:26:15 | × | dostoevsky quits (~dostoevsk@user/dostoevsky) (Max SendQ exceeded) |
| 15:26:53 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 15:26:57 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 15:27:03 | × | dostoevsky quits (~dostoevsk@user/dostoevsky) (Max SendQ exceeded) |
| 15:27:35 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 15:27:43 | × | dostoevsky quits (~dostoevsk@user/dostoevsky) (Max SendQ exceeded) |
| 15:31:05 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 15:31:33 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 15:34:35 | × | dpratt quits (~dpratt@165.225.220.148) (Quit: Client closed) |
| 15:40:49 | × | srazkvt quits (~sarah@user/srazkvt) (Quit: Konversation terminated!) |
| 15:44:50 | × | simplystuart quits (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Ping timeout: 252 seconds) |
| 15:45:13 | → | simplystuart joins (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) |
| 15:45:46 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:47:15 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 15:49:57 | × | dostoevsky quits (~dostoevsk@user/dostoevsky) (Quit: dostoevsky) |
| 15:51:48 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 15:55:09 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 15:55:29 | × | dostoevsky quits (~dostoevsk@user/dostoevsky) (Client Quit) |
| 15:57:34 | → | mari-estel joins (~mari-este@user/mari-estel) |
| 15:58:07 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 15:59:01 | × | dostoevsky quits (~dostoevsk@user/dostoevsky) (Remote host closed the connection) |
| 16:01:23 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 16:01:56 | × | dostoevsky quits (~dostoevsk@user/dostoevsky) (Remote host closed the connection) |
| 16:02:38 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 16:05:44 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 16:06:52 | × | dostoevsky quits (~dostoevsk@user/dostoevsky) (Remote host closed the connection) |
| 16:07:11 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 16:08:10 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 16:09:53 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 16:13:40 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:14:32 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 16:15:20 | → | housemate joins (~housemate@2001:8004:1680:2767:7a79:ea75:6048:3bdc) |
| 16:16:47 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 16:17:58 | × | dostoevsky quits (~dostoevsk@user/dostoevsky) (Quit: Leaving) |
| 16:18:17 | → | dostoevsky joins (~dostoevsk@user/dostoevsky) |
| 16:25:15 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 16:28:42 | → | acidjnk_new joins (~acidjnk@p200300d6e7283f423cf02b510a599160.dip0.t-ipconnect.de) |
| 16:29:34 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 16:29:53 | → | Digitteknohippie joins (~user@user/digit) |
| 16:31:02 | × | Digit quits (~user@user/digit) (Ping timeout: 252 seconds) |
| 16:38:25 | × | housemate quits (~housemate@2001:8004:1680:2767:7a79:ea75:6048:3bdc) (Quit: Nothing to see here. I wasn't there. I take IRC seriously. https://files.catbox.moe/4e9k81.pdf) |
| 16:40:16 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:40:37 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 16:42:56 | × | mari-estel quits (~mari-este@user/mari-estel) () |
| 16:45:09 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 16:46:33 | → | sprotte24 joins (~sprotte24@p200300d16f08ae0004e79d08210c66b3.dip0.t-ipconnect.de) |
| 16:48:17 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 248 seconds) |
| 16:56:00 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 16:58:52 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 17:00:21 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 17:01:38 | Digitteknohippie | is now known as Digit |
| 17:09:38 | → | machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net) |
| 17:10:53 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 17:16:18 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 17:16:26 | → | sonolin joins (~michael@user/sonolin) |
| 17:20:50 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 17:21:16 | → | remexre joins (~remexre@user/remexre) |
| 17:23:36 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 244 seconds) |
| 17:26:26 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 17:31:42 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 17:34:40 | × | simplystuart quits (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Ping timeout: 244 seconds) |
| 17:34:51 | × | machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Remote host closed the connection) |
| 17:35:11 | → | machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net) |
| 17:39:10 | × | zenmov quits (~zenmov@user/zenmov) (Ping timeout: 252 seconds) |
| 17:40:20 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 17:43:42 | → | zenmov joins (~zenmov@user/zenmov) |
| 17:44:01 | × | acidjnk_new quits (~acidjnk@p200300d6e7283f423cf02b510a599160.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 17:44:19 | → | acidjnk_new joins (~acidjnk@p200300d6e7283f42ed270669e8aec613.dip0.t-ipconnect.de) |
| 17:44:47 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 17:50:04 | → | simplystuart joins (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) |
| 17:54:34 | × | simplystuart quits (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Ping timeout: 245 seconds) |
| 17:55:43 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 17:58:06 | → | OftenFaded joins (~OftenFade@user/tisktisk) |
| 18:00:21 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 18:00:30 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds) |
| 18:09:21 | → | simplystuart joins (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) |
| 18:09:55 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 18:10:43 | × | jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: My Mac has gone to sleep. ZZZzzz…) |
| 18:11:04 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds) |
| 18:11:05 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 18:13:42 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 18:14:46 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds) |
| 18:15:04 | Lord_of_Life_ | is now known as Lord_of_Life |
| 18:15:44 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 18:26:29 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 18:30:52 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 18:35:16 | → | ash3en joins (~Thunderbi@146.70.124.222) |
| 18:36:31 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 18:40:04 | × | meooow_ quits (~meooow@165.232.184.169) (Quit: q) |
| 18:40:19 | → | meooow joins (~meooow@2400:6180:100:d0::ad9:e001) |
| 18:40:42 | → | zenmov_ joins (~zenmov@user/zenmov) |
| 18:40:46 | × | zenmov quits (~zenmov@user/zenmov) (Ping timeout: 252 seconds) |
| 18:41:13 | × | acidjnk_new quits (~acidjnk@p200300d6e7283f42ed270669e8aec613.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 18:41:51 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 18:42:35 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 18:43:04 | → | Digitteknohippie joins (~user@user/digit) |
| 18:44:08 | × | Digit quits (~user@user/digit) (Ping timeout: 252 seconds) |
| 18:44:09 | × | tdammers quits (~tdammers@110-136-178-143.ftth.glasoperator.nl) (Ping timeout: 245 seconds) |
| 18:46:41 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 18:50:24 | → | arjun joins (~arjun@user/arjun) |
| 18:53:57 | <tomsmeding> | Has anyone ever seen a ghcup installation on windows with C:\ghcup\bin\ghcup\bin\cabal.exe ? |
| 18:54:31 | <tomsmeding> | in particular there's a C:\ghcup\bin\cabal.exe AND a C:\ghcup\bin\ghcup\bin\cabal.exe on this person's machine |
| 18:57:28 | → | tdammers joins (~tdammers@110-136-178-143.ftth.glasoperator.nl) |
| 18:57:33 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 19:01:57 | × | arjun quits (~arjun@user/arjun) (Quit: Leaving) |
| 19:02:09 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 19:02:59 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 19:03:03 | × | ash3en quits (~Thunderbi@146.70.124.222) (Quit: ash3en) |
| 19:06:51 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 19:08:21 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 19:10:39 | × | ubert quits (~Thunderbi@p200300ecdf117c5bcbacc4208e66254f.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 19:12:06 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 19:15:52 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 19:17:52 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 19:26:30 | → | __jmcantrell__ joins (~weechat@user/jmcantrell) |
| 19:26:32 | jmcantrell | is now known as Guest8945 |
| 19:26:32 | × | Guest8945 quits (644f1bed9a@user/jmcantrell) (Killed (copper.libera.chat (Nickname regained by services))) |
| 19:26:32 | __jmcantrell__ | is now known as jmcantrell |
| 19:26:41 | → | jmcantrell_ joins (644f1bed9a@user/jmcantrell) |
| 19:29:01 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 19:31:08 | <probie> | What's a good choice of data type for a list of fixed length with cheap updates? For very small lengths, `data Foo6 a = Foo6 a a a a a a` (or just a tuple), but what about larger lengths e.g. 65536 where "copy everything" becomes expensive |
| 19:32:42 | <probie> | A tree with a fixed branching factor probably works, but does involve a bit of indirection (although I guess that's probably necessary, since we need sharing to avoid copying unless we can guarantee linear use) |
| 19:32:51 | <glguy> | probie: Probably just a Map or IntMap |
| 19:33:14 | <glguy> | IntMap is likely faster for that case |
| 19:33:27 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 19:34:02 | <EvanR> | 65536 items with a known representation... a file xD |
| 19:34:08 | <tomsmeding> | frame challenge: mutable array in either ST or with -XLinearTypes |
| 19:34:14 | <EvanR> | moving files around and "copying" is cheap |
| 19:40:33 | × | robobub quits (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 19:43:03 | → | acidjnk_new joins (~acidjnk@p200300d6e7283f42593f59da3b296f97.dip0.t-ipconnect.de) |
| 19:44:22 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 19:49:13 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 19:49:41 | <probie> | glguy: `IntMap` works, but I don't think a patricia tree is optimal for "dense" keys. I guess I should probably write my fixed branching tree based "list" and then benchmark it against it `IntMap` |
| 19:52:48 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 19:54:18 | × | zzz quits (~z@user/zero) (Quit: quit) |
| 19:56:33 | <tomsmeding> | does it need to be pure? |
| 19:56:41 | <tomsmeding> | (immutable) |
| 19:56:59 | → | zero joins (~z@user/zero) |
| 19:57:37 | → | mastarija joins (~mastarija@42-117.dsl.iskon.hr) |
| 19:58:12 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 252 seconds) |
| 19:58:45 | <mastarija> | If I understand correctly, ReadPrec allows for precedence parsing, right? But what about operator associativity? Can I just lift chainl1 and chainr1? |
| 19:58:59 | × | OftenFaded quits (~OftenFade@user/tisktisk) (Quit: Client closed) |
| 19:59:03 | Digitteknohippie | is now known as Digit |
| 19:59:12 | × | zero quits (~z@user/zero) (Client Quit) |
| 19:59:48 | <haskellbridge> | <Bowuigi> For operator associativity you are supposed to use readPrec instead of the chains IIRC |
| 19:59:54 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 20:00:04 | × | caconym quits (~caconym@user/caconym) (Quit: bye) |
| 20:00:05 | <haskellbridge> | <Bowuigi> At least that's how it works in Hugs98 |
| 20:00:42 | → | caconym joins (~caconym@user/caconym) |
| 20:00:50 | → | zero joins (~z@user/zero) |
| 20:01:59 | <mastarija> | Hm... I thought ReadPrec only deals with the operator precedence, not associativity. I don't see any way to deal with associativity with just precedence. |
| 20:02:09 | × | iteratee quits (~kyle@162.218.222.207) (Ping timeout: 246 seconds) |
| 20:04:11 | <haskellbridge> | <Bowuigi> You call readPrec with the same precedence on the side where you associate and with one less in the other side |
| 20:04:17 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 20:04:56 | <probie> | tomsmeding: Yes. I should be able to write something like `f x = (x, set 42 "foo" x)` without having the first part of the returned tuple blow up in my face |
| 20:05:22 | <tomsmeding> | probie: I see, then some tree structure is indeed what you have to reach for |
| 20:06:05 | <tomsmeding> | how high the branching factor should be is possibly machine-dependent >:) |
| 20:06:22 | <haskellbridge> | <Bowuigi> re:readPrec Actually I think it's one more, not one less, this is always confusing lmao |
| 20:06:52 | <tomsmeding> | one more, indeed, to make sure that if you see the same operator on that side, it puts parens around itself |
| 20:06:54 | <mastarija> | haskellbridge, yeah... I just wanted to ask, since I only see step and reset functions |
| 20:07:29 | <tomsmeding> | this is parallel with showsPrec |
| 20:07:54 | × | tdammers quits (~tdammers@110-136-178-143.ftth.glasoperator.nl) (Ping timeout: 244 seconds) |
| 20:08:21 | <mastarija> | tomsmeding, not sure what you mean by that |
| 20:08:35 | <tomsmeding> | yeah sorry I was confused and was talking about showsPrec :) |
| 20:08:41 | <tomsmeding> | but the dual thing happens with readPrec |
| 20:08:43 | <mastarija> | ah.. np |
| 20:08:48 | → | tabemann_ joins (~tabemann@2600:1700:7990:24e0:73ec:4dd3:844e:8eb8) |
| 20:08:55 | → | ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) |
| 20:09:33 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:09:42 | → | iteratee joins (~kyle@162.218.222.207) |
| 20:10:02 | <tomsmeding> | if, say, (-) is left-associative (i.e. a - b - c means (a - b) - c) at level 4, then 'showsPrec d' of (-) would do: showParen (d > 4) $ showsPrec 4 a . showString " - " . showsPrec 5 b |
| 20:10:24 | <tomsmeding> | so that if another (-) occurs on the left-hand side, then it's printed without parens, but if another (-) occurs on the right-hand side, it's printed _with_ parens |
| 20:10:41 | <mastarija> | Anyway, I'm writing a little project for students, and usually I go with parsec, but I've noticed the ReadPrec the other day in base, and thought I'd use that to require less dependencies (which students always mess up) |
| 20:10:49 | <tomsmeding> | exercise to the reader: convert this to readPrec, because I'm too lazy to look up the exact function signatures :) |
| 20:11:12 | <tomsmeding> | parsec is in the boot libs, so students can use that by just running plain ghc |
| 20:11:14 | × | tabemann quits (~tabemann@2600:1700:7990:24e0:39a4:2ebe:705f:fb9f) (Ping timeout: 260 seconds) |
| 20:11:20 | <tomsmeding> | no need for cabal, if you want to avoid that |
| 20:11:50 | <mastarija> | Really, when did that change? |
| 20:11:57 | <tomsmeding> | uh, decades ago? :p |
| 20:12:03 | <tomsmeding> | https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history |
| 20:12:14 | <mastarija> | Hm... I do remember 3 years ago a few students had issues with that. |
| 20:12:34 | <tomsmeding> | ah no, ghc 8.4.1 |
| 20:12:40 | <mastarija> | Whenever I use something that's not in base there are problems. |
| 20:12:46 | <tomsmeding> | was the first to have a parsec as a bootlib, according to that table |
| 20:13:06 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 20:13:16 | <tomsmeding> | which was released March 2018 |
| 20:13:22 | <monochrom> | I bet the few students used debian/ubuntu and merely did `apt install ghc` therefore obtaining a version outdated by 2 decades. |
| 20:13:26 | <tomsmeding> | possibly some students were stuck with ancient debians? |
| 20:13:28 | <tomsmeding> | yes |
| 20:13:47 | <tomsmeding> | 2018 is not even decades old, that would be good by debian's standards |
| 20:14:02 | <mastarija> | Well, I'll go with ReadPrec just for my own exercise xD |
| 20:14:18 | <mastarija> | Now I'm into it already. |
| 20:14:48 | <mastarija> | Could come in handy on the job as well. |
| 20:15:48 | <haskellbridge> | <Bowuigi> Oh also |
| 20:16:01 | <haskellbridge> | <Bowuigi> ReadPrec itself is somewhat incomplete |
| 20:16:32 | <haskellbridge> | <Bowuigi> You have to lift methods from ReadP if you want chains, many, etc |
| 20:16:34 | <mastarija> | Yeah I can see from the very barebones api |
| 20:17:00 | <mastarija> | Text.Read has a few useful ReadPrec utilities as far as I can see. |
| 20:17:07 | <haskellbridge> | <Bowuigi> I'd suggest using ReadP only |
| 20:17:55 | <mastarija> | Yehah. I'll see. |
| 20:18:15 | <haskellbridge> | <Bowuigi> Using readPrec_to_P to convert stuff from ReadPrec by itself if you want to use Text.Read too |
| 20:18:33 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:19:50 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 20:20:29 | × | CrunchyFlakes quits (~CrunchyFl@31.19.233.78) (Read error: Connection reset by peer) |
| 20:21:02 | × | ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
| 20:21:05 | → | tdammers joins (~tdammers@110-136-178-143.ftth.glasoperator.nl) |
| 20:22:03 | <haskellbridge> | <Bowuigi> Oddly enough it would be easy to make the dual of the showsPrec API and even do both at once with some magic |
| 20:22:52 | → | CrunchyFlakes joins (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) |
| 20:23:46 | <haskellbridge> | <Bowuigi> Oh nvm maybe not doing both at the same time, one requires pattern matching and the other requires construction. Another problem to be solved by row types I guess |
| 20:25:40 | <mastarija> | I thought I've seen something like that recently? |
| 20:26:07 | <mastarija> | Like, we can get both parser and renderer from the same combinators, no? |
| 20:26:28 | <mastarija> | Not in the base ofc, but I thought someone posted something like that. |
| 20:26:46 | × | Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 20:28:04 | <geekosaur> | "bidirectional parsing" is what it's often called |
| 20:28:24 | × | tdammers quits (~tdammers@110-136-178-143.ftth.glasoperator.nl) (Ping timeout: 246 seconds) |
| 20:30:44 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 20:33:13 | <mastarija> | Hm... I don't quite understand the `prec` function. It will parse only if the current precedence level is what we've given it, but the example in the Text.Read docs seems like it uses it to set the precedence of the operator. If we work with a deeply nested structure the `step` will potentially go over the precedence limit. |
| 20:33:47 | <mastarija> | At least, that's what I see from the example, perhaps I don't understand. |
| 20:34:59 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 20:36:19 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:41:40 | → | tdammers joins (~tdammers@110-136-178-143.ftth.glasoperator.nl) |
| 20:42:43 | <glguy> | Which example are you looking at? |
| 20:46:07 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 20:46:21 | <mastarija> | glguy, the very first example in the Text.Read module. |
| 20:46:26 | <mastarija> | And only example I think. |
| 20:46:52 | <mastarija> | There's the ReadS version and the ReadPrec version |
| 20:47:04 | <glguy> | Ok, can you paste the link to the thing you're asking about? |
| 20:47:11 | <mastarija> | Yup, just a sec. |
| 20:47:32 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:47:38 | <mastarija> | https://hackage.haskell.org/package/base-4.20.0.1/docs/Text-Read.html |
| 20:48:20 | <mastarija> | glguy, the prec function is in this module: https://hackage.haskell.org/package/base-4.20.0.1/docs/Text-Read.html |
| 20:48:29 | <mastarija> | Oops. |
| 20:48:35 | <glguy> | It looks like it uses the same prec argument over and over |
| 20:49:01 | <mastarija> | https://hackage.haskell.org/package/base-4.20.0.1/docs/Text-ParserCombinators-ReadPrec.html#v:prec |
| 20:49:30 | <mastarija> | glguy, yes, but it also uses the `step` to advance the precedence every time it goes deeper. |
| 20:49:54 | <mastarija> | So at some point, precedence will grow over what's specified by the fixed `prec` parser. |
| 20:50:03 | <mastarija> | And I don't see how that makes sense. |
| 20:51:33 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds) |
| 20:53:05 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 20:53:19 | <mastarija> | Hm... perhaps, I think it's starting to make sense... xD |
| 20:53:45 | <mastarija> | Nope, lost it. |
| 20:55:45 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds) |
| 20:56:43 | <glguy> | I think it's designed like that because it says it's NOT using the right associativity of :^: |
| 20:57:16 | <glguy> | So it's increasing to a precedence where another :^: will fail to parse without intervening ()s |
| 20:57:30 | <glguy> | But I'm looking at this from my phone and I'm not that clear on it |
| 20:57:59 | <mastarija> | Like, it looks to me that at a certain depth it'll just stop parsing. |
| 21:00:41 | <glguy> | The depth gets reset by parens |
| 21:01:08 | <mastarija> | I'm looking at it's code, and I don't see any depth resetting. |
| 21:01:41 | × | kimiamania quits (~65804703@user/kimiamania) (Quit: PegeLinux) |
| 21:01:50 | <mastarija> | Ohh... |
| 21:01:57 | <mastarija> | It's in the paren' |
| 21:02:04 | → | kimiamania joins (~65804703@user/kimiamania) |
| 21:02:05 | <mastarija> | I see the reset. |
| 21:04:09 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 21:08:36 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 21:13:47 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:13:49 | → | harveypwca joins (~harveypwc@2601:246:d080:b40:1889:d9bf:2dd8:b288) |
| 21:19:31 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 21:21:20 | × | homo quits (~homo@user/homo) (Quit: homo) |
| 21:24:36 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 21:25:58 | × | Leary quits (~Leary@user/Leary/x-0910699) (Remote host closed the connection) |
| 21:28:48 | <hellwolf> | $ pointfree '\a -> a + a' |
| 21:28:48 | <hellwolf> | join (+) |
| 21:29:00 | <hellwolf> | :t join |
| 21:29:01 | <lambdabot> | Monad m => m (m a) -> m a |
| 21:29:07 | <hellwolf> | how does this make sense? where is the monad? |
| 21:29:36 | → | pavonia joins (~user@user/siracusa) |
| 21:29:53 | <int-e> | it's (r -> (r -> a)) -> (r -> a) |
| 21:30:19 | <hellwolf> | Reader monad? |
| 21:30:22 | <int-e> | yep |
| 21:30:29 | <hellwolf> | how does GHC infer that far |
| 21:30:42 | <hellwolf> | mind blown. I can't explain that to newbies, let alone to myself. |
| 21:31:37 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 21:31:38 | <int-e> | when you unify m (m a) and a -> a -> a, the only choice for m is (a ->) |
| 21:31:57 | <int-e> | a -> a -> a coming from (+) :: Num a => a -> a -> a |
| 21:32:59 | <monochrom> | This is why I teach type inference explicitly (e.g., with unification). |
| 21:34:17 | <hellwolf> | i see, reading it step-by-step makes sense |
| 21:34:54 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 21:35:19 | <hellwolf> | this is probably not the best place to do pointfree style, arguably. but maybe it is just my level is not there yet. |
| 21:35:44 | <geekosaur> | most people agree with you, I think |
| 21:36:02 | <geekosaur> | the primitive reader monad is mostly obfuscation |
| 21:37:16 | <geekosaur> | ("primitive" = "not nicely wrapped in a newtype which would keep ghc from inferring it and confusing the hell out of you") |
| 21:38:40 | <hellwolf> | instance Monad ((->) r) where |
| 21:38:40 | <hellwolf> | f >>= k = \ r -> k (f r) r |
| 21:38:47 | <hellwolf> | src/GHC.Internal.Base.html#line-1453 |
| 21:39:23 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 21:39:26 | → | Leary joins (~Leary@user/Leary/x-0910699) |
| 21:39:36 | <geekosaur> | read it and weep 🙂 |
| 21:41:03 | <hellwolf> | the only thing actually catches the eyes of mine is the space between "\" and r... it makes me questioning my own coding style, where there is no space in between :D |
| 21:42:00 | <geekosaur> | I think most people don't use a space there |
| 21:42:11 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:43:14 | <geekosaur> | some of those choices are lost to history, though; that definition, while its current location is GHC-specific, was once shared between ghc, Hugs, and nhc98 |
| 21:43:32 | <geekosaur> | (the Hugs and nhc98 code was mostly ripped out years ago) |
| 21:44:05 | hellwolf | felt relieved |
| 21:44:51 | <hellwolf> | But what's the legit case of the reader monad... I wonder how a do notation block of such a monad would look like. |
| 21:47:00 | × | finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer) |
| 21:48:44 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 21:48:44 | <kaol> | It's like a single argument function body where every <- gets the argument's value. |
| 21:49:14 | × | michalz quits (~michalz@185.246.207.197) (Remote host closed the connection) |
| 21:50:18 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 21:51:59 | <kaol> | > (do { a <- fst ; b <- snd ; return $ a + b }) (1,2) |
| 21:52:00 | <lambdabot> | 3 |
| 21:52:06 | <monochrom> | The (->)e monad helps understand why and how "data P a = P a a" and "data S a = Cons a (S a)" are monads. Because P is (->)Bool and S is (->)Natural. |
| 21:52:17 | <hellwolf> | https://play.haskell.org/saved/NoOO2WnH |
| 21:52:23 | <hellwolf> | this is nuts, nutty code. but it works. |
| 21:52:40 | → | dpratt joins (~dpratt@165.225.220.148) |
| 21:52:52 | <hellwolf> | https://play.haskell.org/saved/DeEDElh3 |
| 21:52:59 | <hellwolf> | rewrite without the explicit ((->) form |
| 21:53:36 | <hellwolf> | ah, kaol you have a more succinct one. |
| 21:54:51 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 21:55:46 | <hellwolf> | but mine calls another "monad"... makes no sense, semantically. (as a human) if you are a living compiler, I don't judge. |
| 21:56:18 | <tomsmeding> | hellwolf: there's a certain specific, fairly common use of the reader monad: as a monad transformer over IO, i.e. `ReaderT r IO a`, which is newtype-unwrapped the same as `r -> IO a` |
| 21:56:35 | <kaol> | > ((+) <$> fst <*> snd) (1,2) -- My example didn't actually need the monad but hey |
| 21:56:36 | <lambdabot> | 3 |
| 21:56:55 | <tomsmeding> | a large fraction of haskell effects libraries use this as their base monad, where the `r` is some vector of IORefs containing the state for each effect in scope |
| 21:57:12 | <tomsmeding> | it's essentially an invisible argument to every function that can be "requested" inside the monad |
| 21:57:43 | <tomsmeding> | in Control.Monad(.Trans).Reader, the monad operation that gets this argument is `ask :: Reader r r` |
| 21:58:16 | <tomsmeding> | if you want more fun: do you know SKI combinators? K = return, S = (<*>) in the reader monad |
| 22:00:08 | <tomsmeding> | ( https://tech.fpcomplete.com/blog/2017/06/readert-design-pattern/ is sometimes cited in this context) |
| 22:00:52 | → | weary-traveler joins (~user@user/user363627) |
| 22:03:35 | → | OftenFaded joins (~OftenFade@user/tisktisk) |
| 22:03:38 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 244 seconds) |
| 22:03:38 | jmcantrell_ | is now known as jmcantrell |
| 22:04:54 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:05:41 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 22:07:58 | <kaol> | If you want to have more fun, check out Op in Data.Functor.Contravariant. Or go straight to the Data.Profunctor if you want to have the strong stuff. |
| 22:10:12 | × | simplystuart quits (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Remote host closed the connection) |
| 22:10:12 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 22:10:21 | × | dpratt quits (~dpratt@165.225.220.148) (Quit: Client closed) |
| 22:15:57 | × | remexre quits (~remexre@user/remexre) (Ping timeout: 276 seconds) |
| 22:18:35 | <mastarija> | haskellbridge, are you sure about calling the parser with the same precedence on the side where I associate? |
| 22:19:04 | <mastarija> | I'm looking at it, and the only conclusion I can come to is that it will get stuck in the infinite loop |
| 22:19:05 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 22:19:15 | <mastarija> | I've made a paste here: https://paste.tomsmeding.com/Q8thgs0a |
| 22:19:35 | <mastarija> | Line 474 |
| 22:19:37 | <glguy> | mastarija: haskellbridge isn't a person, the person it's bridging is listed in its message |
| 22:19:48 | <mastarija> | oh... -.- |
| 22:20:06 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
| 22:20:25 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 22:20:33 | <mastarija> | Bowuigi, not sure if it is correct that we just have to use the same precedence. |
| 22:20:40 | <glguy> | mastarija: I would expect it's OK to call recursively like that for right-associative things |
| 22:20:58 | <glguy> | but for left associative you'll need to structure things slightly differently to break the left-recursion trap |
| 22:20:59 | <mastarija> | Yeah. It is. |
| 22:21:03 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 22:21:31 | <mastarija> | Do you mean something like chainl does? |
| 22:21:39 | <glguy> | yes, like that |
| 22:25:09 | <tomsmeding> | classic parser things :) |
| 22:25:59 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 22:26:26 | <mastarija> | I mean, I've expected that, but I was under the impression that precedence parsers have some kind of magic. |
| 22:26:30 | <mastarija> | Now I'm disappointed. |
| 22:26:36 | <glguy> | Instead of using a parser generator, parser combinators make you act as the parser generator |
| 22:26:48 | <glguy> | it's a big savings for the computer |
| 22:27:03 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 246 seconds) |
| 22:27:03 | <tomsmeding> | well if someone implemented an actual expression parser for you, then they handled this for you already :0 |
| 22:27:05 | <tomsmeding> | * :p |
| 22:27:24 | <tomsmeding> | passing of precedence numbers down is just a crude tool |
| 22:27:37 | <tomsmeding> | you can write your own buildExpressionParser that uses chainl when necessary ;) |
| 22:28:06 | <glguy> | Yes, even better than using a parser generator or being a parser generator is writing a new one! |
| 22:28:13 | <mastarija> | Are there any examples when we need to mix left, right and no associative operators? |
| 22:28:17 | <tomsmeding> | more fun for sure |
| 22:28:33 | <tomsmeding> | a ^ 2 + b ^ 2 == c ^ 2 |
| 22:28:42 | <tomsmeding> | (^) is right-associative, (+) is left, (==) is non |
| 22:29:06 | <mastarija> | I've meant about the expression parser implementation and how to structure chainl and chainrs |
| 22:29:08 | <tomsmeding> | I guess it doesn't matter for (+), but for (-) it would |
| 22:29:34 | <tomsmeding> | you could check how parsec implements buildExpressionParser I guess? |
| 22:30:00 | <glguy> | To really do fully general mixing you need to parse without any fixities and then post-process them afaik |
| 22:31:07 | <monochrom> | If (+) is lower than (*), I just code: additive = chainl1 multiplicative (operator "+" *> pure (+)); multiplicative = chainl1 base (operator "*" *> pure (*)) |
| 22:31:34 | <monochrom> | In general, precedence levels become call dependency. |
| 22:32:32 | <glguy> | If you are parsing a fixed set of operators you can encode the different left/right/none fixities directly into the parser |
| 22:32:36 | <monochrom> | "higher" precedence = binds tighter = closer to bottom of the food chain. |
| 22:32:43 | <mastarija> | I have fixed set of operators. |
| 22:33:42 | <glguy> | stick to each precedence level having a consistent left/right/none level |
| 22:33:46 | <geekosaur> | you can also do that if you require they be declared before use, though, by mutating a table in the parser. ghc postprocesses because the Haskell standard allows you to do things like putting the fixity declaration on the opposite side of the file from the operator definition |
| 22:34:01 | <geekosaur> | and doesn't require declaration before use |
| 22:35:57 | <mastarija> | Dang it. I even derived the Enum and Bounded instances hoping I can just do fmap with a bin op maker over a list of operator tags and call it a day. |
| 22:36:04 | <mastarija> | Guess I'll have to do it by hand. |
| 22:36:36 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 22:40:30 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:40:51 | × | todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in) |
| 22:41:18 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 22:49:49 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 22:49:57 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 22:51:42 | → | dsrt^ joins (~dsrt@c-98-242-74-66.hsd1.ga.comcast.net) |
| 22:51:59 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 22:55:04 | × | mastarija quits (~mastarija@42-117.dsl.iskon.hr) (Quit: Leaving) |
| 22:56:27 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 22:58:48 | × | briandaed quits (~root@user/briandaed) (Quit: Lost terminal) |
| 22:59:21 | × | machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Quit: Lost terminal) |
| 22:59:41 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 23:00:11 | → | machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net) |
| 23:07:22 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 23:08:07 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 23:11:54 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 23:15:20 | × | Spawns_Carpeting quits (~mobile@user/spawns-carpeting/x-6969421) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in) |
| 23:19:21 | → | Spawns_Carpeting joins (~mobile@user/spawns-carpeting/x-6969421) |
| 23:20:02 | → | homo joins (~homo@37-33-208-60.bb.dnainternet.fi) |
| 23:20:33 | × | homo quits (~homo@37-33-208-60.bb.dnainternet.fi) (Changing host) |
| 23:20:33 | → | homo joins (~homo@user/homo) |
| 23:20:34 | → | sindu joins (~sindu@176.75.224.1) |
| 23:22:45 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 23:29:24 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 23:29:58 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 245 seconds) |
| 23:40:02 | × | toch quits (~toch@user/toch) (Ping timeout: 252 seconds) |
| 23:40:48 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 23:41:00 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:45:25 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 23:45:44 | <haskellbridge> | <Bowuigi> @irc_libera.chat_mastarija:kf8nh.com re:precedence/associativity it has to be the same precedence for right associativity, but for left assoc you have to left factor it |
| 23:46:23 | <haskellbridge> | <Bowuigi> That's what chainl1 does in parsing libraries |
| 23:47:15 | <geekosaur> | they left |
| 23:47:21 | <geekosaur> | and irc isn't persistent |
| 23:48:06 | <haskellbridge> | <Bowuigi> Ah, I guess I mostly just repeated what was already said though |
| 23:48:36 | → | dpratt joins (~dpratt@165.225.220.148) |
| 23:52:39 | <haskellbridge> | <Bowuigi> Anyway, if anyone is interested in building an expression parser of any kind without buildExpressionParser, the paper "Parsing Mixfix Operators" by N. A. Danielsson and U. Norell suggests an easy to understand and reuse method that works for both the usual expressions and more general ones with mixfix operators (like if_then_else_, let_=_in_;_, etc) |
| 23:53:25 | <haskellbridge> | <Bowuigi> You can use their principles to implement 90-95% of the parser of a functional language in a maintainable and fast way. Heavily recommended |
| 23:54:32 | <dpratt> | So I am still stuck on day 12 (part 1!) of the AoC problems. Unfortunately, my code produces the correct answer for the test input. I have also confirmed that (a) the total area of the identified regions is correct and (b) that several "spot-checked" calculations of perimeter and area of individual regions are correct. The current code is here: |
| 23:54:32 | <dpratt> | https://gist.github.com/dgpratt/86b713c7dfadc748ae05fa1021750bb2 |
| 23:54:33 | <dpratt> | If anyone has suggestions as to an approach to sus out the problem, I would be grateful. |
| 23:55:16 | → | merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl) |
| 23:57:33 | → | __jmcantrell__ joins (~weechat@user/jmcantrell) |
| 23:57:35 | jmcantrell | is now known as Guest1761 |
| 23:57:35 | × | Guest1761 quits (644f1bed9a@user/jmcantrell) (Killed (molybdenum.libera.chat (Nickname regained by services))) |
| 23:57:35 | __jmcantrell__ | is now known as jmcantrell |
| 23:57:45 | → | jmcantrell_ joins (644f1bed9a@user/jmcantrell) |
| 23:59:53 | × | merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
All times are in UTC on 2024-12-13.