Home liberachat/#haskell: Logs Calendar

Logs on 2022-11-16 (liberachat/#haskell)

00:00:24 × slack1256 quits (~slack1256@186.11.56.146) (Ping timeout: 268 seconds)
00:03:50 <energizer> why does haskell use ++ for concatenation?
00:03:57 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
00:04:16 <energizer> instead of another symbol
00:04:48 <monochrom> Other FP people were already using it.
00:04:51 <Axman6> what symbol should it use? that's a pretty odd question
00:05:08 <energizer> monochrom: in what context?
00:05:16 <energizer> Axman6: there are a lot of symbols out there, why that one
00:05:27 <Rembane> <> is also used for concatenation
00:05:36 <hpc> > length ['\0'..]
00:05:38 <lambdabot> 1114112
00:06:16 <hpc> eventually you just have to pick something
00:06:27 <Axman6> energizer: why not?
00:06:30 <hpc> why (>>=) either?
00:06:38 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
00:06:41 <hpc> or (**) for exponentiation when it could be (^)
00:06:48 <energizer> Axman6: + is commutative, concatenation isn't
00:07:03 <Axman6> that's why we don't use (+)
00:07:42 <EvanR> concat isn't commutative, but we use a symmetric symbol anyway, why xD
00:07:49 <money> Face
00:08:16 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
00:08:17 <hpc> EvanR: that's why i always use subtract instead of (-)
00:08:27 <monochrom> In some FP languages before Haskell, and in theoretical papers.
00:08:53 <Axman6> why do y we use + for addition? or / for division? or any symbol for anything?
00:08:55 <monochrom> You come across as refusing to believe it.
00:09:09 <Axman6> At least we're not using @@ like OCaml
00:09:16 <EvanR> or as I was told by a wrong school mate many years ago, subtraction is commutative too, you just don't know how yet
00:09:43 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
00:10:01 <energizer> monochrom: if the answer is "because that's how miranda did it" that's fine, but then i'll ask why did miranda
00:10:06 <hpc> subtraction is commutative, it's just addition with one of the arguments different :P
00:11:01 <EvanR> on the subject of + and @, a few days ago I was wondering about a programming languages where every ascii symbol was used for something that was obvious from outside programming. + does addition only, $ does money only, @ does email only, haha xD
00:11:20 <EvanR> % means percent
00:11:21 <yahb2> <interactive>:58:1: error: Variable not in scope: means :: t0 -> t ; ; <interactive>:58:7: error: Variable not in scope: percent
00:11:31 <EvanR> see, we're ridiculous
00:11:34 <hpc> energizer: eventually you have to ask why punch cards were 80 characters wide too
00:11:42 <hpc> sometimes people just make decisions about things
00:11:54 <Rembane> In APL they tried to use the most intuitive character for each operation, it's not clear if they succeeded, but they really tried.
00:12:38 <energizer> hpc: i heard a story that it's because they'd fit in the US dollar containers they had at the Treasury office across the street or something like that
00:12:41 <geekosaur> EvanR, sounds like some horrendous cross between (COBOL, Unison, etc.) and PL/I
00:12:52 <energizer> hpc: but i remember that being debunked
00:12:59 <geekosaur> they made 96 column punch cards
00:13:50 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds)
00:14:33 <hpc> geekosaur: that was actually just 8 punch cards turned sideways :P
00:15:18 <energizer> Rembane: certainly APL did a good job for a bunch of them. ⌈ ceil ⌊ floor ∣ absolute value ⌽ flip over vertical axis ⊖ flip over horizontal axis ⍉ flip over diagonal axis
00:16:02 <geekosaur> intuitive for whom, though
00:16:37 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
00:16:46 Kaipei is now known as Kaiepi
00:16:47 <energizer> geekosaur: i claim ⌽ ⊖ ⍉ are intuitive for everybody
00:17:03 king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924)
00:17:11 <Rembane> energizer: Indeed. :)
00:17:15 <geekosaur> ι though
00:17:26 <Rembane> geekosaur: They are incredibly intuitive for those who know them.
00:17:31 <hpc> ⌽ could be the power off button
00:18:46 × kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
00:23:30 × acidjnk quits (~acidjnk@p200300d6e7137a17b1807064f1abc0ef.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
00:28:43 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
00:32:09 Inst parts (~Inst@2601:6c4:4081:54f0:155b:1b8c:fa18:504e) (Leaving)
00:32:29 Inst joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
00:34:02 <EvanR> the egyptians invented a horizontal line to mean fraction, I'm glad they figured that one out early
00:34:23 × Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Killed (NickServ (GHOST command used by sakura!~Inst@2601:6c4:4081:54f0:155b:1b8c:fa18:504e)))
00:34:25 × Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
00:34:32 <EvanR> but it does render ⊖ confusing
00:34:36 Inst joins (~Inst@2601:6c4:4081:54f0:155b:1b8c:fa18:504e)
00:35:11 <EvanR> and thanks to that story about APL <|> will be confusing from now on
00:35:33 <EvanR> another very unsymmetric operation with a symmetric symbol
00:36:17 <EvanR> at least foldl and foldr aren't literally symmetric
00:36:24 <Inst> @hpc
00:36:24 <lambdabot> Maybe you meant: src rc pl ghc
00:36:27 <Inst> pred is better ;)
00:38:47 × king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Remote host closed the connection)
00:39:06 king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924)
00:40:30 × slac39565 quits (~slack1256@191.126.227.195) (Read error: Connection reset by peer)
00:40:37 slack1256 joins (~slack1256@186.11.58.146)
00:40:53 <monochrom> ⌽ could be power off, ⊖ could be power on, and ⍉ could be both (when there is only one button) >:)
00:43:33 sgarcia joins (sgarcia@swarm.znchost.com)
00:46:15 <EvanR> 0V, 5V and 3.3V
00:46:35 <EvanR> and FILE NOT FOUND
00:46:40 <Rembane> The turbo button is important
00:47:31 <int-e> EvanR: don't forget open, and weak low (0V), weak high (whatever your nominal signal voltage is)
00:48:43 <int-e> (AIUI the weak outputs can put signal on low speed buses that can be overridden by other strong signals)
00:53:27 Lycurgus joins (~juan@user/Lycurgus)
00:57:37 × Lycurgus quits (~juan@user/Lycurgus) (Read error: Connection reset by peer)
01:03:27 <monochrom> "9-value logic" was what I heard for very serious digital circuits from IEEE. :)
01:03:32 × califax quits (~califax@user/califx) (Remote host closed the connection)
01:03:46 <monochrom> (I ran out of time, so I didn't investigate.)
01:04:34 <EvanR> sounds like an april fools on the level of UTF-9
01:04:50 × xff0x quits (~xff0x@2405:6580:b080:900:3e39:3b08:3cd:f770) (Ping timeout: 240 seconds)
01:05:32 califax joins (~califax@user/califx)
01:06:44 <davean> monochrom: you mean https://en.wikipedia.org/wiki/IEEE_1164 ?
01:07:33 <monochrom> I think yes! But it has been more than a decade.
01:07:58 × stef204 quits (~stef204@user/stef204) (Quit: WeeChat 3.7.1)
01:08:20 lottaquestions joins (~nick@2607:fa49:503e:7100:bded:99b3:7299:5ee6)
01:10:20 × mei quits (~mei@user/mei) (Remote host closed the connection)
01:11:04 mei joins (~mei@user/mei)
01:20:34 evanvarvell joins (~evanvarve@097-088-181-216.res.spectrum.com)
01:20:34 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
01:21:19 slac73842 joins (~slack1256@191.126.227.195)
01:23:10 × slack1256 quits (~slack1256@186.11.58.146) (Ping timeout: 240 seconds)
01:24:24 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 260 seconds)
01:33:09 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
01:41:01 ddellacosta joins (~ddellacos@89.45.224.46)
01:41:11 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:42:11 × werneta quits (~werneta@137.78.30.207) (Ping timeout: 256 seconds)
01:46:04 × slac73842 quits (~slack1256@191.126.227.195) (Remote host closed the connection)
01:48:28 DDR joins (~DDR@2604:3d08:4c7f:8250:f6df:a2b:941d:3e56)
01:49:51 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
01:50:10 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:ac76:5dba:fbad:434b)
01:50:47 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
01:54:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:ac76:5dba:fbad:434b) (Ping timeout: 240 seconds)
01:56:16 srz joins (~srz@181.84.183.212)
01:57:14 × thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection)
01:59:15 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:59:21 × finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer)
02:01:12 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
02:04:51 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds)
02:10:32 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
02:16:43 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:25:34 Lycurgus joins (~juan@user/Lycurgus)
02:29:35 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Quit: free())
02:30:38 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
02:34:14 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
02:36:14 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
02:37:11 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 260 seconds)
02:38:30 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
02:39:55 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded)
02:40:52 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
02:42:20 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5)
02:49:13 justsomeguy joins (~justsomeg@user/justsomeguy)
02:57:35 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
03:02:12 × foul_owl quits (~kerry@23.82.194.108) (Ping timeout: 248 seconds)
03:04:16 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
03:07:00 × jespada quits (~jespada@82.36.38.229) (Ping timeout: 248 seconds)
03:10:20 × td_ quits (~td@83.135.9.38) (Ping timeout: 268 seconds)
03:10:35 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 256 seconds)
03:10:58 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 268 seconds)
03:11:30 td_ joins (~td@83.135.9.43)
03:11:46 jespada joins (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net)
03:12:40 × srz quits (~srz@181.84.183.212) (Remote host closed the connection)
03:14:30 × JimL quits (~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 252 seconds)
03:16:02 foul_owl joins (~kerry@174-21-75-230.tukw.qwest.net)
03:16:50 marc___ joins (~marc@5.83.191.221)
03:17:47 × youziqi quits (~youziqi@103.37.140.93) (Ping timeout: 260 seconds)
03:18:36 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
03:19:50 × marc__ quits (~marc@5.83.191.99) (Ping timeout: 240 seconds)
03:20:55 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
03:21:05 youziqi joins (~youziqi@103.37.140.91)
03:23:05 razetime joins (~quassel@117.193.2.3)
03:23:32 × sh1n quits (~sh1n@186.152.126.112) (Remote host closed the connection)
03:25:15 × mixfix41 quits (~sdeny9ee@user/mixfix41) (Ping timeout: 260 seconds)
03:33:32 × king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Read error: Connection reset by peer)
03:33:48 king_gs joins (~Thunderbi@187.201.139.206)
03:38:31 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
03:41:33 <zzz> ?pl uncurry f <$> zipWith a b
03:41:33 <lambdabot> uncurry f <$> zipWith a b
03:41:53 <zzz> ?pl uncurry f <$> zip a b
03:41:54 <lambdabot> uncurry f <$> zip a b
03:42:51 <zzz> wasn't there a lambdabot thing for turning for example this into `zipWIth f a b`
03:44:10 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds)
03:46:53 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
03:46:53 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
03:46:53 wroathe joins (~wroathe@user/wroathe)
03:47:17 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:47:17 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:47:17 finn_elija is now known as FinnElija
03:47:51 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
03:47:55 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
03:50:09 <int-e> @pl map (uncurry f) (zip a b)
03:50:09 <lambdabot> zipWith f a b
03:50:22 <int-e> @pl fmap (uncurry f) (zip a b)
03:50:22 <lambdabot> fmap (uncurry f) (zip a b)
03:51:24 vglfr joins (~vglfr@145.224.100.22)
03:52:26 <int-e> @pl fmap f . fmap g
03:52:26 <lambdabot> fmap (f . g)
03:52:31 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
03:52:53 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
03:53:19 <int-e> Eh, @pl has a bunch of ad-hoc simplification rules. It also predates Applicative, so it wouldn't know about the <$> notation.
03:58:23 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 260 seconds)
03:58:51 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 260 seconds)
04:00:44 × Sauvin quits (~sauvin@user/Sauvin) (Ping timeout: 260 seconds)
04:02:46 <Axman6> feels like more of an hlint rule than a pointfree thing
04:04:13 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
04:05:18 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
04:06:27 Sauvin joins (~sauvin@user/Sauvin)
04:06:43 × fjmorazan quits (~quassel@user/fjmorazan) ()
04:07:23 fjmorazan joins (~quassel@user/fjmorazan)
04:08:03 <int-e> Axman6: are you saying that improving the output of @pl is a pointless exercise...
04:22:30 × king_gs quits (~Thunderbi@187.201.139.206) (Read error: Connection reset by peer)
04:33:31 <monochrom> haha
04:33:52 × mmhat quits (~mmh@p200300f1c7050c1bee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1)
04:36:45 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
04:37:49 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
04:44:04 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
04:49:42 × monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER)
04:50:14 × ddellacosta quits (~ddellacos@89.45.224.46) (Ping timeout: 268 seconds)
04:50:54 × waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
04:54:04 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
04:54:25 chexum joins (~quassel@gateway/tor-sasl/chexum)
04:54:36 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
04:58:22 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
04:58:50 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 240 seconds)
04:58:51 monochrom joins (trebla@216.138.220.146)
05:01:16 <zzz> i knew it
05:04:29 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
05:08:23 biberu joins (~biberu@user/biberu)
05:08:24 × Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer)
05:08:34 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
05:09:01 × johnw quits (~johnw@2600:1700:cf00:db0:6d6a:a571:6c8a:51fc) (Quit: ZNC - http://znc.in)
05:10:10 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
05:12:03 × evanvarvell quits (~evanvarve@097-088-181-216.res.spectrum.com) (Quit: Leaving)
05:13:25 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
05:17:07 zaquest joins (~notzaques@5.130.79.72)
05:19:15 chromoblob joins (~user@37.113.164.122)
05:23:47 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds)
05:30:08 InstX1 joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
05:30:34 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
05:30:56 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
05:31:52 Lord_of_Life_ is now known as Lord_of_Life
05:34:31 × InstX1 quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds)
05:35:15 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Ping timeout: 268 seconds)
05:35:27 Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d)
05:39:48 × phma quits (~phma@2001:5b0:215d:9748:5bc9:473d:a4cc:a159) (Read error: Connection reset by peer)
05:40:15 phma joins (~phma@host-67-44-208-21.hnremote.net)
05:44:10 × sammelweis quits (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Ping timeout: 240 seconds)
05:44:30 × foul_owl quits (~kerry@174-21-75-230.tukw.qwest.net) (Ping timeout: 240 seconds)
05:49:09 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
05:53:13 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
06:00:04 foul_owl joins (~kerry@23.82.194.107)
06:02:51 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
06:11:07 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
06:16:37 king_gs joins (~Thunderbi@187.201.139.206)
06:19:02 × Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 268 seconds)
06:22:29 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
06:24:17 Xeroine joins (~Xeroine@user/xeroine)
06:29:10 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
06:29:53 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
06:32:06 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:35:34 kenran joins (~user@user/kenran)
06:37:03 × DDR quits (~DDR@2604:3d08:4c7f:8250:f6df:a2b:941d:3e56) (Ping timeout: 260 seconds)
06:54:00 × echoreply quits (~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d) (Quit: WeeChat 2.8)
06:54:29 echoreply joins (~echoreply@45.32.163.16)
06:55:35 Kaiepi joins (~Kaiepi@108.175.84.104)
07:02:53 × vglfr quits (~vglfr@145.224.100.22) (Read error: Connection reset by peer)
07:03:48 vglfr joins (~vglfr@145.224.100.22)
07:19:06 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
07:20:40 machinedgod joins (~machinedg@clnet-p10-126.ikbnet.co.at)
07:21:03 × vglfr quits (~vglfr@145.224.100.22) (Ping timeout: 256 seconds)
07:24:19 <Inst> ummm, i'm getting a really weird bug now
07:24:44 <Inst> something seems to be wrong with generateM
07:25:02 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:29:50 <Inst> ah, i see what's going on, generate creates a traverse
07:30:46 × sa quits (sid1055@2a03:5180:f::41f) (Read error: Software caused connection abort)
07:31:06 sa joins (sid1055@id-1055.tinside.irccloud.com)
07:36:47 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
07:37:58 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 268 seconds)
07:37:59 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
07:38:50 ec joins (~ec@gateway/tor-sasl/ec)
07:40:36 × sunarch quits (sid526836@user/sunarch) (Read error: Software caused connection abort)
07:41:02 sunarch joins (sid526836@user/sunarch)
07:44:34 akegalj joins (~akegalj@93-142-168-177.adsl.net.t-com.hr)
07:45:30 mastarija joins (~mastarija@2a05:4f46:e03:6000:bd1:38d3:bfb:8169)
07:45:54 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
07:46:07 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
07:46:56 lortabac joins (~lortabac@2a01:e0a:541:b8f0:2667:3554:7507:27aa)
07:48:00 vglfr joins (~vglfr@145.224.100.22)
07:49:51 fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
07:51:49 discuss9128 joins (~discuss91@bb119-74-93-26.singnet.com.sg)
07:52:43 michalz joins (~michalz@185.246.207.197)
07:55:29 king_gs1 joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924)
07:55:35 × king_gs quits (~Thunderbi@187.201.139.206) (Read error: Connection reset by peer)
07:55:35 king_gs1 is now known as king_gs
07:55:36 titibandit joins (~titibandi@xdsl-78-35-167-196.nc.de)
08:03:43 chele joins (~chele@user/chele)
08:04:13 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:04:19 × king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Ping timeout: 260 seconds)
08:13:11 MajorBiscuit joins (~MajorBisc@c-001-018-015.client.tudelft.eduvpn.nl)
08:17:50 × fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds)
08:19:13 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
08:22:50 × razetime quits (~quassel@117.193.2.3) (Ping timeout: 240 seconds)
08:23:38 ub joins (~Thunderbi@178.165.184.78.wireless.dyn.drei.com)
08:23:39 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
08:28:32 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds)
08:32:27 hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
08:33:35 fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
08:36:11 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Client Quit)
08:36:47 × ft quits (~ft@p508dbd59.dip0.t-ipconnect.de) (Quit: leaving)
08:38:27 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7423:a580:f992:c653)
08:39:20 gmg joins (~user@user/gehmehgeh)
08:41:27 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
08:43:31 razetime joins (~quassel@117.193.2.3)
08:44:00 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7423:a580:f992:c653) (Ping timeout: 260 seconds)
08:44:06 × ub quits (~Thunderbi@178.165.184.78.wireless.dyn.drei.com) (Quit: ub)
08:44:22 acidjnk joins (~acidjnk@p200300d6e7137a79b1807064f1abc0ef.dip0.t-ipconnect.de)
08:45:29 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
08:46:46 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
08:47:20 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
08:47:29 × discuss9128 quits (~discuss91@bb119-74-93-26.singnet.com.sg) (Quit: Client closed)
08:49:06 azimut joins (~azimut@gateway/tor-sasl/azimut)
08:49:09 nschoe joins (~q@141.101.51.197)
08:50:17 × nschoe quits (~q@141.101.51.197) (Client Quit)
08:50:44 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
08:53:35 nschoe joins (~q@141.101.51.197)
09:00:04 × pareto-optimal-d quits (~pareto-op@2001:470:69fc:105::1:b61f) (Quit: You have been kicked for being idle)
09:00:06 × disco-dave[m] quits (~disco-dav@2001:470:69fc:105::2:1892) (Quit: You have been kicked for being idle)
09:00:13 × fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 256 seconds)
09:00:47 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 260 seconds)
09:02:10 × AlexZenon quits (~alzenon@94.233.241.222) (Quit: ;-)
09:02:34 × Alex_test quits (~al_test@94.233.241.222) (Quit: ;-)
09:03:00 × AlexNoo quits (~AlexNoo@94.233.241.222) (Quit: Leaving)
09:03:50 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
09:05:56 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
09:07:12 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
09:07:12 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
09:07:16 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
09:16:38 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
09:19:51 Feuermagier_ joins (~Feuermagi@2a02:2488:4211:3400:6419:933b:46e0:8942)
09:20:43 AlexNoo joins (~AlexNoo@94.233.241.222)
09:20:45 AlexZenon joins (~alzenon@94.233.241.222)
09:21:25 chromoblob joins (~user@37.113.164.122)
09:22:34 ub joins (~Thunderbi@178.165.184.78.wireless.dyn.drei.com)
09:23:56 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
09:24:43 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
09:25:07 Alex_test joins (~al_test@94.233.241.222)
09:25:23 __monty__ joins (~toonn@user/toonn)
09:26:01 ubert1 joins (~Thunderbi@178.165.179.251.wireless.dyn.drei.com)
09:26:02 ub1 joins (~Thunderbi@178.165.179.251.wireless.dyn.drei.com)
09:27:25 × ub quits (~Thunderbi@178.165.184.78.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
09:27:30 × ubert quits (~Thunderbi@178.165.184.78.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
09:27:30 ubert1 is now known as ubert
09:27:31 ub1 is now known as ub
09:27:43 Pickchea joins (~private@user/pickchea)
09:27:59 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
09:28:20 × ham quits (~ham@user/ham) (Ping timeout: 248 seconds)
09:28:34 ham joins (~ham@user/ham)
09:30:08 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
09:30:41 chexum joins (~quassel@gateway/tor-sasl/chexum)
09:32:21 × titibandit quits (~titibandi@xdsl-78-35-167-196.nc.de) (Remote host closed the connection)
09:35:47 × youziqi quits (~youziqi@103.37.140.91) (Ping timeout: 260 seconds)
09:37:37 youziqi joins (~youziqi@103.37.140.123)
09:39:56 freeside_ joins (~mengwong@103.252.202.193)
09:40:38 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
09:41:18 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
09:49:34 × vglfr quits (~vglfr@145.224.100.22) (Ping timeout: 260 seconds)
09:51:26 × tzh_ quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:53:41 vglfr joins (~vglfr@145.224.100.22)
10:04:49 × ub quits (~Thunderbi@178.165.179.251.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
10:07:20 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:09:59 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds)
10:19:30 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
10:21:29 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
10:22:10 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
10:22:11 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
10:23:57 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
10:28:06 dcoutts__ is now known as dcoutts_
10:28:16 dcoutts_ is now known as dcoutts
10:28:32 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
10:30:13 Kaiepi joins (~Kaiepi@108.175.84.104)
10:34:53 × razetime quits (~quassel@117.193.2.3) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
10:43:49 × Feuermagier_ quits (~Feuermagi@2a02:2488:4211:3400:6419:933b:46e0:8942) (Quit: Leaving)
10:45:47 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
10:47:37 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
10:49:10 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 240 seconds)
10:49:13 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
10:51:45 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
10:52:52 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
10:53:19 chromoblob joins (~user@37.113.164.122)
10:57:14 × foul_owl quits (~kerry@23.82.194.107) (Ping timeout: 260 seconds)
11:00:39 razetime joins (~quassel@117.254.35.168)
11:03:53 Erutuon joins (~Erutuon@user/erutuon)
11:06:34 × shailangsa quits (~shailangs@host109-159-108-137.range109-159.btcentralplus.com) (Ping timeout: 260 seconds)
11:06:56 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
11:10:21 xff0x joins (~xff0x@ai071162.d.east.v6connect.net)
11:10:44 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
11:11:05 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
11:12:52 × dagit quits (~dagit@2001:558:6025:38:6476:a063:d05a:44da) (Ping timeout: 252 seconds)
11:15:39 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 268 seconds)
11:16:13 foul_owl joins (~kerry@174-21-75-230.tukw.qwest.net)
11:20:34 × infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection)
11:21:37 chromoblob joins (~user@37.113.164.122)
11:23:39 infinity0 joins (~infinity0@pwned.gg)
11:27:43 × MajorBiscuit quits (~MajorBisc@c-001-018-015.client.tudelft.eduvpn.nl) (Ping timeout: 252 seconds)
11:27:45 × mei quits (~mei@user/mei) (Quit: mei)
11:29:20 mei joins (~mei@user/mei)
11:31:54 MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
11:32:32 cafkafk joins (~cafkafk@fsf/member/cafkafk)
11:32:48 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Client Quit)
11:33:11 cafkafk joins (~cafkafk@fsf/member/cafkafk)
11:33:47 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:d5b6:b99f:4049:77a7) (Ping timeout: 256 seconds)
11:36:22 thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
11:39:13 <dminuoso> tomsmeding: So I thought a while about your Array/Vector question. Without adding State# RealWorld to the implementation, you could also have parsers produce IO actions that copyBytes into a mutable array buffer.
11:39:34 <dminuoso> tomsmeding: However, the problem here is that you must extend the lifetime of the underyling bytestring until that IO action has been executed.
11:40:15 <dminuoso> But this could easily be done by a simple unsafePerformIO and some seq usage.
11:40:21 <dminuoso> That is, something along the lines of
11:41:13 <dminuoso> readThin :: Parser (IO ()); readThing = do { act1 <- readChunk 1024 mutvar; act2 <- readChunk 1024 mutvar; pure (act 1 >> act 2) }
11:41:45 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
11:42:01 <dminuoso> And then as your final parser do something like `f = do { io <- readThing; pure $! unsafePerformIO io }`
11:42:29 <dminuoso> That way you a) dont have to worry about lifetime, and b) you will keep unsafePerformIO isolated into a singular spot, keeping the rest of the parser pure and sane
11:46:21 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
11:46:22 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
11:46:23 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
11:47:26 a_troubled_walru joins (~Thunderbi@210.185.77.16)
11:47:45 jakalx joins (~jakalx@base.jakalx.net)
11:48:06 <dminuoso> tomsmeding: however, keep in mind that given your specific problem domain, you likely cannot just naively copy buffers into a mutable vector anyway, because a string could have escaped sequences. So you will end up having to peek and poke a byte at a time with a small state machine?
11:49:29 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
11:49:44 azimut joins (~azimut@gateway/tor-sasl/azimut)
11:51:15 × MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 260 seconds)
11:53:35 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
11:56:53 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
11:57:07 mc47 joins (~mc47@xmonad/TheMC47)
11:57:47 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
11:58:53 ec joins (~ec@gateway/tor-sasl/ec)
11:59:41 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
12:05:23 × Franciman quits (~Franciman@mx1.fracta.dev) (Remote host closed the connection)
12:07:39 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
12:08:15 azimut joins (~azimut@gateway/tor-sasl/azimut)
12:10:18 stackdroid18 joins (14094@user/stackdroid)
12:10:21 <sshine> I saw a package one time about a year ago that was plug-and-play for Megaparsec and provided some nice ASCII rendering around its errors. I think it was a generic framework for making any kind of (syntax?) error look nice.
12:10:30 <sshine> does anyone know what package I'm talking about?
12:10:31 Franciman joins (~Franciman@mx1.fracta.dev)
12:13:15 Guest75 joins (~Guest75@178.141.207.13)
12:14:08 `2jt joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
12:14:51 × freeside_ quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds)
12:18:28 × meooow quits (~meooow@2400:6180:100:d0::ad9:e001) (Quit: q)
12:18:46 meooow joins (~meooow@2400:6180:100:d0::ad9:e001)
12:20:49 × youziqi quits (~youziqi@103.37.140.123) (Ping timeout: 256 seconds)
12:22:34 youziqi joins (~youziqi@103.37.140.124)
12:25:37 <dminuoso> tomsmeding: https://gist.github.com/dminuoso/6de513c3e98ba67588957c19ce4eacbd
12:25:39 <dminuoso> Maybe this?
12:25:52 CiaoSen joins (~Jura@p200300c95701f1002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
12:26:24 freeside joins (~mengwong@103.252.202.193)
12:27:24 <sshine> diagnose!
12:28:31 × Guest75 quits (~Guest75@178.141.207.13) (Quit: Client closed)
12:30:11 InstX1 joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
12:31:14 <dminuoso> You havent lived until you pattern match on an IO without hesitation.
12:31:30 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds)
12:33:01 mmhat joins (~mmh@p200300f1c7050c1bee086bfffe095315.dip0.t-ipconnect.de)
12:33:24 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
12:33:40 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
12:33:51 <lortabac> haha I only had to match on IO once because I had no choice and it was perfectly safe (all I did was newtype wrapping/unwrapping)
12:34:22 <lortabac> outside of that very limited case I wouldn't dare :s
12:34:30 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
12:34:37 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
12:35:14 × InstX1 quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 260 seconds)
12:35:45 ubert1 joins (~Thunderbi@178.165.179.251.wireless.dyn.drei.com)
12:36:07 azimut joins (~azimut@gateway/tor-sasl/azimut)
12:37:08 × `2jt quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 248 seconds)
12:38:09 × ubert quits (~Thunderbi@178.165.179.251.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
12:38:09 ubert1 is now known as ubert
12:38:42 lortabac_ joins (~lortabac@37.170.202.252)
12:38:44 chexum joins (~quassel@gateway/tor-sasl/chexum)
12:39:03 × lortabac_ quits (~lortabac@37.170.202.252) (Client Quit)
12:39:10 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:2667:3554:7507:27aa) (Ping timeout: 240 seconds)
12:39:20 lortabac joins (~lortabac@37.170.202.252)
12:45:40 lyle joins (~lyle@104.246.145.85)
12:50:30 × lortabac quits (~lortabac@37.170.202.252) (Ping timeout: 240 seconds)
12:51:50 × akegalj quits (~akegalj@93-142-168-177.adsl.net.t-com.hr) (Quit: leaving)
12:53:32 Feuermagier_ joins (~Feuermagi@87.249.132.146)
12:53:39 × youziqi quits (~youziqi@103.37.140.124) (Ping timeout: 260 seconds)
12:53:56 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:56:35 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 260 seconds)
12:56:42 youziqi joins (~youziqi@103.37.140.45)
12:57:30 × acidjnk quits (~acidjnk@p200300d6e7137a79b1807064f1abc0ef.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
12:58:13 × mc47 quits (~mc47@xmonad/TheMC47) (Ping timeout: 256 seconds)
12:59:38 freeside joins (~mengwong@103.252.202.193)
13:00:26 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:00:42 ozkutuk5 joins (~ozkutuk@176.240.173.153)
13:01:46 `2jt joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
13:04:23 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 260 seconds)
13:06:10 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
13:07:15 ub joins (~Thunderbi@178.165.179.251.wireless.dyn.drei.com)
13:07:19 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds)
13:08:45 fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
13:11:41 acidjnk joins (~acidjnk@p200300d6e7137a8274644e28d572a0cd.dip0.t-ipconnect.de)
13:12:25 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
13:13:29 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
13:13:32 × a_troubled_walru quits (~Thunderbi@210.185.77.16) (Quit: a_troubled_walru)
13:14:08 <dminuoso> tomsmeding: Im starting to like this, actually. https://gist.github.com/dminuoso/6de513c3e98ba67588957c19ce4eacbd#file-f-hs-L68-L79
13:14:12 <dminuoso> I should upstream this
13:17:57 chromoblob joins (~user@37.113.164.122)
13:20:25 hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
13:22:30 × dsrt^ quits (~dsrt@76.145.185.103) (Remote host closed the connection)
13:23:31 × razetime quits (~quassel@117.254.35.168) (Ping timeout: 260 seconds)
13:24:27 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
13:25:31 <[exa]> dminuoso: ok wow
13:26:25 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
13:27:05 <carbolymer> when I input a block of code in GHCi with :{ :}, how can I navigate between lines, e.g. go to line up? arrow up seems to go back in history instead
13:27:27 <dminuoso> carbolymer: I dont think you can.
13:27:33 <carbolymer> :|
13:27:44 <carbolymer> I should setup ihaskell one day
13:27:48 <carbolymer> with jupyter
13:28:36 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
13:32:29 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
13:36:14 cafkafk just uses org-babel
13:37:22 razetime joins (~quassel@117.254.35.168)
13:38:27 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 256 seconds)
13:39:56 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
13:41:10 ec joins (~ec@gateway/tor-sasl/ec)
13:44:23 moonsheep joins (~user@user/moonsheep)
13:44:37 moonsheep parts (~user@user/moonsheep) ()
13:45:36 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f)
13:47:35 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Ping timeout: 255 seconds)
13:48:29 cafkafk joins (~cafkafk@fsf/member/cafkafk)
13:50:07 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f) (Ping timeout: 260 seconds)
13:51:37 zeenk joins (~zeenk@2a02:2f04:a208:3600::7fe)
13:52:05 lortabac joins (~lortabac@2a01:e0a:541:b8f0:e456:ad2e:a3ee:4a31)
13:52:32 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
13:54:43 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
13:54:48 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
13:55:44 azimut joins (~azimut@gateway/tor-sasl/azimut)
13:56:32 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
13:56:39 stiell joins (~stiell@gateway/tor-sasl/stiell)
13:56:51 causal joins (~user@50.35.83.177)
13:56:59 <jean-paul[m]> Why would you pattern match on IO? And also how
13:57:44 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Quit: WeeChat 3.6)
13:57:51 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
13:58:23 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
13:59:26 chexum joins (~quassel@gateway/tor-sasl/chexum)
14:00:19 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
14:00:32 <lortabac> jean-paul[m]: I'd say 99.99% of the time you don't need to know what's inside IO
14:01:06 <jean-paul[m]> lortabac: For me it is 100% so far.
14:01:24 irrgit_ joins (~irrgit@146.70.27.250)
14:01:40 <jean-paul[m]> But that 0.001% sounds like it might be fun stuff
14:02:08 <lortabac> in my case I was implementing an interpreter and "piggybacking" on Haskell's IO mechanism to implement the IO of the object language
14:02:08 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
14:03:02 <lortabac> IIRC I had a newtype over IO, and I needed to replicate the same monadic behavior
14:03:34 <lortabac> I don't remember the exact details, but at some point I was obliged to look inside the IO constructor
14:04:39 <lortabac> very simple stuff, compared to what dminuoso is doing :D
14:04:43 <jean-paul[m]> Oh. And the IO constructor is just ... exposed. So it's not even that hard to look inside if you feel like it. I never thought to look.
14:05:15 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
14:05:58 stiell joins (~stiell@gateway/tor-sasl/stiell)
14:06:04 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:07:05 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
14:08:42 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
14:09:36 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
14:13:36 <probie> whatever happened to Arrows? They seemed to have a brief surge in popularity back in 2010? 2011? and then died out
14:16:55 <probie> (context: last time I directly pattern matched on IO, it was in an attempt to replace the "IO Monad" with the "IO Arrow" without just directly using `Kleisli IO`)
14:18:23 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
14:18:55 <dminuoso> probie: Arrow has been superseeded by Applicative, Monad and Profunctor.
14:19:05 × Feuermagier_ quits (~Feuermagi@87.249.132.146) (Quit: Leaving)
14:19:15 Feuermagier joins (~Feuermagi@user/feuermagier)
14:19:59 <dminuoso> And Category I suppose
14:20:34 <dminuoso> I think the only arrow-type of interfaces still left around are in FRP
14:21:01 <dminuoso> jean-paul[m]: So the reason here is quite simple: I want guaranteed unboxing.
14:21:29 <dminuoso> jean-paul[m]: In flatparse, you have `newtype Parser e a = Parser {runParser# :: ForeignPtrContents -> Addr# -> Addr# -> Res# e a}`
14:21:51 <dminuoso> Where `type Res# e a = (# (# a, Addr# #) | (# #) | (# e #) #)`
14:23:09 <probie> dminuoso: Profunctor isn't in base though
14:23:09 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
14:23:15 × fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
14:24:00 <dminuoso> probie: Yes, but things that want that kind of interface can simply depend on `profunctors`
14:24:23 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
14:25:17 <dminuoso> So here comes the issue: When you want IOful parsers, you would have to conjure some kind of `newtype ParserIO e a = Parser {runParser# :: ForeignPtrContents -> Addr# -> Addr# -> IO (Res# e a) }` - however that wont type check as IO only works over boxed types.
14:25:37 <tomsmeding> dminuoso: hi
14:25:40 <dminuoso> jean-paul[m]: ^- so what you can simply do, is take IO apart, and weave the State# passing mechanism inside into the Parser function itself
14:25:55 stiell joins (~stiell@gateway/tor-sasl/stiell)
14:26:06 <tomsmeding> dminuoso: before reading your code, building up a huge thunk of IO actions seems not any better than just building the intermediate list?
14:26:23 <tomsmeding> ("thunk" is not the right word here, excuse me)
14:26:24 <dminuoso> tomsmeding: why would there be a *thunk*?
14:26:29 <tomsmeding> yeah no thunk
14:26:40 <tomsmeding> but a large chain of closures referring to each other
14:26:40 <dminuoso> But yeah, you will have a lot of closure allocations
14:26:55 <dminuoso> tomsmeding: Therefore, let me introduce you to my final idea: ParserIO
14:26:59 <tomsmeding> indeed, one for every (:) in the naive version where you make the intermediate list :p
14:27:01 <tomsmeding> i.e. doesn't help
14:27:08 <dminuoso> https://gist.github.com/dminuoso/6de513c3e98ba67588957c19ce4eacbd
14:27:09 <tomsmeding> (I assume)
14:27:15 AdamConner-Sax[m joins (~adamcsmat@2001:470:69fc:105::1:e2c8)
14:27:34 <dminuoso> Ah there's some copy paste bugs left in there, let me fix them real quick
14:27:39 <tomsmeding> ah this is sortof similar-ish to 'ParserT IO'?
14:27:50 <dminuoso> Yeah
14:28:39 <dminuoso> None of it is tested, but Im confident this will work.
14:29:17 <dminuoso> (Should I mention I originally did have a bug making unsafeParserIO really an accursedUnutterableParserIO?)
14:29:56 <tomsmeding> dminuoso: why isthat unsafeCoerce# not unsafeCoerce
14:30:22 <dminuoso> Because these are unboxed tuples?
14:30:30 <tomsmeding> oh wait yes
14:30:49 <dminuoso> Those functor/applicative/monad instances are just boiler-plate copy and paste
14:31:06 <dminuoso> The neat stuff begins at line 51
14:32:14 <tomsmeding> I don't know enough about the IO implementation internals to say anything about the duplication :p
14:32:33 InstX1 joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
14:32:38 <dminuoso> tomsmeding: its really mundane, its just a direct mapping to how unsafePerformIO is implemented
14:32:52 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
14:32:53 <tomsmeding> yeah I've looked through those definitions at some point
14:32:55 <dminuoso> `noDuplicate# (s :: State# a)` is a kind of lock
14:33:04 <dminuoso> (think of it as acquiring a kind of mutex)
14:33:15 <dminuoso> and never releasing it
14:33:16 <tomsmeding> oh that no two threads evaluate that thunk simultaneously?
14:33:18 <dminuoso> yes
14:33:28 <dminuoso> noDuplicate = IO $ \s -> case noDuplicate# s of s' -> (# s', () #)
14:33:33 <dminuoso> unsafePerformIO m = unsafeDupablePerformIO (noDuplicate >> m)
14:34:36 <dminuoso> The entire construction of ParserIO is really harmless
14:34:53 <tomsmeding> looks cool
14:35:20 <tomsmeding> I imagine you don't want to create yet another (third?) copy of the parser implementation in flatparse :p
14:35:23 <fendor[m]> Another question for understanding kinds and types... what does it mean if I give a class a kind signature like here: https://paste.tomsmeding.com/evYyAyYj
14:35:27 <fendor[m]> That the class can only have instances for [AccessLevel]?
14:35:34 <dminuoso> tomsmeding: Not needed, because you can just liftP all the Basic combinators in
14:35:47 <tomsmeding> fendor[m]: I guess this is easily tried :)
14:35:53 <dminuoso> And no stateful variant is needed, because I think this subsumes Stateful
14:35:57 <tomsmeding> seems the only sensible interpretation
14:36:06 <tomsmeding> dminuoso: ah right
14:36:08 <tomsmeding> yeah
14:36:30 <tomsmeding> you'd want to {-# INLINE liftP #-} then though
14:36:38 <dminuoso> tomsmeding: only problem is going to be thing with Parser in negative position. Mmm
14:36:44 <fendor[m]> tomsmeding: fair, that's what it means apparently
14:36:44 <tomsmeding> or maybe rather, ensure that the argument to liftP is going to be inlined?
14:37:02 <dminuoso> so we need a kind of askUnliftIO variant for ParserIO
14:37:23 × InstX1 quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds)
14:37:40 <fendor[m]> but [AccessLevel] is not fundamentally different to Type, right?
14:37:47 tomsmeding is not sure that even makes much sense for ParserIO
14:37:52 <dminuoso> Ahh but no, it wont work because of that stateful address. :(
14:37:54 <tomsmeding> fendor[m]: well, it's a different kind
14:38:01 <dminuoso> tomsmeding: it absolutely would!
14:38:23 <dminuoso> tomsmeding: otherwise you couldnt make full use of things like `withByteString :: Parser r e a -> (a -> ByteString -> Parser r e b) -> Parser r e b
14:38:31 × CiaoSen quits (~Jura@p200300c95701f1002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
14:38:47 <fendor[m]> I don't quite grasp what that entails. Is Type not some kind of super type of [AccessLevel]?
14:38:49 <dminuoso> liftP $ withByteString (\a buf -> ???)
14:39:11 <tomsmeding> fendor[m]: 4 is a value of type Int, which is of kind Type; 'True is a type of kind 'Bool
14:39:17 <dminuoso> And how do you parse an IOful parser to withByteString?
14:39:20 <tomsmeding> Type and '['AccessLevel] are kinds
14:39:51 <tomsmeding> though ghc has this type-in-type thing where types and kinds are secretly the same, so if you're asking about that then yes there is some tomfoolery going on
14:39:55 <tomsmeding> but apart from that, no
14:39:58 <dminuoso> tomsmeding: anyway, we *could* make an askUnliftIO thing, but this has a drastic price - namely that will interact subtly broken with respect to backtracking.
14:40:25 <tomsmeding> dminuoso: that sounds too scary to be admissible
14:40:40 <fendor[m]> I am very much confused 😄 'True is a promoted type constructor no?
14:40:41 <dminuoso> yeah, so I guess if you want this, you can no longer use any of the CPS things
14:40:47 <tomsmeding> fendor[m]: yes as in DataKinds
14:41:03 <tomsmeding> fendor[m]: your code would trigger -Wunticked-promoted-constructors if I'm not mistaken
14:41:17 <fendor[m]> not with ghc 9.4 where it is encouraged
14:41:25 <tomsmeding> dminuoso: unless they are reimplemented, right?
14:41:32 <dminuoso> tomsmeding: right.
14:41:47 <tomsmeding> fendor[m]: okay sure, but still, the fact that it _would_ is useful information here :p
14:42:15 <geekosaur> 'True is a promoted data constructor
14:42:21 <dminuoso> but honestly its a non-issue. If you're in a spot where you *rely* on the performance advantage of the CPS version and *need* IO (you know, the 0 people out there currently), you are equipped to just rewrite this combinator yourself on the spot
14:42:31 <tomsmeding> dminuoso: :D
14:42:34 <geekosaur> 'Bool is a promoted type constructor
14:43:09 <dminuoso> geekosaur: mmm. I think the wording is poor either way.
14:43:25 <dminuoso> that is does "promoted type constructor" mean the resulting thing is a type, or that the original thing is a type?
14:44:16 <dminuoso> The GHC manual wording suggest calling 'True a promoted type constructor is fine.
14:44:26 <tomsmeding> dminuoso: curious how much the RealWorld passing influences performance
14:44:37 <dminuoso> tomsmeding: honestly probably not much at all.
14:44:54 <fendor[m]> what is the difference between a promoted data constructor and a promoted type constructor?
14:45:02 mvk joins (~mvk@2607:fea8:5ce3:8500::4b68)
14:45:10 <dminuoso> tomsmeding: if it inlined+fused before, it will still inline+fuse (because State# RealWorld does not exist)
14:45:19 <dminuoso> if there's any penalty Im tempted to consider a GHC simplifier bug
14:45:36 <tomsmeding> yay
14:45:43 jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
14:45:45 <dminuoso> because consider: we do have that Addr# threading that is in the way of the GHC simplifier
14:45:51 <dminuoso> so you cant just freely reorder things
14:46:10 <tomsmeding> fendor[m]: True/Just are data constructors, Bool/Maybe are type constructors
14:46:17 <fendor[m]> yeah
14:46:29 <tomsmeding> lifting True to the type level using DataKinds makes it a type constructor
14:47:04 <tomsmeding> so is 'True then a type constructor resulting from promotion (a "promoted type constructor"), or a promoted (data constructor) ("promoted data constructor")?
14:47:10 <tomsmeding> but terminology
14:47:31 × acidjnk quits (~acidjnk@p200300d6e7137a8274644e28d572a0cd.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
14:47:41 <tomsmeding> but yeah, so [AccessList] :: Type, but '['AccessList] is itself a kind
14:47:54 <dminuoso> The GHC uses phrases like `promoting a data constructor into a type`, "promoted type constructor" reads ambiguous to me
14:47:58 <tomsmeding> which is again of """kind""" Type in ghc because the hierarchy is forcibly flattened
14:48:22 <dminuoso> I would actually understand `promoted type constructor` to mean `a type constructor resulting from promotion` just from the English side of it
14:48:26 <tomsmeding> in a dependently-typed language with universe levels, you have values that have types that have kinds that have sorts that have... ad infinitum
14:48:35 <tomsmeding> and then '['AccessLevel] would not be in Type
14:48:46 <tomsmeding> dminuoso: I would read the opposite :p
14:48:51 <tomsmeding> so it's a bad phrase
14:49:14 <geekosaur> as a native English speaker I find ghc's usage of it pretty obvious
14:49:31 <geekosaur> but ewhen it comes down to it, this needs to be described in some kind of formal language
14:49:49 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
14:49:50 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
14:49:50 wroathe joins (~wroathe@user/wroathe)
14:49:56 <dminuoso> does GHC use the phrase "promoted data constructor" anywhere?
14:49:58 <geekosaur> natural language, especially English (way too flexible!), kinda sucks for this kind of thing
14:50:12 <fendor[m]> but if I am not mistaken, '['AccessLevel] /~ ['AccessLevel]?
14:50:25 <dminuoso> fendor[m]: correct.
14:51:00 <dminuoso> Though ['AccessLevel] is ill-typed
14:51:12 <dminuoso> % :k []
14:51:12 <yahb2> [] :: * -> *
14:51:34 <dminuoso> (So Im not entirely sure whether asking whether two types are equal when one is ill-typed is sensible at all)
14:51:57 <geekosaur> doesn't ghc read that as '['AccessLevel] because it can't mean anything else? (which is kinda Englishing it)
14:52:05 × mastarija quits (~mastarija@2a05:4f46:e03:6000:bd1:38d3:bfb:8169) (Ping timeout: 260 seconds)
14:52:25 <dminuoso> % :set -XDataKinds
14:52:25 <yahb2> <no output>
14:52:31 <fendor[m]> then I am confused again what `type AcceptableList :: [AccessLevel] -> [AccessLevel] -> [AccessLevel] -> Constraint` means, if '[AccessLevel]' is supposed to be a kind?
14:52:42 <tomsmeding> fendor[m]: Type and Constraint are also kinds
14:52:42 <dminuoso> % data AccessLevel = N | R | X
14:52:42 <yahb2> <no output>
14:52:49 <dminuoso> % :k ['AccessLevel]
14:52:49 <fendor[m]> well, no it isn't, it is a type of some kind
14:52:49 <yahb2> <interactive>:1:2: error: ; Not in scope: data constructor ‘AccessLevel’ ; Perhaps you meant variable ‘$tcAccessLevel’ (<no location info>)
14:53:01 <dminuoso> Huh what?
14:53:17 <tomsmeding> % :k '['AccessLevel]
14:53:17 <yahb2> <interactive>:1:15: error: parse error on input ‘]’
14:53:22 <tomsmeding> % :k '[ 'AccessLevel]
14:53:22 <yahb2> <interactive>:1:4: error: ; Not in scope: data constructor ‘AccessLevel’ ; Perhaps you meant variable ‘$tcAccessLevel’ (<no location info>)
14:53:31 tomsmeding confused
14:53:32 <dminuoso> % :k 'AccessLevel
14:53:33 <yahb2> <interactive>:1:1: error: ; Not in scope: data constructor ‘AccessLevel’ ; Perhaps you meant variable ‘$tcAccessLevel’ (<no location info>)
14:53:34 shriekingnoise joins (~shrieking@186.137.167.202)
14:53:36 acidjnk joins (~acidjnk@p200300d6e7137a8274644e28d572a0cd.dip0.t-ipconnect.de)
14:53:38 <dminuoso> Maybe someone killed yahb in between?
14:53:38 <tomsmeding> % :k AccessLevel
14:53:38 <yahb2> AccessLevel :: *
14:53:48 <dminuoso> Oh maybe :k is just magically broken
14:53:48 <tomsmeding> % '[Int]
14:53:48 <yahb2> <interactive>:76:3: error: parse error on input ‘Int’
14:53:52 <tomsmeding> % :k '[Int]
14:53:52 <yahb2> '[Int] :: [*]
14:53:54 <dminuoso> % :kind! 'AccessLevel
14:53:54 <yahb2> <interactive>:1:1: error: ; Not in scope: data constructor ‘AccessLevel’ ; Perhaps you meant variable ‘$tcAccessLevel’ (<no location info>)
14:54:06 <dminuoso> What's going on here?
14:54:24 <dminuoso> Ah..
14:54:33 <dminuoso> % :kind! AccessLevel
14:54:34 <yahb2> AccessLevel :: * ; = AccessLevel
14:54:54 <dminuoso> % :t (undefined :: ['AccessLevel])
14:54:54 <yahb2> <interactive>:1:16: error: ; Not in scope: data constructor ‘AccessLevel’ ; Perhaps you meant variable ‘$tcAccessLevel’ (<no location info>)
14:55:14 <dminuoso> % :set -XTypeInType
14:55:14 <yahb2> <no output>
14:55:17 <dminuoso> % :t (undefined :: ['AccessLevel])
14:55:17 <yahb2> <interactive>:1:16: error: ; Not in scope: data constructor ‘AccessLevel’ ; Perhaps you meant variable ‘$tcAccessLevel’ (<no location info>)
14:55:17 <tomsmeding> % :t (undefined :: ['Int])
14:55:18 <yahb2> <interactive>:1:16: error: Not in scope: data constructor ‘Int’
14:55:29 <dminuoso> There's some really strange scoping rules
14:55:29 <tomsmeding> yeah this makes sense
14:55:33 <tomsmeding> here we're writing a type
14:55:40 <dminuoso> 'AccessLevel is a type too.
14:55:45 <tomsmeding> no
14:55:48 <dminuoso> TypeInType.
14:55:48 <tomsmeding> 'N is is a type
14:55:51 <tomsmeding> 'AccessLevel is a kind
14:55:52 <tomsmeding> oh
14:56:16 <tomsmeding> ghc is complaining that it wants a _data constructor_ AccessLevel
14:56:35 <dminuoso> Oh hold on.
14:56:39 <dminuoso> I see what's going ong.
14:56:52 <dminuoso> The tick is asking for the *promoted* type constructor from a data constructor.
14:56:58 <dminuoso> But AccessLevel is not a data constructor.
14:57:10 <tomsmeding> % :k '[Int]
14:57:10 <yahb2> '[Int] :: [*]
14:57:13 <tomsmeding> % :k '[AccessLevel]
14:57:13 <yahb2> '[AccessLevel] :: [*]
14:57:15 <tomsmeding> wa
14:57:21 <dminuoso> How do we even resolve this ambiguity here?
14:57:49 <tomsmeding> % :k (t :: '[AccessLevel])
14:57:49 <yahb2> <interactive>:1:2: error: Not in scope: type variable ‘t’
14:57:53 <dminuoso> % :k 'N
14:57:53 <yahb2> 'N :: AccessLevel
14:57:57 <dminuoso> Is this the same type as:
14:58:02 <tomsmeding> % :k forall (t :: '[AccessLevel]). t
14:58:02 <yahb2> <interactive>:1:14: error: ; • Expected a type, but ‘'[AccessLevel]’ has kind ‘[*]’ ; • In the kind ‘'[AccessLevel]’ ; In the type ‘forall (t :: '[AccessLevel]). t’
14:58:04 <dminuoso> [AccessLevel]?
14:58:08 <tomsmeding> % :k forall (t :: '[AccessLevel]). Proxy t
14:58:08 <yahb2> <interactive>:1:31: error: ; Not in scope: type constructor or class ‘Proxy’ ; Perhaps you meant ‘Proxy#’ (imported from GHC.Prim)
14:58:12 <tomsmeding> $ import Data.Proxy
14:58:14 <tomsmeding> % import Data.Proxy
14:58:14 <yahb2> <no output>
14:58:18 <tomsmeding> % :k forall (t :: '[AccessLevel]). Proxy t
14:58:18 <yahb2> <interactive>:1:14: error: ; • Expected a type, but ‘'[AccessLevel]’ has kind ‘[*]’ ; • In the kind ‘'[AccessLevel]’ ; In the type ‘forall (t :: '[AccessLevel]). Proxy t’
14:58:52 <dminuoso> okay I think I begin to understand how things fit together here
14:59:17 <dminuoso> So `AccessLevel` even before DataKinds is already a type constructor. DataKinds does not introduce a new type constructor
14:59:25 <dminuoso> At least not for AccessLevel
14:59:31 <dminuoso> So in some strange way:\
14:59:39 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
14:59:48 <kronicmage> anyone know how to use saltine secretbox w/ a preexisting key?
14:59:50 <dminuoso> N :: AccessLevel
14:59:51 <dminuoso> 'N :: AccessLevel
14:59:59 <kronicmage> trying to decrypt something with it but the library doesn't let me construct the Key type
15:00:00 <tomsmeding> dminuoso: I would expect that 'N :: 'AccessLevel
15:00:01 <dminuoso> And I think this is the same type (type id?) @ tomsmeding
15:00:19 <dminuoso> some really strange crossing of universes
15:00:28 <tomsmeding> dminuoso: but we're failing to put this in a context where we must put a kind
15:00:33 <tomsmeding> ':k' expects a type
15:00:37 <dminuoso> (So AccessLevel is inhabited by both types and values)
15:00:45 <tomsmeding> '[ 'AccessLevel] is supposed to be a _kind_
15:00:47 <dminuoso> tomsmeding: No!
15:00:55 <dminuoso> tomsmeding: 'AccessLevel does not exist.
15:01:15 <dminuoso> Ticked type constructors arise from promoting the similarly named *data* constructors.
15:01:19 <dminuoso> But no AccessLevel data constructor exists.
15:01:37 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:02:19 <dminuoso> The really problematic part is this phrase in the GHC manual
15:02:25 <dminuoso> `With DataKinds, GHC automatically promotes every datatype to be a kind and its (value) constructors to be type constructors. The following types`
15:02:30 <dminuoso> In TypeInType, this makes no sense.
15:02:38 <dminuoso> Because its a noop
15:02:40 <tomsmeding> isn't TypeInType the default
15:02:43 <dminuoso> Yes! Thats the point
15:02:50 <dminuoso> So AccessLevel already is a kind
15:02:54 <dminuoso> because kind is just type
15:02:57 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
15:02:58 <dminuoso> Nothing gets created
15:03:08 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:03:22 <tomsmeding> my life is a lie
15:03:26 <dminuoso> So like I said:
15:03:31 <dminuoso> N :: AccessLevel
15:03:33 <dminuoso> 'N :: AccessLevel
15:03:33 <tomsmeding> I thought that ' promoted data constructs to type constructors and type constructors to kind constructors
15:03:34 <dminuoso> This describes it best
15:03:39 <tomsmeding> but the latter is apparently incorrect
15:03:43 <dminuoso> (thats some mindblowing revelation)
15:03:47 <tomsmeding> so if you -XNoTypeInType, one cannot write the AccessLevel kind?
15:03:55 <tomsmeding> that's terribly dumb
15:03:56 <dminuoso> NoTypeInType does not turn TypeInType off.
15:04:20 × razetime quits (~quassel@117.254.35.168) (Ping timeout: 248 seconds)
15:04:28 <dminuoso> 16:03:47 tomsmeding | so if you -XNoTypeInType, one cannot write the AccessLevel kind?
15:04:32 <dminuoso> Let's try
15:04:37 <dminuoso> % :set -XNoTypeInType
15:04:37 <yahb2> <no output>
15:04:45 <dminuoso> % :k ('N :: Accesslevel)
15:04:45 <yahb2> <interactive>:1:8: error: ; Not in scope: type constructor or class ‘Accesslevel’ ; Perhaps you meant ‘AccessLevel’ (line 64)
15:04:48 <dminuoso> % :k ('N :: AccessLevel)
15:04:48 <yahb2> ('N :: AccessLevel) :: AccessLevel
15:04:53 <dminuoso> Err what?
15:04:55 × simpleauthority quits (~simpleaut@user/simpleauthority) (Ping timeout: 260 seconds)
15:05:01 <dminuoso> Oh yes.
15:05:09 <dminuoso> % :t (N :: AccessLevel)
15:05:09 <yahb2> (N :: AccessLevel) :: AccessLevel
15:05:21 <dminuoso> tomsmeding: Like I said, you cant turn it off. Im not quite sure what TypeInType actually turns on, but its not TypeInType.
15:05:33 <tomsmeding> kronicmage: Key implements IsEncoding, which provides 'decode'
15:05:53 <dminuoso> Ah, the extensions is deprecated and its sole effect is to switch on PolyKinds :D
15:05:58 <tomsmeding> lol
15:06:03 <dminuoso> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/poly_kinds.html#kind-polymorphism
15:06:33 <dminuoso> geekosaur: okay. since we have that covered...
15:06:52 <dminuoso> differentiating between promoted type constructors and data constructors is actually a strange thing.
15:07:03 <dminuoso> given that type constructors do not get promoted
15:07:16 <dminuoso> (they already are promoted by virtue of implicit TypeInType)
15:08:33 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
15:08:33 <tomsmeding> we should all start programming Agda
15:08:52 <fendor[m]> I am still confused, but maybe slightly less ^^
15:09:07 <tomsmeding> TypeInType is terribly confusing
15:09:30 <dminuoso> N :: AcessLevel
15:09:33 <dminuoso> 'N :: AcessLevel
15:09:35 <dminuoso> This is so disturbing :(
15:09:48 <dminuoso> But I guess thats not as much TypeInType as it is DataKinds in the presence of TypeInType
15:10:12 <tomsmeding> % :t Type
15:10:12 <yahb2> <interactive>:1:1: error: Data constructor not in scope: Type
15:10:12 <dminuoso> One could still conceive DataKinds creating a *separate* promoted type I guess?
15:10:16 <tomsmeding> % :t Data.Kind.Type
15:10:16 <yahb2> <interactive>:1:1: error: ; • Illegal term-level use of the type constructor ‘GHC.Types.Type’ ; • In the expression: GHC.Types.Type
15:10:34 <dminuoso> tomsmeding: Uh! I have not seen that error before. o.o
15:10:37 <tomsmeding> % :k Data.Kind.Type
15:10:38 <yahb2> Data.Kind.Type :: *
15:10:43 <dminuoso> How does that even exist?
15:10:49 <tomsmeding> how about that, all words in one line
15:10:49 <dminuoso> Shouldnt GHC emit a "not in scope" error?
15:10:57 <tomsmeding> % :t Int
15:10:57 <yahb2> <interactive>:1:1: error: ; • Illegal term-level use of the type constructor ‘Int’ ; imported from ‘Prelude’ (and originally defined in ‘GHC.Types’) ; • In the expression: Int
15:11:22 <dminuoso> Is this possibly just an GHCi quirk?
15:11:33 <tomsmeding> % :set -fprint-star-as-type
15:11:33 <yahb2> Some flags have not been recognized: -fprint-star-as-type
15:12:07 <dminuoso> tomsmeding: Nice, I also like Data.Data.Data
15:12:31 <dminuoso> Also nice is:
15:12:34 <dminuoso> type Type = TYPE LiftedRep
15:12:53 <dminuoso> That monotic increased usage of capital letters.
15:13:08 <kronicmage> thanks tomsmeding!
15:13:27 <tomsmeding> % :set -XNoStarIsType
15:13:28 <yahb2> <no output>
15:13:30 razetime joins (~quassel@117.193.2.3)
15:13:32 <tomsmeding> % :k Data.Kind.Type
15:13:32 <yahb2> Data.Kind.Type :: Type
15:13:38 <tomsmeding> % import Data.Kind
15:13:38 <yahb2> <no output>
15:13:42 <tomsmeding> % :k Type
15:13:42 <yahb2> Type :: Type
15:13:46 <tomsmeding> voila, TypeInType
15:14:05 <tomsmeding> dminuoso: yeah those are also nice :D
15:15:11 <tomsmeding> % import Data.Proxy
15:15:11 <yahb2> <no output>
15:15:17 <tomsmeding> % data A (a :: Type) = A (Proxy a)
15:15:17 <yahb2> <no output>
15:15:26 <tomsmeding> dminuoso: not only are types kinds, kinds are also types
15:15:35 <tomsmeding> this makes 0 sense
15:15:47 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
15:16:00 <tomsmeding> % :set -XTypeApplications
15:16:00 <yahb2> <no output>
15:16:22 <tomsmeding> oh wait this makes perfect sense
15:16:26 tomsmeding confused
15:16:32 <tomsmeding> rather, _was_ confused
15:16:37 <dminuoso> tomsmeding: why do you keep saying kinds?
15:16:39 <dminuoso> we dont have them.
15:16:57 <dminuoso> The only relict we have of them is in a couple of diagnostics
15:16:58 <tomsmeding> because I refuse to come out of the idealised world where kinds are a well-defined thing
15:17:43 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:bd8e:f305:d2bf:3377)
15:17:47 simpleauthority joins (~simpleaut@user/simpleauthority)
15:18:04 <dminuoso> Well. Type :: Type
15:18:10 tomsmeding hides
15:18:11 <dminuoso> That says everything there is to know about it.
15:19:02 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
15:19:33 use-value1 joins (~Thunderbi@2a00:23c6:8a03:2f01:29a1:b64:95d9:d66d)
15:21:14 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
15:21:59 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
15:22:01 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:bd8e:f305:d2bf:3377) (Ping timeout: 252 seconds)
15:22:01 use-value1 is now known as use-value
15:23:03 chexum joins (~quassel@gateway/tor-sasl/chexum)
15:30:05 Sgeo joins (~Sgeo@user/sgeo)
15:40:50 <Franciman> Type in Type ftw
15:42:12 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
15:44:49 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
15:49:08 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
15:49:53 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
15:51:43 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
15:53:27 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f)
15:53:42 freeside joins (~mengwong@103.252.202.193)
15:59:26 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
16:00:12 chexum joins (~quassel@gateway/tor-sasl/chexum)
16:03:07 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 260 seconds)
16:05:44 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
16:08:47 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
16:09:37 mastarija joins (~mastarija@2a05:4f46:e03:6000:877c:11d6:ba5e:ab59)
16:11:20 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
16:15:13 jakalx parts (~jakalx@base.jakalx.net) ()
16:15:24 jakalx joins (~jakalx@base.jakalx.net)
16:15:46 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f) (Remote host closed the connection)
16:17:38 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
16:18:59 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
16:20:20 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded)
16:25:16 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:e456:ad2e:a3ee:4a31) (Ping timeout: 252 seconds)
16:26:11 Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
16:29:37 × kenran quits (~user@user/kenran) (Remote host closed the connection)
16:30:12 × `2jt quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 248 seconds)
16:32:56 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
16:34:44 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
16:36:02 earthy joins (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net)
16:37:38 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
16:39:47 × machinedgod quits (~machinedg@clnet-p10-126.ikbnet.co.at) (Ping timeout: 256 seconds)
16:39:57 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded)
16:40:00 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
16:43:36 lambdabot joins (~lambdabot@silicon.int-e.eu)
16:43:37 × lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host)
16:43:37 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
16:44:59 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f)
16:45:12 finsternis joins (~X@23.226.237.192)
16:45:47 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.7.1)
16:47:00 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds)
16:47:07 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
16:47:28 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
16:50:35 machinedgod joins (~machinedg@clnet-p10-126.ikbnet.co.at)
16:50:37 lortabac joins (~lortabac@2a01:e0a:541:b8f0:10c5:1d10:60ac:d312)
16:51:16 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
16:53:23 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds)
17:00:07 × mei quits (~mei@user/mei) (Quit: mei)
17:05:31 chromoblob joins (~user@37.113.164.122)
17:07:11 × califax quits (~califax@user/califx) (Remote host closed the connection)
17:08:36 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
17:08:53 img joins (~img@user/img)
17:09:14 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:09:31 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f) (Remote host closed the connection)
17:09:46 CiaoSen joins (~Jura@p200300c95701f1002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
17:09:54 califax joins (~califax@user/califx)
17:10:32 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
17:15:22 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
17:16:13 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
17:16:57 jakalx parts (~jakalx@base.jakalx.net) ()
17:18:10 jakalx joins (~jakalx@base.jakalx.net)
17:18:19 × CiaoSen quits (~Jura@p200300c95701f1002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
17:27:13 × califax quits (~califax@user/califx) (Remote host closed the connection)
17:27:18 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:10c5:1d10:60ac:d312) (Quit: WeeChat 2.8)
17:32:40 econo joins (uid147250@user/econo)
17:36:40 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
17:36:55 shapr joins (~user@68.54.166.125)
17:37:05 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
17:39:15 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Ping timeout: 260 seconds)
17:39:43 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:41:28 × mastarija quits (~mastarija@2a05:4f46:e03:6000:877c:11d6:ba5e:ab59) (Quit: WeeChat 3.5)
17:41:41 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
17:43:54 mei joins (~mei@user/mei)
17:44:23 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 256 seconds)
17:44:51 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
17:45:57 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f)
17:51:16 califax joins (~califax@user/califx)
17:54:56 cafkafk joins (~cafkafk@fsf/member/cafkafk)
17:58:43 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
18:03:00 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
18:03:01 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
18:03:01 wroathe joins (~wroathe@user/wroathe)
18:05:04 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Quit: WeeChat 3.6)
18:05:12 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
18:07:20 × xilo quits (~xilo@84.32.165.17) (Ping timeout: 252 seconds)
18:08:27 × califax quits (~califax@user/califx) (Remote host closed the connection)
18:09:47 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f) (Remote host closed the connection)
18:10:13 × shapr quits (~user@68.54.166.125) (Remote host closed the connection)
18:11:01 cafkafk joins (~cafkafk@fsf/member/cafkafk)
18:11:05 califax joins (~califax@user/califx)
18:11:45 × vglfr quits (~vglfr@145.224.100.22) (Read error: Connection reset by peer)
18:12:39 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
18:13:00 vglfr joins (~vglfr@145.224.100.22)
18:13:49 stiell joins (~stiell@gateway/tor-sasl/stiell)
18:15:03 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection)
18:16:13 × nschoe quits (~q@141.101.51.197) (Ping timeout: 268 seconds)
18:16:50 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:16:50 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
18:18:55 × razetime quits (~quassel@117.193.2.3) (Ping timeout: 260 seconds)
18:20:27 `2jt joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
18:21:23 × mvk quits (~mvk@2607:fea8:5ce3:8500::4b68) (Quit: Going elsewhere)
18:23:35 × srk quits (~sorki@user/srk) (Ping timeout: 260 seconds)
18:26:26 AlexNoo_ joins (~AlexNoo@178.34.161.167)
18:26:32 × tormenatur quits (uid576041@user/tormenatur) (Quit: Connection closed for inactivity)
18:26:50 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
18:28:14 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
18:28:30 × AlexZenon quits (~alzenon@94.233.241.222) (Ping timeout: 240 seconds)
18:28:44 × Alex_test quits (~al_test@94.233.241.222) (Ping timeout: 260 seconds)
18:28:58 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
18:30:00 mvk joins (~mvk@2607:fea8:5ce3:8500::4b68)
18:30:17 × machinedgod quits (~machinedg@clnet-p10-126.ikbnet.co.at) (Ping timeout: 256 seconds)
18:30:24 × AlexNoo quits (~AlexNoo@94.233.241.222) (Ping timeout: 268 seconds)
18:32:26 Alex_test joins (~al_test@178.34.161.167)
18:32:46 AlexZenon joins (~alzenon@178.34.161.167)
18:33:15 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
18:37:32 jmdaemon joins (~jmdaemon@user/jmdaemon)
18:38:42 king_gs joins (~Thunderbi@187.201.139.206)
18:43:42 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
18:44:04 ft joins (~ft@p508dbd59.dip0.t-ipconnect.de)
18:48:13 euandreh2 joins (~Thunderbi@189.40.79.96)
18:48:26 jumper149 joins (~jumper149@base.felixspringer.xyz)
18:48:47 × euandreh quits (~Thunderbi@179.214.113.107) (Ping timeout: 260 seconds)
18:48:52 euandreh2 is now known as euandreh
18:49:44 × euandreh quits (~Thunderbi@189.40.79.96) (Client Quit)
18:50:41 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 256 seconds)
18:54:03 ddellacosta joins (~ddellacos@143.244.47.83)
18:54:54 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f)
18:56:44 <EvanR> is there a startsWith :: Char -> String -> Bool
18:57:02 <EvanR> @hoogle Char -> String -> Bool
18:57:03 <lambdabot> Basement.String elem :: Char -> String -> Bool
18:57:03 <lambdabot> Data.Char.Properties.UnicodeBlocks elemCodeBlock :: Char -> String -> Bool
18:57:03 <lambdabot> Algebra.ModuleBasis propDimension :: C a v => a -> v -> Bool
18:57:21 <EvanR> @hoogle Eq a => a -> [a] -> Bool
18:57:22 <lambdabot> GHC.List elem :: Eq a => a -> [a] -> Bool
18:57:22 <lambdabot> GHC.List notElem :: Eq a => a -> [a] -> Bool
18:57:22 <lambdabot> GHC.OldList elem :: Eq a => a -> [a] -> Bool
18:57:27 <geekosaur> `isPrefixOf`?
18:57:34 <EvanR> :t isPrefixOf
18:57:35 <lambdabot> Eq a => [a] -> [a] -> Bool
18:57:39 <EvanR> fine.
18:58:21 Guest61 joins (~Guest61@80.71.141.42.ipv4.parknet.dk)
18:59:10 × Guest61 quits (~Guest61@80.71.141.42.ipv4.parknet.dk) (Client Quit)
19:06:39 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
19:08:04 AlexNoo_ is now known as AlexNoo
19:08:55 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f) (Remote host closed the connection)
19:08:56 kenran joins (~user@user/kenran)
19:10:42 zebrag joins (~chris@user/zebrag)
19:10:56 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
19:12:23 × mmhat quits (~mmh@p200300f1c7050c1bee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
19:13:27 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
19:15:14 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
19:17:41 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
19:18:07 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
19:18:44 xilo joins (~yourname@84.32.165.17)
19:21:35 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 268 seconds)
19:22:51 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
19:23:00 <dminuoso> EvanR: If possible, you can also put this into pattern matching: `f str@('s':_) ...; f str = ...`
19:23:11 euandreh joins (~Thunderbi@179.214.113.107)
19:24:17 <EvanR> only works for constant Char...
19:24:41 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 256 seconds)
19:24:55 <EvanR> unlike elixir which lets you reference variables in the pattern...
19:25:40 lottaquestions_ joins (~nick@104.221.24.83)
19:25:41 × Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer)
19:25:42 <dminuoso> With elixir thats probably a macro though.
19:25:45 × lottaquestions_ quits (~nick@104.221.24.83) (Client Quit)
19:25:50 <dminuoso> Which means we have that in GHC Haskell too. :p
19:25:56 <geekosaur> f str@(c:_) | c == foo = ...
19:26:06 <dminuoso> Or that, yeah
19:26:16 lottaquestions_ joins (~nick@104.221.24.83)
19:26:33 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
19:28:05 × lottaquestions quits (~nick@2607:fa49:503e:7100:bded:99b3:7299:5ee6) (Ping timeout: 256 seconds)
19:28:22 × `2jt quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 268 seconds)
19:28:59 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 268 seconds)
19:29:20 mmhat joins (~mmh@p200300f1c719b9aaee086bfffe095315.dip0.t-ipconnect.de)
19:29:35 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:30:34 × davetapley quits (sid666@id-666.uxbridge.irccloud.com) (Ping timeout: 252 seconds)
19:32:09 × systemfault quits (sid267009@id-267009.uxbridge.irccloud.com) (Ping timeout: 252 seconds)
19:32:53 × zebrag quits (~chris@user/zebrag) (Remote host closed the connection)
19:33:49 × irrgit_ quits (~irrgit@146.70.27.250) (Remote host closed the connection)
19:34:36 irrgit_ joins (~irrgit@89.47.234.26)
19:34:37 <EvanR> filter (\case (c:_) | c == foo = True | otherwise = False; [] -> False) bars
19:34:42 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:35:16 davetapley joins (sid666@id-666.uxbridge.irccloud.com)
19:35:53 <EvanR> filter (\case (c:_) -> c == foo; [] -> False) bars
19:36:01 systemfault joins (sid267009@id-267009.uxbridge.irccloud.com)
19:36:03 <EvanR> not bad
19:36:40 × b20n quits (sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 252 seconds)
19:40:10 freeside joins (~mengwong@103.252.202.193)
19:41:59 × systemfault quits (sid267009@id-267009.uxbridge.irccloud.com) (Ping timeout: 260 seconds)
19:42:37 b20n joins (sid115913@uxbridge.irccloud.com)
19:42:55 × mmhat quits (~mmh@p200300f1c719b9aaee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
19:44:35 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f)
19:48:03 × b20n quits (sid115913@uxbridge.irccloud.com) (Ping timeout: 260 seconds)
19:48:05 × king_gs quits (~Thunderbi@187.201.139.206) (Read error: Connection reset by peer)
19:49:14 shailangsa joins (~shailangs@109.159.108.137)
19:49:19 king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924)
19:49:49 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
19:50:49 fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
19:51:21 systemfault joins (sid267009@uxbridge.irccloud.com)
19:51:31 × SrPx quits (sid108780@2a03:5180:f:5::1:a8ec) (Ping timeout: 252 seconds)
19:51:49 × alanz quits (sid110616@id-110616.uxbridge.irccloud.com) (Ping timeout: 268 seconds)
19:53:20 × lyle quits (~lyle@104.246.145.85) (Quit: WeeChat 3.7.1)
19:55:26 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
19:56:09 alanz joins (sid110616@id-110616.uxbridge.irccloud.com)
19:56:11 mmhat joins (~mmh@p200300f1c719d069ee086bfffe095315.dip0.t-ipconnect.de)
19:56:40 SrPx joins (sid108780@id-108780.uxbridge.irccloud.com)
19:57:33 × systemfault quits (sid267009@uxbridge.irccloud.com) (Ping timeout: 256 seconds)
19:59:30 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Max SendQ exceeded)
20:00:27 SrPx joins (sid108780@id-108780.uxbridge.irccloud.com)
20:00:31 systemfault joins (sid267009@uxbridge.irccloud.com)
20:01:08 gmg joins (~user@user/gehmehgeh)
20:01:59 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
20:03:21 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Max SendQ exceeded)
20:03:50 azimut joins (~azimut@gateway/tor-sasl/azimut)
20:04:38 SrPx joins (sid108780@id-108780.uxbridge.irccloud.com)
20:04:59 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:05:49 × Techcable quits (~Techcable@user/Techcable) (Ping timeout: 252 seconds)
20:07:18 b20n joins (sid115913@id-115913.uxbridge.irccloud.com)
20:07:38 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Max SendQ exceeded)
20:08:25 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:08:44 SrPx joins (sid108780@id-108780.uxbridge.irccloud.com)
20:08:57 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f) (Remote host closed the connection)
20:11:40 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Max SendQ exceeded)
20:12:59 SrPx joins (sid108780@id-108780.uxbridge.irccloud.com)
20:15:13 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
20:15:55 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Max SendQ exceeded)
20:17:10 × mmhat quits (~mmh@p200300f1c719d069ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
20:17:32 mmhat joins (~mmh@p200300f1c719d097ee086bfffe095315.dip0.t-ipconnect.de)
20:17:33 Guest75 joins (~Guest75@178.141.130.118)
20:18:19 SrPx joins (sid108780@uxbridge.irccloud.com)
20:19:17 CiaoSen joins (~Jura@p200300c95701f1002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
20:19:32 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Ping timeout: 255 seconds)
20:23:21 jakalx parts (~jakalx@base.jakalx.net) ()
20:26:42 × kenran quits (~user@user/kenran) (Remote host closed the connection)
20:27:44 × ub quits (~Thunderbi@178.165.179.251.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
20:28:32 jakalx joins (~jakalx@base.jakalx.net)
20:30:11 ub joins (~Thunderbi@178.165.179.251.wireless.dyn.drei.com)
20:30:11 × vglfr quits (~vglfr@145.224.100.22) (Write error: Connection reset by peer)
20:30:24 federico joins (~federico@93-34-233-131.ip52.fastwebnet.it)
20:30:46 vglfr joins (~vglfr@145.224.100.22)
20:30:51 × federico quits (~federico@93-34-233-131.ip52.fastwebnet.it) (Client Quit)
20:30:58 bobbingbob joins (~bobbingbo@2604:3d09:207f:f650::b469)
20:31:11 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
20:32:03 gmg joins (~user@user/gehmehgeh)
20:34:43 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
20:35:31 lortabac joins (~lortabac@2a01:e0a:541:b8f0:7d33:673a:80f0:1322)
20:36:07 × mmhat quits (~mmh@p200300f1c719d097ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
20:40:10 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 240 seconds)
20:44:12 coot joins (~coot@213.134.171.3)
20:49:40 mmhat joins (~mmh@p200300f1c71a6d71ee086bfffe095315.dip0.t-ipconnect.de)
20:53:09 × ub quits (~Thunderbi@178.165.179.251.wireless.dyn.drei.com) (Quit: ub)
20:53:21 ub joins (~Thunderbi@178.165.179.251.wireless.dyn.drei.com)
20:54:07 freeside joins (~mengwong@103.252.202.193)
20:54:49 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
20:59:24 × irrgit_ quits (~irrgit@89.47.234.26) (Quit: Leaving)
20:59:59 notzmv joins (~zmv@user/notzmv)
21:01:40 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:7d33:673a:80f0:1322) (Quit: WeeChat 2.8)
21:05:05 azimut joins (~azimut@gateway/tor-sasl/azimut)
21:09:28 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f)
21:11:44 × califax quits (~califax@user/califx) (Ping timeout: 255 seconds)
21:13:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f) (Ping timeout: 240 seconds)
21:14:07 califax joins (~califax@user/califx)
21:16:28 × califax quits (~califax@user/califx) (Remote host closed the connection)
21:17:28 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
21:17:37 Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d)
21:18:40 nschoe joins (~q@2a01:e0a:8e:a190:68cf:faba:8c01:da9f)
21:18:41 × nschoe quits (~q@2a01:e0a:8e:a190:68cf:faba:8c01:da9f) (Client Quit)
21:18:45 califax joins (~califax@user/califx)
21:19:15 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
21:21:51 × youziqi quits (~youziqi@103.37.140.45) (Ping timeout: 260 seconds)
21:24:18 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
21:24:55 youziqi joins (~youziqi@103.37.140.25)
21:25:43 chromoblob joins (~user@37.113.164.122)
21:30:14 × king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Quit: king_gs)
21:31:37 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 256 seconds)
21:32:35 × ub quits (~Thunderbi@178.165.179.251.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
21:33:38 pavonia joins (~user@user/siracusa)
21:35:42 Dutchgriffon joins (~Laurens@70.36.53.134)
21:38:10 × michalz quits (~michalz@185.246.207.197) (Ping timeout: 240 seconds)
21:38:31 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
21:38:45 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Read error: Connection reset by peer)
21:40:31 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:40:47 lambdabot joins (~lambdabot@silicon.int-e.eu)
21:40:47 × lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host)
21:40:47 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
21:43:42 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds)
21:44:03 × coot quits (~coot@213.134.171.3) (Quit: coot)
21:45:35 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
21:51:44 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
21:51:56 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
21:52:49 biberu joins (~biberu@user/biberu)
21:57:52 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 256 seconds)
22:05:57 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:07:35 × fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
22:07:53 × CiaoSen quits (~Jura@p200300c95701f1002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
22:09:11 phma_ joins (phma@2001:5b0:211f:71d8:b1fb:b9c3:f43b:db91)
22:09:20 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f)
22:10:36 × phma quits (~phma@host-67-44-208-21.hnremote.net) (Read error: Connection reset by peer)
22:11:35 freeside joins (~mengwong@103.252.202.193)
22:12:07 × califax quits (~califax@user/califx) (Remote host closed the connection)
22:13:19 AlexNoo_ joins (~AlexNoo@178.34.161.167)
22:13:47 × mei quits (~mei@user/mei) (Remote host closed the connection)
22:14:12 mei joins (~mei@user/mei)
22:14:41 califax joins (~califax@user/califx)
22:15:50 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 240 seconds)
22:16:41 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f) (Remote host closed the connection)
22:16:49 × AlexNoo quits (~AlexNoo@178.34.161.167) (Ping timeout: 260 seconds)
22:19:34 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
22:20:45 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f)
22:22:31 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f) (Remote host closed the connection)
22:23:54 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
22:25:59 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
22:26:55 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
22:27:35 ec joins (~ec@gateway/tor-sasl/ec)
22:35:49 Erutuon joins (~Erutuon@user/erutuon)
22:37:27 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
22:39:05 freeside joins (~mengwong@103.252.202.193)
22:39:38 hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
22:43:51 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds)
22:46:42 AlexNoo_ is now known as AlexNoo
22:54:49 DDR joins (~DDR@2604:3d08:4c7f:8250:843b:f3d0:47c:129e)
23:03:53 × detuneattune quits (~detuneatt@user/detuneattune) (Quit: Ping timeout (120 seconds))
23:04:18 detuneattune joins (~detuneatt@user/detuneattune)
23:05:24 <Profpatsch> Is there a good way to mark the `m` of a do-block?
23:05:37 <Profpatsch> e.g. I’d like to be able to say do @Maybe { … } or something
23:06:06 <Profpatsch> Just so it’s easier to read, cause usually do-blocks are in IO/some monad stack and it gets confusing when you switch the instance for some sub-expression
23:08:23 <geekosaur> no, although you might be able to abuse https://downloads.haskell.org/ghc/9.4.2/docs/users_guide/exts/qualified_do.html
23:08:40 <geekosaur> usually it's enough for me to just assign a type
23:09:40 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:09:48 <Profpatsch> geekosaur: how do you mean assign a type?
23:09:56 <Profpatsch> Just add a type sig to the first statement?
23:10:15 <geekosaur> my do blocks are all entire functions, so I just give the function a type signature indicating the m
23:11:49 <Profpatsch> It would be cool if you could put type applications after operators
23:11:53 <geekosaur> and if I do something internally that could be a do (ignoring if-then-else) I usually just use bind syntax directly
23:11:57 <Profpatsch> e.g. a >>= @Maybe fb
23:12:07 <geekosaur> which to me is usually an indication that something special's going on
23:12:28 <Profpatsch> okay maybe it wouldn’t be that cool :P
23:13:00 <geekosaur> % :t ((>>=) @Maybe)
23:13:00 <yahb2> ((>>=) @Maybe) :: Maybe a -> (a -> Maybe b) -> Maybe b
23:13:17 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:13:18 <geekosaur> not real friendly with all the parens though
23:13:26 <Profpatsch> is that still infix
23:13:31 <geekosaur> no
23:13:36 <Profpatsch> yeah
23:14:00 <geekosaur> and you can't just wrap it in `` to make it infix again
23:14:05 <Profpatsch> haha oh no
23:14:20 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 260 seconds)
23:14:23 freeside joins (~mengwong@103.252.202.193)
23:14:50 <lyxia> idf :: forall f a. f a -> f a then you can write idf @Maybe do { ... }
23:15:18 <Profpatsch> lyxia: oh this is pretty cool
23:15:55 <Profpatsch> mAs @IO $ do
23:18:10 × jumper149 quits (~jumper149@base.felixspringer.xyz) (Quit: WeeChat 3.7.1)
23:18:59 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
23:19:33 zebrag joins (~chris@user/zebrag)
23:22:54 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
23:23:01 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f)
23:27:24 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f467:abff:e567:955f) (Ping timeout: 256 seconds)
23:30:53 InstX1 joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
23:35:47 × InstX1 quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 260 seconds)
23:38:08 × Guest75 quits (~Guest75@178.141.130.118) (Ping timeout: 260 seconds)
23:39:29 freeside joins (~mengwong@103.252.202.193)
23:39:31 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
23:40:11 merijn joins (~merijn@86.86.29.250)
23:41:11 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
23:41:58 <EvanR> yes mixing a bunch of different monads do blocks, unless it's for short stuff that you'd easily toss a >>= at, sounds like a recipe for write only code
23:42:26 <EvanR> maybe that's why everyone wants a single master App monad
23:42:40 <EvanR> to rule them all
23:42:45 <EvanR> and you know
23:43:18 shapr joins (~user@68.54.166.125)
23:43:28 <shapr> Is there a generic introduction to testing in Haskell?
23:43:54 <shapr> even just "this is what's most popular right now" would be nice
23:45:07 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
23:45:41 <dsal> shapr: are you trying to start a fight? :)
23:46:05 <dsal> I think property tests should be used unless you've got a good excuse not to. That's a pretty steep learning curve for a lot of people.
23:46:23 <dsal> tasty is nice, but none of the frameworks are significantly better than others.
23:46:29 <shapr> dsal: I agree, but I don't see much property testing on hackage
23:46:47 <shapr> I am often tempted to go add a zillion property tests to the most popular libraries
23:46:49 <Rembane> Is it tasty that has a plugin for using quickcheck too?
23:47:06 <Rembane> So you can mix and match property based testing and unit tests
23:47:21 <shapr> hspec too, iirc
23:47:39 <dsal> Rembane: Yeah, tasty lets you run all kinds of stuff.
23:47:47 <Rembane> dsal: Cool.
23:47:58 <dsal> I do a bunch of different test things from tasty. It's just a runner + plugin thing.
23:47:59 <Rembane> Then I suppose it boils down to syntax.
23:48:27 <dsal> Sometimes property tests are kind of hard and a bad test (for some value of bad) is better than no test.
23:48:28 <Rembane> The test modules of hspec and tasty look quite different
23:48:48 <Rembane> Just getting the bugs out of the generators and properties takes quite a bit of time.
23:48:57 <dsal> I don't like the cucumberish syntax, and I find that most people who use it don't have the slightest idea what it exists for or how it's meant to be used.
23:48:58 <shapr> I haven't looked at tasty in awhile, do you have a link to one?
23:49:16 <shapr> I have *opinions* on property based testing
23:49:47 <dsal> I wonder if I have any good ones…
23:50:32 <dsal> This one's not too scarY; https://github.com/dustin/aoc/blob/master/test/BitSetTests.hs
23:51:08 <shapr> Ah, using discover
23:51:09 <dsal> This one has a mix: https://github.com/dustin/aoc/blob/master/test/SearchTests.hs
23:51:21 <dsal> Yeah, I started using that at one point. The latter also introduces trees along the way.
23:51:36 <shapr> I like explicit test trees, but it's not a strong leaning
23:52:05 <dsal> I migrated to this at one point and it was just slightly better.
23:52:12 <dsal> I can add a test in one place.
23:52:25 <shapr> yeah, that's a benefit
23:52:34 justache is now known as justGrit

All times are in UTC on 2022-11-16.