Home liberachat/#haskell: Logs Calendar

Logs on 2024-11-08 (liberachat/#haskell)

00:00:29 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
00:00:49 × jero98772 quits (~jero98772@2800:484:1d7c:cc00::1) (Remote host closed the connection)
00:00:54 ChaiTRex joins (~ChaiTRex@user/chaitrex)
00:01:47 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:02:52 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 272 seconds)
00:07:06 troojg joins (~troojg@user/troojg)
00:11:38 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
00:14:18 × sourcetarius quits (~sourcetar@user/sourcetarius) (Ping timeout: 244 seconds)
00:19:32 Feuermagier is now known as Guest603
00:19:32 × Guest603 quits (~Feuermagi@user/feuermagier) (Killed (platinum.libera.chat (Nickname regained by services)))
00:21:25 × acidjnk quits (~acidjnk@p200300d6e7283f9509f155732eb456c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:22:09 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
00:23:31 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:26:25 × xff0x quits (~xff0x@2405:6580:b080:900:759a:e3d6:c0c3:b78a) (Ping timeout: 248 seconds)
00:26:42 × comonad quits (~comonad@p200300d0272bda000e01a379c24cc428.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
00:28:34 comonad joins (~comonad@p200300d027186300edf824b7b80a34ff.dip0.t-ipconnect.de)
00:28:49 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
00:37:02 user363627 joins (~user@user/user363627)
00:39:18 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:40:45 × weary-traveler quits (~user@user/user363627) (Ping timeout: 252 seconds)
00:41:46 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
00:44:03 jero98772 joins (~jero98772@2800:484:1d7c:cc00::1)
00:44:38 × jero98772 quits (~jero98772@2800:484:1d7c:cc00::1) (Remote host closed the connection)
00:44:42 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
00:44:56 <yin> point me to the right place to file it and i will
00:46:01 <geekosaur> https://gitlab.haskell.org/ghc/ghc/-/issues you will need a GitLab account
00:46:26 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:51:03 <yin> why am i being asked for gitlab login credentials on haskell.org?
00:51:10 <yin> this can't be right
00:51:51 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
00:52:42 <geekosaur> because browsers are dumb? I get that all the time, chrome asks me whether I want to use wiki or gitlab creds
00:53:00 <geekosaur> because "obviously" a subdomain is the same auth domain
00:53:18 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
00:56:14 <yin> no this is not the right way to do auth
00:56:49 <yin> either someone made a mistake or i'm misunderstanding something
00:56:49 × sprotte24 quits (~sprotte24@p200300d16f05e000c862cdd7b290d75c.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
00:59:19 <geekosaur> that might be a question for #haskell-infrastructure then
00:59:42 <yin> ah, this is not OAuth for gitlab.com. it's just for haskell.org's gitlab instance
00:59:45 <user363627> yin: the gitlab login credentials being asked would be for the instance being served at gitlab.haskell.org as opposed to gitlab.com
00:59:54 <user363627> yes
01:00:16 <yin> so i was misunderstanding something after all :)
01:00:25 <user363627> :)
01:01:08 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds)
01:01:53 <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.
01:02:13 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:02:23 <geekosaur> …approved
01:02:52 <yin> yeah you can mess with DNS records in a myriad of ways
01:04:01 <yin> i personaly thing the whole of DNS is broken in more ways than one, but yeah...
01:04:08 <monochrom> Haha I need to make a website such that www.monochrom.org says "Haskell is great!" and yet monochrom.org says "Haskell sucks!"
01:07:13 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
01:09:51 × troojg quits (~troojg@user/troojg) (Remote host closed the connection)
01:17:34 <yin> better yet, make http:// suck and https:// great
01:17:59 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:18:14 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
01:19:02 xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
01:22:32 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
01:23:14 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
01:27:49 <probie> monochrom: you don't need to mess with DNS records for that, you just need to speak HTTP >= 1.1
01:28:59 <monochrom> That's true.
01:33:47 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:34:06 × paddymahoney quits (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 276 seconds)
01:36:00 × califax quits (~califax@user/califx) (Remote host closed the connection)
01:37:10 califax joins (~califax@user/califx)
01:38:29 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
01:40:09 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:44:54 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
01:55:57 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:58:28 paddymahoney joins (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
02:00:46 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
02:03:09 <yin> it depends on how much you want it to suck >:)
02:11:41 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:12:49 × Pixi quits (~Pixi@user/pixi) (Quit: Leaving)
02:16:14 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
02:17:29 × notzmv quits (~daniel@user/notzmv) (Ping timeout: 260 seconds)
02:18:25 sam113101 joins (~sam@modemcable220.199-203-24.mc.videotron.ca)
02:18:52 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
02:25:01 Pixi joins (~Pixi@user/pixi)
02:25:32 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection)
02:26:24 euleritian joins (~euleritia@77.22.252.56)
02:27:30 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:28:09 × euleritian quits (~euleritia@77.22.252.56) (Remote host closed the connection)
02:29:00 euleritian joins (~euleritia@77.22.252.56)
02:32:24 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
02:33:37 × euleritian quits (~euleritia@77.22.252.56) (Remote host closed the connection)
02:33:56 euleritian joins (~euleritia@77.22.252.56)
02:34:43 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
02:37:30 lol_ joins (~lol@2603:3016:1e01:b9c0:ecfb:26af:1f31:67a5)
02:41:42 × jcarpenter2 quits (~lol@2603:3016:1e01:b9c0:c43d:6fb:2607:cd8b) (Ping timeout: 276 seconds)
02:43:00 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Ping timeout: 276 seconds)
02:43:17 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:50:00 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
03:01:25 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:05:10 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
03:09:20 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
03:20:54 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:25:47 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
03:33:54 × Tisoxin quits (~Ikosit@user/ikosit) (Ping timeout: 252 seconds)
03:36:42 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:40:37 × bastelfreak quits (bastelfrea@libera/staff/VoxPupuli.bastelfreak) (Ping timeout: 620 seconds)
03:41:42 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
03:46:46 bastelfreak joins (bastelfrea@libera/staff/VoxPupuli.bastelfreak)
03:47:02 Tisoxin joins (~Ikosit@user/ikosit)
03:50:52 × td_ quits (~td@i5387092D.versanet.de) (Ping timeout: 272 seconds)
03:52:00 xdminsy joins (~xdminsy@117.147.71.147)
03:52:08 td_ joins (~td@i53870904.versanet.de)
03:52:30 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:57:38 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
04:00:21 × cjay quits (cjay@nerdbox.nerd2nerd.org) (Ping timeout: 248 seconds)
04:01:09 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
04:05:03 user363627 is now known as weary-traveler
04:08:17 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:11:55 cjay joins (cjay@nerdbox.nerd2nerd.org)
04:13:24 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
04:24:04 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:24:06 ih1d_ joins (~ih1d@24.139.109.18)
04:24:22 <ih1d_> hello!
04:25:05 <ih1d_> anybody have good resources for ffi and linking c libraries to projects (using pkg-config etc.)
04:31:33 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
04:42:07 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:45:07 aforemny joins (~aforemny@2001:9e8:6cda:5700:b93:b66b:84fb:f5e8)
04:46:20 × aforemny_ quits (~aforemny@i59F4C67C.versanet.de) (Ping timeout: 255 seconds)
04:47:06 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
04:47:49 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:49:34 <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
04:50:07 <jackdk> https://www.youtube.com/watch?v=y95WtkWCmKg I think this FFI talk was the one I saw years ago and thought was valuable
04:52:39 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
04:54:57 <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 ...)
04:58:25 × poscat quits (~poscat@user/poscat) (Ping timeout: 248 seconds)
05:03:33 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:05:20 poscat joins (~poscat@user/poscat)
05:10:10 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
05:21:40 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:27:04 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
05:37:29 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:40:08 michalz joins (~michalz@185.246.207.217)
05:42:23 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
05:45:14 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
05:53:17 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:54:29 × Square quits (~Square4@user/square) (Ping timeout: 260 seconds)
05:58:20 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
06:02:32 poscat0x04 joins (~poscat@user/poscat)
06:03:29 × poscat quits (~poscat@user/poscat) (Ping timeout: 248 seconds)
06:07:08 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:14:15 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
06:17:54 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:22:56 × jle` quits (~jle`@syn-023-240-075-236.res.spectrum.com) (Ping timeout: 252 seconds)
06:24:54 jle` joins (~jle`@2603:8001:3b02:84d4:71c9:147c:d31f:c8d0)
06:25:10 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:29:53 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
06:32:45 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 252 seconds)
06:33:45 euleritian joins (~euleritia@dynamic-176-006-132-027.176.6.pool.telefonica.de)
06:41:00 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:42:10 rvalue- joins (~rvalue@user/rvalue)
06:43:19 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 260 seconds)
06:45:38 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
06:48:09 rvalue- is now known as rvalue
06:50:39 acidjnk joins (~acidjnk@p200300d6e7283f561805fdf183b39650.dip0.t-ipconnect.de)
06:54:50 × housemate quits (~housemate@146.70.66.228) (Ping timeout: 252 seconds)
06:56:44 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:56:49 housemate joins (~housemate@146.70.66.228)
07:01:26 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
07:01:58 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:05:26 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
07:07:30 xff0x_ joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
07:07:59 × xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 260 seconds)
07:08:09 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:13:09 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
07:21:09 × ft quits (~ft@p4fc2a216.dip0.t-ipconnect.de) (Quit: leaving)
07:23:55 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:28:43 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
07:29:03 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:30:45 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Ping timeout: 252 seconds)
07:34:50 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
07:36:45 misterfish joins (~misterfis@84.53.85.146)
07:39:42 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:44:57 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
07:45:12 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
07:48:53 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
07:49:36 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
07:49:37 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection)
07:50:04 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
07:50:51 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection)
07:51:49 Lord_of_Life_ is now known as Lord_of_Life
07:52:36 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
07:55:30 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:55:37 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
08:00:04 × caconym quits (~caconym@user/caconym) (Quit: bye)
08:00:42 caconym joins (~caconym@user/caconym)
08:01:05 × Sgeo__ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:02:21 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
08:02:24 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
08:02:39 × xff0x_ quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 252 seconds)
08:05:09 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
08:05:28 × misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 272 seconds)
08:08:17 × euleritian quits (~euleritia@dynamic-176-006-132-027.176.6.pool.telefonica.de) (Ping timeout: 248 seconds)
08:09:08 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
08:09:10 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
08:10:17 alexherbo2 joins (~alexherbo@2a02-8440-3208-7a55-0804-3604-71e5-a155.rev.sfr.net)
08:11:29 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Ping timeout: 248 seconds)
08:13:10 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
08:14:09 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
08:21:40 kenran joins (~void@user/kenran)
08:24:58 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
08:25:42 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:28:48 × ham2 quits (~ham@user/ham) (Ping timeout: 252 seconds)
08:30:04 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
08:30:07 × alexherbo2 quits (~alexherbo@2a02-8440-3208-7a55-0804-3604-71e5-a155.rev.sfr.net) (Remote host closed the connection)
08:32:26 ham2 joins (~ham@user/ham)
08:40:45 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
08:45:34 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
08:52:15 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds)
08:54:57 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection)
08:56:10 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
08:56:29 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
08:59:57 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection)
09:00:03 ljdarj joins (~Thunderbi@user/ljdarj)
09:10:46 xff0x joins (~xff0x@om126254173224.33.openmobile.ne.jp)
09:11:11 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
09:20:31 × paddymahoney quits (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Quit: Leaving)
09:22:25 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection)
09:26:14 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
09:30:47 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
09:32:50 × ih1d_ quits (~ih1d@24.139.109.18) (Quit: leaving)
09:37:27 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
09:38:01 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection)
09:38:57 rembo10 joins (~rembo10@main.remulis.com)
09:41:22 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
09:42:05 lxsameer joins (~lxsameer@Serene/lxsameer)
09:42:43 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 264 seconds)
09:52:14 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:59:45 × driib318 quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
10:00:23 driib318 joins (~driib@vmi931078.contaboserver.net)
10:04:02 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
10:05:18 ih1d_ joins (~ih1d@24.139.109.18)
10:05:38 × ih1d_ quits (~ih1d@24.139.109.18) (Client Quit)
10:12:19 × mulk quits (~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
10:12:50 ljdarj joins (~Thunderbi@user/ljdarj)
10:13:39 mulk joins (~mulk@pd95146e9.dip0.t-ipconnect.de)
10:28:06 × Flow_ quits (~none@gentoo/developer/flow) (Quit: WeeChat 4.4.2)
10:28:22 Flow_ joins (~none@gentoo/developer/flow)
10:28:48 Smiles joins (uid551636@id-551636.lymington.irccloud.com)
10:29:47 ubert joins (~Thunderbi@178.165.164.236.wireless.dyn.drei.com)
10:32:25 Flow_ is now known as flow
10:35:58 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:38:34 × kenran quits (~void@user/kenran) (Remote host closed the connection)
10:40:44 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Ping timeout: 260 seconds)
10:43:10 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
10:47:52 × ih1d quits (~ih1d@24.139.109.18) (Remote host closed the connection)
10:50:14 × xff0x quits (~xff0x@om126254173224.33.openmobile.ne.jp) (Read error: Connection reset by peer)
10:50:47 sord937 joins (~sord937@gateway/tor-sasl/sord937)
10:51:44 × mulk quits (~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
10:55:28 mulk joins (~mulk@pd95146e9.dip0.t-ipconnect.de)
11:15:00 chele joins (~chele@user/chele)
11:18:43 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
11:18:56 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
11:31:13 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
11:31:22 vpan joins (~vpan@212.117.1.172)
11:36:52 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
11:44:17 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
11:45:21 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
11:45:39 euleritian joins (~euleritia@dynamic-176-006-140-137.176.6.pool.telefonica.de)
11:51:08 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
11:51:53 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
12:00:23 × mulk quits (~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
12:02:33 mulk joins (~mulk@pd95146e9.dip0.t-ipconnect.de)
12:13:20 xff0x joins (~xff0x@2405:6580:b080:900:833e:a4a2:2f15:5b32)
12:24:03 × euleritian quits (~euleritia@dynamic-176-006-140-137.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
12:24:14 euleritian joins (~euleritia@77.22.252.56)
12:28:08 sourcetarius joins (~sourcetar@user/sourcetarius)
12:32:09 × visilii quits (~visilii@85.172.77.90) (Ping timeout: 260 seconds)
12:35:48 × poscat0x04 quits (~poscat@user/poscat) (Ping timeout: 276 seconds)
12:35:58 <yin> turns out record update syntax is weirder than i thought https://gitlab.haskell.org/ghc/ghc/-/issues/25456
12:43:22 poscat joins (~poscat@user/poscat)
12:43:27 <yin> i thought i got over my hate for record syntax...
12:44:16 <Rembane> Welcome back yin! :/
12:45:06 × poscat quits (~poscat@user/poscat) (Client Quit)
12:47:09 poscat joins (~poscat@user/poscat)
12:51:33 × mceresa quits (~mceresa@user/mceresa) (Read error: error:0A000119:SSL routines::decryption failed or bad record mac)
12:52:04 <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?
12:52:24 <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.
12:53:22 <Rembane> yin: IIRC it's syntactic sugar for not having to write out all the access functions and save functions for a datatype.
12:54:13 × poscat quits (~poscat@user/poscat) (Quit: Bye)
12:54:21 alexherbo2 joins (~alexherbo@2a02-8440-3309-f88a-dc43-ac5e-6a5b-79bd.rev.sfr.net)
12:56:39 <yin> Rembane: yes but how is their structure implemented internally?
12:56:57 poscat joins (~poscat@user/poscat)
12:57:06 BolzmannPain joins (~BolzmannP@user/BolzmannPain)
12:57:13 <opqdonut> I wouldn't expect using or not using record syntax to affect the runtime characteristics
12:57:39 <opqdonut> but I have no idea what GHC actually does
12:57:45 <Rembane> yin: As product types plus some functions. Like the `data` types with many arguments without the record stuff.
12:57:57 <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.
12:59:04 ih1d joins (~ih1d@24.139.109.18)
13:00:21 × ih1d quits (~ih1d@24.139.109.18) (Client Quit)
13:01:14 <yin> i guess i'm thinking about the performance of product types in general comparing to, say, HashMap
13:01:38 ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207)
13:03:14 <yin> maybe i abuse record updating
13:07:14 × BolzmannPain quits (~BolzmannP@user/BolzmannPain) (Quit: Client closed)
13:08:19 mceresa joins (~mceresa@user/mceresa)
13:08:31 × manwithluck quits (manwithluc@gateway/vpn/protonvpn/manwithluck) (Remote host closed the connection)
13:13:27 manwithluck joins (manwithluc@gateway/vpn/protonvpn/manwithluck)
13:13:49 rvalue- joins (~rvalue@user/rvalue)
13:14:29 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 248 seconds)
13:16:06 × ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 276 seconds)
13:21:43 rvalue- is now known as rvalue
13:27:50 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
13:29:02 × sand-witch quits (~m-mzmz6l@vmi833741.contaboserver.net) (Remote host closed the connection)
13:30:39 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Ping timeout: 260 seconds)
13:33:00 sand-witch joins (~m-mzmz6l@vmi833741.contaboserver.net)
13:33:37 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 248 seconds)
13:34:48 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
13:36:48 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 252 seconds)
13:37:41 euleritian joins (~euleritia@dynamic-176-006-140-137.176.6.pool.telefonica.de)
13:38:27 × sourcetarius quits (~sourcetar@user/sourcetarius) (Quit: sourcetarius)
13:38:58 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
13:46:47 × euleritian quits (~euleritia@dynamic-176-006-140-137.176.6.pool.telefonica.de) (Ping timeout: 255 seconds)
13:47:33 euleritian joins (~euleritia@dynamic-176-007-148-106.176.7.pool.telefonica.de)
13:50:05 × euleritian quits (~euleritia@dynamic-176-007-148-106.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
13:50:23 euleritian joins (~euleritia@77.22.252.56)
13:50:37 Awoobis is now known as gAy_Dragon
13:51:41 dontdieych2 joins (~quassel@user/dontdieych2)
13:51:55 dontdieych2_ joins (~quassel@user/dontdieych2)
13:54:34 × dontdieych2 quits (~quassel@user/dontdieych2) (Client Quit)
13:54:58 × dontdieych2_ quits (~quassel@user/dontdieych2) (Client Quit)
13:55:34 user363627 joins (~user@user/user363627)
13:56:06 user363627 is now known as weary-traveler
13:56:35 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:56:55 dontdieych2 joins (~quassel@user/dontdieych2)
13:58:51 × dontdieych2 quits (~quassel@user/dontdieych2) (Client Quit)
14:01:05 emfrom joins (~emfrom@37.170.21.237)
14:01:34 <yin> maybe not
14:05:59 <Rembane> yin: How are you using records?
14:10:08 × ubert quits (~Thunderbi@178.165.164.236.wireless.dyn.drei.com) (Quit: ubert)
14:10:30 ubert joins (~Thunderbi@178.165.164.236.wireless.dyn.drei.com)
14:10:57 Digitteknohippie joins (~user@user/digit)
14:11:10 × Digit quits (~user@user/digit) (Ping timeout: 252 seconds)
14:13:33 <yin> i think my MO is passing state around as a huge record with all the "global" variables
14:14:07 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
14:14:31 sord937 joins (~sord937@gateway/tor-sasl/sord937)
14:14:54 × emfrom quits (~emfrom@37.170.21.237) (Remote host closed the connection)
14:17:18 Digitteknohippie is now known as Digit
14:17:38 <yin> state that gets updated many times a second. stuff like this: `... = (step st { μ = Play , θ = now (θ st) }) { μ = Pause }`
14:19:14 × alexherbo2 quits (~alexherbo@2a02-8440-3309-f88a-dc43-ac5e-6a5b-79bd.rev.sfr.net) (Remote host closed the connection)
14:19:33 alexherbo2 joins (~alexherbo@2a02-8440-3309-f88a-dc43-ac5e-6a5b-79bd.rev.sfr.net)
14:19:34 <yin> (weird example that was just right in front of me) (also i try to avoid optics like the plague)
14:20:19 JuanDaugherty joins (~juan@user/JuanDaugherty)
14:24:33 Smiles joins (uid551636@id-551636.lymington.irccloud.com)
14:25:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:26:12 <Rembane> yin: That sounds reasonable. Have you checked out some of the language extensions that were created to make records a byt more ergonomic?
14:26:31 L29Ah joins (~L29Ah@wikipedia/L29Ah)
14:28:05 <yin> such as?
14:28:18 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 245 seconds)
14:28:33 euleritian joins (~euleritia@dynamic-176-007-148-106.176.7.pool.telefonica.de)
14:28:51 <yin> i recently started using pattern synonyms, but just because the use case *really* asked for it, not because i like it
14:28:59 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
14:31:48 ft joins (~ft@p4fc2a216.dip0.t-ipconnect.de)
14:33:12 notzmv joins (~daniel@user/notzmv)
14:34:46 <Rembane> yin: These: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/records.html
14:37:00 ljdarj1 joins (~Thunderbi@user/ljdarj)
14:38:25 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
14:38:45 × ubert quits (~Thunderbi@178.165.164.236.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
14:40:14 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
14:40:14 ljdarj1 is now known as ljdarj
14:57:13 × enikar quits (~enikar@user/enikar) (Quit: WeeChat 3.0)
14:57:37 enikar joins (~enikar@user/enikar)
15:00:27 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:01:28 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:05:23 × alexherbo2 quits (~alexherbo@2a02-8440-3309-f88a-dc43-ac5e-6a5b-79bd.rev.sfr.net) (Remote host closed the connection)
15:07:10 <merijn> kqr: I mean, Printf is kinda yikes, so I would definitely avoid that
15:07:37 × son0p quits (~ff@186.121.30.70) (Ping timeout: 244 seconds)
15:08:18 <merijn> kqr: ah, wait, custom numeric types suggest what you *really* want is "convert number to string with control over decimals, etc." yes?
15:09:28 <merijn> kqr: Which suggest what you really want might be in base's Numeric module :)
15:12:17 <merijn> yin: Why avoid optics like the plague?
15:15:48 ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207)
15:15:57 × ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit)
15:25:00 Square2 joins (~Square@user/square)
15:28:14 willscripted joins (~willscrip@72.85.164.116)
15:30:39 × lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 260 seconds)
15:34:01 × willscripted quits (~willscrip@72.85.164.116) (Changing host)
15:34:01 willscripted joins (~willscrip@user/willscripted)
15:46:22 misterfish joins (~misterfis@84.53.85.146)
15:55:09 × misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 244 seconds)
15:55:56 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:00:50 × GdeVolpiano quits (~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.4.2)
16:05:08 JuanDaugherty joins (~juan@user/JuanDaugherty)
16:06:04 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
16:12:33 willx joins (~willscrip@72.85.164.116)
16:13:52 × willx quits (~willscrip@72.85.164.116) (Changing host)
16:13:52 willx joins (~willscrip@user/willscripted)
16:14:07 GdeVolpiano joins (~GdeVolpia@user/GdeVolpiano)
16:15:27 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
16:15:56 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:16:58 × willx quits (~willscrip@user/willscripted) (Client Quit)
16:17:51 rachelambda joins (~rachelamb@cust-95-80-25-71.csbnet.se)
16:19:38 <yin> merijn: i could write a dozen paragraphs about it but it all comes down to personal stylistic preferences (mostly)
16:21:38 <merijn> I mean, I rarely use optics, but sometimes they just make things infinitely easier :)
16:26:26 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
16:27:24 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
16:31:19 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 260 seconds)
16:32:03 <haskellbridge> <Bowuigi> yin "mostly" implies that you have non-stylistic arguments too, what are they?
16:32:16 user363627 joins (~user@user/user363627)
16:32:20 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
16:34:32 × willscripted quits (~willscrip@user/willscripted) (Quit: Client closed)
16:35:25 willscripted joins (~willscrip@user/willscripted)
16:36:22 × weary-traveler quits (~user@user/user363627) (Ping timeout: 252 seconds)
16:41:06 lxsameer joins (~lxsameer@Serene/lxsameer)
16:42:11 × willscripted quits (~willscrip@user/willscripted) (Quit: willscripted)
16:42:21 × user363627 quits (~user@user/user363627) (Quit: Konversation terminated!)
16:43:09 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
16:45:56 willscripted joins (~willscrip@user/willscripted)
16:46:22 × willscripted quits (~willscrip@user/willscripted) (Client Quit)
16:46:41 willscripted joins (~willscrip@user/willscripted)
16:46:47 <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)
16:47:52 <EvanR> leaky abstractions? in optics?
16:48:28 <EvanR> I guess I heard of this or that "lens that's not a true lens" or something
16:49:57 × willscripted quits (~willscrip@user/willscripted) (Client Quit)
16:49:59 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
16:50:15 willscripted joins (~willscrip@user/willscripted)
16:51:46 <yin> that starts getting into the dozen paragraphs i can't commit to writing right now
16:53:02 × euleritian quits (~euleritia@dynamic-176-007-148-106.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
16:53:20 euleritian joins (~euleritia@77.22.252.56)
16:53:33 <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
16:53:53 <yin> but i completely accept that people find it useful
16:54:16 <EvanR> leaky abstractions is just a strong relatively verifiable claim
16:54:27 <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
16:54:51 <EvanR> nested quotation marks?
16:55:11 <EvanR> sounds tricky
16:55:14 <haskellbridge> <magic_rb> uh, my bridge may have screwed it up, ignore the out ones
16:55:18 <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
16:55:27 <haskellbridge> <magic_rb> ("bar" -> tags) || ("foo" -> tags) like that
16:55:49 <EvanR> are -> and || operators with precedence
16:56:01 <EvanR> or not because parens required
16:56:13 <haskellbridge> <magic_rb> i have no idea how to do that, i now assume that parens are gonna be there
16:56:25 <EvanR> ok then ignore me
16:56:40 <haskellbridge> <magic_rb> its just: between (symbol "(") (symbol ")") parseOp <|> parseOpEqual <|> parseOpNot <|> parseOpIn <|> parseOpOr <|> parseOpAnd
16:59:40 <EvanR> magic_rb is it that your have too many "space" in your parser for parseOpIn and symbol...
17:00:17 <EvanR> kind of hard to follow the logic at that level
17:00:29 <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 = ""}})
17:00:35 <haskellbridge> <magic_rb> thats the failure
17:00:50 <haskellbridge> <magic_rb> and 17 is the first | char
17:01:11 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
17:01:14 <EvanR> there's gotta be a human readable version of that error
17:02:46 <haskellbridge> <sm> Yes megaparsec can give a very pretty version
17:02:54 <EvanR> but if it fails on the first or second | character the problem must be something to do with the "or" expression parser
17:03:21 <EvanR> does `symbol "||"` do what you think it does
17:03:37 <haskellbridge> <magic_rb> sm: im trying to figure out that now
17:03:39 <EvanR> and is space being consumed at the end of each construction properly
17:04:07 <tomsmeding> megaparsec doesn't backtrack unless you tell it to
17:04:28 <tomsmeding> magic_rb: your parser is going to see the '(' which makes the first alternative of parseOp happy, so you recurse into parseOp
17:04:46 <tomsmeding> then it tries the 'between' again which fails, but it makes progress in parseOpEqual by parsing `"bar"`
17:04:51 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:05:00 <tomsmeding> so then it expects `==` but it gets something else (namely `||`) and it bails out
17:05:15 <tomsmeding> wrap `try` around the parse* alternatives in your <|> sequence in parseOp
17:05:58 <mauke> shouldn't the between "(" ")" parser be listed last?
17:06:15 user363627 joins (~user@user/user363627)
17:06:21 <tomsmeding> mauke: why?
17:06:26 <haskellbridge> <magic_rb> if i do that it gets into an infinite loop (putting it last)
17:06:29 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
17:06:39 <haskellbridge> <sm> Also use megaparsec’s dbg to see what’s happening
17:06:43 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
17:06:55 <tomsmeding> magic_rb: yes because you also have left recursion
17:07:04 <mauke> ok, I might have misunderstood the structure of the parser ... right
17:07:11 <haskellbridge> <magic_rb> im so lost lmao
17:07:22 <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 -> ...
17:07:36 <tomsmeding> this is called "left recursion" in a grammar
17:08:44 <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
17:09:10 <EvanR> since parens are required you don't have to know anything about precedence but you do need to avoid left recursion
17:09:39 <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
17:09:43 × acidjnk quits (~acidjnk@p200300d6e7283f561805fdf183b39650.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
17:09:52 <tomsmeding> but I suspect the same cheating solution would work for you too
17:09:52 <EvanR> did you link something
17:10:02 <tomsmeding> did I not? oh
17:10:04 <tomsmeding> http://learn.hfm.io/expressions.html
17:10:24 <haskellbridge> <sm> Thank you EvanR 😅
17:11:14 <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
17:11:58 <EvanR> i.e. (a == tags) || (c -> tags) || (e -> tags) can get away with not associating or precedencing
17:12:29 <mauke> left recursion is basically just a function unconditionally calling itself
17:12:37 <mauke> which obviously cannot terminate
17:12:39 <EvanR> and these operators except for == seem to make no sense when chained xD
17:12:45 <EvanR> er except for ||
17:12:55 × vpan quits (~vpan@212.117.1.172) (Quit: Leaving.)
17:13:03 <EvanR> (ignore for the moment we chain -> in haskell and potentially == in C)
17:14:17 <EvanR> magic_rb, your language seems pretty straightforward, it's probably just a small bug somewhere
17:14:30 <tomsmeding> I think there are two bugs: missing 'try', and left recursion
17:14:50 <haskellbridge> <magic_rb> i have try
17:15:16 <tomsmeding> magic_rb: your parser for `||` wants an op on both sides
17:15:17 <haskellbridge> <magic_rb> https://paste.tomsmeding.com/hq0SOVbH
17:15:20 <tomsmeding> that isn't going to work
17:15:42 <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
17:15:42 <EvanR> something like, term = try p1 <|> try p2 <|> try p3 <|> try p4, if any of those might test more than 1 character before failing
17:16:21 <haskellbridge> <magic_rb> tomsmeding: ok so what do i do to make it work :)
17:16:31 <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
17:16:58 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
17:17:06 <tomsmeding> magic_rb: honestly the easiest is to make some precedence levels
17:17:16 <tomsmeding> like in arithmetic, you have +,- and */=
17:17:20 <tomsmeding> er, *,/
17:17:20 <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
17:17:20 ubert joins (~Thunderbi@178.165.164.236.wireless.dyn.drei.com)
17:17:34 <haskellbridge> <magic_rb> tomsmeding: okay, yeah sure, how do i do that in megaparsec :)
17:17:44 <tomsmeding> make one function for each precedence level
17:18:05 <mauke> wasn't there a precedence parser generator somewhere?
17:18:05 <haskellbridge> <magic_rb> ah so split "parseOp" into multiple levels
17:18:35 <tomsmeding> e.g. in arithmetic, make parsePlusMinus, parseTimesDivide, parseAtom; parsePlusMinus first calls parseTimesDivide to get the a non-`+-` thing, then it tries + or -
17:18:36 <EvanR> are we just ignoring the information that there will only ever be (a op b), two things parenthesized
17:18:44 <tomsmeding> EvanR: that's irrelevant
17:18:51 son0p joins (~ff@186.115.69.167)
17:18:53 <EvanR> sure it will still work but be unnecessary
17:19:16 <tomsmeding> if you want every single binary op to be parenthesised, you're just saying "I have two precedence levels: operators and parentheses"
17:19:20 <EvanR> by seeing if the first character is ( or " you know what to do
17:19:22 <tomsmeding> you still need to put parentheses in a separate thing
17:19:41 <tomsmeding> because otherwise what is the parser going to do if it sees "a && b || c"
17:19:45 <EvanR> recurse or begin a binary term
17:19:48 <tomsmeding> sure, it's invalid, but currently it'll loop
17:20:07 <EvanR> got it, ignoring the information about there only ever being (a op b)
17:20:10 <tomsmeding> the very easiest version is to require _every_ binary operation to be wrapped in parentheses
17:20:17 <tomsmeding> including the top level
17:20:17 <EvanR> that's what I said
17:20:22 <EvanR> no
17:20:23 <tomsmeding> but then you still have two functions!
17:20:37 <tomsmeding> parseParenthesised, which calls out to parseOp which does the <|> chain
17:20:43 <tomsmeding> which calls parseParenthesised again
17:21:00 <EvanR> as long as you don't have an infinite series of ((((((... that's fine
17:21:08 <tomsmeding> if you then want parentheses at the top level to be optional, you can start with parseParenthesised <|> parseOp at the top level
17:21:14 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
17:21:16 <tomsmeding> EvanR: how would the parser look then :p
17:21:38 <EvanR> I think they just need try around several choices in the <|> chain
17:21:48 <tomsmeding> EvanR: they already have that, now there's left recursion
17:21:53 <tomsmeding> in || and in &&
17:21:53 <haskellbridge> <magic_rb> ^
17:22:17 <EvanR> not in the version I'm seeing
17:22:23 <tomsmeding> they posted a new paste
17:22:26 <tomsmeding> https://paste.tomsmeding.com/hq0SOVbH
17:22:44 <EvanR> that's not doing direct left recursion it tests for ( first
17:22:58 <EvanR> it can fail before recursing
17:23:04 <mauke> that's only half the code
17:23:14 <mauke> I suspect mutual recursion
17:23:15 <tomsmeding> okay so for `a || b`, the first character is not (
17:23:29 <haskellbridge> <magic_rb> https://paste.tomsmeding.com/wsx4oGSc so now have that, how exactly does that get me anywhere
17:23:29 <tomsmeding> so then it enters, at some point, parseOpOr, because the previous ones fail
17:23:35 <tomsmeding> then it recurses to parseOp immediately
17:23:37 <tomsmeding> this is left recursion
17:24:01 <EvanR> the structure is a bit weird, this is supposedly "parse operator expression, parseOp" but it's try to parse a "primary" (parenthesized expression)
17:24:08 <tomsmeding> magic_rb: what is the top level?
17:24:10 <EvanR> which is something else
17:24:23 <haskellbridge> <magic_rb> tomsmeding: i dont have that yet, not sure what is it supposed to be
17:24:38 <mauke> https://markkarpov.com/tutorial/megaparsec.html#parsing-expressions
17:24:47 <mauke> has anyone mentioned this yet?
17:25:05 <tomsmeding> that's cheating, that uses buildExpressionParser :p
17:25:26 <tomsmeding> uh, makeExprParser (it's called buildExpressionParser in parsec)
17:25:29 <EvanR> sorry, I brought that up first but, but since it's just (a op b), it's overkill
17:25:48 <EvanR> but I see that might be wrong because you can do term || term || term || term
17:25:54 <mauke> works, though
17:26:02 <haskellbridge> <magic_rb> (and i think id like to know how to do it myself, because im completely lost right now)
17:26:15 <haskellbridge> <magic_rb> mauke: if i cared about what works only i wouldnt be writing haskell :)
17:26:33 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
17:26:54 <tomsmeding> magic_rb: is it `==` and `->` are at the same level, they go before `&&`, and `&&` goes before `||`?
17:26:59 <EvanR> the classic way is to divide the term language into primary expression and operator expression, and (...) is a primary not an operator
17:27:50 <EvanR> so those two kinds of expression correspond with 2 parsers
17:27:53 <haskellbridge> <magic_rb> tomsmeding: uh, ive no clue, ive confused myself beyond reason. Ill pick this up later, i gotta run anyway
17:28:14 <haskellbridge> <magic_rb> thanks everyone for trying to help me :)
17:28:30 <EvanR> I confused myself by try to dumb down the language xD
17:28:43 <EvanR> without chaining different operators
17:28:48 <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
17:28:56 <haskellbridge> <sm> :)
17:29:15 <haskellbridge> <magic_rb> will do, after i figure out how to actually use that :) and read it :)
17:29:37 <haskellbridge> <sm> 👍
17:29:49 <haskellbridge> <magic_rb> tom asked me what bound tighter and my brains response was "uh, && before || yes"
17:30:05 <haskellbridge> <magic_rb> i think im done for now 😂, thanks again
17:30:08 <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
17:30:37 <haskellbridge> <magic_rb> wouldnt that mean you cant have "(4 + 3) + 2"?
17:30:53 <haskellbridge> <sm> You are worthy opponent, parser combinators, but they shall return ✊
17:31:07 <mauke> no, that would work fine
17:31:27 <mauke> we start in expr3 (the top level)
17:32:26 <mauke> then we immediately climb down the hierarchy to expr0, which consumes the leading "("
17:33:11 <mauke> then we try expr3 again. (current call stack: expr3 -> expr2 -> expr1 -> expr0 -> between -> expr3)
17:33:53 <mauke> the inner instance of expr3 climbs down the hierarchy again, but this time there is no "(" to be consumed, so expr0 tries term
17:34:00 <mauke> which presumably successfully consumes 4
17:34:01 <EvanR> so basically, try "(" term ")" last
17:34:42 <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
17:35:20 <mauke> then expr3 calls itself (because for simplicity, all of my operators are right associative)
17:35:34 briandaed joins (~root@185.234.210.211)
17:35:47 <mauke> which adds another round of expr3 -> expr2 -> expr1 -> expr0 -> term, where we consume 3
17:36:13 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:36:34 <mauke> on the way back up, no operator parser succeeds in consuming ")", so expr3 returns back into 'between'
17:36:47 <mauke> which does consume ")"
17:36:48 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Max SendQ exceeded)
17:37:10 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
17:37:42 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:38:05 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:38:07 <mauke> btw, call stack at the point where we consume "3": expr3 -> expr2 -> expr1 -> expr0 -> between -> expr3 -> expr3 -> expr2 -> expr1 -> expr0 -> term
17:39:08 <mauke> after "3": expr3 -> expr2 -> expr1 -> expr0 -> between
17:39:52 <mauke> so when 'between' consumes ")", we return back up the expr hierarchy and try all the possible operators on the way up
17:40:12 acidjnk joins (~acidjnk@p200300d6e7283f5628026389afde3b8f.dip0.t-ipconnect.de)
17:40:19 <mauke> which only succeeds at the top level, with expr3 -> op "+", because the next symbol is a "+"
17:41:06 <mauke> for the final "2", we basically do the same thing again: expr3 -> expr3 -> expr2 -> expr1 -> expr0 -> term
17:41:21 <mauke> (two expr3 at the start because after seeing "+", expr3 calls itself)
17:42:09 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
17:42:59 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
17:43:01 <mauke> (I hope at least some of this made some sense)
17:45:35 <EvanR> *parsing made easy* xD
17:47:14 Sgeo joins (~Sgeo@user/sgeo)
17:48:34 shapr joins (~user@4.30.215.226)
17:50:44 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection)
17:52:22 <haskellbridge> <magic_rb> mauke i kind of get what youre saying. But ill have to bang my head against it some more to actually make sense of it
17:52:56 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
17:53:30 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
17:54:05 misterfish joins (~misterfis@84.53.85.146)
17:57:53 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
18:04:19 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:08:06 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
18:08:20 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
18:08:23 × chele quits (~chele@user/chele) (Remote host closed the connection)
18:08:44 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
18:09:19 × xdminsy quits (~xdminsy@117.147.71.147) (Read error: Connection reset by peer)
18:13:38 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
18:14:35 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
18:19:41 × mud quits (~mud@user/kadoban) (Quit: quit)
18:22:51 mud joins (~mud@user/kadoban)
18:23:18 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
18:24:57 × pointlessslippe1 quits (~pointless@62.106.85.17) (Read error: Connection reset by peer)
18:25:46 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection)
18:28:08 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
18:30:01 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
18:30:03 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Remote host closed the connection)
18:30:18 pointlessslippe1 joins (~pointless@62.106.85.17)
18:37:54 × misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 260 seconds)
18:39:56 × AWizzArd quits (~code@user/awizzard) (Ping timeout: 252 seconds)
18:40:03 AWizzArd joins (~code@gehrels.uberspace.de)
18:40:18 × noctux quits (~noctux@user/noctux) (Ping timeout: 252 seconds)
18:40:21 × shapr quits (~user@4.30.215.226) (Quit: walk home)
18:41:20 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
18:41:49 longlongdouble joins (~longlongd@2405:201:5c16:135:1989:242:cab1:419a)
18:42:27 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
18:42:33 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
18:42:58 noctux joins (~noctux@user/noctux)
18:45:53 <kqr> merijn, Numeric looks good for what I need. Thanks!
18:46:39 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
18:46:41 × longlongdouble quits (~longlongd@2405:201:5c16:135:1989:242:cab1:419a) (Read error: Connection reset by peer)
18:47:01 longlongdouble joins (~longlongd@169.150.196.101)
18:50:41 × longlongdouble quits (~longlongd@169.150.196.101) (Remote host closed the connection)
18:51:12 × user363627 quits (~user@user/user363627) (Quit: Konversation terminated!)
18:51:13 <famubu> I was looking at the wikipedia page for monad in category theory: https://en.wikipedia.org/wiki/Monad_(category_theory)#Formal_definition
18:51:16 <famubu> The commutative diagram and properties mention both `T ηand `η T`.
18:51:19 <famubu> What is the difference between the two?
18:51:31 <famubu> I could understand `η T` part. It does the 'opposite' of flattening.
18:51:35 <famubu> is a functor. That means it's like a function whose 'argument' is a category, right? And `η` is a natural transformation, not a category.
18:51:49 <famubu> * `T` is a functor.
18:51:56 <famubu> I am not that familiar with category theory.
18:56:51 <tomsmeding> famubu: a functor from C to C' consists of a mapping from Ob C to Ob C' and a mapping from the arrows in C to the arrows in C'
18:57:09 longlongdouble joins (~longlongd@169.150.196.101)
18:57:56 <tomsmeding> if you have a natural transformation between two functors T1 and T2, and a functor T, then you can build a natural transformation from T . T1 to T . T2
18:58:10 <tomsmeding> they denote that by applying T to the natural transformation
18:58:37 <tomsmeding> see e.g. the third commutative diagram: you have mu_X on the bottom arrow, and T(mu_X) on the top arrow
18:58:51 <tomsmeding> the difference is that the source and target of T(mu_X) have an additional T() around them
18:59:51 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
19:00:09 <tomsmeding> I'm not sure what I just said is correct
19:00:18 <tomsmeding> perhaps wait until someone like ncf comes along lol
19:03:09 <ncf> famubu: those are whiskerings
19:03:29 <ncf> also called horizontal compositions: https://en.wikipedia.org/wiki/Natural_transformation#Operations_with_natural_transformations
19:04:06 <ncf> in haskell, Tη is fmap @T pure, while ηT is pure @(T a)
19:04:30 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
19:04:40 shapr joins (~user@2601:19c:417e:5434:6d2c:aeb2:81b3:3df4)
19:05:10 <ncf> or pure @T @(T a)
19:06:05 <famubu> Okay, looks like I got a few terms to look up. Thanks. Had seen horizonatal composition mentioned in the wikipedia article. Reading nlab now.
19:06:06 <ncf> ah, https://en.wikipedia.org/wiki/Natural_transformation#Whiskering
19:07:03 × longlongdouble quits (~longlongd@169.150.196.101) (Ping timeout: 245 seconds)
19:07:43 <kqr> Hm. I'm looking at doing some validation in an Attoparsec parser and I want to fail the parse if the validation fails – ideally with a value of some custom error type. I feel like I have done this before but I cannot for the life of me figure out how I did it now.
19:11:15 <kaol> ExceptT is one option.
19:11:41 <kqr> Hm. I'd hoped I could hook into the parser monad itself, but maybe it doesn't support failure in the way I think of it?
19:11:50 <tomsmeding> it has `fail` if you're okay with strings
19:12:57 <tomsmeding> and the type that `fail` uses in the parser monad looks pretty monomorphically String
19:13:19 <geekosaur> afaik `fail` itself requires it?
19:13:43 <tomsmeding> "requires"?
19:13:57 <geekosaur> https://downloads.haskell.org/ghc/latest/docs/libraries/base-4.20.0.0-1f57/Control-Monad-Fail.html#v:fail
19:14:09 <geekosaur> `fail :: String -> m a`
19:14:16 <tomsmeding> sure, but the Parser monad doesn't support anything more general than String
19:14:17 <kaol> Are you sure you didn't do it with megaparsec the last time? It has more knobs including type variable for the error type.
19:14:19 <tomsmeding> is what I meant
19:15:14 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
19:17:50 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
19:20:17 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
19:24:37 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:28:37 JuanDaugherty joins (~juan@user/JuanDaugherty)
19:29:58 user363627 joins (~user@user/user363627)
19:31:01 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
19:32:01 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
19:34:25 <darkling> I are Beard.
19:34:33 <darkling> *Beered.
19:36:02 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
19:40:04 Smiles joins (uid551636@id-551636.lymington.irccloud.com)
19:45:34 <EvanR> .oO( parse don't validate ? )
19:46:49 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
19:46:55 alexherbo2 joins (~alexherbo@2a02-8440-3200-3777-6c66-54b5-7b86-7066.rev.sfr.net)
19:47:11 misterfish joins (~misterfis@84.53.85.146)
19:47:54 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
19:49:10 <darkling> -ECHANNEL
19:49:12 <darkling> Sorry.
19:49:42 <briandaed> no need to sorry
19:50:01 <yin> is there a better way to write ` f x | Pattern <- g x , y <- g x = h y ; ...` ?
19:50:38 <geekosaur> use an as-pattern?
19:50:56 <yin> p@Pattern ?
19:50:59 <geekosaur> `| y@Pattern <- g x = …`
19:51:07 <yin> nice, that works. ty
19:51:13 <geekosaur> with parens around `Pattern` as needed
19:51:30 <mauke> f (g -> y@Pattern) =
19:51:37 <yin> makes sense. i'm still getting used to patterns
19:51:48 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
19:56:23 × alexherbo2 quits (~alexherbo@2a02-8440-3200-3777-6c66-54b5-7b86-7066.rev.sfr.net) (Remote host closed the connection)
19:56:42 alexherbo2 joins (~alexherbo@2a02-8440-3200-3777-6c66-54b5-7b86-7066.rev.sfr.net)
20:00:01 × caconym quits (~caconym@user/caconym) (Quit: bye)
20:00:40 caconym joins (~caconym@user/caconym)
20:02:21 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
20:02:37 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:07:45 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
20:07:55 <shapr> I use Nix and I switch GHC and cabal versions between projects, I think that's the cause of this warning? Warning: Parsing the index cache failed (Data.Binary.Get.runGet at position 16: Non-matching structured hashes:
20:08:37 <shapr> Is there a 'fix' ? Maybe Cabal can save an index cache per version?
20:10:22 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:11:24 <briandaed> https://github.com/haskell/cabal/issues/6659
20:13:22 <shapr> briandaed: thanks!
20:15:31 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:15:34 L29Ah joins (~L29Ah@wikipedia/L29Ah)
20:18:24 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:18:26 × Natch quits (~natch@c-92-34-7-158.bbcust.telenor.se) (Read error: Connection reset by peer)
20:19:17 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
20:19:19 <yin> what about `f x | y@Pattern { z = minBound } = ...` ?
20:19:32 <yin> is there an ergonomic way of achieving this?
20:20:21 <yin> sorry i mean
20:20:35 <yin> f x | y@Pattern { z = minBound } <- g x = ...
20:21:01 <tomsmeding> yin: you mean matching on a constant instead of a constructor?
20:21:11 <tomsmeding> patterns don't allow thus, use a separate guard
20:21:16 <tomsmeding> *this
20:21:45 <tomsmeding> | y@Pattern { z = zval } <- g x, zval == minBound = ...
20:22:00 <tomsmeding> or | y <- g x, z y == minBound = ...
20:22:37 <tomsmeding> if you want to get funky you can also `| y@Pattern { z = ((== minBound) -> True) } <- g x = ...` using ViewPatterns but... perhaps don't :D
20:23:20 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
20:34:12 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:34:53 <sm> @where+ stack-ghcup https://www.haskell.org/ghcup/guide/#stack-integration
20:34:53 <lambdabot> Done.
20:35:26 <sm> briandaed your nick is breaking my brain :)
20:37:16 <briandaed> I stole it from someone probably, not sure from whom
20:38:17 <yin> tomsmeding: ty. i'm trying to avoid funkyness
20:38:45 <yin> just restructured everything so i don't have to match any of that
20:38:48 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
20:50:01 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:53:48 × haskellbridge quits (~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection)
20:54:37 haskellbridge joins (~hackager@syn-024-093-192-219.res.spectrum.com)
20:54:37 ChanServ sets mode +v haskellbridge
20:55:09 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
20:56:28 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:01:06 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
21:05:44 <hololeap> % :t Node
21:05:44 <yahb2> <interactive>:1:1: error: [GHC-88464] ; Data constructor not in scope: Node
21:05:55 <hololeap> % import Data.Tree
21:05:55 <yahb2> <no output>
21:05:57 <hololeap> % :t Node
21:05:57 <yahb2> Node :: a -> [Tree a] -> Tree a
21:08:20 <hololeap> could (toList :: Tree a -> [a]) be considered a forgetful functor?
21:11:32 × briandaed quits (~root@185.234.210.211) (Remote host closed the connection)
21:12:10 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:14:20 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
21:16:15 <SrPx> is it not possible to import a static string into a haskell executable?
21:16:19 <SrPx> at compile time
21:16:31 <tomsmeding> SrPx: https://hackage.haskell.org/package/file-embed
21:16:38 <SrPx> ty
21:17:14 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
21:20:39 × misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 260 seconds)
21:21:50 <geekosaur> or the mechanism that uses, which is via TH
21:26:46 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
21:27:58 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:28:29 × lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 255 seconds)
21:28:57 × famubu quits (~famubu@14.139.174.50) (Ping timeout: 246 seconds)
21:32:54 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
21:34:21 visilii joins (~visilii@85.172.77.90)
21:37:10 yvan-sraka joins (uid419690@id-419690.lymington.irccloud.com)
21:43:45 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:44:38 benjaminl is now known as olivial
21:50:36 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
21:59:02 weary-traveler joins (~user@user/user363627)
21:59:14 ljdarj joins (~Thunderbi@user/ljdarj)
22:01:48 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:02:32 × user363627 quits (~user@user/user363627) (Ping timeout: 265 seconds)
22:06:44 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
22:13:43 Everything joins (~Everythin@178-133-144-57.mobile.vf-ua.net)
22:17:21 sprotte24 joins (~sprotte24@p200300d16f0bb9000907ce5a9cbe4fad.dip0.t-ipconnect.de)
22:17:35 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:17:47 × michalz quits (~michalz@185.246.207.217) (Remote host closed the connection)
22:18:20 <jle`> is there any way to get cabal to be explicit about its -isystem includes when building c? it doesn't seem to include the c standard headers or c++ ones either when doing c++
22:18:37 <jle`> it builds fine but i'm triyng to use bear to generate compile_commands.json
22:18:42 <jle`> i wonder if this is a ghc thing or a cabal thing ...
22:19:28 <geekosaur> neither, `-isystem` should usually not be touched and I'm pretty sure neither cabal nor ghc does
22:19:56 Natch joins (~natch@c-92-34-7-158.bbcust.telenor.se)
22:20:04 <geekosaur> unless cross-compiling, which ghc is poor at and cabal more or less doesn't support as yet
22:21:27 <geekosaur> (both would have to know way too much about the machine they're building on to generate them themselves)
22:22:09 <geekosaur> ghc in particular hands as much as possible off to the C compiler to figure out
22:22:29 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
22:23:21 <monochrom> Oh hey jle` I read your free applicative article (found via HWN) and the related free alternative article. Very interesting!
22:23:48 <darkling> Does ghc actually transpile to C, or does it just use some part of the back-end of a C compiler? (code generation and ASM-level optimisations, say?)
22:24:04 <geekosaur> ghc hasn't transpiled to C since 7.2
22:24:16 <monochrom> GHC no longer goes through C. It goes to asm or llvm.
22:24:35 <geekosaur> FFI export stubs and C stubs for CApiFFI go through the C compiler, though
22:24:44 <darkling> Glad to hear it. (I'm old enough to remember cfront for C++). :)
22:24:51 <monochrom> me too
22:24:58 <jle`> monochrom: thanks! appreciate it, it was fun to write :)
22:25:10 <geekosaur> and linking is done via the C compiler so ghc doesn;t have to know the location of system libraries or how exactly you link the C RTS into a program
22:25:35 <jle`> ah yeah i am specifically talking about FFI
22:25:52 <jle`> geekosaur: ah that makes sense. it lets gcc/g++ handle where to find implicit system libraries
22:25:57 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:26:03 <geekosaur> and includes, which is your problem
22:26:05 <monochrom> It was a simpler time. Then again, I could not bring 100 CDs worth of music with me back then, now any smartphone can do it.
22:26:23 <darkling> Linking, I'm happy to hand off. ASM-level optimisation from some abstract machine-code representation, likewise. But I wouldn't describe either of those as "C compiler".
22:26:30 <geekosaur> (in particular, C++ includes on Debian/Ubuntu will depend on which version of the C++ includes/libraries are active)
22:26:54 <jle`> hm. yeah, i was thinking, Cmake has its CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES option but that's because it actually does handle locating system libs
22:27:16 <geekosaur> your best bet is to use gcc -v to get them from the C compiler
22:27:31 <jle`> ah yeah then i can't use bear -- cabal build unfortunately
22:27:51 <jle`> i noticed it does incude -isystem to the extra-libs: items, maybe i could hack into that somehow
22:33:22 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:35:54 robobub joins (uid248673@id-248673.uxbridge.irccloud.com)
22:38:09 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
22:38:14 <yin> i added a git sourced package to my project's dependencies. how can i ask cabal to get update it? (i made some changes to the remote package)
22:38:52 ph88 joins (~ph88@2a02:8109:9e26:c800:b98:f687:dbac:9c4b)
22:39:26 <yin> do i have to `cabal clean` completely?
22:39:42 <geekosaur> generally dependencies of that variety are pinned, and it's up to you to determine compatibility of new commits and update the pin appropriately
22:40:30 <geekosaur> if you insist on circumventing this (say, by pinning the HEAD of a branch), yes, you need `cabal clean` because this is not how it expects to work
22:44:48 <geekosaur> (git submodules also don't work the way you want)
22:48:31 × gorignak quits (~gorignak@user/gorignak) (Quit: quit)
22:49:05 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
22:49:15 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:49:24 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
22:51:50 <yin> right
22:53:17 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:54:02 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
22:54:25 <yin> what about hls?
22:58:03 <geekosaur> what about it? it doesn't care about such things, it defers them to cabal/stack
22:58:25 <yin> no, i solved it
22:58:44 <yin> had to clear ~/.cache/hie-bios/myproject-*
22:59:42 <yin> i'll to things the right way from now on
23:00:22 <yin> don't quote me on that
23:01:56 <geekosaur> sadly I don't know of a good way to clean the HIE cache. I recently nuked mine completely and started over because it became confused about my switching branches in my ghc checkout
23:02:28 × kaskal quits (~kaskal@213-147-165-220.nat.highway.webapn.at) (Ping timeout: 252 seconds)
23:05:01 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:09:41 emfrom joins (~emfrom@37.168.24.65)
23:09:48 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
23:20:50 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:27:45 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
23:29:06 kaskal joins (~kaskal@213-147-165-220.nat.highway.webapn.at)
23:32:54 × alexherbo2 quits (~alexherbo@2a02-8440-3200-3777-6c66-54b5-7b86-7066.rev.sfr.net) (Remote host closed the connection)
23:35:48 sw4n joins (~sw4n@2605:59c0:40f0:9610:756d:bb84:d4bb:9b76)
23:37:28 × sw4n quits (~sw4n@2605:59c0:40f0:9610:756d:bb84:d4bb:9b76) (Remote host closed the connection)
23:38:54 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:42:34 × forell_ quits (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Ping timeout: 260 seconds)
23:43:45 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
23:46:53 × yvan-sraka quits (uid419690@id-419690.lymington.irccloud.com) (Quit: Connection closed for inactivity)
23:48:24 × acidjnk quits (~acidjnk@p200300d6e7283f5628026389afde3b8f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
23:54:41 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:54:50 × Everything quits (~Everythin@178-133-144-57.mobile.vf-ua.net) (Quit: leaving)
23:59:16 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)

All times are in UTC on 2024-11-08.