2024/07/27

2024-07-27 00:04:35 +0200paddymahoney(~paddymaho@pool-99-250-30-88.cpe.net.cable.rogers.com) (Ping timeout: 260 seconds)
2024-07-27 00:04:48 +0200prolic_(~sasa@181.122.138.24) (Ping timeout: 276 seconds)
2024-07-27 00:05:50 +0200 <Inst> no one likes sieve of atkin here?
2024-07-27 00:09:52 +0200paddymahoney(~paddymaho@pool-99-250-30-88.cpe.net.cable.rogers.com)
2024-07-27 00:11:35 +0200 <glguy> slack1256: a name is a single thing. One type applied to another isn't a name but would be a Type. What does deriveFromJSON expect?
2024-07-27 00:12:10 +0200foul_owl(~kerry@174-21-147-232.tukw.qwest.net) (Ping timeout: 260 seconds)
2024-07-27 00:12:58 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2024-07-27 00:15:01 +0200 <Inst> i'm still reading the paper but it looks like it's actually much more condusive to FP than eratosthenes
2024-07-27 00:19:14 +0200Inst(~Inst@user/Inst) (Read error: Connection reset by peer)
2024-07-27 00:21:54 +0200CiaoSen(~Jura@2a05:5800:2ef:3300:e6b9:7aff:fe80:3d03) (Ping timeout: 260 seconds)
2024-07-27 00:24:13 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-27 00:26:34 +0200foul_owl(~kerry@185.216.231.180)
2024-07-27 00:26:35 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
2024-07-27 00:32:53 +0200SteelBlueSilk(~SteelBlue@user/SteelBlueSilk) (Ping timeout: 248 seconds)
2024-07-27 00:43:03 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-07-27 00:45:12 +0200acidjnk(~acidjnk@p200300d6e72cfb67cc718b9c5fdaa04e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-07-27 00:46:48 +0200Midjak(~MarciZ@82.66.147.146) (Quit: This computer has gone to sleep)
2024-07-27 00:51:19 +0200jerg(~jerg@2001:a61:247a:4700::bb0) (Ping timeout: 252 seconds)
2024-07-27 00:52:48 +0200 <dsal> Is there a way to do a sort of stateful update of values identified by a traversal?
2024-07-27 00:53:20 +0200 <dsal> I've got a fairly complicated nested structure and want to be able to replace a particular field quite deep down. I've got a list of unique values I'd like to apply, but I'm not sure how to thread them through.
2024-07-27 00:54:01 +0200 <dsal> I could do this without lens, but it seems like a pretty straightforward use case I'd like to avoid writing a bunch of code to do.
2024-07-27 01:01:34 +0200 <jackdk> dsal: https://hackage.haskell.org/package/lens-5.3.2/docs/Control-Lens-Traversal.html#v:partsOf ?
2024-07-27 01:02:21 +0200 <dsal> Yes, this looks like it might be the shape I was looking for. Thanks!
2024-07-27 01:03:06 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2024-07-27 01:13:34 +0200 <dsal> I ended up with partsOf (super . long . traversed . pile . of . traversed . bits) %~ zipWith updateOne someStuff
2024-07-27 01:14:11 +0200 <EvanR> lens poetry?
2024-07-27 01:15:31 +0200 <dsal> So much better than writing out all that stuff. There are nine components to that traversal in the real code.
2024-07-27 01:19:23 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-07-27 01:23:12 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-27 01:23:27 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-27 01:26:37 +0200VedantT(~VedantT@2603:6000:b500:29a9:ac9a:7661:5229:f762)
2024-07-27 01:29:25 +0200Rodney-(~Rodney@90.201.223.82) (Ping timeout: 248 seconds)
2024-07-27 01:30:40 +0200VedantT(~VedantT@2603:6000:b500:29a9:ac9a:7661:5229:f762) (Client Quit)
2024-07-27 01:31:31 +0200szkl(uid110435@2a03:5180:f:5::1:af63) (Quit: Connection closed for inactivity)
2024-07-27 01:40:55 +0200JuanDaugherty(~juan@user/JuanDaugherty)
2024-07-27 01:42:29 +0200prolic_(~sasa@181.122.138.24)
2024-07-27 01:44:22 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 244 seconds)
2024-07-27 01:45:32 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-07-27 01:52:38 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 244 seconds)
2024-07-27 01:55:33 +0200skyesoss(~Thunderbi@128.135.204.35) (Ping timeout: 248 seconds)
2024-07-27 01:59:32 +0200misterfish(~misterfis@84.53.85.146) (Ping timeout: 252 seconds)
2024-07-27 02:01:29 +0200ystael(~ystael@user/ystael) (Ping timeout: 255 seconds)
2024-07-27 02:03:23 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-07-27 02:05:12 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7) (Remote host closed the connection)
2024-07-27 02:05:53 +0200Rodney__(~Rodney@90.201.223.82)
2024-07-27 02:07:39 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
2024-07-27 02:08:20 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2024-07-27 02:09:22 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2024-07-27 02:21:35 +0200mud(~mud@user/kadoban) (Remote host closed the connection)
2024-07-27 02:22:02 +0200mud(~mud@user/kadoban)
2024-07-27 02:31:48 +0200prolic_(~sasa@181.122.138.24) (Remote host closed the connection)
2024-07-27 02:32:07 +0200califax(~califax@user/califx) (Remote host closed the connection)
2024-07-27 02:35:17 +0200califax(~califax@user/califx)
2024-07-27 02:46:39 +0200tomku(~tomku@user/tomku) (Ping timeout: 276 seconds)
2024-07-27 02:54:18 +0200 <monochrom> I have not learned the sieve of Atkin. I guess that's an implicit "not like" because the very decision to learn a million other things instead reflects what I like.
2024-07-27 02:57:51 +0200 <monochrom> 35 years ago I liked computational number theory so much I would even go out of my way to learn the number field sieve. But today, "category theory and dependent type theory are so much easier".
2024-07-27 02:59:12 +0200 <monochrom> But going back to the original point. Stop telling beginners how to split hair about what "sieve" means.
2024-07-27 03:14:32 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-07-27 03:31:05 +0200bolivood(~bolivood@user/bolivood) (Ping timeout: 260 seconds)
2024-07-27 03:35:10 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
2024-07-27 04:01:53 +0200Rodney-(~Rodney@90.201.223.82)
2024-07-27 04:05:14 +0200Rodney__(~Rodney@90.201.223.82) (Ping timeout: 255 seconds)
2024-07-27 04:07:29 +0200fiberchunks(~mike@32.221.120.181)
2024-07-27 04:08:28 +0200fiberchunks(~mike@32.221.120.181) ()
2024-07-27 04:11:48 +0200fiberchunks(~mike@32.221.120.181)
2024-07-27 04:12:16 +0200td_(~td@i53870934.versanet.de) (Ping timeout: 252 seconds)
2024-07-27 04:14:16 +0200td_(~td@i53870913.versanet.de)
2024-07-27 04:27:10 +0200fiberchunks(~mike@32.221.120.181) ()
2024-07-27 04:35:54 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net)
2024-07-27 04:38:02 +0200tomku(~tomku@user/tomku)
2024-07-27 04:43:31 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
2024-07-27 04:46:22 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::)
2024-07-27 05:00:01 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-07-27 05:27:33 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2024-07-27 05:36:08 +0200torkel(~sindu@83-243-191-191.fth.tafjordconnect.net) (Quit: WeeChat 4.3.5)
2024-07-27 05:38:33 +0200JuanDaugherty(~juan@user/JuanDaugherty)
2024-07-27 05:41:19 +0200monochrom(trebla@216.138.220.146) (Quit: ZNC 1.9.0+deb2build3 - https://znc.in)
2024-07-27 05:49:35 +0200 <jle`> dsal: that sounds like also a good application of StateT
2024-07-27 05:49:51 +0200 <jle`> er just State maybe
2024-07-27 05:50:42 +0200 <jle`> ah Traversal + State is just mapAccumLOf
2024-07-27 05:52:21 +0200aforemny(~aforemny@i59F516C5.versanet.de) (Ping timeout: 248 seconds)
2024-07-27 05:53:29 +0200aforemny(~aforemny@i59F516D5.versanet.de)
2024-07-27 05:53:30 +0200monochrom(trebla@216.138.220.146)
2024-07-27 05:53:43 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-07-27 05:54:41 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-07-27 05:57:17 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net)
2024-07-27 05:59:41 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2024-07-27 05:59:55 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-27 06:01:47 +0200Square2(~Square@user/square) (Ping timeout: 255 seconds)
2024-07-27 06:10:14 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-07-27 06:27:15 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
2024-07-27 06:28:21 +0200slack1256(~slack1256@2803:c600:5111:80cb:d321:865d:b7ff:34ea) (Remote host closed the connection)
2024-07-27 06:37:32 +0200skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
2024-07-27 06:38:33 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 252 seconds)
2024-07-27 06:45:29 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7)
2024-07-27 06:52:29 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
2024-07-27 06:58:46 +0200danza(~danza@na-19-79-8.service.infuturo.it)
2024-07-27 07:05:57 +0200danza(~danza@na-19-79-8.service.infuturo.it) (Remote host closed the connection)
2024-07-27 07:06:44 +0200danza(~danza@na-19-79-8.service.infuturo.it)
2024-07-27 07:17:54 +0200krei-se(~krei-se@p5085de4b.dip0.t-ipconnect.de) (Quit: ZNC 1.9.1 - https://znc.in)
2024-07-27 07:19:50 +0200krei-se(~krei-se@p5085de4b.dip0.t-ipconnect.de)
2024-07-27 07:27:14 +0200 <dsal> jle`: Yeah, I was in the process of writing it with State, but doing all of those tree descents is a lot more painful than just stating the path.
2024-07-27 07:29:15 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-07-27 07:32:11 +0200 <jle`> dsal: yeah if you just want to zip with over zipWith works. but mapAccumLOf from Control.Lens.Traversal might capture the idea of a stateful map over a traversal nicely
2024-07-27 07:32:39 +0200 <dsal> Oh. I missed the `Of` there.
2024-07-27 07:32:56 +0200skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Ping timeout: 272 seconds)
2024-07-27 07:35:09 +0200 <danza> i don't use mapAccum enough
2024-07-27 07:35:12 +0200 <danza> :t mapAccum
2024-07-27 07:35:13 +0200 <lambdabot> error:
2024-07-27 07:35:13 +0200 <lambdabot> • Variable not in scope: mapAccum
2024-07-27 07:35:14 +0200 <lambdabot> • Perhaps you meant one of these:
2024-07-27 07:35:20 +0200euphores(~SASL_euph@user/euphores)
2024-07-27 07:35:38 +0200 <danza> @hoogle mapAccum
2024-07-27 07:35:39 +0200 <lambdabot> Data.IntMap.Internal mapAccum :: (a -> b -> (a, c)) -> a -> IntMap b -> (a, IntMap c)
2024-07-27 07:35:39 +0200 <lambdabot> Data.IntMap.Lazy mapAccum :: (a -> b -> (a, c)) -> a -> IntMap b -> (a, IntMap c)
2024-07-27 07:35:39 +0200 <lambdabot> Data.IntMap.Strict mapAccum :: (a -> b -> (a, c)) -> a -> IntMap b -> (a, IntMap c)
2024-07-27 07:39:02 +0200 <geekosaur> don't you want mapAccumL?
2024-07-27 07:39:37 +0200 <danza> who, me?
2024-07-27 07:40:26 +0200 <geekosaur> yes
2024-07-27 07:40:44 +0200 <geekosaur> @hoogle mapAccumL
2024-07-27 07:40:45 +0200 <lambdabot> Data.List mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
2024-07-27 07:40:45 +0200 <lambdabot> Data.Traversable mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
2024-07-27 07:40:45 +0200 <lambdabot> GHC.OldList mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])
2024-07-27 07:41:36 +0200 <danza> huh yeah, well i was looking for a definition with a default direction
2024-07-27 07:41:39 +0200 <danza> :t foldr
2024-07-27 07:41:40 +0200 <lambdabot> Foldable t => (a -> b -> b) -> b -> t a -> b
2024-07-27 07:41:42 +0200 <danza> :t fold
2024-07-27 07:41:43 +0200 <lambdabot> (Foldable t, Monoid m) => t m -> m
2024-07-27 07:42:13 +0200danza(~danza@na-19-79-8.service.infuturo.it) (Quit: on the move)
2024-07-27 07:45:45 +0200kimiamania(~65804703@user/kimiamania) (Quit: PegeLinux)
2024-07-27 07:45:55 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-27 07:46:52 +0200kimiamania(~65804703@user/kimiamania)
2024-07-27 07:48:22 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
2024-07-27 07:49:57 +0200danza(~danza@na-19-79-8.service.infuturo.it)
2024-07-27 07:51:01 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)
2024-07-27 07:57:15 +0200skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
2024-07-27 08:27:46 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-07-27 08:30:07 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2024-07-27 08:47:02 +0200misterfish(~misterfis@84.53.85.146)
2024-07-27 08:49:07 +0200lambdabot(~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
2024-07-27 08:49:35 +0200lambdabot(~lambdabot@silicon.int-e.eu)
2024-07-27 08:49:35 +0200lambdabot(~lambdabot@silicon.int-e.eu) (Changing host)
2024-07-27 08:49:35 +0200lambdabot(~lambdabot@haskell/bot/lambdabot)
2024-07-27 08:49:35 +0200ChanServ+v lambdabot
2024-07-27 08:51:01 +0200Midjak(~MarciZ@82.66.147.146)
2024-07-27 08:56:17 +0200int-e(~noone@int-e.eu) (Remote host closed the connection)
2024-07-27 08:56:57 +0200int-e(~noone@int-e.eu)
2024-07-27 09:08:27 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2024-07-27 09:15:47 +0200aforemny_(~aforemny@2001:9e8:6cdd:9b00:67d0:27e6:eba2:1a90)
2024-07-27 09:15:49 +0200danza(~danza@na-19-79-8.service.infuturo.it) (Quit: on the move)
2024-07-27 09:15:51 +0200aforemny(~aforemny@i59F516D5.versanet.de) (Ping timeout: 252 seconds)
2024-07-27 09:21:05 +0200acidjnk(~acidjnk@p200300d6e72cfb1421aec5076afe4c64.dip0.t-ipconnect.de)
2024-07-27 09:21:09 +0200oo_miguel(~Thunderbi@78.10.207.46)
2024-07-27 09:22:01 +0200 <Unicorn_Princess> i should be using aeson & aeson-pretty for dealing with json?
2024-07-27 09:28:22 +0200bolivood(~bolivood@2a0d:6fc2:5d11:200:113a:493:cf26:6dea)
2024-07-27 09:38:30 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-07-27 09:39:12 +0200 <Hecate> Unicorn_Princess: usually yes
2024-07-27 09:39:37 +0200oo_miguel(~Thunderbi@78.10.207.46) (Remote host closed the connection)
2024-07-27 09:41:19 +0200skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Quit: skyesoss)
2024-07-27 09:41:41 +0200 <Unicorn_Princess> thanks
2024-07-27 09:48:16 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net)
2024-07-27 09:49:49 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-07-27 09:55:16 +0200MadeleineSydney(~Thunderbi@c-71-229-185-228.hsd1.co.comcast.net)
2024-07-27 10:08:36 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-27 10:09:20 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-27 10:17:28 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 252 seconds)
2024-07-27 10:21:52 +0200cpressey(~weechat@176.254.71.203)
2024-07-27 10:22:29 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-07-27 10:25:24 +0200 <Axman6> Can anyone explain why this isn't working? I want to get a name associated with a value (something that seems to work find in Clash) but I don't understand why I'm getting this error: https://paste.tomsmeding.com/49bV7Tuu
2024-07-27 10:29:09 +0200cpressey(~weechat@176.254.71.203) (Ping timeout: 248 seconds)
2024-07-27 10:31:34 +0200 <Lears> Axman6: This worked: https://play-haskell.tomsmeding.com/saved/ICQgr1xB
2024-07-27 10:32:17 +0200 <Lears> A type synonym breaks because the `l` disappears from the RHS of the => I guess?
2024-07-27 10:33:25 +0200 <Axman6> Hmm, sadly I can't change the type, (:::) is from clash-prelude
2024-07-27 10:34:14 +0200 <Lears> Maybe the functions that use it in clash also take other arguments that alleviate the ambiguity. You could use type applications or proxies.
2024-07-27 10:38:42 +0200 <Axman6> I can;t even get your example to compile actually
2024-07-27 10:39:51 +0200xff0x(~xff0x@2405:6580:b080:900:8b26:ef3c:7f31:7c41) (Ping timeout: 276 seconds)
2024-07-27 10:54:02 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-07-27 10:54:41 +0200jerg(~jerg@2001:a61:247a:4700::bb0)
2024-07-27 11:00:12 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-07-27 11:06:10 +0200Inst(~Inst@user/Inst)
2024-07-27 11:12:20 +0200xff0x(~xff0x@2405:6580:b080:900:8b26:ef3c:7f31:7c41)
2024-07-27 11:12:24 +0200CiaoSen(~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03)
2024-07-27 11:19:07 +0200teqwve(teqwve@static.141.38.201.195.clients.your-server.de) (Quit: cya)
2024-07-27 11:21:12 +0200pkal(~pkal@2a01:4f8:1c1b:a321::) (Remote host closed the connection)
2024-07-27 11:21:20 +0200pkal(~pkal@2a01:4f8:1c1b:a321::)
2024-07-27 11:22:08 +0200pkal(~pkal@2a01:4f8:1c1b:a321::) (Remote host closed the connection)
2024-07-27 11:22:15 +0200pkal(~pkal@2a01:4f8:1c1b:a321::)
2024-07-27 11:27:41 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2024-07-27 11:29:22 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net)
2024-07-27 11:34:01 +0200__monty__(~toonn@user/toonn)
2024-07-27 11:34:27 +0200bolivood(~bolivood@2a0d:6fc2:5d11:200:113a:493:cf26:6dea) (Ping timeout: 276 seconds)
2024-07-27 11:44:35 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-27 11:45:32 +0200euleritian(~euleritia@77.22.252.56)
2024-07-27 11:47:09 +0200MadeleineSydney(~Thunderbi@c-71-229-185-228.hsd1.co.comcast.net) (Remote host closed the connection)
2024-07-27 11:48:57 +0200danza(~danza@151.47.28.68)
2024-07-27 11:49:11 +0200euleritian(~euleritia@77.22.252.56) (Read error: Connection reset by peer)
2024-07-27 11:50:01 +0200euleritian(~euleritia@77.22.252.56)
2024-07-27 11:55:55 +0200Me-me(~me-me@kc.randomserver.name) (Changing host)
2024-07-27 11:55:55 +0200Me-me(~me-me@user/me-me)
2024-07-27 11:57:28 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 245 seconds)
2024-07-27 12:01:32 +0200aforemny(~aforemny@2001:9e8:6cde:4700:6284:f31d:42a8:a868)
2024-07-27 12:01:47 +0200aforemny_(~aforemny@2001:9e8:6cdd:9b00:67d0:27e6:eba2:1a90) (Ping timeout: 244 seconds)
2024-07-27 12:12:53 +0200gmg(~user@user/gehmehgeh)
2024-07-27 12:13:35 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-07-27 12:14:16 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2024-07-27 12:15:26 +0200danza(~danza@151.47.28.68) (Quit: on the move)
2024-07-27 12:18:25 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net)
2024-07-27 12:28:20 +0200euleritian(~euleritia@77.22.252.56) (Ping timeout: 260 seconds)
2024-07-27 12:29:08 +0200euleritian(~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de)
2024-07-27 13:05:57 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 248 seconds)
2024-07-27 13:08:28 +0200bolivood(~bolivood@2a0d:6fc2:5d11:200:dac:74e5:33ad:6838)
2024-07-27 13:15:28 +0200danza(~danza@151.47.28.68)
2024-07-27 13:22:13 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net)
2024-07-27 13:27:50 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 260 seconds)
2024-07-27 13:29:09 +0200danza(~danza@151.47.28.68) (Quit: glitching)
2024-07-27 13:29:45 +0200danza(~danza@151.47.28.68)
2024-07-27 13:34:25 +0200danza(~danza@151.47.28.68) (Client Quit)
2024-07-27 13:35:28 +0200danza(~danza@151.47.28.68)
2024-07-27 13:39:56 +0200sindu(~sindu@83-243-191-191.fth.tafjordconnect.net)
2024-07-27 13:45:43 +0200CiaoSen(~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03) (Ping timeout: 252 seconds)
2024-07-27 13:47:00 +0200 <Inst> btw there's been no recent updates on graphql Rewriting it In Rust TM?
2024-07-27 13:52:49 +0200aforemny(~aforemny@2001:9e8:6cde:4700:6284:f31d:42a8:a868) (Ping timeout: 252 seconds)
2024-07-27 13:56:08 +0200danza5049(~danza@151.47.19.9)
2024-07-27 13:56:12 +0200danza(~danza@151.47.28.68) (Read error: Connection reset by peer)
2024-07-27 13:58:26 +0200danza5049danza
2024-07-27 14:07:27 +0200aforemny(~aforemny@2001:9e8:6cde:f100:f13d:7189:cb6f:5d03)
2024-07-27 14:08:40 +0200danza(~danza@151.47.19.9) (Quit: nap)
2024-07-27 14:15:44 +0200chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2024-07-27 14:16:48 +0200chiselfuse(~chiselfus@user/chiselfuse)
2024-07-27 14:18:59 +0200 <probie> Inst: Do you mean Hasura moving to Rust, or something else?
2024-07-27 14:36:36 +0200 <Inst> yeah, i was suspecting it'd cost way more than anticipated and take longer than planned
2024-07-27 14:36:40 +0200 <Inst> I don't see anything on graphql v3
2024-07-27 14:56:40 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2024-07-27 14:56:47 +0200noumenon(~noumenon@113.51-175-156.customer.lyse.net)
2024-07-27 14:57:29 +0200noumenon(~noumenon@113.51-175-156.customer.lyse.net) (Remote host closed the connection)
2024-07-27 15:01:39 +0200micro(~micro@user/micro) (Ping timeout: 245 seconds)
2024-07-27 15:02:39 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-27 15:05:11 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
2024-07-27 15:07:30 +0200euleritian(~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de) (Ping timeout: 252 seconds)
2024-07-27 15:15:39 +0200micro(~micro@user/micro)
2024-07-27 15:18:42 +0200cheater(~Username@user/cheater) (Ping timeout: 276 seconds)
2024-07-27 15:28:21 +0200myme(~myme@2a01:799:d5c:5f00:4421:50a5:101e:8cb9) (Ping timeout: 248 seconds)
2024-07-27 15:29:10 +0200myme(~myme@2a01:799:d5c:5f00:8a75:ab8b:9550:20a2)
2024-07-27 15:39:29 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2024-07-27 15:50:17 +0200noumenon(~noumenon@113.51-175-156.customer.lyse.net)
2024-07-27 16:04:04 +0200euleritian(~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de)
2024-07-27 16:06:41 +0200CiaoSen(~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03)
2024-07-27 16:07:17 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2024-07-27 16:15:36 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-07-27 16:42:51 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 244 seconds)
2024-07-27 16:44:03 +0200danza(~danza@151.47.19.9)
2024-07-27 16:46:55 +0200Digitteknohippie(~user@user/digit)
2024-07-27 16:47:36 +0200Digit(~user@user/digit) (Ping timeout: 252 seconds)
2024-07-27 16:51:36 +0200billchenchina-(~billchenc@118.38.173.226)
2024-07-27 16:56:44 +0200DigitteknohippieDigit
2024-07-27 16:57:06 +0200Enrico63(~Enrico63@81.109.143.226)
2024-07-27 16:58:18 +0200 <Enrico63> Hi, what's the best chatroom to ask about packages on hackage? I've just uploaded this (https://hackage.haskell.org/package/xnobar-0.0.0.0), but I have questions about it :)
2024-07-27 16:58:46 +0200 <Enrico63> I mean, not questions about my own creation, ahah, but about how that page looks like
2024-07-27 17:00:26 +0200 <danza> it looks broken. Those badges come from the README i suppose
2024-07-27 17:03:30 +0200 <danza> and the module cannot be browsed. Maybe hackage failed, but not sure how to troubleshoot that besides trying a local build
2024-07-27 17:03:35 +0200ell1(~ellie@user/ellie)
2024-07-27 17:05:29 +0200ell(~ellie@user/ellie) (Read error: Connection reset by peer)
2024-07-27 17:05:29 +0200ell1ell
2024-07-27 17:06:14 +0200 <Enrico63> Well, I've been using and building it on a daily basis :/
2024-07-27 17:06:42 +0200 <Enrico63> (But is this the right place for this topic?)
2024-07-27 17:08:04 +0200 <danza> if there is no other conversation going on, i guess we can chat about that. There is also #hackage. Yeah maybe bthe bbuild works but the badges look failing, and maybe you did not build with haddock
2024-07-27 17:08:25 +0200 <danza> (before i wanted to write "haddock failed")
2024-07-27 17:08:56 +0200 <Enrico63> running cabal haddock in the shell succeeded
2024-07-27 17:10:23 +0200 <danza> hmm yeah not sure how to troubleshoot that ... maybe in hindsight #hackage is better to ask for help. Admittedly i don't have much experience about that
2024-07-27 17:10:28 +0200oo_miguel(~Thunderbi@78.10.207.46)
2024-07-27 17:13:08 +0200cattiescivilization
2024-07-27 17:13:23 +0200civilizationCatty
2024-07-27 17:16:05 +0200CiaoSen(~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03) (Ping timeout: 248 seconds)
2024-07-27 17:19:14 +0200 <Enrico63> Thanks! :)
2024-07-27 17:19:45 +0200danza(~danza@151.47.19.9) (Changing host)
2024-07-27 17:19:45 +0200danza(~danza@user/danza)
2024-07-27 17:20:32 +0200 <danza> well i did nothing :P
2024-07-27 17:20:59 +0200 <Enrico63> Pointing me to the other room :P
2024-07-27 17:22:37 +0200 <danza> well as i said i don't have much experience uploading so not sure how people address similar issues... i lurk in #hackage but don't recall chats about package errors. But maybe i just did not pay enough attention
2024-07-27 17:23:05 +0200rvalue(~rvalue@user/rvalue) (Ping timeout: 255 seconds)
2024-07-27 17:23:19 +0200 <tomsmeding> Enrico63: er, what about clicking on the BuildFailed badge? https://hackage.haskell.org/package/xnobar-0.0.0.0/reports/2
2024-07-27 17:24:10 +0200 <tomsmeding> hackage is trying to build your package with base-4.18.1.0 (GHC 9.6.3), but your package's cabal file says it's only compatible with base < 4.18 (i.e. GHC < 9.6)
2024-07-27 17:24:15 +0200 <tomsmeding> hence nothing works
2024-07-27 17:25:25 +0200Square2(~Square@user/square)
2024-07-27 17:25:38 +0200 <tomsmeding> danza: those badges are in the package description area -- the readme area is below all the metadata :)
2024-07-27 17:25:59 +0200 <tomsmeding> hence I guessed that the badges were not from any readme but from hackage itself, and so it seems
2024-07-27 17:26:51 +0200 <danza> thanks tomsmeding. Hadn't noticed them in other packages
2024-07-27 17:27:31 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com)
2024-07-27 17:27:32 +0200rvalue(~rvalue@user/rvalue)
2024-07-27 17:28:00 +0200 <tomsmeding> danza: I hadn't consciously noticed them either -- I conditioned myself to ignore such badges in github readmes because they never seemed to carry any info :p
2024-07-27 17:28:17 +0200 <tomsmeding> but you explicitly mentioned badges, so I noticed them :p
2024-07-27 17:28:43 +0200 <tomsmeding> I do wonder why hackage chose to use those badge images instead of putting this in metadata consistent with the rest of the interface
2024-07-27 17:29:07 +0200 <tomsmeding> you get the "it's too obvious so I missed it" effect
2024-07-27 17:30:06 +0200 <danza> i don't think it's a terrible idea anyways, lemme look some other package at random
2024-07-27 17:30:35 +0200 <Enrico63> tomsmeding, does that mean I have to upload a new version already, if  I want to fix?
2024-07-27 17:30:44 +0200 <Enrico63> 0.0.0.0 sounded so good :/
2024-07-27 17:31:11 +0200 <danza> yeah they have always been there. Not beautiful but not awful either
2024-07-27 17:31:16 +0200 <tomsmeding> I think only hackage admins have rights to update package metadata
2024-07-27 17:31:22 +0200 <tomsmeding> without publishing a new version, that is
2024-07-27 17:31:49 +0200 <tomsmeding> metadata revisions are like you see here under "Downloads": https://hackage.haskell.org/package/process
2024-07-27 17:32:04 +0200 <tomsmeding> if you click "revised" you see that there's one metadata revision for this version of 'process'
2024-07-27 17:32:17 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-07-27 17:32:27 +0200 <tomsmeding> oh
2024-07-27 17:32:33 +0200 <tomsmeding> apparently package maintainers can also do that?
2024-07-27 17:33:18 +0200 <Enrico63> Uh, I see it
2024-07-27 17:34:12 +0200 <tomsmeding> Enrico63: go to your package page and click on "edit package information" under "Maintainer's Corner"
2024-07-27 17:34:14 +0200 <Enrico63> It looks like I can modify the .cabal file directly from there
2024-07-27 17:34:17 +0200 <tomsmeding> right
2024-07-27 17:34:21 +0200 <Enrico63> yeah, yeah
2024-07-27 17:34:25 +0200 <tomsmeding> (first time I go there too)
2024-07-27 17:35:03 +0200 <tomsmeding> then to hope that hackage will actually do a rebuild upon metadata change
2024-07-27 17:35:05 +0200 <Enrico63> What the heck, I do have to provide an upper bound!
2024-07-27 17:35:17 +0200 <tomsmeding> hah, does it reject removing the upper bound?
2024-07-27 17:35:22 +0200 <Enrico63> Yes...
2024-07-27 17:35:31 +0200 <tomsmeding> '<5' is typical for base for "I dunno"
2024-07-27 17:35:33 +0200 <Enrico63> Basically it will periodically break, won't it? :(
2024-07-27 17:35:42 +0200 <tomsmeding> (stack generates this)
2024-07-27 17:36:11 +0200 <tomsmeding> Enrico63: the idea of package bounds is that you only include versions you've tested with, so that people don't get broken build plans from the solver
2024-07-27 17:36:27 +0200 <tomsmeding> so yes, that indeed means that things will periodically break and you have to continue testing with newer versions and bump bounds
2024-07-27 17:36:32 +0200 <tomsmeding> in practice, however
2024-07-27 17:36:46 +0200 <tomsmeding> this happens for actively maintained packages with maintainers that care about bounds
2024-07-27 17:36:56 +0200 <tomsmeding> e.g. the boot packages like containers, process, text
2024-07-27 17:37:39 +0200 <tomsmeding> if you are really quite sure that changes to 'base' will either break the entire world irrevocably or keep XNoBar working, feel free to put <5 there
2024-07-27 17:38:19 +0200 <Enrico63> I've update to <5
2024-07-27 17:38:27 +0200 <tomsmeding> there is, by the way, also the option of uploading your own documentation to hackage for a package
2024-07-27 17:38:30 +0200 <tomsmeding> there's docs about doing that somewhere
2024-07-27 17:38:53 +0200 <tomsmeding> this is necessary if hackage can't build your package because e.g. you depend on some C system library that the hackage build machine doesn't have
2024-07-27 17:38:54 +0200 <Enrico63> I wanted to try how good the automated thing would do
2024-07-27 17:39:06 +0200 <tomsmeding> but making the automated thing work is always nicer
2024-07-27 17:39:16 +0200 <Enrico63> I suppose I don't depend on such a thing, do I? :/
2024-07-27 17:39:26 +0200 <tomsmeding> we'll see :)
2024-07-27 17:40:02 +0200 <Enrico63> The build banner shows still the old bound, I guess I just have to wait, right?
2024-07-27 17:40:17 +0200 <tomsmeding> iirc hackage doesn't allow you to depend on internal libraries from other packages, but depending on internal libraries within your own package is probably fine
2024-07-27 17:41:02 +0200 <tomsmeding> hackage tried to build your thing twice so far
2024-07-27 17:41:07 +0200 <tomsmeding> https://hackage.haskell.org/package/xnobar-0.0.0.0/reports/
2024-07-27 17:41:19 +0200 <tomsmeding> probably good to give it a few hours, perhaps there's a build queue
2024-07-27 17:41:29 +0200 <Enrico63> Yeah, I saw that before hasking, but I didn't really understand what it meant
2024-07-27 17:41:31 +0200 <Enrico63> hasking, ahahah
2024-07-27 17:41:33 +0200 <tomsmeding> :)
2024-07-27 17:41:46 +0200 <tomsmeding> I don't know why it tried twice either
2024-07-27 17:41:52 +0200 <Enrico63> Do you use xmobar by any chance?
2024-07-27 17:41:56 +0200 <tomsmeding> no sorry
2024-07-27 17:41:59 +0200 <tomsmeding> i3 user
2024-07-27 17:42:03 +0200 <Enrico63> Ok, fair enough :)
2024-07-27 17:42:12 +0200 <Enrico63> I was using that too, then I changed
2024-07-27 17:43:00 +0200 <Enrico63> To xmonad, I mean. I wanted to have more control on things. Actually, what I'm really customizing a lot is just xmobar, not xmonad, really.
2024-07-27 17:45:13 +0200 <Enrico63> Thank you very much for the explanations. I'll wait to see what happens to the build
2024-07-27 17:45:21 +0200 <tomsmeding> hope it works :)
2024-07-27 17:51:11 +0200Enrico63(~Enrico63@81.109.143.226) (Ping timeout: 256 seconds)
2024-07-27 17:55:43 +0200danz38981(~danza@user/danza)
2024-07-27 17:58:03 +0200danza(~danza@user/danza) (Read error: Connection reset by peer)
2024-07-27 17:58:34 +0200danz38981(~danza@user/danza) (Client Quit)
2024-07-27 18:02:15 +0200Inst(~Inst@user/Inst) (Remote host closed the connection)
2024-07-27 18:02:43 +0200Inst(~Inst@user/Inst)
2024-07-27 18:04:15 +0200Inst(~Inst@user/Inst) (Remote host closed the connection)
2024-07-27 18:04:45 +0200Inst(~Inst@user/Inst)
2024-07-27 18:06:15 +0200Inst(~Inst@user/Inst) (Remote host closed the connection)
2024-07-27 18:06:42 +0200Inst(~Inst@user/Inst)
2024-07-27 18:14:27 +0200LawrenceBerkheim(~LBerkheim@user/LawrenceBerkheim)
2024-07-27 18:14:29 +0200 <LawrenceBerkheim> Good day gentlemen
2024-07-27 18:14:34 +0200 <LawrenceBerkheim> Time to do some more haskell programming
2024-07-27 18:23:38 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2024-07-27 18:29:09 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 248 seconds)
2024-07-27 18:31:17 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net)
2024-07-27 18:42:43 +0200euleritian(~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de) (Ping timeout: 244 seconds)
2024-07-27 18:45:06 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 265 seconds)
2024-07-27 18:52:05 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net)
2024-07-27 19:31:09 +0200JuanDaugherty(~juan@user/JuanDaugherty)
2024-07-27 19:35:04 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-07-27 19:38:38 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-27 19:38:48 +0200euleritian(~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de)
2024-07-27 19:41:01 +0200CrunchyFlakes(~CrunchyFl@146.52.130.128)
2024-07-27 19:44:52 +0200CiaoSen(~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03)
2024-07-27 19:51:42 +0200LawrenceBerkheim(~LBerkheim@user/LawrenceBerkheim) (Remote host closed the connection)
2024-07-27 19:52:43 +0200 <Inst> heh, exceptions are useful for something, no?
2024-07-27 19:53:21 +0200 <Inst> https://paste.tomsmeding.com/nml7kCLg
2024-07-27 19:54:56 +0200 <Inst> ideally the exception checking would be handled by getnumber, but afaik that'd leak, and moreover, it'd attempt to do everything underneath the error handler code once the error was resolved
2024-07-27 20:03:32 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-07-27 20:05:15 +0200 <hololeap> you'd basically be replacing 'Maybe Double' with 'Either BadNumberException Double', which doesn't add much value
2024-07-27 20:05:54 +0200 <Inst> this is just an idle exercise, but i was thinking
2024-07-27 20:06:15 +0200 <Inst> let's say i want it to loop back to the start of the function if i received erroneous input
2024-07-27 20:06:31 +0200 <Inst> XNonDecreasingIndentation works
2024-07-27 20:07:08 +0200 <Inst> https://paste.tomsmeding.com/8AwxQHBi
2024-07-27 20:07:14 +0200 <Inst> i know proper style is to avoid exceptions
2024-07-27 20:07:27 +0200 <hololeap> unless you need the exception to carry something more than "nope, didn't work", Maybe works just fine
2024-07-27 20:09:10 +0200 <Inst> i'm just wondering if you can get the second snippet to work without exceptions, i.e, maintain back to start logic without having to use annoying exceptions or memory leaking
2024-07-27 20:09:25 +0200 <geekosaur> there's Cont if you don't mind leaking sanity
2024-07-27 20:11:03 +0200 <Inst> as in, the cont type?
2024-07-27 20:11:08 +0200 <geekosaur> yes
2024-07-27 20:11:51 +0200 <geekosaur> lets you abort a computation with e.g. `Nothing` and the overlying logic can try again
2024-07-27 20:12:27 +0200 <Inst> yeah i saw
2024-07-27 20:12:29 +0200 <Inst> https://hackage.haskell.org/package/mtl-2.3.1/docs/Control-Monad-Cont.html
2024-07-27 20:12:54 +0200 <hololeap> I'm not sure where the memory leak would be. 'first' and 'second' are going to be fully evaluated even with out the ! in front of them
2024-07-27 20:15:03 +0200 <hololeap> since this is the IO monad, and order matters, so it has to evaluate those values in order to choose an execution path (somebody else can probably explain it in more accurate terms)
2024-07-27 20:15:30 +0200 <JuanDaugherty> you can get actual leaks with just hs?
2024-07-27 20:15:45 +0200 <Inst> the forcing isn't because of memory leaks, it's to force the thing to throw the exception asap
2024-07-27 20:16:04 +0200 <JuanDaugherty> (as opposed to blowing up memory)
2024-07-27 20:16:12 +0200 <Inst> otherwise it waits until the comparison before resetting
2024-07-27 20:16:29 +0200 <hololeap> blowing up is just a leak in fast-motion
2024-07-27 20:16:45 +0200 <JuanDaugherty> shit gets lost with leaks
2024-07-27 20:17:01 +0200 <Inst> maybe what I actually want is ExceptT IO?
2024-07-27 20:17:19 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2024-07-27 20:17:20 +0200 <Inst> and giving up and just declaring I love monad transformers?
2024-07-27 20:17:33 +0200 <hololeap> you might even try MaybeT and <|> to control the logic
2024-07-27 20:18:01 +0200gmg(~user@user/gehmehgeh)
2024-07-27 20:19:31 +0200 <monochrom> Are you looking at the leak explained in my https://www.vex.net/~trebla/haskell/exception-tutorial.xhtml#catch ? The solution is to use try, not catch.
2024-07-27 20:20:41 +0200 <monochrom> BTW you don't need !'s if you use readLn instead, it raises exceptions immediately.
2024-07-27 20:21:17 +0200 <monochrom> In fact readLn has a well-defined order of I/O and raising exception, ! doesn't.
2024-07-27 20:24:22 +0200 <Inst> i guess the issue is more that Haskell doesn't have while, and while you can substitute for it a bit with calling IO actions, it's not really the same as a goto because you end up returning
2024-07-27 20:24:26 +0200 <Inst> that's what i mean by leaking
2024-07-27 20:24:48 +0200 <Inst> you can be explicit in control flow but then you have indentations
2024-07-27 20:25:52 +0200 <monochrom> The try version has no leak. The recursive call becomes a tail call, you get a while loop.
2024-07-27 20:26:03 +0200 <monochrom> The catch version makes your recursive call non-tail.
2024-07-27 20:26:38 +0200 <monochrom> You should stick to {try*, bracket*, finally} unless you really know why you have no option but to use catch directly.
2024-07-27 20:27:17 +0200billchenchina-(~billchenc@118.38.173.226) (Remote host closed the connection)
2024-07-27 20:37:54 +0200CiaoSen(~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03) (Ping timeout: 245 seconds)
2024-07-27 20:40:43 +0200harveypwca(~harveypwc@2601:246:d080:b40:1889:d9bf:2dd8:b288)
2024-07-27 20:44:06 +0200 <Inst> yeah i tried to bite the bullet and use nondecreasingindentation, but it's now complaining?
2024-07-27 20:44:51 +0200 <Inst> https://paste.tomsmeding.com/mFHBPeii
2024-07-27 20:47:07 +0200 <Inst> does nondecreasingindentation simply not work on case?
2024-07-27 20:50:26 +0200 <geekosaur> if you read the documentation, it applies specifically to `do`
2024-07-27 20:50:37 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2024-07-27 20:50:45 +0200 <geekosaur> "Specifically, the restriction that “a nested context must be indented further to the right than the enclosing context” is relaxed to allow the nested context to be at the same level as the enclosing context, if the enclosing context is a do expression."
2024-07-27 20:51:17 +0200noumenon(~noumenon@113.51-175-156.customer.lyse.net) (Read error: Connection reset by peer)
2024-07-27 20:51:39 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2024-07-27 20:53:05 +0200 <monochrom> Ugh I see absolutely decresing indentation in that code.
2024-07-27 20:53:40 +0200 <Inst> yeah, it's two levels
2024-07-27 20:53:46 +0200 <geekosaur> (and afaict this exists solely so that you don't have to indent `else` in a multiline if-then-else in a `do`)
2024-07-27 20:56:10 +0200 <Inst> https://gitlab.haskell.org/ghc/ghc/-/issues/20147
2024-07-27 20:56:13 +0200 <monochrom> Other people would be happy to show you how to indent this code properly. I won't, this is flawed logic in the first place --- why are you forcing the user to enter two numbers again from scratch just because they made a mistake in the 2nd number?
2024-07-27 20:57:12 +0200 <monochrom> Instead, if you write one "readOneNumberUntilGood", then you simply have one single level of "x <- readOneNumberUntilGood; y <- readOneNumberUntilGood".
2024-07-27 20:57:34 +0200 <Inst> i know, it's an obvious solution
2024-07-27 20:57:45 +0200 <Inst> but the flawed logic created interesting problems that i wanted to solve
2024-07-27 20:57:54 +0200 <monochrom> Inside readOneNumberUntilGood you just have one level of try-readLn or you can use readMaybe<$>getLine or anything. It won't suck.
2024-07-27 20:58:43 +0200 <monochrom> If you really want on-error-start-from-scratch, that's the wrong code to write too.
2024-07-27 20:59:21 +0200 <monochrom> You are supposed to have one single try around (read 1st number; read 2nd number), just like you had one single outer catch previously.
2024-07-27 20:59:34 +0200 <Inst> ah, thanks
2024-07-27 21:00:05 +0200jerg(~jerg@2001:a61:247a:4700::bb0) (Ping timeout: 248 seconds)
2024-07-27 21:05:23 +0200Enrico63(~Enrico63@81.109.143.226)
2024-07-27 21:07:31 +0200 <Enrico63> tomsmeding, I suspect that updating only the package information is not enough to trigger a rebuild. Or 3 hours are not enough :D
2024-07-27 21:17:13 +0200hololeap. o ( https://bpa.st/ORTA )
2024-07-27 21:19:47 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-07-27 21:19:52 +0200 <tomsmeding> Enrico63: click on that "edit package information" link again. See the bottom of that page.
2024-07-27 21:20:03 +0200 <tomsmeding> (I'm discovering this stuff now too)
2024-07-27 21:22:22 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-07-27 21:24:04 +0200 <Enrico63> Done. But I'm not sure if there's a way to see the "in progress" build
2024-07-27 21:24:20 +0200 <Enrico63> The list of reports still shows 2 rows
2024-07-27 21:24:30 +0200 <Enrico63> Maybe it is trying right now
2024-07-27 21:24:41 +0200 <tomsmeding> there is a build queue, but I don't know how long it is
2024-07-27 21:24:44 +0200 <Enrico63> I suppose I'll find out
2024-07-27 21:25:02 +0200 <tomsmeding> the "wait a few hours" resets now, I guess :p
2024-07-27 21:25:17 +0200 <monochrom> :(
2024-07-27 21:25:18 +0200 <Enrico63> ahahah, yeah, fair enough
2024-07-27 21:25:38 +0200 <Enrico63> I'll go eat some dinner
2024-07-27 21:25:46 +0200euleritian(~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-07-27 21:25:57 +0200 <tomsmeding> bon appetit :)
2024-07-27 21:26:24 +0200ss4(~wootehfoo@user/wootehfoot)
2024-07-27 21:26:57 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-27 21:28:34 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 244 seconds)
2024-07-27 21:29:55 +0200Enrico63(~Enrico63@81.109.143.226) (Ping timeout: 256 seconds)
2024-07-27 21:32:42 +0200 <hololeap> % :t (<*>) @((->) _)
2024-07-27 21:32:42 +0200 <yahb2> (<*>) @((->) _) :: (w -> (a -> b)) -> (w -> a) -> w -> b
2024-07-27 21:33:08 +0200 <hololeap> has anyone ever seen this used in the wild
2024-07-27 21:33:28 +0200 <hololeap> in a way that made sense, not some obfuscation challenge
2024-07-27 21:34:17 +0200hololeapis just curious
2024-07-27 21:35:03 +0200ss4(~wootehfoo@user/wootehfoot) (Ping timeout: 276 seconds)
2024-07-27 21:40:32 +0200TactfulCitrus(~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047)
2024-07-27 21:41:42 +0200michalz(~michalz@185.246.207.218)
2024-07-27 21:43:11 +0200TMA(tma@twin.jikos.cz) (Ping timeout: 255 seconds)
2024-07-27 21:44:27 +0200tram(~tram@2a02:587:b43:7300:a89e:683a:2da1:a2ed)
2024-07-27 21:44:55 +0200 <ncf> probably. i wouldn't be surprised if i saw that used in the agda codebase
2024-07-27 21:45:09 +0200 <mauke> ah, good old S combinator
2024-07-27 21:47:52 +0200 <mauke> did you know that the opposite of (<*>) is (=<<)?
2024-07-27 21:48:16 +0200 <ncf> define opposite
2024-07-27 21:49:49 +0200 <ncf> oh, (<*>) = (=<<) . flip and (=<<) = (<*>) . flip. neat
2024-07-27 21:50:00 +0200 <mauke> (<*>) = \f g x -> f x (g x)
2024-07-27 21:50:08 +0200 <mauke> (=<<) = \f g x -> f (g x) x
2024-07-27 21:50:36 +0200 <tram> I'm writing my first parser and I came up with this: maybeTrash p = p *> pure () <|> pure ()! (type is Parser a -> Parser ()) Ok, I'm sure it's not a big deal, and maybe not good, but I feel like a genius, and I wanted to share the feeling before going out with friends that don't know Haskell...
2024-07-27 21:50:40 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-27 21:51:19 +0200 <monochrom> :)
2024-07-27 21:51:24 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-27 21:51:48 +0200 <mauke> :t optional
2024-07-27 21:51:49 +0200 <lambdabot> Alternative f => f a -> f (Maybe a)
2024-07-27 21:52:08 +0200 <mauke> :t \p -> optional p $> ()
2024-07-27 21:52:09 +0200 <lambdabot> error:
2024-07-27 21:52:09 +0200 <lambdabot> • Variable not in scope: ($>) :: f (Maybe a) -> () -> t
2024-07-27 21:52:09 +0200 <lambdabot> • Perhaps you meant one of these:
2024-07-27 21:52:46 +0200 <mauke> :t \p -> optional p $> ()
2024-07-27 21:52:47 +0200 <lambdabot> Alternative f => f a -> f ()
2024-07-27 21:52:53 +0200 <Inst> hmmm, so when readLn fails, it throws an exception of type IOException?
2024-07-27 21:53:51 +0200 <ncf> :t void . optional
2024-07-27 21:53:52 +0200 <lambdabot> Alternative f => f a -> f ()
2024-07-27 21:54:01 +0200 <ncf> oops too late
2024-07-27 21:55:33 +0200 <tram> mauke: :P nice! obviously it would be a thing. Haskell is too nice...
2024-07-27 21:55:48 +0200 <mauke> Inst: yes
2024-07-27 21:55:50 +0200 <c_wraith> Inst: I think it's documented as IOError, but that's the same type in GHC.
2024-07-27 21:56:13 +0200 <Inst> is there a way to identify the exception type from GHCi?
2024-07-27 21:56:20 +0200 <mauke> IOError is the "standard Haskell" type, which predates Exception IIRC
2024-07-27 21:57:05 +0200ystael(~ystael@user/ystael)
2024-07-27 21:58:09 +0200 <Inst> also, you can't case over two different types of exceptions, right?
2024-07-27 21:58:11 +0200 <c_wraith> Inst: no. The way GHC's exception mechanism works you can't identify the type of an error with any technique other than checking to see if it's a specific type
2024-07-27 21:58:40 +0200 <geekosaur> IOError is from the Report. Exception/extensible exceptions came later (don't recall when but the publish date of RWH should be a good indicator because EE went in during printing)
2024-07-27 21:59:45 +0200 <c_wraith> Inst: You can have handlers for multiple types of Exceptions, though. that's what `catches` does, for instance
2024-07-27 22:00:45 +0200 <c_wraith> the documentation for catches ( https://hackage.haskell.org/package/base-4.20.0.1/docs/Control-Exception.html#v:catches ) shows the alternative
2024-07-27 22:01:56 +0200 <Inst> yeah, but if you ask monochrom, then i should generally stick to try
2024-07-27 22:02:24 +0200 <c_wraith> You can nest try too
2024-07-27 22:03:13 +0200 <c_wraith> Though it's more common to just look for SomeException and then check for specific cases you care about
2024-07-27 22:03:16 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)
2024-07-27 22:03:47 +0200 <monochrom> Would be nice if there were a "tries" analogous to "catches".
2024-07-27 22:04:02 +0200 <tram> mauke: Ok, how can I "join" the result of optional wich is Maybe in my Parser wich is String -> Either e r
2024-07-27 22:04:24 +0200 <Inst> interesting looking at the source code of catches
2024-07-27 22:04:40 +0200 <c_wraith> monochrom: How do you type that - an open sum type?
2024-07-27 22:05:05 +0200 <monochrom> catches already uses an existiential type "Handler".
2024-07-27 22:05:20 +0200 <c_wraith> yeah, but that wouldn't help with tries
2024-07-27 22:05:23 +0200 <tram> mauke: no that's not what I want...
2024-07-27 22:05:36 +0200 <tram> nvm I'm late. thanks
2024-07-27 22:05:37 +0200Enrico63(~Enrico63@81.109.143.226)
2024-07-27 22:05:42 +0200tram(~tram@2a02:587:b43:7300:a89e:683a:2da1:a2ed) ()
2024-07-27 22:06:09 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-27 22:06:41 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-27 22:07:48 +0200TMA(tma@twin.jikos.cz)
2024-07-27 22:09:21 +0200 <c_wraith> monochrom: tries would need to do some sort of trickery like (AllInstances Exception es) => IO a -> IO (Either (OneOf es) a)
2024-07-27 22:11:55 +0200 <c_wraith> It's no wonder people just get SomeException and look for the cases they care about. Easier than using something like that.
2024-07-27 22:13:40 +0200 <mauke> tries :: IO a -> [Handler e] -> IO (Either e a)
2024-07-27 22:14:32 +0200 <c_wraith> that sort of loses the point of try
2024-07-27 22:15:39 +0200 <c_wraith> try exists to make it clear what the scope of the error checking is - you get the exception or the value. Any errors caused by the handler are outside the scope of try, because there is no handler passed in.
2024-07-27 22:15:42 +0200 <mauke> the alternative is to use more limited exception predicates and return SomeException, I think
2024-07-27 22:15:51 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2024-07-27 22:16:03 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-07-27 22:16:13 +0200fr33domlover(~fr33domlo@towards.vision) (Quit: The Lounge - https://thelounge.chat)
2024-07-27 22:16:30 +0200 <Inst> hmmm, okay, and toEnum failure triggers the Errorcall datatype, which is nice
2024-07-27 22:17:25 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-07-27 22:19:44 +0200skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
2024-07-27 22:20:20 +0200fr33domlover(~fr33domlo@towards.vision)
2024-07-27 22:23:41 +0200chiselfuse(~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds)
2024-07-27 22:25:55 +0200chiselfuse(~chiselfus@user/chiselfuse)
2024-07-27 22:27:12 +0200target_i(~target_i@user/target-i/x-6023099)
2024-07-27 22:27:26 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds)
2024-07-27 22:28:17 +0200Enrico63(~Enrico63@81.109.143.226) (Ping timeout: 256 seconds)
2024-07-27 22:35:33 +0200tomku(~tomku@user/tomku) (Ping timeout: 248 seconds)
2024-07-27 22:35:46 +0200tomku(~tomku@user/tomku)
2024-07-27 22:39:23 +0200 <Inst> cool
2024-07-27 22:39:32 +0200 <Inst> so that's why evaluate is there for (it's literally in the documentation)
2024-07-27 22:39:59 +0200 <Inst> try $ evaluate =<< io action
2024-07-27 22:40:06 +0200 <c_wraith> yep
2024-07-27 22:41:02 +0200 <c_wraith> though be aware that sometimes you'll want to combine it with `force` from the deepseq package
2024-07-27 22:41:24 +0200 <Inst> yeah i know, i used a ton of evaluate . force =<< in the past
2024-07-27 22:41:24 +0200 <c_wraith> (or sometimes you'll want less of a sledgehammer and need to do a bunch of stuff by hand)
2024-07-27 22:41:47 +0200 <Inst> basically i needed the result strict because otherwise it wouldn't trigger the exceptions I wanted
2024-07-27 22:42:09 +0200 <Inst> so evaluate =<< forces the evaluation of data in the IO action
2024-07-27 22:42:43 +0200 <Inst> letting try do its job instead of getting bypassed
2024-07-27 22:47:29 +0200 <monochrom> In the case of "read <$> ..." you should use readLn or readIO instead. Or readMaybe and you get a Nothing/Just and it's pure, no exception needed.
2024-07-27 22:47:54 +0200 <Inst> i'm using toEnum
2024-07-27 22:48:28 +0200 <monochrom> OK then yeah evaluate is appropriate for toEnum errors or division by zero.
2024-07-27 22:49:05 +0200 <Inst> also for tries, have you considered tryJust stacked?
2024-07-27 22:49:44 +0200 <monochrom> I have.
2024-07-27 22:50:04 +0200 <monochrom> But I am not sure you have the correct unstated assumption in the first place.
2024-07-27 22:50:45 +0200 <Inst> i don't
2024-07-27 22:50:51 +0200 <monochrom> Stacked tryJust has stacked semantics. Unstacked tryJust has unstacked semantics.
2024-07-27 22:51:00 +0200koolazer(~koo@user/koolazer)
2024-07-27 22:52:37 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2024-07-27 22:58:36 +0200TactfulCitrus(~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047) (Remote host closed the connection)
2024-07-27 23:01:05 +0200cpressey(~weechat@176.254.71.203)
2024-07-27 23:03:20 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-07-27 23:04:24 +0200cpressey(~weechat@176.254.71.203) (Client Quit)
2024-07-27 23:05:42 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-07-27 23:12:26 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2024-07-27 23:13:56 +0200Midjak(~MarciZ@82.66.147.146) (Quit: This computer has gone to sleep)
2024-07-27 23:17:14 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-07-27 23:18:13 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
2024-07-27 23:20:14 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-07-27 23:23:20 +0200michalz(~michalz@185.246.207.218) (Quit: ZNC 1.9.0 - https://znc.in)
2024-07-27 23:24:31 +0200 <c_wraith> Well. I got curious how awful it really would be, and... https://paste.tomsmeding.com/KdmeZ85v
2024-07-27 23:24:59 +0200 <c_wraith> monochrom: ^ tries actually isn't that bad to use. It's more that it's a surprising amount of code to write
2024-07-27 23:25:59 +0200 <monochrom> Oh... I see, you were aiming at type-level list of exception types.
2024-07-27 23:26:49 +0200 <c_wraith> that's the obvious way to capture the semantics of try
2024-07-27 23:30:13 +0200 <c_wraith> Honestly, it's probably slightly easier to use that than it is to manually write the type matching against SomeException yourself
2024-07-27 23:35:14 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-07-27 23:38:00 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-07-27 23:44:03 +0200misterfish(~misterfis@84.53.85.146) (Ping timeout: 252 seconds)
2024-07-27 23:46:04 +0200 <jle`> kjkjkjkjjkk
2024-07-27 23:47:33 +0200CrunchyFlakes(~CrunchyFl@146.52.130.128) (Read error: Connection reset by peer)
2024-07-27 23:50:28 +0200CrunchyFlakes(~CrunchyFl@146.52.130.128)
2024-07-27 23:53:53 +0200harveypwca(~harveypwc@2601:246:d080:b40:1889:d9bf:2dd8:b288) (Quit: Leaving)
2024-07-27 23:59:47 +0200 <Inst> really?