2024-11-08 00:00:45 +0100 | notzmv | (~daniel@user/notzmv) notzmv |
2024-11-08 00:04:34 +0100 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2024-11-08 00:04:38 +0100 | pnotequalnp | (~pnotequal@user/pnotequalnp) pnotequalnp |
2024-11-08 00:06:47 +0100 | <yin> | this is fun!: i have a bidirectional pattern synonym and try to use record update syntax like `MyPattern { x = ... }` i can get the error `constructor MyPattern does not have field 'x'` |
2024-11-08 00:07:10 +0100 | <yin> | the solution: `(MyPattern) { x = ... }` |
2024-11-08 00:07:46 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 272 seconds) |
2024-11-08 00:07:47 +0100 | ljdarj1 | ljdarj |
2024-11-08 00:08:19 +0100 | xff0x | (~xff0x@2405:6580:b080:900:759a:e3d6:c0c3:b78a) (Ping timeout: 260 seconds) |
2024-11-08 00:08:24 +0100 | <yin> | this feels kind of lispy |
2024-11-08 00:09:42 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 00:10:51 +0100 | <yin> | also feels like PatternSynonyms could be patched to allow the former |
2024-11-08 00:11:07 +0100 | pnotequalnp44 | (~pnotequal@user/pnotequalnp) pnotequalnp |
2024-11-08 00:11:57 +0100 | pnotequalnp | (~pnotequal@user/pnotequalnp) (Ping timeout: 256 seconds) |
2024-11-08 00:13:02 +0100 | pavonia | (~user@user/siracusa) siracusa |
2024-11-08 00:13:49 +0100 | pnotequalnp44 | (~pnotequal@user/pnotequalnp) (Client Quit) |
2024-11-08 00:15:00 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-08 00:21:07 +0100 | xff0x | (~xff0x@2405:6580:b080:900:759a:e3d6:c0c3:b78a) |
2024-11-08 00:21:18 +0100 | supercode | (~supercode@user/supercode) supercode |
2024-11-08 00:23:29 +0100 | CoolMa7 | (~CoolMa7@ip5f5b8957.dynamic.kabel-deutschland.de) (Quit: My Mac has gone to sleep. ZZZzzz…) |
2024-11-08 00:23:46 +0100 | supercode | (~supercode@user/supercode) (Client Quit) |
2024-11-08 00:25:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 00:30:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-08 00:31:59 +0100 | son0p | (~ff@186.121.30.70) son0p |
2024-11-08 00:32:34 +0100 | <c_wraith> | that definitely sounds like a feature it should have. |
2024-11-08 00:32:54 +0100 | <c_wraith> | If it allows you to create a record pattern, it should use the same syntax as a record pattern... |
2024-11-08 00:33:05 +0100 | <monochrom> | To me it feels like kind of CPP. "#define add(x,y) ((x)+(y))" :) |
2024-11-08 00:33:49 +0100 | <monochrom> | PPP = pattern pre-processor >:) |
2024-11-08 00:36:51 +0100 | <geekosaur> | record update syntax is a bit weird |
2024-11-08 00:37:38 +0100 | <c_wraith> | like at the parser level? |
2024-11-08 00:37:41 +0100 | <monochrom> | It's probably a simple oversight in the parser. |
2024-11-08 00:38:00 +0100 | Leary | (~Leary@user/Leary/x-0910699) Leary |
2024-11-08 00:39:37 +0100 | <geekosaur> | yeh, it's probably missing a case for patsyns so it makes you fall into the parenthesized expression case |
2024-11-08 00:42:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 00:44:33 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
2024-11-08 00:44:34 +0100 | <geekosaur> | they left |
2024-11-08 00:44:38 +0100 | <geekosaur> | whoops |
2024-11-08 00:47:13 +0100 | <geekosaur> | anyway it sounds like someone should file a bug on gitlab |
2024-11-08 00:50:57 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 00:57:10 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2024-11-08 01:00:29 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2024-11-08 01:00:49 +0100 | jero98772 | (~jero98772@2800:484:1d7c:cc00::1) (Remote host closed the connection) |
2024-11-08 01:00:54 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
2024-11-08 01:01:47 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 01:02:52 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 272 seconds) |
2024-11-08 01:07:06 +0100 | troojg | (~troojg@user/troojg) troojg |
2024-11-08 01:11:38 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-11-08 01:14:18 +0100 | sourcetarius | (~sourcetar@user/sourcetarius) (Ping timeout: 244 seconds) |
2024-11-08 01:19:32 +0100 | Feuermagier | Guest603 |
2024-11-08 01:19:32 +0100 | Guest603 | (~Feuermagi@user/feuermagier) (Killed (platinum.libera.chat (Nickname regained by services))) |
2024-11-08 01:21:25 +0100 | acidjnk | (~acidjnk@p200300d6e7283f9509f155732eb456c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2024-11-08 01:22:09 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-11-08 01:23:31 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 01:26:25 +0100 | xff0x | (~xff0x@2405:6580:b080:900:759a:e3d6:c0c3:b78a) (Ping timeout: 248 seconds) |
2024-11-08 01:26:42 +0100 | comonad | (~comonad@p200300d0272bda000e01a379c24cc428.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2024-11-08 01:28:34 +0100 | comonad | (~comonad@p200300d027186300edf824b7b80a34ff.dip0.t-ipconnect.de) |
2024-11-08 01:28:49 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-08 01:37:02 +0100 | user363627 | (~user@user/user363627) user363627 |
2024-11-08 01:39:18 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 01:40:45 +0100 | weary-traveler | (~user@user/user363627) (Ping timeout: 252 seconds) |
2024-11-08 01:41:46 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla |
2024-11-08 01:44:03 +0100 | jero98772 | (~jero98772@2800:484:1d7c:cc00::1) |
2024-11-08 01:44:38 +0100 | jero98772 | (~jero98772@2800:484:1d7c:cc00::1) (Remote host closed the connection) |
2024-11-08 01:44:42 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-08 01:44:56 +0100 | <yin> | point me to the right place to file it and i will |
2024-11-08 01:46:01 +0100 | <geekosaur> | https://gitlab.haskell.org/ghc/ghc/-/issues you will need a GitLab account |
2024-11-08 01:46:26 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 01:51:03 +0100 | <yin> | why am i being asked for gitlab login credentials on haskell.org? |
2024-11-08 01:51:10 +0100 | <yin> | this can't be right |
2024-11-08 01:51:51 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-08 01:52:42 +0100 | <geekosaur> | because browsers are dumb? I get that all the time, chrome asks me whether I want to use wiki or gitlab creds |
2024-11-08 01:53:00 +0100 | <geekosaur> | because "obviously" a subdomain is the same auth domain |
2024-11-08 01:53:18 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds) |
2024-11-08 01:56:14 +0100 | <yin> | no this is not the right way to do auth |
2024-11-08 01:56:49 +0100 | <yin> | either someone made a mistake or i'm misunderstanding something |
2024-11-08 01:56:49 +0100 | sprotte24 | (~sprotte24@p200300d16f05e000c862cdd7b290d75c.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2024-11-08 01:59:19 +0100 | <geekosaur> | that might be a question for #haskell-infrastructure then |
2024-11-08 01:59:42 +0100 | <yin> | ah, this is not OAuth for gitlab.com. it's just for haskell.org's gitlab instance |
2024-11-08 01:59:45 +0100 | <user363627> | yin: the gitlab login credentials being asked would be for the instance being served at gitlab.haskell.org as opposed to gitlab.com |
2024-11-08 01:59:54 +0100 | <user363627> | yes |
2024-11-08 02:00:16 +0100 | <yin> | so i was misunderstanding something after all :) |
2024-11-08 02:00:25 +0100 | <user363627> | :) |
2024-11-08 02:01:08 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds) |
2024-11-08 02:01:53 +0100 | <monochrom> | Tangentailly, a few days ago some of us learned that DNS is not suffix-closed, i.e., subscriptions.techstreet.com resolves fine, but techstreet.com does not exist at all. |
2024-11-08 02:02:13 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 02:02:23 +0100 | <geekosaur> | …approved |
2024-11-08 02:02:52 +0100 | <yin> | yeah you can mess with DNS records in a myriad of ways |
2024-11-08 02:04:01 +0100 | <yin> | i personaly thing the whole of DNS is broken in more ways than one, but yeah... |
2024-11-08 02:04:08 +0100 | <monochrom> | Haha I need to make a website such that www.monochrom.org says "Haskell is great!" and yet monochrom.org says "Haskell sucks!" |
2024-11-08 02:07:13 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 02:09:51 +0100 | troojg | (~troojg@user/troojg) (Remote host closed the connection) |
2024-11-08 02:17:34 +0100 | <yin> | better yet, make http:// suck and https:// great |
2024-11-08 02:17:59 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 02:18:14 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
2024-11-08 02:19:02 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2024-11-08 02:22:32 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess |
2024-11-08 02:23:14 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-08 02:27:49 +0100 | <probie> | monochrom: you don't need to mess with DNS records for that, you just need to speak HTTP >= 1.1 |
2024-11-08 02:28:59 +0100 | <monochrom> | That's true. |
2024-11-08 02:33:47 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 02:34:06 +0100 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 276 seconds) |
2024-11-08 02:36:00 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2024-11-08 02:37:10 +0100 | califax | (~califax@user/califx) califx |
2024-11-08 02:38:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-08 02:40:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 02:44:54 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-11-08 02:55:57 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 02:58:28 +0100 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) |
2024-11-08 03:00:46 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 03:03:09 +0100 | <yin> | it depends on how much you want it to suck >:) |
2024-11-08 03:11:41 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 03:12:49 +0100 | Pixi | (~Pixi@user/pixi) (Quit: Leaving) |
2024-11-08 03:16:14 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-11-08 03:17:29 +0100 | notzmv | (~daniel@user/notzmv) (Ping timeout: 260 seconds) |
2024-11-08 03:18:25 +0100 | sam113101 | (~sam@modemcable220.199-203-24.mc.videotron.ca) sam113101 |
2024-11-08 03:18:52 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2024-11-08 03:25:01 +0100 | Pixi | (~Pixi@user/pixi) Pixi |
2024-11-08 03:25:32 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2024-11-08 03:26:24 +0100 | euleritian | (~euleritia@77.22.252.56) |
2024-11-08 03:27:30 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 03:28:09 +0100 | euleritian | (~euleritia@77.22.252.56) (Remote host closed the connection) |
2024-11-08 03:29:00 +0100 | euleritian | (~euleritia@77.22.252.56) |
2024-11-08 03:32:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 03:33:37 +0100 | euleritian | (~euleritia@77.22.252.56) (Remote host closed the connection) |
2024-11-08 03:33:56 +0100 | euleritian | (~euleritia@77.22.252.56) |
2024-11-08 03:34:43 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2024-11-08 03:37:30 +0100 | lol_ | (~lol@2603:3016:1e01:b9c0:ecfb:26af:1f31:67a5) |
2024-11-08 03:41:42 +0100 | jcarpenter2 | (~lol@2603:3016:1e01:b9c0:c43d:6fb:2607:cd8b) (Ping timeout: 276 seconds) |
2024-11-08 03:43:00 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Ping timeout: 276 seconds) |
2024-11-08 03:43:17 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 03:50:00 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-11-08 04:01:25 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 04:05:10 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-11-08 04:09:20 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 04:20:54 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 04:25:47 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-11-08 04:33:54 +0100 | Tisoxin | (~Ikosit@user/ikosit) (Ping timeout: 252 seconds) |
2024-11-08 04:36:42 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 04:40:37 +0100 | bastelfreak | (bastelfrea@libera/staff/VoxPupuli.bastelfreak) (Ping timeout: 620 seconds) |
2024-11-08 04:41:42 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 04:46:46 +0100 | bastelfreak | (bastelfrea@libera/staff/VoxPupuli.bastelfreak) bastelfreak |
2024-11-08 04:47:02 +0100 | Tisoxin | (~Ikosit@user/ikosit) Ikosit |
2024-11-08 04:50:52 +0100 | td_ | (~td@i5387092D.versanet.de) (Ping timeout: 272 seconds) |
2024-11-08 04:52:00 +0100 | xdminsy | (~xdminsy@117.147.71.147) xdminsy |
2024-11-08 04:52:08 +0100 | td_ | (~td@i53870904.versanet.de) td_ |
2024-11-08 04:52:30 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 04:57:38 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-08 05:00:21 +0100 | cjay | (cjay@nerdbox.nerd2nerd.org) (Ping timeout: 248 seconds) |
2024-11-08 05:01:09 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds) |
2024-11-08 05:05:03 +0100 | user363627 | weary-traveler |
2024-11-08 05:08:17 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 05:11:55 +0100 | cjay | (cjay@nerdbox.nerd2nerd.org) cjay |
2024-11-08 05:13:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-08 05:24:04 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 05:24:06 +0100 | ih1d_ | (~ih1d@24.139.109.18) |
2024-11-08 05:24:22 +0100 | <ih1d_> | hello! |
2024-11-08 05:25:05 +0100 | <ih1d_> | anybody have good resources for ffi and linking c libraries to projects (using pkg-config etc.) |
2024-11-08 05:31:33 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-08 05:42:07 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 05:45:07 +0100 | aforemny | (~aforemny@2001:9e8:6cda:5700:b93:b66b:84fb:f5e8) aforemny |
2024-11-08 05:46:20 +0100 | aforemny_ | (~aforemny@i59F4C67C.versanet.de) (Ping timeout: 255 seconds) |
2024-11-08 05:47:06 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-11-08 05:47:49 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 05:49:34 +0100 | <jackdk> | ih1d_: if you don't mind GPL, you could crib https://git.sr.ht/~jack/libtelnet-haskell - it's a simple lib with a pkg-config dependency |
2024-11-08 05:50:07 +0100 | <jackdk> | https://www.youtube.com/watch?v=y95WtkWCmKg I think this FFI talk was the one I saw years ago and thought was valuable |
2024-11-08 05:52:39 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-08 05:54:57 +0100 | <int-e> | There are many FFI bindings on Hackage that you could base this on. There's a question of scale... if there are many functions to bind, looking into c2hs may be worthwhile. Or, if it's humongous, adapting c2hs (gtk does that with gtk2hs-buildtools ...) |
2024-11-08 05:58:25 +0100 | poscat | (~poscat@user/poscat) (Ping timeout: 248 seconds) |
2024-11-08 06:03:33 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 06:05:20 +0100 | poscat | (~poscat@user/poscat) poscat |
2024-11-08 06:10:10 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-08 06:21:40 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 06:27:04 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-08 06:37:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 06:40:08 +0100 | michalz | (~michalz@185.246.207.217) |
2024-11-08 06:42:23 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-11-08 06:45:14 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2024-11-08 06:53:17 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 06:54:29 +0100 | Square | (~Square4@user/square) (Ping timeout: 260 seconds) |
2024-11-08 06:58:20 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-11-08 07:02:32 +0100 | poscat0x04 | (~poscat@user/poscat) poscat |
2024-11-08 07:03:29 +0100 | poscat | (~poscat@user/poscat) (Ping timeout: 248 seconds) |
2024-11-08 07:07:08 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 07:14:15 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-08 07:17:54 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2024-11-08 07:22:56 +0100 | jle` | (~jle`@syn-023-240-075-236.res.spectrum.com) (Ping timeout: 252 seconds) |
2024-11-08 07:24:54 +0100 | jle` | (~jle`@2603:8001:3b02:84d4:71c9:147c:d31f:c8d0) jle` |
2024-11-08 07:25:10 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 07:29:53 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 07:32:45 +0100 | euleritian | (~euleritia@77.22.252.56) (Ping timeout: 252 seconds) |
2024-11-08 07:33:45 +0100 | euleritian | (~euleritia@dynamic-176-006-132-027.176.6.pool.telefonica.de) |
2024-11-08 07:41:00 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 07:42:10 +0100 | rvalue- | (~rvalue@user/rvalue) rvalue |
2024-11-08 07:43:19 +0100 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 260 seconds) |
2024-11-08 07:45:38 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-08 07:48:09 +0100 | rvalue- | rvalue |
2024-11-08 07:50:39 +0100 | acidjnk | (~acidjnk@p200300d6e7283f561805fdf183b39650.dip0.t-ipconnect.de) acidjnk |
2024-11-08 07:54:50 +0100 | housemate | (~housemate@146.70.66.228) (Ping timeout: 252 seconds) |
2024-11-08 07:56:44 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 07:56:49 +0100 | housemate | (~housemate@146.70.66.228) housemate |
2024-11-08 08:01:26 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-11-08 08:01:58 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-08 08:05:26 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-08 08:07:30 +0100 | xff0x_ | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2024-11-08 08:07:59 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 260 seconds) |
2024-11-08 08:08:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 08:13:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 08:21:09 +0100 | ft | (~ft@p4fc2a216.dip0.t-ipconnect.de) (Quit: leaving) |
2024-11-08 08:23:55 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 08:28:43 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-11-08 08:29:03 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-11-08 08:30:45 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Ping timeout: 252 seconds) |
2024-11-08 08:34:50 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-08 08:36:45 +0100 | misterfish | (~misterfis@84.53.85.146) misterfish |
2024-11-08 08:39:42 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 08:44:57 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
2024-11-08 08:45:12 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-08 08:48:53 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
2024-11-08 08:49:36 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds) |
2024-11-08 08:49:37 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection) |
2024-11-08 08:50:04 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-08 08:50:51 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection) |
2024-11-08 08:51:49 +0100 | Lord_of_Life_ | Lord_of_Life |
2024-11-08 08:52:36 +0100 | tcard | (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving) |
2024-11-08 08:55:30 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 08:55:37 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-11-08 09:00:04 +0100 | caconym | (~caconym@user/caconym) (Quit: bye) |
2024-11-08 09:00:42 +0100 | caconym | (~caconym@user/caconym) caconym |
2024-11-08 09:01:05 +0100 | Sgeo__ | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2024-11-08 09:02:21 +0100 | tcard | (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) tcard |
2024-11-08 09:02:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 09:02:39 +0100 | xff0x_ | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 252 seconds) |
2024-11-08 09:05:09 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-08 09:05:28 +0100 | misterfish | (~misterfis@84.53.85.146) (Ping timeout: 272 seconds) |
2024-11-08 09:08:17 +0100 | euleritian | (~euleritia@dynamic-176-006-132-027.176.6.pool.telefonica.de) (Ping timeout: 248 seconds) |
2024-11-08 09:09:08 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-11-08 09:09:10 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 09:10:17 +0100 | alexherbo2 | (~alexherbo@2a02-8440-3208-7a55-0804-3604-71e5-a155.rev.sfr.net) alexherbo2 |
2024-11-08 09:11:29 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Ping timeout: 248 seconds) |
2024-11-08 09:13:10 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-08 09:14:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-08 09:21:40 +0100 | kenran | (~void@user/kenran) kenran |
2024-11-08 09:24:58 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 09:25:42 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-08 09:28:48 +0100 | ham2 | (~ham@user/ham) (Ping timeout: 252 seconds) |
2024-11-08 09:30:04 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-08 09:30:07 +0100 | alexherbo2 | (~alexherbo@2a02-8440-3208-7a55-0804-3604-71e5-a155.rev.sfr.net) (Remote host closed the connection) |
2024-11-08 09:32:26 +0100 | ham2 | (~ham@user/ham) ham |
2024-11-08 09:40:45 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 09:45:34 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 09:52:15 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds) |
2024-11-08 09:54:57 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection) |
2024-11-08 09:56:10 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-08 09:56:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 09:59:57 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection) |
2024-11-08 10:00:03 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-11-08 10:10:46 +0100 | xff0x | (~xff0x@om126254173224.33.openmobile.ne.jp) |
2024-11-08 10:11:11 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-08 10:20:31 +0100 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Quit: Leaving) |
2024-11-08 10:22:25 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection) |
2024-11-08 10:26:14 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-08 10:30:47 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
2024-11-08 10:32:50 +0100 | ih1d_ | (~ih1d@24.139.109.18) (Quit: leaving) |
2024-11-08 10:37:27 +0100 | rembo10 | (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2024-11-08 10:38:01 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection) |
2024-11-08 10:38:57 +0100 | rembo10 | (~rembo10@main.remulis.com) rembo10 |
2024-11-08 10:41:22 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-08 10:42:05 +0100 | lxsameer | (~lxsameer@Serene/lxsameer) lxsameer |
2024-11-08 10:42:43 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 264 seconds) |
2024-11-08 10:52:14 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) kuribas |
2024-11-08 10:59:45 +0100 | driib318 | (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat) |
2024-11-08 11:00:23 +0100 | driib318 | (~driib@vmi931078.contaboserver.net) driib |
2024-11-08 11:04:02 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-11-08 11:05:18 +0100 | ih1d_ | (~ih1d@24.139.109.18) |
2024-11-08 11:05:38 +0100 | ih1d_ | (~ih1d@24.139.109.18) (Client Quit) |
2024-11-08 11:12:19 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2024-11-08 11:12:50 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-11-08 11:13:39 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) mulk |
2024-11-08 11:28:06 +0100 | Flow_ | (~none@gentoo/developer/flow) (Quit: WeeChat 4.4.2) |
2024-11-08 11:28:22 +0100 | Flow_ | (~none@gentoo/developer/flow) flow |
2024-11-08 11:28:48 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) Smiles |
2024-11-08 11:29:47 +0100 | ubert | (~Thunderbi@178.165.164.236.wireless.dyn.drei.com) ubert |
2024-11-08 11:32:25 +0100 | Flow_ | flow |
2024-11-08 11:35:58 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-08 11:38:34 +0100 | kenran | (~void@user/kenran) (Remote host closed the connection) |
2024-11-08 11:40:44 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Ping timeout: 260 seconds) |
2024-11-08 11:43:10 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2) |
2024-11-08 11:47:52 +0100 | ih1d | (~ih1d@24.139.109.18) (Remote host closed the connection) |
2024-11-08 11:50:14 +0100 | xff0x | (~xff0x@om126254173224.33.openmobile.ne.jp) (Read error: Connection reset by peer) |
2024-11-08 11:50:47 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
2024-11-08 11:51:44 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2024-11-08 11:55:28 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) mulk |
2024-11-08 12:15:00 +0100 | chele | (~chele@user/chele) chele |
2024-11-08 12:18:43 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
2024-11-08 12:18:56 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2024-11-08 12:31:13 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-11-08 12:31:22 +0100 | vpan | (~vpan@212.117.1.172) |
2024-11-08 12:36:52 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac |
2024-11-08 12:44:17 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 12:45:21 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds) |
2024-11-08 12:45:39 +0100 | euleritian | (~euleritia@dynamic-176-006-140-137.176.6.pool.telefonica.de) |
2024-11-08 12:51:08 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-11-08 12:51:53 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 13:00:23 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
2024-11-08 13:02:33 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) mulk |
2024-11-08 13:13:20 +0100 | xff0x | (~xff0x@2405:6580:b080:900:833e:a4a2:2f15:5b32) |
2024-11-08 13:24:03 +0100 | euleritian | (~euleritia@dynamic-176-006-140-137.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
2024-11-08 13:24:14 +0100 | euleritian | (~euleritia@77.22.252.56) |
2024-11-08 13:28:08 +0100 | sourcetarius | (~sourcetar@user/sourcetarius) sourcetarius |
2024-11-08 13:32:09 +0100 | visilii | (~visilii@85.172.77.90) (Ping timeout: 260 seconds) |
2024-11-08 13:35:48 +0100 | poscat0x04 | (~poscat@user/poscat) (Ping timeout: 276 seconds) |
2024-11-08 13:35:58 +0100 | <yin> | turns out record update syntax is weirder than i thought https://gitlab.haskell.org/ghc/ghc/-/issues/25456 |
2024-11-08 13:43:22 +0100 | poscat | (~poscat@user/poscat) poscat |
2024-11-08 13:43:27 +0100 | <yin> | i thought i got over my hate for record syntax... |
2024-11-08 13:44:16 +0100 | <Rembane> | Welcome back yin! :/ |
2024-11-08 13:45:06 +0100 | poscat | (~poscat@user/poscat) (Client Quit) |
2024-11-08 13:47:09 +0100 | poscat | (~poscat@user/poscat) poscat |
2024-11-08 13:51:33 +0100 | mceresa | (~mceresa@user/mceresa) (Read error: error:0A000119:SSL routines::decryption failed or bad record mac) |
2024-11-08 13:52:04 +0100 | <yin> | philosophically, are records just a data structure that we give the compiler permission to optimize however it sees fit or is there something more to it? |
2024-11-08 13:52:24 +0100 | <kqr> | Text.Printf does not come with an instance for Text. When I poke around I see some suggestions to use Data.Text.Format instead. Is this actually preferred? I find very little comparison online. The use case is not large templating but creating a Show instance for a custom numeric type – so I'm hesitant to reach for something that's not in base. |
2024-11-08 13:53:22 +0100 | <Rembane> | yin: IIRC it's syntactic sugar for not having to write out all the access functions and save functions for a datatype. |
2024-11-08 13:54:13 +0100 | poscat | (~poscat@user/poscat) (Quit: Bye) |
2024-11-08 13:54:21 +0100 | alexherbo2 | (~alexherbo@2a02-8440-3309-f88a-dc43-ac5e-6a5b-79bd.rev.sfr.net) alexherbo2 |
2024-11-08 13:56:39 +0100 | <yin> | Rembane: yes but how is their structure implemented internally? |
2024-11-08 13:56:57 +0100 | poscat | (~poscat@user/poscat) poscat |
2024-11-08 13:57:06 +0100 | BolzmannPain | (~BolzmannP@user/BolzmannPain) BolzmannPain |
2024-11-08 13:57:13 +0100 | <opqdonut> | I wouldn't expect using or not using record syntax to affect the runtime characteristics |
2024-11-08 13:57:39 +0100 | <opqdonut> | but I have no idea what GHC actually does |
2024-11-08 13:57:45 +0100 | <Rembane> | yin: As product types plus some functions. Like the `data` types with many arguments without the record stuff. |
2024-11-08 13:57:57 +0100 | <Leary> | yin: It's a matter of interface, not representation. With regular product types, you only have positional notation for manipulating contained values. Records just let you specify them with names instead. |
2024-11-08 13:59:04 +0100 | ih1d | (~ih1d@24.139.109.18) |
2024-11-08 14:00:21 +0100 | ih1d | (~ih1d@24.139.109.18) (Client Quit) |
2024-11-08 14:01:14 +0100 | <yin> | i guess i'm thinking about the performance of product types in general comparing to, say, HashMap |
2024-11-08 14:01:38 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-11-08 14:03:14 +0100 | <yin> | maybe i abuse record updating |
2024-11-08 14:07:14 +0100 | BolzmannPain | (~BolzmannP@user/BolzmannPain) (Quit: Client closed) |
2024-11-08 14:08:19 +0100 | mceresa | (~mceresa@user/mceresa) mceresa |
2024-11-08 14:08:31 +0100 | manwithluck | (manwithluc@gateway/vpn/protonvpn/manwithluck) (Remote host closed the connection) |
2024-11-08 14:13:27 +0100 | manwithluck | (manwithluc@gateway/vpn/protonvpn/manwithluck) manwithluck |
2024-11-08 14:13:49 +0100 | rvalue- | (~rvalue@user/rvalue) rvalue |
2024-11-08 14:14:29 +0100 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 248 seconds) |
2024-11-08 14:16:06 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 276 seconds) |
2024-11-08 14:21:43 +0100 | rvalue- | rvalue |
2024-11-08 14:27:50 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2024-11-08 14:29:02 +0100 | sand-witch | (~m-mzmz6l@vmi833741.contaboserver.net) (Remote host closed the connection) |
2024-11-08 14:30:39 +0100 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) (Ping timeout: 260 seconds) |
2024-11-08 14:33:00 +0100 | sand-witch | (~m-mzmz6l@vmi833741.contaboserver.net) |
2024-11-08 14:33:37 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 248 seconds) |
2024-11-08 14:34:48 +0100 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
2024-11-08 14:36:48 +0100 | euleritian | (~euleritia@77.22.252.56) (Ping timeout: 252 seconds) |
2024-11-08 14:37:41 +0100 | euleritian | (~euleritia@dynamic-176-006-140-137.176.6.pool.telefonica.de) |
2024-11-08 14:38:27 +0100 | sourcetarius | (~sourcetar@user/sourcetarius) (Quit: sourcetarius) |
2024-11-08 14:38:58 +0100 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) hughjfchen |
2024-11-08 14:46:47 +0100 | euleritian | (~euleritia@dynamic-176-006-140-137.176.6.pool.telefonica.de) (Ping timeout: 255 seconds) |
2024-11-08 14:47:33 +0100 | euleritian | (~euleritia@dynamic-176-007-148-106.176.7.pool.telefonica.de) |
2024-11-08 14:50:05 +0100 | euleritian | (~euleritia@dynamic-176-007-148-106.176.7.pool.telefonica.de) (Read error: Connection reset by peer) |
2024-11-08 14:50:23 +0100 | euleritian | (~euleritia@77.22.252.56) |
2024-11-08 14:50:37 +0100 | Awoobis | gAy_Dragon |
2024-11-08 14:51:41 +0100 | dontdieych2 | (~quassel@user/dontdieych2) dontdieych2 |
2024-11-08 14:51:55 +0100 | dontdieych2_ | (~quassel@user/dontdieych2) dontdieych2 |
2024-11-08 14:54:34 +0100 | dontdieych2 | (~quassel@user/dontdieych2) (Client Quit) |
2024-11-08 14:54:58 +0100 | dontdieych2_ | (~quassel@user/dontdieych2) (Client Quit) |
2024-11-08 14:55:34 +0100 | user363627 | (~user@user/user363627) user363627 |
2024-11-08 14:56:06 +0100 | user363627 | weary-traveler |
2024-11-08 14:56:35 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-11-08 14:56:55 +0100 | dontdieych2 | (~quassel@user/dontdieych2) dontdieych2 |
2024-11-08 14:58:51 +0100 | dontdieych2 | (~quassel@user/dontdieych2) (Client Quit) |
2024-11-08 15:01:05 +0100 | emfrom | (~emfrom@37.170.21.237) |
2024-11-08 15:01:34 +0100 | <yin> | maybe not |
2024-11-08 15:05:59 +0100 | <Rembane> | yin: How are you using records? |
2024-11-08 15:10:08 +0100 | ubert | (~Thunderbi@178.165.164.236.wireless.dyn.drei.com) (Quit: ubert) |
2024-11-08 15:10:30 +0100 | ubert | (~Thunderbi@178.165.164.236.wireless.dyn.drei.com) ubert |
2024-11-08 15:10:57 +0100 | Digitteknohippie | (~user@user/digit) Digit |
2024-11-08 15:11:10 +0100 | Digit | (~user@user/digit) (Ping timeout: 252 seconds) |
2024-11-08 15:13:33 +0100 | <yin> | i think my MO is passing state around as a huge record with all the "global" variables |
2024-11-08 15:14:07 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
2024-11-08 15:14:31 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
2024-11-08 15:14:54 +0100 | emfrom | (~emfrom@37.170.21.237) (Remote host closed the connection) |
2024-11-08 15:17:18 +0100 | Digitteknohippie | Digit |
2024-11-08 15:17:38 +0100 | <yin> | state that gets updated many times a second. stuff like this: `... = (step st { μ = Play , θ = now (θ st) }) { μ = Pause }` |
2024-11-08 15:19:14 +0100 | alexherbo2 | (~alexherbo@2a02-8440-3309-f88a-dc43-ac5e-6a5b-79bd.rev.sfr.net) (Remote host closed the connection) |
2024-11-08 15:19:33 +0100 | alexherbo2 | (~alexherbo@2a02-8440-3309-f88a-dc43-ac5e-6a5b-79bd.rev.sfr.net) alexherbo2 |
2024-11-08 15:19:34 +0100 | <yin> | (weird example that was just right in front of me) (also i try to avoid optics like the plague) |
2024-11-08 15:20:19 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
2024-11-08 15:24:33 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) Smiles |
2024-11-08 15:25:21 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-08 15:26:12 +0100 | <Rembane> | yin: That sounds reasonable. Have you checked out some of the language extensions that were created to make records a byt more ergonomic? |
2024-11-08 15:26:31 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2024-11-08 15:28:05 +0100 | <yin> | such as? |
2024-11-08 15:28:18 +0100 | euleritian | (~euleritia@77.22.252.56) (Ping timeout: 245 seconds) |
2024-11-08 15:28:33 +0100 | euleritian | (~euleritia@dynamic-176-007-148-106.176.7.pool.telefonica.de) |
2024-11-08 15:28:51 +0100 | <yin> | i recently started using pattern synonyms, but just because the use case *really* asked for it, not because i like it |
2024-11-08 15:28:59 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
2024-11-08 15:31:48 +0100 | ft | (~ft@p4fc2a216.dip0.t-ipconnect.de) ft |
2024-11-08 15:33:12 +0100 | notzmv | (~daniel@user/notzmv) notzmv |
2024-11-08 15:34:46 +0100 | <Rembane> | yin: These: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/records.html |
2024-11-08 15:37:00 +0100 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2024-11-08 15:38:25 +0100 | longlongdouble | (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) |
2024-11-08 15:38:45 +0100 | ubert | (~Thunderbi@178.165.164.236.wireless.dyn.drei.com) (Ping timeout: 246 seconds) |
2024-11-08 15:40:14 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds) |
2024-11-08 15:40:14 +0100 | ljdarj1 | ljdarj |
2024-11-08 15:57:13 +0100 | enikar | (~enikar@user/enikar) (Quit: WeeChat 3.0) |
2024-11-08 15:57:37 +0100 | enikar | (~enikar@user/enikar) enikar |
2024-11-08 16:00:27 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-11-08 16:01:28 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-08 16:05:23 +0100 | alexherbo2 | (~alexherbo@2a02-8440-3309-f88a-dc43-ac5e-6a5b-79bd.rev.sfr.net) (Remote host closed the connection) |
2024-11-08 16:07:10 +0100 | <merijn> | kqr: I mean, Printf is kinda yikes, so I would definitely avoid that |
2024-11-08 16:07:37 +0100 | son0p | (~ff@186.121.30.70) (Ping timeout: 244 seconds) |
2024-11-08 16:08:18 +0100 | <merijn> | kqr: ah, wait, custom numeric types suggest what you *really* want is "convert number to string with control over decimals, etc." yes? |
2024-11-08 16:09:28 +0100 | <merijn> | kqr: Which suggest what you really want might be in base's Numeric module :) |
2024-11-08 16:12:17 +0100 | <merijn> | yin: Why avoid optics like the plague? |
2024-11-08 16:15:48 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-11-08 16:15:57 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit) |
2024-11-08 16:25:00 +0100 | Square2 | (~Square@user/square) Square |
2024-11-08 16:28:14 +0100 | willscripted | (~willscrip@72.85.164.116) |
2024-11-08 16:30:39 +0100 | lxsameer | (~lxsameer@Serene/lxsameer) (Ping timeout: 260 seconds) |
2024-11-08 16:34:01 +0100 | willscripted | (~willscrip@72.85.164.116) (Changing host) |
2024-11-08 16:34:01 +0100 | willscripted | (~willscrip@user/willscripted) willscripted |
2024-11-08 16:46:22 +0100 | misterfish | (~misterfis@84.53.85.146) misterfish |
2024-11-08 16:55:09 +0100 | misterfish | (~misterfis@84.53.85.146) (Ping timeout: 244 seconds) |
2024-11-08 16:55:56 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-11-08 17:00:50 +0100 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.4.2) |
2024-11-08 17:05:08 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
2024-11-08 17:06:04 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2) |
2024-11-08 17:12:33 +0100 | willx | (~willscrip@72.85.164.116) |
2024-11-08 17:13:52 +0100 | willx | (~willscrip@72.85.164.116) (Changing host) |
2024-11-08 17:13:52 +0100 | willx | (~willscrip@user/willscripted) willscripted |
2024-11-08 17:14:07 +0100 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) GdeVolpiano |
2024-11-08 17:15:27 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
2024-11-08 17:15:56 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-08 17:16:58 +0100 | willx | (~willscrip@user/willscripted) (Client Quit) |
2024-11-08 17:17:51 +0100 | rachelambda | (~rachelamb@cust-95-80-25-71.csbnet.se) rachelambda |
2024-11-08 17:19:38 +0100 | <yin> | merijn: i could write a dozen paragraphs about it but it all comes down to personal stylistic preferences (mostly) |
2024-11-08 17:21:38 +0100 | <merijn> | I mean, I rarely use optics, but sometimes they just make things infinitely easier :) |
2024-11-08 17:26:26 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-08 17:27:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 17:31:19 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 260 seconds) |
2024-11-08 17:32:03 +0100 | <haskellbridge> | <Bowuigi> yin "mostly" implies that you have non-stylistic arguments too, what are they? |
2024-11-08 17:32:16 +0100 | user363627 | (~user@user/user363627) user363627 |
2024-11-08 17:32:20 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-08 17:34:32 +0100 | willscripted | (~willscrip@user/willscripted) (Quit: Client closed) |
2024-11-08 17:35:25 +0100 | willscripted | (~willscrip@user/willscripted) willscripted |
2024-11-08 17:36:22 +0100 | weary-traveler | (~user@user/user363627) (Ping timeout: 252 seconds) |
2024-11-08 17:41:06 +0100 | lxsameer | (~lxsameer@Serene/lxsameer) lxsameer |
2024-11-08 17:42:11 +0100 | willscripted | (~willscrip@user/willscripted) (Quit: willscripted) |
2024-11-08 17:42:21 +0100 | user363627 | (~user@user/user363627) (Quit: Konversation terminated!) |
2024-11-08 17:43:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 17:45:56 +0100 | willscripted | (~willscrip@user/willscripted) willscripted |
2024-11-08 17:46:22 +0100 | willscripted | (~willscrip@user/willscripted) (Client Quit) |
2024-11-08 17:46:41 +0100 | willscripted | (~willscrip@user/willscripted) willscripted |
2024-11-08 17:46:47 +0100 | <yin> | apart from introducing complexity, hard to reason about performance penalties and arguably inevitably leaky abstractions, which i guess you can say still belongs to the realm of stylistic preference, i think it goes against one of the main reasons why *I* choose to use Haskell, which is managing complexity and making things more maintainable (for some definition of maintainable) |
2024-11-08 17:47:52 +0100 | <EvanR> | leaky abstractions? in optics? |
2024-11-08 17:48:28 +0100 | <EvanR> | I guess I heard of this or that "lens that's not a true lens" or something |
2024-11-08 17:49:57 +0100 | willscripted | (~willscrip@user/willscripted) (Client Quit) |
2024-11-08 17:49:59 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-08 17:50:15 +0100 | willscripted | (~willscrip@user/willscripted) willscripted |
2024-11-08 17:51:46 +0100 | <yin> | that starts getting into the dozen paragraphs i can't commit to writing right now |
2024-11-08 17:53:02 +0100 | euleritian | (~euleritia@dynamic-176-007-148-106.176.7.pool.telefonica.de) (Read error: Connection reset by peer) |
2024-11-08 17:53:20 +0100 | euleritian | (~euleritia@77.22.252.56) |
2024-11-08 17:53:33 +0100 | <yin> | i think that if i get myself into a place where optics would make thing easier, it's because i'm doing something wrong. structured the program the wrong way or something like that |
2024-11-08 17:53:53 +0100 | <yin> | but i completely accept that people find it useful |
2024-11-08 17:54:16 +0100 | <EvanR> | leaky abstractions is just a strong relatively verifiable claim |
2024-11-08 17:54:27 +0100 | <haskellbridge> | <magic_rb> I need help with parsing, ive been banging my head against this one for far too long, ive the following simple DSL https://paste.tomsmeding.com/s7OHAeBW and while i can parse "("people" -> tags)" i cannot parse "("bar" -> tags) || ("foo" -> tags)" and i for the life of me cannot figure out why |
2024-11-08 17:54:51 +0100 | <EvanR> | nested quotation marks? |
2024-11-08 17:55:11 +0100 | <EvanR> | sounds tricky |
2024-11-08 17:55:14 +0100 | <haskellbridge> | <magic_rb> uh, my bridge may have screwed it up, ignore the out ones |
2024-11-08 17:55:18 +0100 | <geekosaur> | yin, I think optics or not is more of a stylistic choice. and Haskell is not Python with its "there is only One True Way" mentality |
2024-11-08 17:55:27 +0100 | <haskellbridge> | <magic_rb> ("bar" -> tags) || ("foo" -> tags) like that |
2024-11-08 17:55:49 +0100 | <EvanR> | are -> and || operators with precedence |
2024-11-08 17:56:01 +0100 | <EvanR> | or not because parens required |
2024-11-08 17:56:13 +0100 | <haskellbridge> | <magic_rb> i have no idea how to do that, i now assume that parens are gonna be there |
2024-11-08 17:56:25 +0100 | <EvanR> | ok then ignore me |
2024-11-08 17:56:40 +0100 | <haskellbridge> | <magic_rb> its just: between (symbol "(") (symbol ")") parseOp <|> parseOpEqual <|> parseOpNot <|> parseOpIn <|> parseOpOr <|> parseOpAnd |
2024-11-08 17:59:40 +0100 | <EvanR> | magic_rb is it that your have too many "space" in your parser for parseOpIn and symbol... |
2024-11-08 18:00:17 +0100 | <EvanR> | kind of hard to follow the logic at that level |
2024-11-08 18:00:29 +0100 | <haskellbridge> | <magic_rb> Left (ParseErrorBundle {bundleErrors = TrivialError 17 (Just (Tokens ('|' :| ""))) (fromList [Label ('w' :| "hite space"),EndOfInput]) :| [], bundlePosState = PosState {pstateInput = "("bar" -> tags ) || ("foo" -> tags )", pstateOffset = 0, pstateSourcePos = SourcePos {sourceName = "", sourceLine = Pos 1, sourceColumn = Pos 1}, pstateTabWidth = Pos 8, pstateLinePrefix = ""}}) |
2024-11-08 18:00:35 +0100 | <haskellbridge> | <magic_rb> thats the failure |
2024-11-08 18:00:50 +0100 | <haskellbridge> | <magic_rb> and 17 is the first | char |
2024-11-08 18:01:11 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 18:01:14 +0100 | <EvanR> | there's gotta be a human readable version of that error |
2024-11-08 18:02:46 +0100 | <haskellbridge> | <sm> Yes megaparsec can give a very pretty version |
2024-11-08 18:02:54 +0100 | <EvanR> | but if it fails on the first or second | character the problem must be something to do with the "or" expression parser |
2024-11-08 18:03:21 +0100 | <EvanR> | does `symbol "||"` do what you think it does |
2024-11-08 18:03:37 +0100 | <haskellbridge> | <magic_rb> sm: im trying to figure out that now |
2024-11-08 18:03:39 +0100 | <EvanR> | and is space being consumed at the end of each construction properly |
2024-11-08 18:04:07 +0100 | <tomsmeding> | megaparsec doesn't backtrack unless you tell it to |
2024-11-08 18:04:28 +0100 | <tomsmeding> | magic_rb: your parser is going to see the '(' which makes the first alternative of parseOp happy, so you recurse into parseOp |
2024-11-08 18:04:46 +0100 | <tomsmeding> | then it tries the 'between' again which fails, but it makes progress in parseOpEqual by parsing `"bar"` |
2024-11-08 18:04:51 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-11-08 18:05:00 +0100 | <tomsmeding> | so then it expects `==` but it gets something else (namely `||`) and it bails out |
2024-11-08 18:05:15 +0100 | <tomsmeding> | wrap `try` around the parse* alternatives in your <|> sequence in parseOp |
2024-11-08 18:05:58 +0100 | <mauke> | shouldn't the between "(" ")" parser be listed last? |
2024-11-08 18:06:15 +0100 | user363627 | (~user@user/user363627) user363627 |
2024-11-08 18:06:21 +0100 | <tomsmeding> | mauke: why? |
2024-11-08 18:06:26 +0100 | <haskellbridge> | <magic_rb> if i do that it gets into an infinite loop (putting it last) |
2024-11-08 18:06:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-08 18:06:39 +0100 | <haskellbridge> | <sm> Also use megaparsec’s dbg to see what’s happening |
2024-11-08 18:06:43 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1)) |
2024-11-08 18:06:55 +0100 | <tomsmeding> | magic_rb: yes because you also have left recursion |
2024-11-08 18:07:04 +0100 | <mauke> | ok, I might have misunderstood the structure of the parser ... right |
2024-11-08 18:07:11 +0100 | <haskellbridge> | <magic_rb> im so lost lmao |
2024-11-08 18:07:22 +0100 | <tomsmeding> | parseOpOr starts by parsing parseOp, so if the between, parseOpEqual, parseOpNot and parseOpIn parsers fail, then you're going to loop parseOp -> parseOpOr -> parseOp -> parseOpOr -> ... |
2024-11-08 18:07:36 +0100 | <tomsmeding> | this is called "left recursion" in a grammar |
2024-11-08 18:08:44 +0100 | <tomsmeding> | magic_rb: this doesn't use a parser library, it does things manually, but it's a nice intro into multiple precedence levels (* goes before +, etc.) and how to handle them in a parser |
2024-11-08 18:09:10 +0100 | <EvanR> | since parens are required you don't have to know anything about precedence but you do need to avoid left recursion |
2024-11-08 18:09:39 +0100 | <tomsmeding> | that hfm article cheats out by parsing all operators as right-associative (i.e. `a + b + c` means `a + (b + c)`, not `(a + b) + c`), which avoids the left-recursion problem |
2024-11-08 18:09:43 +0100 | acidjnk | (~acidjnk@p200300d6e7283f561805fdf183b39650.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2024-11-08 18:09:52 +0100 | <tomsmeding> | but I suspect the same cheating solution would work for you too |
2024-11-08 18:09:52 +0100 | <EvanR> | did you link something |
2024-11-08 18:10:02 +0100 | <tomsmeding> | did I not? oh |
2024-11-08 18:10:04 +0100 | <tomsmeding> | http://learn.hfm.io/expressions.html |
2024-11-08 18:10:24 +0100 | <haskellbridge> | <sm> Thank you EvanR 😅 |
2024-11-08 18:11:14 +0100 | <haskellbridge> | <magic_rb> ok ill read that thing over the weekend and come back to my thing after it... i did not anticipate parsing being so difficult |
2024-11-08 18:11:58 +0100 | <EvanR> | i.e. (a == tags) || (c -> tags) || (e -> tags) can get away with not associating or precedencing |
2024-11-08 18:12:29 +0100 | <mauke> | left recursion is basically just a function unconditionally calling itself |
2024-11-08 18:12:37 +0100 | <mauke> | which obviously cannot terminate |
2024-11-08 18:12:39 +0100 | <EvanR> | and these operators except for == seem to make no sense when chained xD |
2024-11-08 18:12:45 +0100 | <EvanR> | er except for || |
2024-11-08 18:12:55 +0100 | vpan | (~vpan@212.117.1.172) (Quit: Leaving.) |
2024-11-08 18:13:03 +0100 | <EvanR> | (ignore for the moment we chain -> in haskell and potentially == in C) |
2024-11-08 18:14:17 +0100 | <EvanR> | magic_rb, your language seems pretty straightforward, it's probably just a small bug somewhere |
2024-11-08 18:14:30 +0100 | <tomsmeding> | I think there are two bugs: missing 'try', and left recursion |
2024-11-08 18:14:50 +0100 | <haskellbridge> | <magic_rb> i have try |
2024-11-08 18:15:16 +0100 | <tomsmeding> | magic_rb: your parser for `||` wants an op on both sides |
2024-11-08 18:15:17 +0100 | <haskellbridge> | <magic_rb> https://paste.tomsmeding.com/hq0SOVbH |
2024-11-08 18:15:20 +0100 | <tomsmeding> | that isn't going to work |
2024-11-08 18:15:42 +0100 | <tomsmeding> | because you're already parsing an op, and when you're at the beginning of parseOpOr you don't know yet if there will be a `||` coming |
2024-11-08 18:15:42 +0100 | <EvanR> | something like, term = try p1 <|> try p2 <|> try p3 <|> try p4, if any of those might test more than 1 character before failing |
2024-11-08 18:16:21 +0100 | <haskellbridge> | <magic_rb> tomsmeding: ok so what do i do to make it work :) |
2024-11-08 18:16:31 +0100 | <tomsmeding> | magic_rb: I think the 'try' around the between parser is technically unnecessary because megaparsec does backtrack if the very first primitive parser in a branch fails, and `symbol` does only one primitive thing |
2024-11-08 18:16:58 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 18:17:06 +0100 | <tomsmeding> | magic_rb: honestly the easiest is to make some precedence levels |
2024-11-08 18:17:16 +0100 | <tomsmeding> | like in arithmetic, you have +,- and */= |
2024-11-08 18:17:20 +0100 | <tomsmeding> | er, *,/ |
2024-11-08 18:17:20 +0100 | <haskellbridge> | <magic_rb> because i could probably parse this manually, as in tokenize the thing and then hammer it into a tree. I wanted to do megaparsec tho |
2024-11-08 18:17:20 +0100 | ubert | (~Thunderbi@178.165.164.236.wireless.dyn.drei.com) ubert |
2024-11-08 18:17:34 +0100 | <haskellbridge> | <magic_rb> tomsmeding: okay, yeah sure, how do i do that in megaparsec :) |
2024-11-08 18:17:44 +0100 | <tomsmeding> | make one function for each precedence level |
2024-11-08 18:18:05 +0100 | <mauke> | wasn't there a precedence parser generator somewhere? |
2024-11-08 18:18:05 +0100 | <haskellbridge> | <magic_rb> ah so split "parseOp" into multiple levels |
2024-11-08 18:18:35 +0100 | <tomsmeding> | e.g. in arithmetic, make parsePlusMinus, parseTimesDivide, parseAtom; parsePlusMinus first calls parseTimesDivide to get the a non-`+-` thing, then it tries + or - |
2024-11-08 18:18:36 +0100 | <EvanR> | are we just ignoring the information that there will only ever be (a op b), two things parenthesized |
2024-11-08 18:18:44 +0100 | <tomsmeding> | EvanR: that's irrelevant |
2024-11-08 18:18:51 +0100 | son0p | (~ff@186.115.69.167) son0p |
2024-11-08 18:18:53 +0100 | <EvanR> | sure it will still work but be unnecessary |
2024-11-08 18:19:16 +0100 | <tomsmeding> | if you want every single binary op to be parenthesised, you're just saying "I have two precedence levels: operators and parentheses" |
2024-11-08 18:19:20 +0100 | <EvanR> | by seeing if the first character is ( or " you know what to do |
2024-11-08 18:19:22 +0100 | <tomsmeding> | you still need to put parentheses in a separate thing |
2024-11-08 18:19:41 +0100 | <tomsmeding> | because otherwise what is the parser going to do if it sees "a && b || c" |
2024-11-08 18:19:45 +0100 | <EvanR> | recurse or begin a binary term |
2024-11-08 18:19:48 +0100 | <tomsmeding> | sure, it's invalid, but currently it'll loop |
2024-11-08 18:20:07 +0100 | <EvanR> | got it, ignoring the information about there only ever being (a op b) |
2024-11-08 18:20:10 +0100 | <tomsmeding> | the very easiest version is to require _every_ binary operation to be wrapped in parentheses |
2024-11-08 18:20:17 +0100 | <tomsmeding> | including the top level |
2024-11-08 18:20:17 +0100 | <EvanR> | that's what I said |
2024-11-08 18:20:22 +0100 | <EvanR> | no |
2024-11-08 18:20:23 +0100 | <tomsmeding> | but then you still have two functions! |
2024-11-08 18:20:37 +0100 | <tomsmeding> | parseParenthesised, which calls out to parseOp which does the <|> chain |
2024-11-08 18:20:43 +0100 | <tomsmeding> | which calls parseParenthesised again |
2024-11-08 18:21:00 +0100 | <EvanR> | as long as you don't have an infinite series of ((((((... that's fine |
2024-11-08 18:21:08 +0100 | <tomsmeding> | if you then want parentheses at the top level to be optional, you can start with parseParenthesised <|> parseOp at the top level |
2024-11-08 18:21:14 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds) |
2024-11-08 18:21:16 +0100 | <tomsmeding> | EvanR: how would the parser look then :p |
2024-11-08 18:21:38 +0100 | <EvanR> | I think they just need try around several choices in the <|> chain |
2024-11-08 18:21:48 +0100 | <tomsmeding> | EvanR: they already have that, now there's left recursion |
2024-11-08 18:21:53 +0100 | <tomsmeding> | in || and in && |
2024-11-08 18:21:53 +0100 | <haskellbridge> | <magic_rb> ^ |
2024-11-08 18:22:17 +0100 | <EvanR> | not in the version I'm seeing |
2024-11-08 18:22:23 +0100 | <tomsmeding> | they posted a new paste |
2024-11-08 18:22:26 +0100 | <tomsmeding> | https://paste.tomsmeding.com/hq0SOVbH |
2024-11-08 18:22:44 +0100 | <EvanR> | that's not doing direct left recursion it tests for ( first |
2024-11-08 18:22:58 +0100 | <EvanR> | it can fail before recursing |
2024-11-08 18:23:04 +0100 | <mauke> | that's only half the code |
2024-11-08 18:23:14 +0100 | <mauke> | I suspect mutual recursion |
2024-11-08 18:23:15 +0100 | <tomsmeding> | okay so for `a || b`, the first character is not ( |
2024-11-08 18:23:29 +0100 | <haskellbridge> | <magic_rb> https://paste.tomsmeding.com/wsx4oGSc so now have that, how exactly does that get me anywhere |
2024-11-08 18:23:29 +0100 | <tomsmeding> | so then it enters, at some point, parseOpOr, because the previous ones fail |
2024-11-08 18:23:35 +0100 | <tomsmeding> | then it recurses to parseOp immediately |
2024-11-08 18:23:37 +0100 | <tomsmeding> | this is left recursion |
2024-11-08 18:24:01 +0100 | <EvanR> | the structure is a bit weird, this is supposedly "parse operator expression, parseOp" but it's try to parse a "primary" (parenthesized expression) |
2024-11-08 18:24:08 +0100 | <tomsmeding> | magic_rb: what is the top level? |
2024-11-08 18:24:10 +0100 | <EvanR> | which is something else |
2024-11-08 18:24:23 +0100 | <haskellbridge> | <magic_rb> tomsmeding: i dont have that yet, not sure what is it supposed to be |
2024-11-08 18:24:38 +0100 | <mauke> | https://markkarpov.com/tutorial/megaparsec.html#parsing-expressions |
2024-11-08 18:24:47 +0100 | <mauke> | has anyone mentioned this yet? |
2024-11-08 18:25:05 +0100 | <tomsmeding> | that's cheating, that uses buildExpressionParser :p |
2024-11-08 18:25:26 +0100 | <tomsmeding> | uh, makeExprParser (it's called buildExpressionParser in parsec) |
2024-11-08 18:25:29 +0100 | <EvanR> | sorry, I brought that up first but, but since it's just (a op b), it's overkill |
2024-11-08 18:25:48 +0100 | <EvanR> | but I see that might be wrong because you can do term || term || term || term |
2024-11-08 18:25:54 +0100 | <mauke> | works, though |
2024-11-08 18:26:02 +0100 | <haskellbridge> | <magic_rb> (and i think id like to know how to do it myself, because im completely lost right now) |
2024-11-08 18:26:15 +0100 | <haskellbridge> | <magic_rb> mauke: if i cared about what works only i wouldnt be writing haskell :) |
2024-11-08 18:26:33 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-11-08 18:26:54 +0100 | <tomsmeding> | magic_rb: is it `==` and `->` are at the same level, they go before `&&`, and `&&` goes before `||`? |
2024-11-08 18:26:59 +0100 | <EvanR> | the classic way is to divide the term language into primary expression and operator expression, and (...) is a primary not an operator |
2024-11-08 18:27:50 +0100 | <EvanR> | so those two kinds of expression correspond with 2 parsers |
2024-11-08 18:27:53 +0100 | <haskellbridge> | <magic_rb> tomsmeding: uh, ive no clue, ive confused myself beyond reason. Ill pick this up later, i gotta run anyway |
2024-11-08 18:28:14 +0100 | <haskellbridge> | <magic_rb> thanks everyone for trying to help me :) |
2024-11-08 18:28:30 +0100 | <EvanR> | I confused myself by try to dumb down the language xD |
2024-11-08 18:28:43 +0100 | <EvanR> | without chaining different operators |
2024-11-08 18:28:48 +0100 | <haskellbridge> | <sm> hello, I am once again urging you to insert dbg or at least trace calls in every parse step so you can see operationally what is happening, it’s very difficult to mentally debug parser combinators |
2024-11-08 18:28:56 +0100 | <haskellbridge> | <sm> :) |
2024-11-08 18:29:15 +0100 | <haskellbridge> | <magic_rb> will do, after i figure out how to actually use that :) and read it :) |
2024-11-08 18:29:37 +0100 | <haskellbridge> | <sm> 👍 |
2024-11-08 18:29:49 +0100 | <haskellbridge> | <magic_rb> tom asked me what bound tighter and my brains response was "uh, && before || yes" |
2024-11-08 18:30:05 +0100 | <haskellbridge> | <magic_rb> i think im done for now 😂, thanks again |
2024-11-08 18:30:08 +0100 | <mauke> | the traditional way to do rec-descent infix expressions is to have a hierarchy of expression parsers. like expr3 = do { expr2; op "+"; expr3 }; expr2 = do { expr1; op "*"; expr 2 }; expr1 = do { expr0; op "**"; expr1 } expr0 = between "(" ")" expr3 <|> term |
2024-11-08 18:30:37 +0100 | <haskellbridge> | <magic_rb> wouldnt that mean you cant have "(4 + 3) + 2"? |
2024-11-08 18:30:53 +0100 | <haskellbridge> | <sm> You are worthy opponent, parser combinators, but they shall return ✊ |
2024-11-08 18:31:07 +0100 | <mauke> | no, that would work fine |
2024-11-08 18:31:27 +0100 | <mauke> | we start in expr3 (the top level) |
2024-11-08 18:32:26 +0100 | <mauke> | then we immediately climb down the hierarchy to expr0, which consumes the leading "(" |
2024-11-08 18:33:11 +0100 | <mauke> | then we try expr3 again. (current call stack: expr3 -> expr2 -> expr1 -> expr0 -> between -> expr3) |
2024-11-08 18:33:53 +0100 | <mauke> | the inner instance of expr3 climbs down the hierarchy again, but this time there is no "(" to be consumed, so expr0 tries term |
2024-11-08 18:34:00 +0100 | <mauke> | which presumably successfully consumes 4 |
2024-11-08 18:34:01 +0100 | <EvanR> | so basically, try "(" term ")" last |
2024-11-08 18:34:42 +0100 | <mauke> | then we return all the way back up the hierarchy, trying all operators in turn (and failing), until we arrive at expr3 again and op "+" succeeds |
2024-11-08 18:35:20 +0100 | <mauke> | then expr3 calls itself (because for simplicity, all of my operators are right associative) |
2024-11-08 18:35:34 +0100 | briandaed | (~root@185.234.210.211) |
2024-11-08 18:35:47 +0100 | <mauke> | which adds another round of expr3 -> expr2 -> expr1 -> expr0 -> term, where we consume 3 |
2024-11-08 18:36:13 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
2024-11-08 18:36:34 +0100 | <mauke> | on the way back up, no operator parser succeeds in consuming ")", so expr3 returns back into 'between' |
2024-11-08 18:36:47 +0100 | <mauke> | which does consume ")" |
2024-11-08 18:36:48 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Max SendQ exceeded) |
2024-11-08 18:37:10 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-08 18:37:42 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
2024-11-08 18:38:05 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-08 18:38:07 +0100 | <mauke> | btw, call stack at the point where we consume "3": expr3 -> expr2 -> expr1 -> expr0 -> between -> expr3 -> expr3 -> expr2 -> expr1 -> expr0 -> term |
2024-11-08 18:39:08 +0100 | <mauke> | after "3": expr3 -> expr2 -> expr1 -> expr0 -> between |
2024-11-08 18:39:52 +0100 | <mauke> | so when 'between' consumes ")", we return back up the expr hierarchy and try all the possible operators on the way up |
2024-11-08 18:40:12 +0100 | acidjnk | (~acidjnk@p200300d6e7283f5628026389afde3b8f.dip0.t-ipconnect.de) acidjnk |
2024-11-08 18:40:19 +0100 | <mauke> | which only succeeds at the top level, with expr3 -> op "+", because the next symbol is a "+" |
2024-11-08 18:41:06 +0100 | <mauke> | for the final "2", we basically do the same thing again: expr3 -> expr3 -> expr2 -> expr1 -> expr0 -> term |
2024-11-08 18:41:21 +0100 | <mauke> | (two expr3 at the start because after seeing "+", expr3 calls itself) |
2024-11-08 18:42:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-08 18:42:59 +0100 | econo_ | (uid147250@id-147250.tinside.irccloud.com) |
2024-11-08 18:43:01 +0100 | <mauke> | (I hope at least some of this made some sense) |
2024-11-08 18:45:35 +0100 | <EvanR> | *parsing made easy* xD |
2024-11-08 18:47:14 +0100 | Sgeo | (~Sgeo@user/sgeo) Sgeo |