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.