Home liberachat/#haskell: Logs Calendar

Logs on 2024-07-27 (liberachat/#haskell)

00:01:29 × ystael quits (~ystael@user/ystael) (Ping timeout: 255 seconds)
00:03:23 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
00:05:12 × hgolden quits (~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7) (Remote host closed the connection)
00:05:53 Rodney__ joins (~Rodney@90.201.223.82)
00:07:39 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
00:08:20 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
00:09:22 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:21:35 × mud quits (~mud@user/kadoban) (Remote host closed the connection)
00:22:02 mud joins (~mud@user/kadoban)
00:31:48 × prolic_ quits (~sasa@181.122.138.24) (Remote host closed the connection)
00:32:07 × califax quits (~califax@user/califx) (Remote host closed the connection)
00:35:17 califax joins (~califax@user/califx)
00:46:39 × tomku quits (~tomku@user/tomku) (Ping timeout: 276 seconds)
00:54:18 <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.
00:57:51 <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".
00:59:12 <monochrom> But going back to the original point. Stop telling beginners how to split hair about what "sieve" means.
01:14:32 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
01:31:05 × bolivood quits (~bolivood@user/bolivood) (Ping timeout: 260 seconds)
01:35:10 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
02:01:53 Rodney- joins (~Rodney@90.201.223.82)
02:05:14 × Rodney__ quits (~Rodney@90.201.223.82) (Ping timeout: 255 seconds)
02:07:29 fiberchunks joins (~mike@32.221.120.181)
02:08:28 fiberchunks parts (~mike@32.221.120.181) ()
02:11:48 fiberchunks joins (~mike@32.221.120.181)
02:12:16 × td_ quits (~td@i53870934.versanet.de) (Ping timeout: 252 seconds)
02:14:16 td_ joins (~td@i53870913.versanet.de)
02:27:10 fiberchunks parts (~mike@32.221.120.181) ()
02:35:54 ddellacosta joins (~ddellacos@ool-44c73d29.dyn.optonline.net)
02:38:02 tomku joins (~tomku@user/tomku)
02:43:31 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
02:46:22 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
03:00:01 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
03:27:33 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
03:36:08 × torkel quits (~sindu@83-243-191-191.fth.tafjordconnect.net) (Quit: WeeChat 4.3.5)
03:38:33 JuanDaugherty joins (~juan@user/JuanDaugherty)
03:41:19 × monochrom quits (trebla@216.138.220.146) (Quit: ZNC 1.9.0+deb2build3 - https://znc.in)
03:49:35 <jle`> dsal: that sounds like also a good application of StateT
03:49:51 <jle`> er just State maybe
03:50:42 <jle`> ah Traversal + State is just mapAccumLOf
03:52:21 × aforemny quits (~aforemny@i59F516C5.versanet.de) (Ping timeout: 248 seconds)
03:53:29 aforemny joins (~aforemny@i59F516D5.versanet.de)
03:53:30 monochrom joins (trebla@216.138.220.146)
03:53:43 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
03:54:41 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
03:57:17 sindu joins (~sindu@83-243-191-191.fth.tafjordconnect.net)
03:59:41 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection)
03:59:55 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
04:01:47 × Square2 quits (~Square@user/square) (Ping timeout: 255 seconds)
04:10:14 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
04:27:15 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
04:28:21 × slack1256 quits (~slack1256@2803:c600:5111:80cb:d321:865d:b7ff:34ea) (Remote host closed the connection)
04:37:32 skyesoss joins (~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
04:38:33 × sindu quits (~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 252 seconds)
04:45:29 hgolden joins (~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7)
04:52:29 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
04:58:46 danza joins (~danza@na-19-79-8.service.infuturo.it)
05:05:57 × danza quits (~danza@na-19-79-8.service.infuturo.it) (Remote host closed the connection)
05:06:44 danza joins (~danza@na-19-79-8.service.infuturo.it)
05:17:54 × krei-se quits (~krei-se@p5085de4b.dip0.t-ipconnect.de) (Quit: ZNC 1.9.1 - https://znc.in)
05:19:50 krei-se joins (~krei-se@p5085de4b.dip0.t-ipconnect.de)
05:27:14 <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.
05:29:15 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
05:32:11 <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
05:32:39 <dsal> Oh. I missed the `Of` there.
05:32:56 × skyesoss quits (~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Ping timeout: 272 seconds)
05:35:09 <danza> i don't use mapAccum enough
05:35:12 <danza> :t mapAccum
05:35:13 <lambdabot> error:
05:35:13 <lambdabot> • Variable not in scope: mapAccum
05:35:14 <lambdabot> • Perhaps you meant one of these:
05:35:20 euphores joins (~SASL_euph@user/euphores)
05:35:38 <danza> @hoogle mapAccum
05:35:39 <lambdabot> Data.IntMap.Internal mapAccum :: (a -> b -> (a, c)) -> a -> IntMap b -> (a, IntMap c)
05:35:39 <lambdabot> Data.IntMap.Lazy mapAccum :: (a -> b -> (a, c)) -> a -> IntMap b -> (a, IntMap c)
05:35:39 <lambdabot> Data.IntMap.Strict mapAccum :: (a -> b -> (a, c)) -> a -> IntMap b -> (a, IntMap c)
05:39:02 <geekosaur> don't you want mapAccumL?
05:39:37 <danza> who, me?
05:40:26 <geekosaur> yes
05:40:44 <geekosaur> @hoogle mapAccumL
05:40:45 <lambdabot> Data.List mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
05:40:45 <lambdabot> Data.Traversable mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
05:40:45 <lambdabot> GHC.OldList mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])
05:41:36 <danza> huh yeah, well i was looking for a definition with a default direction
05:41:39 <danza> :t foldr
05:41:40 <lambdabot> Foldable t => (a -> b -> b) -> b -> t a -> b
05:41:42 <danza> :t fold
05:41:43 <lambdabot> (Foldable t, Monoid m) => t m -> m
05:42:13 × danza quits (~danza@na-19-79-8.service.infuturo.it) (Quit: on the move)
05:45:45 × kimiamania quits (~65804703@user/kimiamania) (Quit: PegeLinux)
05:45:55 × CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
05:46:52 kimiamania joins (~65804703@user/kimiamania)
05:48:22 CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
05:49:57 danza joins (~danza@na-19-79-8.service.infuturo.it)
05:51:01 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)
05:57:15 skyesoss joins (~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
06:27:46 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:30:07 wootehfoot joins (~wootehfoo@user/wootehfoot)
06:47:02 misterfish joins (~misterfis@84.53.85.146)
06:49:07 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
06:49:35 lambdabot joins (~lambdabot@silicon.int-e.eu)
06:49:35 × lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host)
06:49:35 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
06:49:35 ChanServ sets mode +v lambdabot
06:51:01 Midjak joins (~MarciZ@82.66.147.146)
06:56:17 × int-e quits (~noone@int-e.eu) (Remote host closed the connection)
06:56:57 int-e joins (~noone@int-e.eu)
07:08:27 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
07:15:47 aforemny_ joins (~aforemny@2001:9e8:6cdd:9b00:67d0:27e6:eba2:1a90)
07:15:49 × danza quits (~danza@na-19-79-8.service.infuturo.it) (Quit: on the move)
07:15:51 × aforemny quits (~aforemny@i59F516D5.versanet.de) (Ping timeout: 252 seconds)
07:21:05 acidjnk joins (~acidjnk@p200300d6e72cfb1421aec5076afe4c64.dip0.t-ipconnect.de)
07:21:09 oo_miguel joins (~Thunderbi@78.10.207.46)
07:22:01 <Unicorn_Princess> i should be using aeson & aeson-pretty for dealing with json?
07:28:22 bolivood joins (~bolivood@2a0d:6fc2:5d11:200:113a:493:cf26:6dea)
07:38:30 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:39:12 <Hecate> Unicorn_Princess: usually yes
07:39:37 × oo_miguel quits (~Thunderbi@78.10.207.46) (Remote host closed the connection)
07:41:19 × skyesoss quits (~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Quit: skyesoss)
07:41:41 <Unicorn_Princess> thanks
07:48:16 sindu joins (~sindu@83-243-191-191.fth.tafjordconnect.net)
07:49:49 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:55:16 MadeleineSydney joins (~Thunderbi@c-71-229-185-228.hsd1.co.comcast.net)
08:08:36 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
08:09:20 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
08:17:28 × sindu quits (~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 252 seconds)
08:21:52 cpressey joins (~weechat@176.254.71.203)
08:22:29 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:25:24 <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
08:29:09 × cpressey quits (~weechat@176.254.71.203) (Ping timeout: 248 seconds)
08:31:34 <Lears> Axman6: This worked: https://play-haskell.tomsmeding.com/saved/ICQgr1xB
08:32:17 <Lears> A type synonym breaks because the `l` disappears from the RHS of the => I guess?
08:33:25 <Axman6> Hmm, sadly I can't change the type, (:::) is from clash-prelude
08:34:14 <Lears> Maybe the functions that use it in clash also take other arguments that alleviate the ambiguity. You could use type applications or proxies.
08:38:42 <Axman6> I can;t even get your example to compile actually
08:39:51 × xff0x quits (~xff0x@2405:6580:b080:900:8b26:ef3c:7f31:7c41) (Ping timeout: 276 seconds)
08:54:02 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
08:54:41 jerg joins (~jerg@2001:a61:247a:4700::bb0)
09:00:12 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
09:06:10 Inst joins (~Inst@user/Inst)
09:12:20 xff0x joins (~xff0x@2405:6580:b080:900:8b26:ef3c:7f31:7c41)
09:12:24 CiaoSen joins (~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03)
09:19:07 × teqwve quits (teqwve@static.141.38.201.195.clients.your-server.de) (Quit: cya)
09:21:12 × pkal quits (~pkal@2a01:4f8:1c1b:a321::) (Remote host closed the connection)
09:21:20 pkal joins (~pkal@2a01:4f8:1c1b:a321::)
09:22:08 × pkal quits (~pkal@2a01:4f8:1c1b:a321::) (Remote host closed the connection)
09:22:15 pkal joins (~pkal@2a01:4f8:1c1b:a321::)
09:27:41 stiell joins (~stiell@gateway/tor-sasl/stiell)
09:29:22 sindu joins (~sindu@83-243-191-191.fth.tafjordconnect.net)
09:34:01 __monty__ joins (~toonn@user/toonn)
09:34:27 × bolivood quits (~bolivood@2a0d:6fc2:5d11:200:113a:493:cf26:6dea) (Ping timeout: 276 seconds)
09:44:35 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
09:45:32 euleritian joins (~euleritia@77.22.252.56)
09:47:09 × MadeleineSydney quits (~Thunderbi@c-71-229-185-228.hsd1.co.comcast.net) (Remote host closed the connection)
09:48:57 danza joins (~danza@151.47.28.68)
09:49:11 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
09:50:01 euleritian joins (~euleritia@77.22.252.56)
09:55:55 × Me-me quits (~me-me@kc.randomserver.name) (Changing host)
09:55:55 Me-me joins (~me-me@user/me-me)
09:57:28 × sindu quits (~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 245 seconds)
10:01:32 aforemny joins (~aforemny@2001:9e8:6cde:4700:6284:f31d:42a8:a868)
10:01:47 × aforemny_ quits (~aforemny@2001:9e8:6cdd:9b00:67d0:27e6:eba2:1a90) (Ping timeout: 244 seconds)
10:12:53 gmg joins (~user@user/gehmehgeh)
10:13:35 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
10:14:16 takuan joins (~takuan@178-116-218-225.access.telenet.be)
10:15:26 × danza quits (~danza@151.47.28.68) (Quit: on the move)
10:18:25 sindu joins (~sindu@83-243-191-191.fth.tafjordconnect.net)
10:28:20 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 260 seconds)
10:29:08 euleritian joins (~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de)
11:05:57 × sindu quits (~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 248 seconds)
11:08:28 bolivood joins (~bolivood@2a0d:6fc2:5d11:200:dac:74e5:33ad:6838)
11:15:28 danza joins (~danza@151.47.28.68)
11:22:13 sindu joins (~sindu@83-243-191-191.fth.tafjordconnect.net)
11:27:50 × sindu quits (~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 260 seconds)
11:29:09 × danza quits (~danza@151.47.28.68) (Quit: glitching)
11:29:45 danza joins (~danza@151.47.28.68)
11:34:25 × danza quits (~danza@151.47.28.68) (Client Quit)
11:35:28 danza joins (~danza@151.47.28.68)
11:39:56 sindu joins (~sindu@83-243-191-191.fth.tafjordconnect.net)
11:45:43 × CiaoSen quits (~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03) (Ping timeout: 252 seconds)
11:47:00 <Inst> btw there's been no recent updates on graphql Rewriting it In Rust TM?
11:52:49 × aforemny quits (~aforemny@2001:9e8:6cde:4700:6284:f31d:42a8:a868) (Ping timeout: 252 seconds)
11:56:08 danza5049 joins (~danza@151.47.19.9)
11:56:12 × danza quits (~danza@151.47.28.68) (Read error: Connection reset by peer)
11:58:26 danza5049 is now known as danza
12:07:27 aforemny joins (~aforemny@2001:9e8:6cde:f100:f13d:7189:cb6f:5d03)
12:08:40 × danza quits (~danza@151.47.19.9) (Quit: nap)
12:15:44 × chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection)
12:16:48 chiselfuse joins (~chiselfus@user/chiselfuse)
12:18:59 <probie> Inst: Do you mean Hasura moving to Rust, or something else?
12:36:36 <Inst> yeah, i was suspecting it'd cost way more than anticipated and take longer than planned
12:36:40 <Inst> I don't see anything on graphql v3
12:56:40 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
12:56:47 noumenon joins (~noumenon@113.51-175-156.customer.lyse.net)
12:57:29 × noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Remote host closed the connection)
13:01:39 × micro quits (~micro@user/micro) (Ping timeout: 245 seconds)
13:02:39 × CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
13:05:11 CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
13:07:30 × euleritian quits (~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de) (Ping timeout: 252 seconds)
13:15:39 micro joins (~micro@user/micro)
13:18:42 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
13:28:21 × myme quits (~myme@2a01:799:d5c:5f00:4421:50a5:101e:8cb9) (Ping timeout: 248 seconds)
13:29:10 myme joins (~myme@2a01:799:d5c:5f00:8a75:ab8b:9550:20a2)
13:39:29 L29Ah joins (~L29Ah@wikipedia/L29Ah)
13:50:17 noumenon joins (~noumenon@113.51-175-156.customer.lyse.net)
14:04:04 euleritian joins (~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de)
14:06:41 CiaoSen joins (~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03)
14:07:17 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
14:15:36 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
14:42:51 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 244 seconds)
14:44:03 danza joins (~danza@151.47.19.9)
14:46:55 Digitteknohippie joins (~user@user/digit)
14:47:36 × Digit quits (~user@user/digit) (Ping timeout: 252 seconds)
14:51:36 billchenchina- joins (~billchenc@118.38.173.226)
14:56:44 Digitteknohippie is now known as Digit
14:57:06 Enrico63 joins (~Enrico63@81.109.143.226)
14:58:18 <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 :)
14:58:46 <Enrico63> I mean, not questions about my own creation, ahah, but about how that page looks like
15:00:26 <danza> it looks broken. Those badges come from the README i suppose
15:03:30 <danza> and the module cannot be browsed. Maybe hackage failed, but not sure how to troubleshoot that besides trying a local build
15:03:35 ell1 joins (~ellie@user/ellie)
15:05:29 × ell quits (~ellie@user/ellie) (Read error: Connection reset by peer)
15:05:29 ell1 is now known as ell
15:06:14 <Enrico63> Well, I've been using and building it on a daily basis :/
15:06:42 <Enrico63> (But is this the right place for this topic?)
15:08:04 <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
15:08:25 <danza> (before i wanted to write "haddock failed")
15:08:56 <Enrico63> running cabal haddock in the shell succeeded
15:10:23 <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
15:10:28 oo_miguel joins (~Thunderbi@78.10.207.46)
15:13:08 catties is now known as civilization
15:13:23 civilization is now known as Catty
15:16:05 × CiaoSen quits (~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03) (Ping timeout: 248 seconds)
15:19:14 <Enrico63> Thanks! :)
15:19:45 × danza quits (~danza@151.47.19.9) (Changing host)
15:19:45 danza joins (~danza@user/danza)
15:20:32 <danza> well i did nothing :P
15:20:59 <Enrico63> Pointing me to the other room :P
15:22:37 <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
15:23:05 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 255 seconds)
15:23:19 <tomsmeding> Enrico63: er, what about clicking on the BuildFailed badge? https://hackage.haskell.org/package/xnobar-0.0.0.0/reports/2
15:24:10 <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)
15:24:15 <tomsmeding> hence nothing works
15:25:25 Square2 joins (~Square@user/square)
15:25:38 <tomsmeding> danza: those badges are in the package description area -- the readme area is below all the metadata :)
15:25:59 <tomsmeding> hence I guessed that the badges were not from any readme but from hackage itself, and so it seems
15:26:51 <danza> thanks tomsmeding. Hadn't noticed them in other packages
15:27:31 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
15:27:32 rvalue joins (~rvalue@user/rvalue)
15:28:00 <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
15:28:17 <tomsmeding> but you explicitly mentioned badges, so I noticed them :p
15:28:43 <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
15:29:07 <tomsmeding> you get the "it's too obvious so I missed it" effect
15:30:06 <danza> i don't think it's a terrible idea anyways, lemme look some other package at random
15:30:35 <Enrico63> tomsmeding, does that mean I have to upload a new version already, if  I want to fix?
15:30:44 <Enrico63> 0.0.0.0 sounded so good :/
15:31:11 <danza> yeah they have always been there. Not beautiful but not awful either
15:31:16 <tomsmeding> I think only hackage admins have rights to update package metadata
15:31:22 <tomsmeding> without publishing a new version, that is
15:31:49 <tomsmeding> metadata revisions are like you see here under "Downloads": https://hackage.haskell.org/package/process
15:32:04 <tomsmeding> if you click "revised" you see that there's one metadata revision for this version of 'process'
15:32:17 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
15:32:27 <tomsmeding> oh
15:32:33 <tomsmeding> apparently package maintainers can also do that?
15:33:18 <Enrico63> Uh, I see it
15:34:12 <tomsmeding> Enrico63: go to your package page and click on "edit package information" under "Maintainer's Corner"
15:34:14 <Enrico63> It looks like I can modify the .cabal file directly from there
15:34:17 <tomsmeding> right
15:34:21 <Enrico63> yeah, yeah
15:34:25 <tomsmeding> (first time I go there too)
15:35:03 <tomsmeding> then to hope that hackage will actually do a rebuild upon metadata change
15:35:05 <Enrico63> What the heck, I do have to provide an upper bound!
15:35:17 <tomsmeding> hah, does it reject removing the upper bound?
15:35:22 <Enrico63> Yes...
15:35:31 <tomsmeding> '<5' is typical for base for "I dunno"
15:35:33 <Enrico63> Basically it will periodically break, won't it? :(
15:35:42 <tomsmeding> (stack generates this)
15:36:11 <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
15:36:27 <tomsmeding> so yes, that indeed means that things will periodically break and you have to continue testing with newer versions and bump bounds
15:36:32 <tomsmeding> in practice, however
15:36:46 <tomsmeding> this happens for actively maintained packages with maintainers that care about bounds
15:36:56 <tomsmeding> e.g. the boot packages like containers, process, text
15:37:39 <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
15:38:19 <Enrico63> I've update to <5
15:38:27 <tomsmeding> there is, by the way, also the option of uploading your own documentation to hackage for a package
15:38:30 <tomsmeding> there's docs about doing that somewhere
15:38:53 <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
15:38:54 <Enrico63> I wanted to try how good the automated thing would do
15:39:06 <tomsmeding> but making the automated thing work is always nicer
15:39:16 <Enrico63> I suppose I don't depend on such a thing, do I? :/
15:39:26 <tomsmeding> we'll see :)
15:40:02 <Enrico63> The build banner shows still the old bound, I guess I just have to wait, right?
15:40:17 <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
15:41:02 <tomsmeding> hackage tried to build your thing twice so far
15:41:07 <tomsmeding> https://hackage.haskell.org/package/xnobar-0.0.0.0/reports/
15:41:19 <tomsmeding> probably good to give it a few hours, perhaps there's a build queue
15:41:29 <Enrico63> Yeah, I saw that before hasking, but I didn't really understand what it meant
15:41:31 <Enrico63> hasking, ahahah
15:41:33 <tomsmeding> :)
15:41:46 <tomsmeding> I don't know why it tried twice either
15:41:52 <Enrico63> Do you use xmobar by any chance?
15:41:56 <tomsmeding> no sorry
15:41:59 <tomsmeding> i3 user
15:42:03 <Enrico63> Ok, fair enough :)
15:42:12 <Enrico63> I was using that too, then I changed
15:43:00 <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.
15:45:13 <Enrico63> Thank you very much for the explanations. I'll wait to see what happens to the build
15:45:21 <tomsmeding> hope it works :)
15:51:11 × Enrico63 quits (~Enrico63@81.109.143.226) (Ping timeout: 256 seconds)
15:55:43 danz38981 joins (~danza@user/danza)
15:58:03 × danza quits (~danza@user/danza) (Read error: Connection reset by peer)
15:58:34 × danz38981 quits (~danza@user/danza) (Client Quit)
16:02:15 × Inst quits (~Inst@user/Inst) (Remote host closed the connection)
16:02:43 Inst joins (~Inst@user/Inst)
16:04:15 × Inst quits (~Inst@user/Inst) (Remote host closed the connection)
16:04:45 Inst joins (~Inst@user/Inst)
16:06:15 × Inst quits (~Inst@user/Inst) (Remote host closed the connection)
16:06:42 Inst joins (~Inst@user/Inst)
16:14:27 LawrenceBerkheim joins (~LBerkheim@user/LawrenceBerkheim)
16:14:29 <LawrenceBerkheim> Good day gentlemen
16:14:34 <LawrenceBerkheim> Time to do some more haskell programming
16:23:38 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
16:29:09 × ddellacosta quits (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 248 seconds)
16:31:17 ddellacosta joins (~ddellacos@ool-44c73d29.dyn.optonline.net)
16:42:43 × euleritian quits (~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de) (Ping timeout: 244 seconds)
16:45:06 × ddellacosta quits (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 265 seconds)
16:52:05 ddellacosta joins (~ddellacos@ool-44c73d29.dyn.optonline.net)
17:31:09 JuanDaugherty joins (~juan@user/JuanDaugherty)
17:35:04 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
17:38:38 × CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
17:38:48 euleritian joins (~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de)
17:41:01 CrunchyFlakes joins (~CrunchyFl@146.52.130.128)
17:44:52 CiaoSen joins (~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03)
17:51:42 × LawrenceBerkheim quits (~LBerkheim@user/LawrenceBerkheim) (Remote host closed the connection)
17:52:43 <Inst> heh, exceptions are useful for something, no?
17:53:21 <Inst> https://paste.tomsmeding.com/nml7kCLg
17:54:56 <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
18:03:32 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
18:05:15 <hololeap> you'd basically be replacing 'Maybe Double' with 'Either BadNumberException Double', which doesn't add much value
18:05:54 <Inst> this is just an idle exercise, but i was thinking
18:06:15 <Inst> let's say i want it to loop back to the start of the function if i received erroneous input
18:06:31 <Inst> XNonDecreasingIndentation works
18:07:08 <Inst> https://paste.tomsmeding.com/8AwxQHBi
18:07:14 <Inst> i know proper style is to avoid exceptions
18:07:27 <hololeap> unless you need the exception to carry something more than "nope, didn't work", Maybe works just fine
18:09:10 <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
18:09:25 <geekosaur> there's Cont if you don't mind leaking sanity
18:11:03 <Inst> as in, the cont type?
18:11:08 <geekosaur> yes
18:11:51 <geekosaur> lets you abort a computation with e.g. `Nothing` and the overlying logic can try again
18:12:27 <Inst> yeah i saw
18:12:29 <Inst> https://hackage.haskell.org/package/mtl-2.3.1/docs/Control-Monad-Cont.html
18:12:54 <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
18:15:03 <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)
18:15:30 <JuanDaugherty> you can get actual leaks with just hs?
18:15:45 <Inst> the forcing isn't because of memory leaks, it's to force the thing to throw the exception asap
18:16:04 <JuanDaugherty> (as opposed to blowing up memory)
18:16:12 <Inst> otherwise it waits until the comparison before resetting
18:16:29 <hololeap> blowing up is just a leak in fast-motion
18:16:45 <JuanDaugherty> shit gets lost with leaks
18:17:01 <Inst> maybe what I actually want is ExceptT IO?
18:17:19 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
18:17:20 <Inst> and giving up and just declaring I love monad transformers?
18:17:33 <hololeap> you might even try MaybeT and <|> to control the logic
18:18:01 gmg joins (~user@user/gehmehgeh)
18:19:31 <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.
18:20:41 <monochrom> BTW you don't need !'s if you use readLn instead, it raises exceptions immediately.
18:21:17 <monochrom> In fact readLn has a well-defined order of I/O and raising exception, ! doesn't.
18:24:22 <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
18:24:26 <Inst> that's what i mean by leaking
18:24:48 <Inst> you can be explicit in control flow but then you have indentations
18:25:52 <monochrom> The try version has no leak. The recursive call becomes a tail call, you get a while loop.
18:26:03 <monochrom> The catch version makes your recursive call non-tail.
18:26:38 <monochrom> You should stick to {try*, bracket*, finally} unless you really know why you have no option but to use catch directly.
18:27:17 × billchenchina- quits (~billchenc@118.38.173.226) (Remote host closed the connection)
18:37:54 × CiaoSen quits (~Jura@2a05:5800:2ea:1100:e6b9:7aff:fe80:3d03) (Ping timeout: 245 seconds)
18:40:43 harveypwca joins (~harveypwc@2601:246:d080:b40:1889:d9bf:2dd8:b288)
18:44:06 <Inst> yeah i tried to bite the bullet and use nondecreasingindentation, but it's now complaining?
18:44:51 <Inst> https://paste.tomsmeding.com/mFHBPeii
18:47:07 <Inst> does nondecreasingindentation simply not work on case?
18:50:26 <geekosaur> if you read the documentation, it applies specifically to `do`
18:50:37 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
18:50:45 <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."
18:51:17 × noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Read error: Connection reset by peer)
18:51:39 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
18:53:05 <monochrom> Ugh I see absolutely decresing indentation in that code.
18:53:40 <Inst> yeah, it's two levels
18:53:46 <geekosaur> (and afaict this exists solely so that you don't have to indent `else` in a multiline if-then-else in a `do`)
18:56:10 <Inst> https://gitlab.haskell.org/ghc/ghc/-/issues/20147
18:56:13 <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?
18:57:12 <monochrom> Instead, if you write one "readOneNumberUntilGood", then you simply have one single level of "x <- readOneNumberUntilGood; y <- readOneNumberUntilGood".
18:57:34 <Inst> i know, it's an obvious solution
18:57:45 <Inst> but the flawed logic created interesting problems that i wanted to solve
18:57:54 <monochrom> Inside readOneNumberUntilGood you just have one level of try-readLn or you can use readMaybe<$>getLine or anything. It won't suck.
18:58:43 <monochrom> If you really want on-error-start-from-scratch, that's the wrong code to write too.
18:59:21 <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.
18:59:34 <Inst> ah, thanks
19:00:05 × jerg quits (~jerg@2001:a61:247a:4700::bb0) (Ping timeout: 248 seconds)
19:05:23 Enrico63 joins (~Enrico63@81.109.143.226)
19:07:31 <Enrico63> tomsmeding, I suspect that updating only the package information is not enough to trigger a rebuild. Or 3 hours are not enough :D
19:17:13 hololeap . o ( https://bpa.st/ORTA )
19:19:47 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
19:19:52 <tomsmeding> Enrico63: click on that "edit package information" link again. See the bottom of that page.
19:20:03 <tomsmeding> (I'm discovering this stuff now too)
19:22:22 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
19:24:04 <Enrico63> Done. But I'm not sure if there's a way to see the "in progress" build
19:24:20 <Enrico63> The list of reports still shows 2 rows
19:24:30 <Enrico63> Maybe it is trying right now
19:24:41 <tomsmeding> there is a build queue, but I don't know how long it is
19:24:44 <Enrico63> I suppose I'll find out
19:25:02 <tomsmeding> the "wait a few hours" resets now, I guess :p
19:25:17 <monochrom> :(
19:25:18 <Enrico63> ahahah, yeah, fair enough
19:25:38 <Enrico63> I'll go eat some dinner
19:25:46 × euleritian quits (~euleritia@dynamic-176-006-138-243.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
19:25:57 <tomsmeding> bon appetit :)
19:26:24 ss4 joins (~wootehfoo@user/wootehfoot)
19:26:57 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
19:28:34 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 244 seconds)
19:29:55 × Enrico63 quits (~Enrico63@81.109.143.226) (Ping timeout: 256 seconds)
19:32:42 <hololeap> % :t (<*>) @((->) _)
19:32:42 <yahb2> (<*>) @((->) _) :: (w -> (a -> b)) -> (w -> a) -> w -> b
19:33:08 <hololeap> has anyone ever seen this used in the wild
19:33:28 <hololeap> in a way that made sense, not some obfuscation challenge
19:34:17 hololeap is just curious
19:35:03 × ss4 quits (~wootehfoo@user/wootehfoot) (Ping timeout: 276 seconds)
19:40:32 TactfulCitrus joins (~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047)
19:41:42 michalz joins (~michalz@185.246.207.218)
19:43:11 × TMA quits (tma@twin.jikos.cz) (Ping timeout: 255 seconds)
19:44:27 tram joins (~tram@2a02:587:b43:7300:a89e:683a:2da1:a2ed)
19:44:55 <ncf> probably. i wouldn't be surprised if i saw that used in the agda codebase
19:45:09 <mauke> ah, good old S combinator
19:47:52 <mauke> did you know that the opposite of (<*>) is (=<<)?
19:48:16 <ncf> define opposite
19:49:49 <ncf> oh, (<*>) = (=<<) . flip and (=<<) = (<*>) . flip. neat
19:50:00 <mauke> (<*>) = \f g x -> f x (g x)
19:50:08 <mauke> (=<<) = \f g x -> f (g x) x
19:50:36 <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...
19:50:40 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
19:51:19 <monochrom> :)
19:51:24 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
19:51:48 <mauke> :t optional
19:51:49 <lambdabot> Alternative f => f a -> f (Maybe a)
19:52:08 <mauke> :t \p -> optional p $> ()
19:52:09 <lambdabot> error:
19:52:09 <lambdabot> • Variable not in scope: ($>) :: f (Maybe a) -> () -> t
19:52:09 <lambdabot> • Perhaps you meant one of these:
19:52:46 <mauke> :t \p -> optional p $> ()
19:52:47 <lambdabot> Alternative f => f a -> f ()
19:52:53 <Inst> hmmm, so when readLn fails, it throws an exception of type IOException?
19:53:51 <ncf> :t void . optional
19:53:52 <lambdabot> Alternative f => f a -> f ()
19:54:01 <ncf> oops too late
19:55:33 <tram> mauke: :P nice! obviously it would be a thing. Haskell is too nice...
19:55:48 <mauke> Inst: yes
19:55:50 <c_wraith> Inst: I think it's documented as IOError, but that's the same type in GHC.
19:56:13 <Inst> is there a way to identify the exception type from GHCi?
19:56:20 <mauke> IOError is the "standard Haskell" type, which predates Exception IIRC
19:57:05 ystael joins (~ystael@user/ystael)
19:58:09 <Inst> also, you can't case over two different types of exceptions, right?
19:58:11 <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
19:58:40 <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)
19:59:45 <c_wraith> Inst: You can have handlers for multiple types of Exceptions, though. that's what `catches` does, for instance
20:00:45 <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
20:01:56 <Inst> yeah, but if you ask monochrom, then i should generally stick to try
20:02:24 <c_wraith> You can nest try too
20:03:13 <c_wraith> Though it's more common to just look for SomeException and then check for specific cases you care about
20:03:16 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)
20:03:47 <monochrom> Would be nice if there were a "tries" analogous to "catches".
20:04:02 <tram> mauke: Ok, how can I "join" the result of optional wich is Maybe in my Parser wich is String -> Either e r
20:04:24 <Inst> interesting looking at the source code of catches
20:04:40 <c_wraith> monochrom: How do you type that - an open sum type?
20:05:05 <monochrom> catches already uses an existiential type "Handler".
20:05:20 <c_wraith> yeah, but that wouldn't help with tries
20:05:23 <tram> mauke: no that's not what I want...
20:05:36 <tram> nvm I'm late. thanks
20:05:37 Enrico63 joins (~Enrico63@81.109.143.226)
20:05:42 tram parts (~tram@2a02:587:b43:7300:a89e:683a:2da1:a2ed) ()
20:06:09 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
20:06:41 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
20:07:48 TMA joins (tma@twin.jikos.cz)
20:09:21 <c_wraith> monochrom: tries would need to do some sort of trickery like (AllInstances Exception es) => IO a -> IO (Either (OneOf es) a)
20:11:55 <c_wraith> It's no wonder people just get SomeException and look for the cases they care about. Easier than using something like that.
20:13:40 <mauke> tries :: IO a -> [Handler e] -> IO (Either e a)
20:14:32 <c_wraith> that sort of loses the point of try
20:15:39 <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.
20:15:42 <mauke> the alternative is to use more limited exception predicates and return SomeException, I think
20:15:51 stiell joins (~stiell@gateway/tor-sasl/stiell)
20:16:03 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:16:13 × fr33domlover quits (~fr33domlo@towards.vision) (Quit: The Lounge - https://thelounge.chat)
20:16:30 <Inst> hmmm, okay, and toEnum failure triggers the Errorcall datatype, which is nice
20:17:25 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:19:44 skyesoss joins (~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
20:20:20 fr33domlover joins (~fr33domlo@towards.vision)
20:23:41 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds)
20:25:55 chiselfuse joins (~chiselfus@user/chiselfuse)
20:27:12 target_i joins (~target_i@user/target-i/x-6023099)
20:27:26 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds)
20:28:17 × Enrico63 quits (~Enrico63@81.109.143.226) (Ping timeout: 256 seconds)
20:35:33 × tomku quits (~tomku@user/tomku) (Ping timeout: 248 seconds)
20:35:46 tomku joins (~tomku@user/tomku)
20:39:23 <Inst> cool
20:39:32 <Inst> so that's why evaluate is there for (it's literally in the documentation)
20:39:59 <Inst> try $ evaluate =<< io action
20:40:06 <c_wraith> yep
20:41:02 <c_wraith> though be aware that sometimes you'll want to combine it with `force` from the deepseq package
20:41:24 <Inst> yeah i know, i used a ton of evaluate . force =<< in the past
20:41:24 <c_wraith> (or sometimes you'll want less of a sledgehammer and need to do a bunch of stuff by hand)
20:41:47 <Inst> basically i needed the result strict because otherwise it wouldn't trigger the exceptions I wanted
20:42:09 <Inst> so evaluate =<< forces the evaluation of data in the IO action
20:42:43 <Inst> letting try do its job instead of getting bypassed
20:47:29 <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.
20:47:54 <Inst> i'm using toEnum
20:48:28 <monochrom> OK then yeah evaluate is appropriate for toEnum errors or division by zero.
20:49:05 <Inst> also for tries, have you considered tryJust stacked?
20:49:44 <monochrom> I have.
20:50:04 <monochrom> But I am not sure you have the correct unstated assumption in the first place.
20:50:45 <Inst> i don't
20:50:51 <monochrom> Stacked tryJust has stacked semantics. Unstacked tryJust has unstacked semantics.
20:51:00 koolazer joins (~koo@user/koolazer)
20:52:37 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
20:58:36 × TactfulCitrus quits (~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047) (Remote host closed the connection)
21:01:05 cpressey joins (~weechat@176.254.71.203)
21:03:20 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:04:24 × cpressey quits (~weechat@176.254.71.203) (Client Quit)
21:05:42 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:12:26 L29Ah joins (~L29Ah@wikipedia/L29Ah)
21:13:56 × Midjak quits (~MarciZ@82.66.147.146) (Quit: This computer has gone to sleep)
21:17:14 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:18:13 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
21:20:14 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:23:20 × michalz quits (~michalz@185.246.207.218) (Quit: ZNC 1.9.0 - https://znc.in)
21:24:31 <c_wraith> Well. I got curious how awful it really would be, and... https://paste.tomsmeding.com/KdmeZ85v
21:24:59 <c_wraith> monochrom: ^ tries actually isn't that bad to use. It's more that it's a surprising amount of code to write
21:25:59 <monochrom> Oh... I see, you were aiming at type-level list of exception types.
21:26:49 <c_wraith> that's the obvious way to capture the semantics of try
21:30:13 <c_wraith> Honestly, it's probably slightly easier to use that than it is to manually write the type matching against SomeException yourself
21:35:14 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:38:00 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:44:03 × misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 252 seconds)
21:46:04 <jle`> kjkjkjkjjkk
21:47:33 × CrunchyFlakes quits (~CrunchyFl@146.52.130.128) (Read error: Connection reset by peer)
21:50:28 CrunchyFlakes joins (~CrunchyFl@146.52.130.128)
21:53:53 × harveypwca quits (~harveypwc@2601:246:d080:b40:1889:d9bf:2dd8:b288) (Quit: Leaving)
21:59:47 <Inst> really?
22:00:07 <Inst> https://revisecs.csuk.io/download/004-an-algorithm-a-day-pdf/?wpdmdl=12151&refresh=66a521afd5db91722098095
22:03:28 <Inst> the joke is that it just assignns variables without visible IO of any kind, it could easily be replaced simply by a random prompt with sanitization that terminates
22:03:53 <Inst> but speaking of this, let's say, I main :: IO Int
22:03:56 <Inst> and pure 4
22:04:01 <Inst> is the 4 ever evaluated?
22:04:05 <geekosaur> no
22:05:02 <geekosaur> https://play.haskell.org/saved/cfZzXPy8
22:05:23 <monochrom> "input(“Enter your dog’s age: ”)" is visible I/O for me.
22:05:59 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:08:12 <Inst> yeah, but the computation is superfluous
22:08:43 <geekosaur> (see https://github.com/ghc-proposals/ghc-proposals/pull/631)
22:09:50 <monochrom> They are either just missing one output call or assuming that there is more code afterwards that uses the variables. Why are you nitpicking?
22:10:16 <monochrom> Could you stop wasting my time nitpicking this or should I just put you on /ignore ?
22:14:19 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:15:21 × tomsmeding quits (~tomsmedin@2a01:4f8:c0c:5e5e::2) (Quit: ZNC 1.9.1 - https://znc.in)
22:15:28 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
22:15:55 tomsmeding joins (~tomsmedin@static.21.109.88.23.clients.your-server.de)
22:19:13 ircbrowse_tom joins (~ircbrowse@user/tomsmeding/bot/ircbrowse-tom)
22:19:13 Server sets mode +Cnt
22:22:05 jinsun joins (~jinsun@user/jinsun)
22:23:05 <Inst> well, apologies for the spam, then
22:41:01 dtman34 joins (~dtman34@c-174-53-203-90.hsd1.mn.comcast.net)
22:43:56 <Inst> geekosaur: ideally, on that proposal, main should have been able to return some form of data that could be piped into another program
22:44:35 × tjbc quits (~tjbc@user/fliife) (Quit: ZNC 1.8.2 - https://znc.in)
22:44:43 <Inst> i was thinking about main >>= foo, but since you start from main, you'll never be able to actually use the result of main
22:45:18 <geekosaur> the original intent was that for very simple programs you could `main = … >> main`
22:45:27 <geekosaur> but I don't think anyone ever used that
22:47:37 <Inst> i suppose you could fork IO to get main to terminate and be able to use the result value
22:50:57 <c_wraith> threads created by forkIO are terminated when main ends
22:52:15 <geekosaur> (and if the RTS didn't do this, the OS would; the main thread is special, since it's the process)
22:53:43 <c_wraith> That's still an RTS detail. in contrast, java programs stay active when main ends if there's a non-daemon thread running. That's a java runtime detail.
22:53:45 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
22:54:16 ChaiTRex joins (~ChaiTRex@user/chaitrex)
23:16:56 × acidjnk quits (~acidjnk@p200300d6e72cfb1421aec5076afe4c64.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
23:18:39 × sindu quits (~sindu@83-243-191-191.fth.tafjordconnect.net) (Ping timeout: 276 seconds)
23:20:07 pavonia joins (~user@user/siracusa)
23:27:19 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
23:27:26 prolic_ joins (~sasa@181.122.138.24)
23:27:49 fliife joins (~fliife@user/fliife)
23:29:00 × prolic_ quits (~sasa@181.122.138.24) (Remote host closed the connection)
23:29:36 × bolivood quits (~bolivood@2a0d:6fc2:5d11:200:dac:74e5:33ad:6838) (Ping timeout: 272 seconds)
23:30:41 × fliife quits (~fliife@user/fliife) (Quit: ZNC - https://znc.in)
23:32:40 tjbc joins (~tjbc@user/fliife)
23:32:42 bolivood joins (~bolivood@2a0d:6fc2:5d11:200:d189:8884:fd00:6a5d)
23:34:53 <monochrom> I bet theoretically the committee thought that one could have even "main >>= \x -> ..." for non-trivial x. In particular in the REPL if you have "main = pure 4" the REPL evals and prints that 4 too. (I used to use that with HUnit.)
23:34:54 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
23:35:10 <monochrom> But of course by now we pretty much realize that no one will miss it. :)
23:35:57 <monochrom> (I no longer use that feature, too.)
23:40:07 <Inst> iirc the module and dependency system in Haskell wasn't that carefully designed, right? It was sort of an afterthought?
23:40:29 <Inst> conceptually you could have two libraries with main as their interface
23:40:40 <Inst> that could be run standalone, but could also provide useful return values
23:40:55 × tjbc quits (~tjbc@user/fliife) (Quit: ZNC - https://znc.in)
23:41:37 tjbc joins (~tjbc@user/fliife)
23:41:54 <geekosaur> not even conceptually. nothing prevents it except that ghc makes assumptions about module `Main` (or whatever module is identified by `-main-is`)
23:41:57 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
23:49:42 <Inst> I guess it just wasn't that useful to chain together side effects in that way

All times are in UTC on 2024-07-27.