2021/08/20

2021-08-20 00:03:37 +0200tt1(~User@pd9e4fba0.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-08-20 00:07:30 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-20 00:07:53 +0200tt1(~User@pd9e4fba0.dip0.t-ipconnect.de)
2021-08-20 00:14:35 +0200tt1(~User@pd9e4fba0.dip0.t-ipconnect.de) (Quit: tt1)
2021-08-20 00:16:45 +0200dschrempf(~dominik@92-249-159-252.pool.digikabel.hu) (Quit: WeeChat 3.2)
2021-08-20 00:20:36 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection)
2021-08-20 00:20:51 +0200stefan-_(~cri@42dots.de)
2021-08-20 00:21:43 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-08-20 00:32:21 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 00:38:35 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-08-20 00:41:54 +0200dzdcnfzd(~anthonygr@104.132.34.65) (Quit: leaving)
2021-08-20 00:51:00 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-08-20 00:52:13 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 00:53:18 +0200acidjnk_new3(~acidjnk@p200300d0c72b950070172e7c3c578523.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-08-20 00:54:10 +0200vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2021-08-20 00:56:20 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 250 seconds)
2021-08-20 00:57:16 +0200Gurkenglas_(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-08-20 00:59:51 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-08-20 01:00:00 +0200lavaman(~lavaman@98.38.249.169)
2021-08-20 01:00:16 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2021-08-20 01:00:17 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-08-20 01:04:34 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-08-20 01:04:40 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-08-20 01:06:44 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-20 01:07:13 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 248 seconds)
2021-08-20 01:08:30 +0200dajoer(~david@user/gvx)
2021-08-20 01:09:18 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-08-20 01:10:10 +0200lavaman(~lavaman@98.38.249.169)
2021-08-20 01:13:55 +0200jgeerds(~jgeerds@55d473da.access.ecotel.net)
2021-08-20 01:15:45 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-08-20 01:15:46 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-08-20 01:16:53 +0200gentauro(~gentauro@user/gentauro) (Ping timeout: 252 seconds)
2021-08-20 01:18:25 +0200jgeerds(~jgeerds@55d473da.access.ecotel.net) (Ping timeout: 248 seconds)
2021-08-20 01:19:53 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-20 01:20:36 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
2021-08-20 01:21:34 +0200jgeerds(~jgeerds@55d4b311.access.ecotel.net)
2021-08-20 01:23:36 +0200gentauro(~gentauro@user/gentauro)
2021-08-20 01:31:29 +0200bgamari(~bgamari@2001:470:e438::1) (Quit: ZNC 1.8.1 - https://znc.in)
2021-08-20 01:36:11 +0200bgamari(~bgamari@2001:470:e438::1)
2021-08-20 01:42:08 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection)
2021-08-20 01:44:16 +0200d0ku(~d0ku@178.43.198.70.ipv4.supernova.orange.pl) (Ping timeout: 252 seconds)
2021-08-20 01:50:04 +0200chomwitt(~chomwitt@2a02:587:dc0c:e200:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-08-20 01:52:13 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com)
2021-08-20 02:01:47 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 268 seconds)
2021-08-20 02:02:15 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-20 02:03:30 +0200Gurkenglas_(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
2021-08-20 02:16:42 +0200jgeerds(~jgeerds@55d4b311.access.ecotel.net) (Ping timeout: 245 seconds)
2021-08-20 02:20:41 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com) (Read error: Connection reset by peer)
2021-08-20 02:21:09 +0200alx741(~alx741@181.196.69.234)
2021-08-20 02:23:18 +0200polyphem(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3)
2021-08-20 02:25:47 +0200 <lechner> Hi, I struggle with conditionals. Is it possible, in principle, to assign different values to the same variable, depending on a condition? I know only how to branch execution with Either. Thanks!
2021-08-20 02:27:25 +0200 <geekosaur> > let bar = 5; foo | bar < 5 = 2 | otherwise = 1 in foo
2021-08-20 02:27:27 +0200 <lambdabot> 1
2021-08-20 02:27:39 +0200 <geekosaur> > let bar = 4; foo | bar < 5 = 2 | otherwise = 1 in foo
2021-08-20 02:27:40 +0200 <lambdabot> 2
2021-08-20 02:27:43 +0200 <Axman6> foo = = case something of Left x -> ...; Right y -> ...
2021-08-20 02:27:59 +0200 <Axman6> foo = if cond then a else b
2021-08-20 02:28:22 +0200 <alexfmpe[m]> > bool 1 2 True
2021-08-20 02:28:24 +0200 <lambdabot> 2
2021-08-20 02:30:12 +0200 <dsal> lechner: Also, your variables don't. :) Do you have an example of what you'd like to see?
2021-08-20 02:30:43 +0200 <lechner> dsal: that was exactly my issue!
2021-08-20 02:30:55 +0200 <lechner> geekosaur: okay, that looks very Haskell-y. thanks!
2021-08-20 02:32:15 +0200 <lechner> Axman6: i think ignored the "if then else" construct so far, for fear of falling into old harits
2021-08-20 02:32:22 +0200 <lechner> habits
2021-08-20 02:32:47 +0200lavaman(~lavaman@98.38.249.169)
2021-08-20 02:33:00 +0200 <Axman6> if is basically jjust syntax sugar for case cond of True -> a; False -> b (and will compile to exactly that)
2021-08-20 02:33:24 +0200 <Axman6> we don't have the less safe if-then, only if-then-else
2021-08-20 02:33:45 +0200 <lechner> Axman6: thanks for that explanation!
2021-08-20 02:33:46 +0200 <Axman6> but yes, if you can use something more meaningful like a case statement on constructors with more meaningful names, do that
2021-08-20 02:34:09 +0200 <Axman6> prefer case x of Nothing -> ... over if x == Nothing then ...
2021-08-20 02:34:59 +0200 <lechner> it looks like haskell actually has everything other languages have, and more
2021-08-20 02:35:15 +0200 <dsal> Haskell's missing a lot of things that makes it harder to replicate certain bugs.
2021-08-20 02:35:18 +0200 <lechner> as usual, my brain is the problem
2021-08-20 02:35:44 +0200 <Axman6> you can write PHP in any language though, C too, yes even in Haskell
2021-08-20 02:36:30 +0200 <dsal> You can spin up a bunch of IORefs and make sure everything in your program runs in IO and has them in scope. It's just harder than doing something sensible. :)
2021-08-20 02:37:18 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-08-20 02:38:09 +0200jacks2(~bc8167eb@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-08-20 02:38:21 +0200 <lechner> dsal: i am slowly translating my Perl. according to emily p's recent podcast Perl is a common gateway drug at minute 4:00 https://www.buzzsprout.com/1817535/8984158-01-emily-pillmore
2021-08-20 02:39:23 +0200 <lechner> dsal: $commitish here was giving me hives https://salsa.debian.org/lintian/kickoff/-/blob/master/add-lintian-tags#L112-134
2021-08-20 02:39:26 +0200 <dsal> Interesting. I've not intentionally touched perl in a probably 20 years.
2021-08-20 02:39:36 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-20 02:39:44 +0200 <lechner> i inherited it
2021-08-20 02:40:35 +0200 <lechner> but the lack of typing drove me over here
2021-08-20 02:42:13 +0200 <lechner> dsal: you programmed Haskell for twenty years?
2021-08-20 02:42:17 +0200 <dsal> `committish <- computeCommttish (intercalate "." [major, minor, "0"]) patch`
2021-08-20 02:42:49 +0200 <dsal> Woah. My oldest haskell code is almost that old. But no, most of the last 20 years, I've been doing other random junk.
2021-08-20 02:43:32 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-20 02:43:53 +0200 <dsal> I haven't done very serious haskell until a few years ago.
2021-08-20 02:51:40 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2021-08-20 02:54:47 +0200 <lechner> dsal: unbelievable, one line! which OS do you use?
2021-08-20 02:55:13 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-08-20 02:55:39 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-08-20 02:58:35 +0200 <janus> is there a commonly used name for 'flip foldMap' ?
2021-08-20 03:01:35 +0200 <janus> i really only need it for Maybe, and then the name "whenJust" makes sense. but that is already used in Neil Mitchell's extra package, where it returns 'm ()' (so it's not really the same at all)
2021-08-20 03:02:07 +0200 <janus> whenJustOrMempty? argh it sounds horrible
2021-08-20 03:03:03 +0200 <Axman6> :t fold foldMap
2021-08-20 03:03:04 +0200 <lambdabot> (Monoid m, Foldable t, Foldable ((->) (a -> m))) => t a -> m
2021-08-20 03:03:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 03:03:20 +0200 <Axman6> :t flip foldMap -- oops
2021-08-20 03:03:21 +0200 <lambdabot> (Foldable t, Monoid c) => t a -> (a -> c) -> c
2021-08-20 03:04:35 +0200 <janus> % :m +Data.Foldable +Data.Monoid
2021-08-20 03:04:35 +0200 <yahb> janus: syntax: :module [+/-] [*]M1 ... [*]Mn
2021-08-20 03:04:52 +0200 <janus> hmm, dunno why that is not working
2021-08-20 03:05:01 +0200 <janus> % foldMap Sum Nothing :: Sum Int
2021-08-20 03:05:01 +0200 <yahb> janus: Sum {getSum = 0}
2021-08-20 03:05:10 +0200 <janus> % foldMap Sum (Just 5) :: Sum Int
2021-08-20 03:05:10 +0200 <yahb> janus: Sum {getSum = 5}
2021-08-20 03:05:56 +0200 <janus> but i really wanted to use it in an HTML AST of an Elm AST, to render optionally available elements
2021-08-20 03:06:10 +0200 <janus> s/Elm AST/Elm clone/
2021-08-20 03:06:33 +0200lavaman(~lavaman@98.38.249.169)
2021-08-20 03:06:47 +0200 <janus> so the rendering function is way larger than the maybe (which comes from the model). that's why the flip makes sense
2021-08-20 03:07:14 +0200 <janus> similar to how the State functions have flipped versions available
2021-08-20 03:08:59 +0200shailangsa(~shailangs@host86-145-14-24.range86-145.btcentralplus.com) (Ping timeout: 268 seconds)
2021-08-20 03:09:45 +0200 <janus> maybe i should just write a letter to Neil and ask him to rename his function and break everybody's code, pretty please :P
2021-08-20 03:10:22 +0200 <dsal> @hoogle whenJust
2021-08-20 03:10:23 +0200 <lambdabot> Control.Monad.Extra whenJust :: Applicative m => Maybe a -> (a -> m ()) -> m ()
2021-08-20 03:10:23 +0200 <lambdabot> Extra whenJust :: Applicative m => Maybe a -> (a -> m ()) -> m ()
2021-08-20 03:10:23 +0200 <lambdabot> Data.GI.Base.Utils whenJust :: Monad m => Maybe a -> (a -> m ()) -> m ()
2021-08-20 03:10:40 +0200 <dsal> :t traverse
2021-08-20 03:10:41 +0200 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
2021-08-20 03:10:55 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-08-20 03:11:06 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-08-20 03:11:14 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-20 03:12:02 +0200Guest372(~xxx@47.245.54.240)
2021-08-20 03:12:20 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-20 03:13:21 +0200 <dsal> Giving stuff a local name isn't a bad idea.
2021-08-20 03:13:42 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
2021-08-20 03:15:16 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 03:15:41 +0200 <janus> even if the name is clashing with another well known function ;) ?
2021-08-20 03:15:42 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-08-20 03:16:02 +0200 <janus> i could call it whenJustF because of the foldable. but the F usually means functor, right? so even more confusing
2021-08-20 03:16:35 +0200Danishman(~Allan@2-104-144-110-cable.dk.customer.tdc.net)
2021-08-20 03:17:06 +0200 <janus> oh well, if i put Just in the name, the F is wrong anyway, it is already constraint to a specific Foldable...
2021-08-20 03:19:17 +0200 <janus> onJust? hmmm... it has nothing to do with `on` from Data.Function o_O
2021-08-20 03:19:25 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 252 seconds)
2021-08-20 03:19:47 +0200 <janus> can't use "ifJust", functions with "if" are expected to run on Bools
2021-08-20 03:22:32 +0200keutoi(~keutoi@157.48.195.127)
2021-08-20 03:22:41 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 248 seconds)
2021-08-20 03:27:32 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-08-20 03:30:48 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-20 03:33:55 +0200 <monochrom> Life hack: If you use snake case, you will not clash with the standard library, or any library for that matter.
2021-08-20 03:37:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-20 03:38:24 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds)
2021-08-20 03:41:46 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-08-20 03:42:50 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-20 03:44:37 +0200xff0x(~xff0x@2001:1a81:53ce:4000:6528:22c2:50dd:57c1) (Ping timeout: 245 seconds)
2021-08-20 03:46:28 +0200xff0x(~xff0x@2001:1a81:5207:3100:ba2d:6a43:7e07:c407)
2021-08-20 03:47:40 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
2021-08-20 03:48:10 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-20 03:48:45 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-20 03:53:28 +0200sleblanc(~sleblanc@user/sleblanc)
2021-08-20 03:55:56 +0200 <Axman6> you might clash with style guides and other developers however
2021-08-20 03:57:54 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
2021-08-20 04:00:54 +0200 <dsal> I have `justM :: Monad m => (a -> m ()) -> Maybe a -> m ()`
2021-08-20 04:01:13 +0200wrengrwrengr_away
2021-08-20 04:01:35 +0200 <Cajun> snake case also gets hlint mad :P
2021-08-20 04:01:49 +0200 <dsal> It makes sense in my codebase. I don't know that I would worry about a thing a person somewhere did.
2021-08-20 04:02:19 +0200wrengr_away(~wrengr@56.4.82.34.bc.googleusercontent.com) (Quit: leaving)
2021-08-20 04:02:48 +0200 <dsal> (that function, btw, is `traverse_` but it's clearly more readable in my codebase as `justM`)
2021-08-20 04:02:59 +0200wrengr(~wrengr@56.4.82.34.bc.googleusercontent.com)
2021-08-20 04:03:55 +0200wrengrwrengr_away
2021-08-20 04:05:40 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Ping timeout: 240 seconds)
2021-08-20 04:21:48 +0200alx741(~alx741@181.196.69.234) (Quit: alx741)
2021-08-20 04:23:13 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 252 seconds)
2021-08-20 04:25:08 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-08-20 04:25:50 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-08-20 04:39:36 +0200mmalter(~mmalter@88.171.43.194) (Quit: Lost terminal)
2021-08-20 04:41:57 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-08-20 04:42:10 +0200td_(~td@94.134.91.118) (Ping timeout: 240 seconds)
2021-08-20 04:46:52 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-08-20 04:49:03 +0200td_(~td@94.134.91.77)
2021-08-20 04:56:08 +0200 <dsal> lechner: macos and nixos
2021-08-20 05:00:26 +0200mousey(~skymouse@gateway/tor-sasl/mousey) (Remote host closed the connection)
2021-08-20 05:00:47 +0200mousey(~skymouse@gateway/tor-sasl/mousey)
2021-08-20 05:06:35 +0200vysn(~vysn@user/vysn)
2021-08-20 05:06:57 +0200bakinonion[m](~bakinonio@2001:470:69fc:105::ddb3)
2021-08-20 05:21:38 +0200slack1256(~slack1256@191.125.37.143)
2021-08-20 05:25:33 +0200Guest9886(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-20 05:26:28 +0200otto_s(~user@p5de2f223.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-08-20 05:28:18 +0200aegon(~mike@174.127.249.180) (Quit: leaving)
2021-08-20 05:28:21 +0200otto_s(~user@p5de2f5f0.dip0.t-ipconnect.de)
2021-08-20 05:28:55 +0200dsrt^(~dsrt@209.65.131.194)
2021-08-20 05:33:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 05:37:25 +0200vicfred(~vicfred@user/vicfred)
2021-08-20 05:45:00 +0200drstripedsocks(~aaashutos@113.199.180.28)
2021-08-20 05:45:29 +0200drstripedsocks(~aaashutos@113.199.180.28) (Client Quit)
2021-08-20 05:53:31 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-08-20 05:55:27 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-08-20 05:56:03 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-08-20 05:57:31 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-08-20 05:58:00 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-08-20 06:01:00 +0200PinealGlandOptic(~PinealGla@37.115.210.35)
2021-08-20 06:03:38 +0200 <lechner> dsal: bummer, i had hoped to win you as a debian contributor. so much talent!
2021-08-20 06:07:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-20 06:09:22 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-08-20 06:17:04 +0200sleblanc(~sleblanc@user/sleblanc) (Ping timeout: 252 seconds)
2021-08-20 06:41:10 +0200t0zy(~t0zy@49.207.220.61) (Ping timeout: 240 seconds)
2021-08-20 06:41:55 +0200t0zy(~t0zy@2402:3a80:d00:f3c6::3fd7:9319)
2021-08-20 06:51:51 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 06:56:10 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 240 seconds)
2021-08-20 06:56:15 +0200shailangsa(~shailangs@host86-186-136-25.range86-186.btcentralplus.com)
2021-08-20 06:57:46 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
2021-08-20 07:02:03 +0200slack1256(~slack1256@191.125.37.143) (Remote host closed the connection)
2021-08-20 07:08:14 +0200fef(~thedawn@user/thedawn)
2021-08-20 07:09:42 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-08-20 07:14:37 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-20 07:19:13 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
2021-08-20 07:24:10 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-08-20 07:27:40 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2021-08-20 07:30:35 +0200kstuart(~user@185.92.25.246)
2021-08-20 07:30:40 +0200xff0x(~xff0x@2001:1a81:5207:3100:ba2d:6a43:7e07:c407) (Ping timeout: 240 seconds)
2021-08-20 07:31:11 +0200cheater(~Username@user/cheater)
2021-08-20 07:31:39 +0200xff0x(~xff0x@2001:1a81:5207:3100:686a:e8fd:47a9:633d)
2021-08-20 07:32:49 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 248 seconds)
2021-08-20 07:35:52 +0200polyphem(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Ping timeout: 245 seconds)
2021-08-20 07:41:07 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-08-20 07:41:40 +0200Danishman(~Allan@2-104-144-110-cable.dk.customer.tdc.net) (Quit: Leaving)
2021-08-20 07:42:13 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Client Quit)
2021-08-20 07:51:04 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-08-20 07:52:12 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-08-20 07:57:35 +0200img(~img@user/img)
2021-08-20 07:58:40 +0200t0zy(~t0zy@2402:3a80:d00:f3c6::3fd7:9319) (Ping timeout: 240 seconds)
2021-08-20 08:04:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 08:06:55 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-20 08:08:26 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-08-20 08:11:32 +0200jakalx(~jakalx@base.jakalx.net)
2021-08-20 08:11:45 +0200Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Ping timeout: 248 seconds)
2021-08-20 08:11:50 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds)
2021-08-20 08:12:08 +0200Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com)
2021-08-20 08:15:04 +0200Megant(megant@user/megant) (Ping timeout: 268 seconds)
2021-08-20 08:16:23 +0200Megant(megant@user/megant)
2021-08-20 08:28:28 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-20 08:30:21 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-08-20 08:34:24 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-08-20 08:34:48 +0200keutoi(~keutoi@157.48.195.127) (Ping timeout: 250 seconds)
2021-08-20 08:36:51 +0200keutoi(~keutoi@157.48.195.127)
2021-08-20 08:38:25 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-20 08:40:04 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 252 seconds)
2021-08-20 08:40:12 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 08:40:16 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-08-20 08:44:20 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 250 seconds)
2021-08-20 08:56:54 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 250 seconds)
2021-08-20 08:58:38 +0200azeem(~azeem@176.200.243.66)
2021-08-20 09:00:43 +0200azeem(~azeem@176.200.243.66) (Read error: Connection reset by peer)
2021-08-20 09:01:22 +0200d0ku(~d0ku@178.43.198.70.ipv4.supernova.orange.pl)
2021-08-20 09:02:10 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
2021-08-20 09:03:52 +0200lortabac(~lortabac@62.98.47.131)
2021-08-20 09:04:04 +0200amk(~amk@109.255.169.126)
2021-08-20 09:07:36 +0200fendor(~fendor@213162073025.public.t-mobile.at)
2021-08-20 09:09:42 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 09:14:14 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
2021-08-20 09:22:59 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-08-20 09:24:07 +0200Guest372(~xxx@47.245.54.240)
2021-08-20 09:29:00 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-20 09:31:23 +0200acidjnk_new3(~acidjnk@p200300d0c72b950070172e7c3c578523.dip0.t-ipconnect.de)
2021-08-20 09:33:18 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
2021-08-20 09:35:31 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-08-20 09:37:56 +0200kuribas(~user@ptr-25vy0i7hpbjw2llku95.18120a2.ip6.access.telenet.be)
2021-08-20 09:37:57 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-08-20 09:39:01 +0200MQ-17J(~MQ-17J@8.6.144.209)
2021-08-20 09:40:28 +0200ubert(~Thunderbi@178.115.64.138.wireless.dyn.drei.com)
2021-08-20 09:40:49 +0200Boomerang(~Boomerang@xd520f68c.cust.hiper.dk)
2021-08-20 09:42:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 09:48:32 +0200 <kuribas> Why does this work: (set #specific_fields () . set #annotations ()) dm
2021-08-20 09:48:42 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 09:48:56 +0200 <kuribas> But not this? set (#specific_fields `adjoin` #annotations) ()
2021-08-20 09:49:14 +0200jgeerds(~jgeerds@55d4b311.access.ecotel.net)
2021-08-20 09:49:19 +0200 <kuribas> both #specific_fields and #annotations are (polymorphic) fields.
2021-08-20 09:49:37 +0200 <kuribas> So the label should be lenses, which can be joined as traversals, right?
2021-08-20 09:52:48 +0200mousey(~skymouse@gateway/tor-sasl/mousey) (Remote host closed the connection)
2021-08-20 09:52:59 +0200mousey(~skymouse@gateway/tor-sasl/mousey)
2021-08-20 09:54:19 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-08-20 09:56:18 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 10:00:39 +0200ubert1(~Thunderbi@178.115.64.138.wireless.dyn.drei.com)
2021-08-20 10:01:19 +0200 <c_wraith> kuribas: the type of adjoin prevents polymorphic optics
2021-08-20 10:01:29 +0200 <c_wraith> @let import Control.Lens.Unsound
2021-08-20 10:01:30 +0200 <lambdabot> Defined.
2021-08-20 10:01:33 +0200 <c_wraith> :t adjoin
2021-08-20 10:01:34 +0200 <lambdabot> Applicative f => Traversal' s a -> Traversal' s a -> (a -> f a) -> s -> f s
2021-08-20 10:01:46 +0200 <c_wraith> those are monomorphic
2021-08-20 10:03:07 +0200bebenon(~bebenon@5.44.169.233)
2021-08-20 10:03:40 +0200ubert(~Thunderbi@178.115.64.138.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-08-20 10:03:40 +0200ubert1ubert
2021-08-20 10:04:02 +0200bebenon(~bebenon@5.44.169.233) (Client Quit)
2021-08-20 10:04:15 +0200 <kuribas> c_wraith: ah right, thanks!
2021-08-20 10:04:16 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-08-20 10:04:28 +0200jumper149(~jumper149@80.240.31.34)
2021-08-20 10:04:37 +0200 <kuribas> c_wraith: btw, this is Optics...
2021-08-20 10:05:03 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-08-20 10:05:07 +0200 <c_wraith> can't tell by the code you provided, which is the same with either
2021-08-20 10:05:25 +0200 <kuribas> yeah, it's the same problem
2021-08-20 10:05:36 +0200hendursa1(~weechat@user/hendursaga)
2021-08-20 10:05:49 +0200 <kuribas> Using two set is probably better anyway, but I wanted to know why it failed.
2021-08-20 10:06:53 +0200trcc(~trcc@users-5343.st.net.au.dk)
2021-08-20 10:08:03 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-08-20 10:08:04 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-08-20 10:08:04 +0200 <kuribas> It seems rather easy to go from lenses to optics.
2021-08-20 10:08:28 +0200polyphem(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3)
2021-08-20 10:08:31 +0200 <kuribas> Optics seem cleaner, especially when using labels.
2021-08-20 10:08:32 +0200mc47(~mc47@xmonad/TheMC47)
2021-08-20 10:08:42 +0200gentauro_(~gentauro@185.107.12.141)
2021-08-20 10:09:04 +0200gentauro_(~gentauro@185.107.12.141) (Client Quit)
2021-08-20 10:09:24 +0200gentauro_(~gentauro@185.107.12.141)
2021-08-20 10:09:24 +0200gentauro_(~gentauro@185.107.12.141) (Client Quit)
2021-08-20 10:12:09 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-20 10:14:07 +0200vpan(~vilius@212.117.1.172)
2021-08-20 10:17:39 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-08-20 10:17:39 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-08-20 10:17:42 +0200allbery_bgeekosaur
2021-08-20 10:22:45 +0200dunj3(~dunj3@2001:16b8:30a8:2000:7c3b:4a4d:e83e:847a)
2021-08-20 10:26:57 +0200aman(~aman@user/aman) (Ping timeout: 258 seconds)
2021-08-20 10:26:57 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer)
2021-08-20 10:27:24 +0200aman(aman@user/aman)
2021-08-20 10:27:50 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-08-20 10:27:58 +0200nschoe(~quassel@2a01:e0a:8e:a190:1cfd:5590:1382:edd9)
2021-08-20 10:33:45 +0200burnside_(~burnsides@client-8-91.eduroam.oxuni.org.uk)
2021-08-20 10:34:22 +0200burnside_(~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 10:34:48 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-08-20 10:35:00 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 10:36:46 +0200tput(~tim@S0106a84e3fe54613.ed.shawcable.net) (Remote host closed the connection)
2021-08-20 10:37:11 +0200tput(~tim@S0106a84e3fe54613.ed.shawcable.net)
2021-08-20 10:38:42 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-08-20 10:40:57 +0200Obo(~roberto@h-46-59-103-134.a498.priv.bahnhof.se)
2021-08-20 10:50:10 +0200tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 240 seconds)
2021-08-20 10:57:27 +0200zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-08-20 10:59:12 +0200trcc(~trcc@users-5343.st.net.au.dk) (Ping timeout: 245 seconds)
2021-08-20 11:02:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-20 11:05:37 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds)
2021-08-20 11:06:07 +0200tomboy64(~tomboy64@user/tomboy64)
2021-08-20 11:06:57 +0200Guest610(~Guest6@115.98.232.12)
2021-08-20 11:07:20 +0200 <Guest610> hi .. I am a newbie to haskell.. just started with LYAH
2021-08-20 11:07:33 +0200 <[exa]> hi, welcome!
2021-08-20 11:08:25 +0200 <Guest610> Is this the right forum for a beginner to ask questions on haskell ?
2021-08-20 11:08:35 +0200 <[exa]> yes
2021-08-20 11:09:30 +0200 <[exa]> if there's a lot of traffic here with categories thrown all around the place (currently not the case as you see), there is a dedicated beginner channel, but I guess it's always better to ask here
2021-08-20 11:09:44 +0200 <Guest610> thanks
2021-08-20 11:09:59 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-08-20 11:10:22 +0200 <Guest610> I have a list of tuples to which i want to merge a list of integers and create a new list
2021-08-20 11:10:50 +0200 <Guest610> alist = [("a",1,2), ("b",5,6)] blist = [4,8] newList = zip alist blist.. which gives [(("a",1,2),4),(("b",5,6),8)] which does not get the element inside the tuple.
2021-08-20 11:10:51 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-08-20 11:11:26 +0200 <[exa]> yeah, `zip` always constructs 2-tuples
2021-08-20 11:11:52 +0200 <Guest610> how do i get the output newlist = [("a",1,2,4), ("b",5,6,8)]
2021-08-20 11:11:57 +0200 <[exa]> there might be a function for "flattening" the tuples, but I think you might be better off just making it manually
2021-08-20 11:12:24 +0200 <Guest610> well i have reached only chap 5..
2021-08-20 11:12:35 +0200 <Guest610> are there some concepts i need to look at
2021-08-20 11:12:39 +0200 <[exa]> > zipWith (\(a,b,c) d -> (a,b,c,d)) [(1,2,'a'), (2,3,'b')] [5,6]
2021-08-20 11:12:40 +0200 <lambdabot> [(1,2,'a',5),(2,3,'b',6)]
2021-08-20 11:12:43 +0200 <Guest610> or is there an in build function
2021-08-20 11:13:35 +0200 <[exa]> does that ^ look fine or should we improve? :]
2021-08-20 11:14:08 +0200 <Guest610> I am sorry to labour on this.. is zipWith and in built function or part of anylibrary or you have custom developed it..
2021-08-20 11:14:17 +0200 <Guest610> i did not get this on hoogle..
2021-08-20 11:14:39 +0200 <[exa]> zipWith is a built-in generalization of zip, yes
2021-08-20 11:15:33 +0200 <Guest610> great.. thanks..
2021-08-20 11:15:52 +0200 <[exa]> if you didn't find it on hoogle...taht would be weird, mine is full of zipWiths
2021-08-20 11:17:16 +0200 <Guest610> sorry my mistake.. the drop down was set to package:
2021-08-20 11:17:27 +0200 <[exa]> np :]
2021-08-20 11:17:49 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr)
2021-08-20 11:20:02 +0200 <[exa]> Guest610: there might be a way to construct that "merging" function from stuff like uncurry3 and curry4 in Data.Tuple.Extra but that might be a bit mindbending exercise at this stage. :]
2021-08-20 11:21:17 +0200 <Guest610> will jot it down..should come in handy by the time i finish the book.. thanks for your help..
2021-08-20 11:22:33 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-08-20 11:23:37 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-08-20 11:26:04 +0200zer0bitz(~zer0bitz@dsl-hkibng31-58c384-213.dhcp.inet.fi)
2021-08-20 11:26:38 +0200 <[exa]> Guest610: seems like it can be really constructed as such:
2021-08-20 11:26:44 +0200 <[exa]> uncurry3 (curry4 id) :: (a, b, c) -> d -> (a, b, c, d)
2021-08-20 11:27:08 +0200 <[exa]> which corresponds to
2021-08-20 11:27:36 +0200 <[exa]> :t \(a,b,c) d -> (a,b,c,d)
2021-08-20 11:27:38 +0200 <lambdabot> (a, b, c) -> d -> (a, b, c, d)
2021-08-20 11:27:56 +0200 <[exa]> </unneeded_exercise>
2021-08-20 11:28:05 +0200 <Guest610> no .. its useful..
2021-08-20 11:28:15 +0200 <Guest610> i just have not reached uncurry ..
2021-08-20 11:30:48 +0200 <[exa]> ah okay, worry not then. curry/uncurry is a way to transform functions that work on tuples to functions that work on curry-style multiple parameters, which kindof helped here: I took a function that does nothing (id), assumed it works with tuples and curried it to work with normal parameters (curry4), and then converted the first 3 params of that to work on tuples again (uncurry3)
2021-08-20 11:31:12 +0200 <[exa]> simpler example:
2021-08-20 11:31:33 +0200 <[exa]> > map (uncurry (+)) [(1,2), (5,6)]
2021-08-20 11:31:35 +0200 <lambdabot> [3,11]
2021-08-20 11:32:13 +0200 <Guest610> ok..
2021-08-20 11:32:24 +0200 <Guest610> so uncurry has the impact of unpacking elements in tuples ??
2021-08-20 11:32:56 +0200 <[exa]> not erally impact, but you can use it to convert functions from tuple-ish to parameter-ish (and back)
2021-08-20 11:33:08 +0200 <[exa]> :t (+)
2021-08-20 11:33:08 +0200 <Guest610> ok
2021-08-20 11:33:09 +0200 <lambdabot> Num a => a -> a -> a
2021-08-20 11:33:16 +0200 <[exa]> :t uncurry (+)
2021-08-20 11:33:17 +0200 <lambdabot> Num c => (c, c) -> c
2021-08-20 11:33:44 +0200 <Guest610> great
2021-08-20 11:33:45 +0200 <[exa]> (+) takes 2 numeric arguments, `uncurry (+)` takes a 2-tuple argument of numeric stuff
2021-08-20 11:33:46 +0200 <Guest610> thanks
2021-08-20 11:34:38 +0200 <Guest610> map (uncurry (+)) [(1,2,3), (5,6,8)]
2021-08-20 11:34:58 +0200 <Guest610> >map (uncurry (+)) [(1,2,3), (5,6,8)]
2021-08-20 11:36:11 +0200 <Guest610> ok..
2021-08-20 11:36:19 +0200 <[exa]> probably needs the space behind >
2021-08-20 11:36:44 +0200 <[exa]> anyways this will fail because (+) only takes 2 arguments, not 3
2021-08-20 11:37:54 +0200 <[exa]> anyway, fun extra exercise: 1] construct `zip` from `zipWith` (that should be easy), and 2] construct `zipWith` from `map`,`zip`,and `uncurry` (that's a bit harder)
2021-08-20 11:39:35 +0200trcc(~trcc@users-5343.st.net.au.dk)
2021-08-20 11:41:28 +0200 <[exa]> Guest610: btw your sample needs uncurrying to 3-tuples, which lambdabot doesn't have loaded apparently, so:
2021-08-20 11:41:59 +0200 <[exa]> > let sum3 a b c = a+b+c; uncurry3 f (a,b,c) = f a b c in map (uncurry3 sum3) [(1,2,3), (2,3,4)]
2021-08-20 11:42:01 +0200 <lambdabot> [6,9]
2021-08-20 11:45:14 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-08-20 11:45:46 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-08-20 11:45:56 +0200random-jellyfish(~random-je@user/random-jellyfish)
2021-08-20 11:46:50 +0200 <Guest610> ..thanks
2021-08-20 11:48:45 +0200Guest610(~Guest6@115.98.232.12) (Quit: Client closed)
2021-08-20 11:49:21 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Ping timeout: 248 seconds)
2021-08-20 11:49:50 +0200oxide(~lambda@user/oxide)
2021-08-20 11:51:58 +0200kstuart(~user@185.92.25.246) (Ping timeout: 250 seconds)
2021-08-20 11:53:16 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-08-20 11:54:40 +0200jespada(~jespada@90.254.247.46) (Ping timeout: 240 seconds)
2021-08-20 11:56:15 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net)
2021-08-20 11:56:17 +0200jespada(~jespada@90.254.247.46)
2021-08-20 11:56:50 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-08-20 11:58:20 +0200oxide(~lambda@user/oxide)
2021-08-20 11:58:36 +0200tengu1(~tengu1@cpe-70-121-244-14.neb.res.rr.com)
2021-08-20 12:01:02 +0200oxide(~lambda@user/oxide) (Client Quit)
2021-08-20 12:01:35 +0200oxide(~lambda@user/oxide)
2021-08-20 12:05:03 +0200oxide(~lambda@user/oxide) (Client Quit)
2021-08-20 12:06:00 +0200oxide(~lambda@user/oxide)
2021-08-20 12:10:25 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-20 12:10:28 +0200random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 246 seconds)
2021-08-20 12:10:51 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 12:21:38 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-20 12:22:04 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 12:26:10 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-08-20 12:28:55 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt)
2021-08-20 12:29:32 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Remote host closed the connection)
2021-08-20 12:29:44 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt)
2021-08-20 12:32:00 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-08-20 12:32:31 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-08-20 12:35:42 +0200ablutor(~quassel@wasscher.com) (Quit: going for vitamine d)
2021-08-20 12:36:30 +0200ablutor(~quassel@wasscher.com)
2021-08-20 12:36:42 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-08-20 12:36:44 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-08-20 12:37:10 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2021-08-20 12:38:31 +0200fendor(~fendor@213162073025.public.t-mobile.at) (Remote host closed the connection)
2021-08-20 12:41:00 +0200oxide(~lambda@user/oxide)
2021-08-20 12:54:50 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 12:56:44 +0200 <mastarija> Can someone remind me what's it called when we can have a valid e.g. "Monad" instance if only we could put a constraint on the "inner" type?
2021-08-20 12:56:56 +0200 <mastarija> Constrained instances, bound instances...?
2021-08-20 12:57:34 +0200 <Rembane_> Is it a scoped instance?
2021-08-20 12:57:38 +0200 <dminuoso> mastarija: I dont understand the question entirely.
2021-08-20 12:57:41 +0200 <dminuoso> Can you give a concrete example?
2021-08-20 12:58:03 +0200 <mastarija> Hm... let's say I could make an Applicative instance
2021-08-20 12:58:34 +0200 <mastarija> But only if the target e.g. instance Monoid n => Applicative (MyType n) where
2021-08-20 12:59:02 +0200 <mastarija> And MyType : * -> *
2021-08-20 12:59:13 +0200 <mastarija> not * -> * -> *
2021-08-20 12:59:57 +0200 <mastarija> Basically, I could make an Applicative instance if only I can constrain the argument of MyType
2021-08-20 13:00:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 13:00:02 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-20 13:00:29 +0200 <dminuoso> mastarija: From a type checker point of view you have an `Applicative` instance for all n of `MyType n`
2021-08-20 13:00:45 +0200 <dminuoso> It just defers the `Monoid n` constraint to somewhere else
2021-08-20 13:01:02 +0200alx741(~alx741@181.196.69.234)
2021-08-20 13:01:11 +0200 <mastarija> I mean, it's not possible to do what I want with standard type classes
2021-08-20 13:01:44 +0200 <mastarija> There's a library with constrained type classes for that purpose, but my brain can't recall what it is called
2021-08-20 13:03:14 +0200 <dminuoso> mastarija: You can observe this fact since it would match that instance for `Applicative (MyType Int)`, even if there's no `Monoid Int`
2021-08-20 13:03:40 +0200 <dminuoso> So the constraint does not constrain the instance itself
2021-08-20 13:04:08 +0200 <mastarija> I want to use e.g. "mempty" within my implementation of "Applicative" instance
2021-08-20 13:04:41 +0200 <dminuoso> Maybe my wording slightly off.
2021-08-20 13:04:42 +0200 <mastarija> And I want to have "Applicative" instance for all "MyType n"
2021-08-20 13:05:01 +0200drsocks(~aaashutos@113.199.180.28)
2021-08-20 13:05:17 +0200 <mastarija> dminuoso, Maybe it's me, didn't get enough sleep today :D
2021-08-20 13:05:38 +0200random-jellyfish(~random-je@user/random-jellyfish)
2021-08-20 13:05:46 +0200drsocks(~aaashutos@113.199.180.28) (Client Quit)
2021-08-20 13:06:11 +0200 <alp> mastarija, constrained is the right term I think. see e.g https://hackage.haskell.org/package/constrained-monads
2021-08-20 13:06:57 +0200 <mastarija> alp, ah yes..
2021-08-20 13:07:01 +0200 <mastarija> that's it
2021-08-20 13:07:22 +0200 <alp> i.e your MyType is a monad or applicative or something only if the type parameters it will get satisfy some constraint
2021-08-20 13:07:32 +0200 <mastarija> Yes
2021-08-20 13:07:47 +0200 <dminuoso> alp: Mmm, so this would allow us to have Monad for Set?
2021-08-20 13:07:50 +0200 <alp> eg what one would want for Set to be a functor/applicative/monad, because of the Ord
2021-08-20 13:07:56 +0200 <dminuoso> Neat!
2021-08-20 13:08:13 +0200 <dminuoso> I thought we needed quantified constraints for that
2021-08-20 13:08:18 +0200 <dminuoso> Maybe I misremembered
2021-08-20 13:08:21 +0200 <alp> dminuoso, indeed: https://hackage.haskell.org/package/constrained-monads-0.5.0.0/docs/src/Control-Monad-Constrained.…
2021-08-20 13:10:30 +0200vpan(~vilius@212.117.1.172) (Quit: Leaving.)
2021-08-20 13:10:37 +0200 <alp> dminuoso, I don't think that'd be enough. because the fmap you'd have to implement (with the standard Functor class) would still be required to have type forall a b. (a -> b) -> Set a -> Set b, no Ord in sight
2021-08-20 13:11:46 +0200acidjnk_new(~acidjnk@p200300d0c72b9557dc14868c6ad3e278.dip0.t-ipconnect.de)
2021-08-20 13:11:56 +0200 <alp> whereas this whole constrained line of thinking lets you specify a suitable constraint that's "made available to you" when you implement the method
2021-08-20 13:12:32 +0200 <mastarija> Hm... is it possible to implement the Unconstrained version of e.g. Functor using the constrained version?
2021-08-20 13:12:37 +0200 <dminuoso> Presumably it just reifies the dict with `constraints` and gives it to you
2021-08-20 13:14:51 +0200 <mastarija> It seems like it would be possible to do it as long as we do e.g. "instance Constrained.Functor f => UnConstrainde.Functor f where {use constrained methods to implement uncinstrained methods}"
2021-08-20 13:14:51 +0200acidjnk_new3(~acidjnk@p200300d0c72b950070172e7c3c578523.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-08-20 13:14:51 +0200 <arahael> Hmph, it seems I can't use hip in haskell 8.10.
2021-08-20 13:16:32 +0200 <alp> mastarija, calling the constrained methods will bring up e.g the Ord constraints for Set, that you'll never have available when implementing the unconstrained variant. fmap :: forall a b. (a -> b) -> Set a -> Set b is the type your unconstrained implementation needs to have, which (kinda purposefully) prevents you from assuming anything about 'a' and 'b'.
2021-08-20 13:16:32 +0200xsarnik(xsarnik@lounge.fi.muni.cz) (Remote host closed the connection)
2021-08-20 13:17:39 +0200 <mastarija> Ah.. yes. Now that I think about it
2021-08-20 13:18:31 +0200 <alp> you can play some tricks by "decorating" the Set type instead of changing the classes to allow for constraints though, e.g https://hackage.haskell.org/package/set-monad
2021-08-20 13:19:09 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Quit: Reconnecting)
2021-08-20 13:19:13 +0200 <alp> you essentially make constructors to represent the operations of the classes you want to implement: https://hackage.haskell.org/package/set-monad-0.3.0.0/docs/src/Data.Set.Monad.html#Set
2021-08-20 13:19:23 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2021-08-20 13:20:05 +0200 <alp> and when you actually need to grab the results, you "collapse" those operations, which is the role of that 'run' function there
2021-08-20 13:20:16 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Client Quit)
2021-08-20 13:20:31 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2021-08-20 13:20:39 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-08-20 13:21:54 +0200 <alp> this particular Set monad example is well covered in http://okmij.org/ftp/Haskell/set-monad.html - gives you a decent overview of the various techniques one can use in such situations
2021-08-20 13:28:53 +0200dschrempf(~dominik@92-249-159-252.pool.digikabel.hu)
2021-08-20 13:30:38 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-08-20 13:33:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-20 13:33:54 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 13:34:33 +0200hexfive(~eric@50.35.83.177)
2021-08-20 13:37:57 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-20 13:39:26 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
2021-08-20 13:49:09 +0200 <arahael> https://gist.github.com/arafangion/ce4dca31b13675902d8535903fcb695b Is there anything I can do to resolve this dependency issue?
2021-08-20 13:49:37 +0200 <arahael> I'm not sure why diagrams-core requires base less than 4.14
2021-08-20 13:50:15 +0200t0zy(~t0zy@49.207.220.61)
2021-08-20 13:50:16 +0200dschrempf(~dominik@92-249-159-252.pool.digikabel.hu) (Ping timeout: 250 seconds)
2021-08-20 13:50:42 +0200jgeerds(~jgeerds@55d4b311.access.ecotel.net) (Ping timeout: 250 seconds)
2021-08-20 13:50:49 +0200 <arahael> (Nor why Chart-diagrams requires the slightly older version of diagrams-core)
2021-08-20 13:53:40 +0200dunj3(~dunj3@2001:16b8:30a8:2000:7c3b:4a4d:e83e:847a) (Remote host closed the connection)
2021-08-20 13:55:52 +0200retroid_(~retro@5ec19a54.skybroadband.com) (Ping timeout: 258 seconds)
2021-08-20 13:56:51 +0200xsarnik(xsarnik@lounge.fi.muni.cz)
2021-08-20 13:59:55 +0200 <arahael> Looks like the simplest route for me to resize images in haskell is to just shell out to a utililty.
2021-08-20 14:01:16 +0200t0zy(~t0zy@49.207.220.61) (Ping timeout: 252 seconds)
2021-08-20 14:01:56 +0200t0zy(~t0zy@2402:3a80:d01:2c2f::3fff:9e88)
2021-08-20 14:08:39 +0200polyphem(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Remote host closed the connection)
2021-08-20 14:08:48 +0200polyphem(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3)
2021-08-20 14:09:38 +0200lortabac(~lortabac@62.98.47.131) (Read error: Connection reset by peer)
2021-08-20 14:10:16 +0200yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
2021-08-20 14:11:18 +0200yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp)
2021-08-20 14:13:45 +0200sleblanc(~sleblanc@user/sleblanc)
2021-08-20 14:14:05 +0200lortabac(~lortabac@151.53.218.126)
2021-08-20 14:14:26 +0200hexfive(~eric@50.35.83.177) (Quit: WeeChat 3.0)
2021-08-20 14:16:45 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-08-20 14:21:33 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 258 seconds)
2021-08-20 14:23:12 +0200 <dminuoso> arahael: Your ghc/base is too new.
2021-08-20 14:23:36 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-08-20 14:24:35 +0200 <dminuoso> arahael: And Chart-diagrams requires the slightly oder version of diagrams-core either because they havent bumped the dependency to 1.5.0 yet, or there's some incompatibility. Note that this is a major version bump.
2021-08-20 14:24:45 +0200 <dminuoso> https://hackage.haskell.org/package/diagrams-core-1.5.0/changelog
2021-08-20 14:24:47 +0200 <dminuoso> `Remove deprecated Option type in favor of Maybe. This is a breaking API change. `
2021-08-20 14:27:20 +0200hannessteffenhag(~hannesste@ip4d14fff3.dynamic.kabel-deutschland.de)
2021-08-20 14:28:34 +0200aman(aman@user/aman) (Ping timeout: 268 seconds)
2021-08-20 14:30:13 +0200aman(~aman@user/aman)
2021-08-20 14:34:47 +0200 <hannessteffenhag> hello! I'm playing around with yesod right now and I'm slightly stumped by the forms chapter, or rather specifically how you're supposed to handle hidden fields
2021-08-20 14:35:22 +0200 <hannessteffenhag> there's the hiddenField function in the Forms library, but it seems all the functions that take fields (like areq, aopt etc) also want to create a label for the field
2021-08-20 14:35:38 +0200 <hannessteffenhag> and of course I don't want to print a label for a hidden field
2021-08-20 14:39:47 +0200favonia(~favonia@user/favonia)
2021-08-20 14:40:02 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-08-20 14:41:55 +0200 <Orbstheorem> Is there any difference (i.e. performance, semantics, inlining) between stock and newtype deriving for Functor, Applicative or Monad?
2021-08-20 14:46:17 +0200 <dminuoso> Yes.
2021-08-20 14:46:32 +0200 <dminuoso> newtype deriving just uses coerce to pierce the newtype wrapper to use an existing inner instance
2021-08-20 14:47:40 +0200 <Orbstheorem> So, no vtable? or rather the vtable of the underlying type?
2021-08-20 14:47:52 +0200 <dminuoso> For Functor I guess you end up with the same thing, but Applicative/Monad you cant stock derive anymore, since there's no method to generate a correct, law abiding, canonical and clear instance for Applicative or Monad
2021-08-20 14:47:56 +0200 <dminuoso> vtable?
2021-08-20 14:48:20 +0200 <Orbstheorem> (The dictionnary containing the instance methods at runtime)
2021-08-20 14:49:27 +0200 <Orbstheorem> Also, I just upgraded $work codebase from lts-13.30 to lts-18.1 and feel my compile times faster x)
2021-08-20 14:49:32 +0200 <dminuoso> Either will generate a dictionary, Im not sure whether GND could have an indirection - but GHC probably (?) would optimzie that away?
2021-08-20 14:49:55 +0200 <Orbstheorem> I'm not sure whether it's placebo or the compiler is faster xD
2021-08-20 14:50:16 +0200 <dminuoso> With performance/inlining, as usual... is this in a hotspot?
2021-08-20 14:50:36 +0200 <dminuoso> If not, asking in general about inlining/performance is not as useful.
2021-08-20 14:51:10 +0200t0zy(~t0zy@2402:3a80:d01:2c2f::3fff:9e88) (Ping timeout: 240 seconds)
2021-08-20 14:51:20 +0200Maya9(~Maya@p4ffdb725.dip0.t-ipconnect.de)
2021-08-20 14:51:28 +0200random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 246 seconds)
2021-08-20 14:51:35 +0200 <Orbstheorem> I'm asking because when I upgraded to lts-18.1 the compiler told me both were enabled and that it was defaulting to stock.
2021-08-20 14:51:58 +0200t0zy(~t0zy@49.207.220.61)
2021-08-20 14:54:19 +0200venue(~venue@user/venue) (Quit: adios)
2021-08-20 14:55:12 +0200enoq(~enoq@2a05:1141:1f5:5600:eb83:919c:c248:eabe)
2021-08-20 15:04:38 +0200 <arahael> dminuoso: heh, too new :) i guess thats the trouble with figuring out the version bounds, i needed a newer ghc for some other dependency! i think i'll just shell out for this for the moment.
2021-08-20 15:07:46 +0200Maya9(~Maya@p4ffdb725.dip0.t-ipconnect.de) (Quit: Client closed)
2021-08-20 15:08:05 +0200Maya29(~Maya@p4ffdb725.dip0.t-ipconnect.de)
2021-08-20 15:09:15 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2021-08-20 15:12:15 +0200 <arahael> i supoose if i really badly needed hip in, what do i do? fork the neccessary dependencies and install them manually? (and submit pull requests, but this is all hypothetical)
2021-08-20 15:17:01 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-08-20 15:17:42 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-08-20 15:17:43 +0200sleblanc(~sleblanc@user/sleblanc) (Ping timeout: 252 seconds)
2021-08-20 15:20:56 +0200__monty__(~toonn@user/toonn)
2021-08-20 15:21:21 +0200acidjnk_new(~acidjnk@p200300d0c72b9557dc14868c6ad3e278.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-08-20 15:27:22 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk)
2021-08-20 15:29:10 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2021-08-20 15:29:30 +0200enoq(~enoq@2a05:1141:1f5:5600:eb83:919c:c248:eabe) (Ping timeout: 250 seconds)
2021-08-20 15:29:51 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 15:38:32 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-08-20 15:40:11 +0200dschrempf(~dominik@92-249-159-252.pool.digikabel.hu)
2021-08-20 15:47:29 +0200trcc_(~trcc@eduroam09.au.dk)
2021-08-20 15:47:47 +0200trcc_(~trcc@eduroam09.au.dk) (Client Quit)
2021-08-20 15:50:14 +0200 <lechner> Hi, I tried to 'import SemVer' in ghci. Why would I get "import-im6.q16: attempt to perform an operation not allowed by the security policy `PS' @ error/constitute.c/IsCoderAuthorized/421." please?
2021-08-20 15:50:52 +0200trcc(~trcc@users-5343.st.net.au.dk) (Ping timeout: 245 seconds)
2021-08-20 15:51:38 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 15:55:04 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 250 seconds)
2021-08-20 15:56:13 +0200blankhart(~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net) (Ping timeout: 252 seconds)
2021-08-20 15:57:24 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk)
2021-08-20 15:58:09 +0200blankhart(~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net)
2021-08-20 16:02:16 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-08-20 16:04:00 +0200Matthias1(~Matthias1@casewireless11.CWRU.Edu)
2021-08-20 16:04:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-20 16:04:42 +0200lavaman(~lavaman@98.38.249.169)
2021-08-20 16:09:10 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-08-20 16:09:35 +0200reumeth(~reumeth@user/reumeth)
2021-08-20 16:10:40 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
2021-08-20 16:17:36 +0200dschrempf(~dominik@92-249-159-252.pool.digikabel.hu) (Ping timeout: 250 seconds)
2021-08-20 16:19:00 +0200vpan(~vilius@212.117.1.172)
2021-08-20 16:19:08 +0200lortabac(~lortabac@151.53.218.126) (Quit: WeeChat 2.8)
2021-08-20 16:20:21 +0200Sgeo(~Sgeo@user/sgeo)
2021-08-20 16:23:15 +0200vpan(~vilius@212.117.1.172) (Client Quit)
2021-08-20 16:25:56 +0200xaltsc(~xaltsc@user/xaltsc) (Read error: Connection reset by peer)
2021-08-20 16:31:53 +0200favonia(~favonia@user/favonia) (Ping timeout: 258 seconds)
2021-08-20 16:32:13 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 16:32:46 +0200hannessteffenhag(~hannesste@ip4d14fff3.dynamic.kabel-deutschland.de) (Ping timeout: 250 seconds)
2021-08-20 16:32:53 +0200 <polyphem> Plans for the weekend yet ? => https://github.com/langjam/langjam
2021-08-20 16:37:17 +0200PinealGlandOptic(~PinealGla@37.115.210.35) (Quit: leaving)
2021-08-20 16:38:31 +0200martin02(silas@hund.fs.lmu.de) (Quit: WeeChat 2.3)
2021-08-20 16:41:12 +0200Matthias1(~Matthias1@casewireless11.CWRU.Edu) (Remote host closed the connection)
2021-08-20 16:41:41 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-08-20 16:42:24 +0200d0ku(~d0ku@178.43.198.70.ipv4.supernova.orange.pl) (Remote host closed the connection)
2021-08-20 16:43:16 +0200hannessteffenhag(~hannesste@ip4d14fff3.dynamic.kabel-deutschland.de)
2021-08-20 16:45:03 +0200favonia(~favonia@user/favonia)
2021-08-20 16:46:04 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-08-20 16:46:23 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk)
2021-08-20 16:47:30 +0200hannessteffenhag(~hannesste@ip4d14fff3.dynamic.kabel-deutschland.de) (Ping timeout: 250 seconds)
2021-08-20 16:48:12 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 16:51:25 +0200Matthias1(~Matthias1@casewireless11.CWRU.Edu)
2021-08-20 16:53:12 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk)
2021-08-20 16:55:30 +0200polyphem(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Read error: Connection reset by peer)
2021-08-20 16:55:48 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 16:56:06 +0200polyphem(~polyphem@2a00:20:c049:6b62:beab:3bdc:3d18:f786)
2021-08-20 16:56:17 +0200Ranhir(~Ranhir@157.97.53.139) (Ping timeout: 245 seconds)
2021-08-20 16:56:47 +0200polyphem(~polyphem@2a00:20:c049:6b62:beab:3bdc:3d18:f786) (Read error: Connection reset by peer)
2021-08-20 16:57:18 +0200polyphem(~polyphem@ip5f5ac3ae.dynamic.kabel-deutschland.de)
2021-08-20 16:58:06 +0200p0lyph3m(~polyphem@2a00:20:c049:6b62:beab:3bdc:3d18:f786)
2021-08-20 16:59:25 +0200p0lyph3mCore2947
2021-08-20 17:01:42 +0200martin02(~silas@141.84.69.76)
2021-08-20 17:01:48 +0200polyphem(~polyphem@ip5f5ac3ae.dynamic.kabel-deutschland.de) (Ping timeout: 250 seconds)
2021-08-20 17:02:15 +0200Ranhir(~Ranhir@157.97.53.139)
2021-08-20 17:03:10 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk)
2021-08-20 17:05:21 +0200Core2947polyphem
2021-08-20 17:06:37 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 17:07:08 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk)
2021-08-20 17:08:19 +0200zebrag(~chris@user/zebrag)
2021-08-20 17:09:07 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 17:09:21 +0200lbseale_(~lbseale@user/ep1ctetus) (Ping timeout: 248 seconds)
2021-08-20 17:10:05 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk)
2021-08-20 17:11:47 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 17:12:10 +0200Maya29(~Maya@p4ffdb725.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2021-08-20 17:12:15 +0200sweater(~sweater@206.81.18.26) (Quit: WeeChat 2.8)
2021-08-20 17:13:47 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk)
2021-08-20 17:19:16 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 17:21:06 +0200aman(~aman@user/aman) (Quit: aman)
2021-08-20 17:24:28 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk)
2021-08-20 17:25:24 +0200bin_(~bin@user/bin/x-1583188) (Quit: ZNC - https://znc.in)
2021-08-20 17:25:54 +0200_bin(~bin@user/bin/x-1583188)
2021-08-20 17:26:22 +0200stevenxl(uid133530@highgate.irccloud.com) (Ping timeout: 245 seconds)
2021-08-20 17:26:24 +0200etrepum(sid763@id-763.highgate.irccloud.com) (Read error: Connection reset by peer)
2021-08-20 17:26:28 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 17:26:29 +0200totbwf__(sid402332@id-402332.highgate.irccloud.com) (Read error: Connection reset by peer)
2021-08-20 17:26:43 +0200davetapley(sid666@highgate.irccloud.com) (Read error: Connection reset by peer)
2021-08-20 17:26:47 +0200vito(sid1962@user/vito) (Ping timeout: 245 seconds)
2021-08-20 17:26:52 +0200alanz(sid110616@id-110616.highgate.irccloud.com) (Ping timeout: 256 seconds)
2021-08-20 17:26:52 +0200obviyus(sid415299@user/obviyus) (Ping timeout: 256 seconds)
2021-08-20 17:26:57 +0200bradparker(sid262931@id-262931.highgate.irccloud.com) (Read error: Connection reset by peer)
2021-08-20 17:27:03 +0200b20n(sid115913@id-115913.highgate.irccloud.com) (Read error: Connection reset by peer)
2021-08-20 17:27:03 +0200T_S_(sid501726@id-501726.highgate.irccloud.com) (Read error: Connection reset by peer)
2021-08-20 17:27:10 +0200aarchi(sid486183@highgate.irccloud.com) (Read error: Connection reset by peer)
2021-08-20 17:27:29 +0200SrPx(sid108780@highgate.irccloud.com) (Ping timeout: 248 seconds)
2021-08-20 17:28:47 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk)
2021-08-20 17:29:10 +0200burnsidesLlama(~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-08-20 17:29:14 +0200systemfault(sid267009@highgate.irccloud.com) (Ping timeout: 268 seconds)
2021-08-20 17:31:06 +0200bradparker(sid262931@id-262931.highgate.irccloud.com)
2021-08-20 17:31:14 +0200etrepum(sid763@highgate.irccloud.com)
2021-08-20 17:31:45 +0200totbwf__(sid402332@id-402332.highgate.irccloud.com)
2021-08-20 17:31:57 +0200T_S_(sid501726@highgate.irccloud.com)
2021-08-20 17:32:05 +0200davetapley(sid666@id-666.highgate.irccloud.com)
2021-08-20 17:32:09 +0200stevenxl(uid133530@highgate.irccloud.com)
2021-08-20 17:32:10 +0200SrPx(sid108780@highgate.irccloud.com)
2021-08-20 17:32:15 +0200b20n(sid115913@id-115913.highgate.irccloud.com)
2021-08-20 17:32:28 +0200aarchi(sid486183@id-486183.highgate.irccloud.com)
2021-08-20 17:32:34 +0200systemfault(sid267009@id-267009.highgate.irccloud.com)
2021-08-20 17:32:34 +0200vito(sid1962@user/vito)
2021-08-20 17:33:03 +0200obviyus(sid415299@user/obviyus)
2021-08-20 17:33:07 +0200alanz(sid110616@highgate.irccloud.com)
2021-08-20 17:34:29 +0200chris(~chris@81.96.113.213)
2021-08-20 17:34:32 +0200chrisGuest8144
2021-08-20 17:34:35 +0200mei(~mei@user/mei)
2021-08-20 17:37:17 +0200ananthakumaran(~ananthaku@49.207.194.59)
2021-08-20 17:38:11 +0200_bin(~bin@user/bin/x-1583188) (Quit: ZNC - https://znc.in)
2021-08-20 17:38:40 +0200_bin(~bin@user/bin/x-1583188)
2021-08-20 17:39:13 +0200notzmv(~zmv@user/notzmv)
2021-08-20 17:39:20 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-08-20 17:39:25 +0200p0lyph3m(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3)
2021-08-20 17:41:43 +0200polyphem(~polyphem@2a00:20:c049:6b62:beab:3bdc:3d18:f786) (Remote host closed the connection)
2021-08-20 17:43:02 +0200 <_bin> Opinions on Megaparsec vs Earley vs uu-parsinglib
2021-08-20 17:44:37 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-20 17:44:47 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-08-20 17:45:06 +0200sweater(~sweater@206.81.18.26)
2021-08-20 17:45:09 +0200fef(~thedawn@user/thedawn)
2021-08-20 17:46:26 +0200 <c_wraith> megaparsec will be the fastest of those three, if you're handling huge documents. Earley is the easiest (for me) to use, but it is also the most limited - it only supports context-free grammars, where the other two support context-sensitive. uu-parsinglib does really neat stuff with error correction, but performance can get really bad if your grammar allows ambiguity
2021-08-20 17:47:09 +0200 <dsal> Does anyone have any references to opinions on `let` vs. `where` when they're otherwise equivalent? `where` seems to produce cleaner looking code that's easier for me to understand, but I've seen an argument from someone who likes seeing definitions ahead. Searches point me to technical differences, which don't seem to be helpful.
2021-08-20 17:47:36 +0200 <c_wraith> in cases where they're equivalent I almost always go with where.
2021-08-20 17:48:17 +0200jess(~jess@libera/staff/jess)
2021-08-20 17:48:21 +0200 <c_wraith> I don't really think definitions ahead of use is important in a language where you can use things ahead of their definition anyway.
2021-08-20 17:48:23 +0200 <dsal> Yeah, that's where I am. I'm having a hard time describing why that's the case, other than, you know, we're using a declarative language.
2021-08-20 17:49:07 +0200 <c_wraith> there are exceptions. I'm more likely to use let inside of a case than attaching a where to a branch
2021-08-20 17:49:56 +0200 <c_wraith> and I'm more likely to use let if I can write the whole definition as a one-liner
2021-08-20 17:49:56 +0200 <dsal> Yeah. use `where` unless it makes the code worse.
2021-08-20 17:50:14 +0200 <c_wraith> like fix f = let x = f x in x
2021-08-20 17:50:14 +0200 <dsal> I especially don't like `let` for functions.
2021-08-20 17:50:33 +0200 <Rembane_> I mix them, I have had very particular tastes in both directions and now I just go with what my intuition wants me to.
2021-08-20 17:54:34 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-08-20 17:55:00 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-08-20 17:59:45 +0200oxide(~lambda@user/oxide)
2021-08-20 18:00:31 +0200MQ-17J(~MQ-17J@8.6.144.209) (Ping timeout: 252 seconds)
2021-08-20 18:00:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 18:02:58 +0200lbseale(~lbseale@user/ep1ctetus)
2021-08-20 18:03:15 +0200econo(uid147250@user/econo)
2021-08-20 18:04:16 +0200 <_bin> c_wraith: Thanks. If I'm looking at, say, scraping some web page, which of these might suit best? Would Earley suit for this?
2021-08-20 18:05:22 +0200 <c_wraith> if you're scraping web pages, I'd recommend not trying to write a parser that deals with the tire fire that is real-world HTML
2021-08-20 18:05:33 +0200lavaman(~lavaman@98.38.249.169)
2021-08-20 18:05:53 +0200 <c_wraith> I'd go with something like https://hackage.haskell.org/package/tagsoup
2021-08-20 18:09:50 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-08-20 18:09:58 +0200zaquest(~notzaques@5.128.210.178)
2021-08-20 18:10:56 +0200 <c_wraith> I do understand the appeal of writing your own parser, but that's better suited to environments where you can reject malformed inputs. HTML isn't such an environment
2021-08-20 18:11:45 +0200haskl(~haskl@98.37.78.63) (Changing host)
2021-08-20 18:11:45 +0200haskl(~haskl@user/haskl)
2021-08-20 18:12:20 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Remote host closed the connection)
2021-08-20 18:13:01 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt)
2021-08-20 18:13:03 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Remote host closed the connection)
2021-08-20 18:13:19 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 18:13:38 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt)
2021-08-20 18:14:37 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-08-20 18:14:53 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Remote host closed the connection)
2021-08-20 18:15:07 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt)
2021-08-20 18:15:52 +0200o1lo01ol1o(~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Remote host closed the connection)
2021-08-20 18:17:38 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
2021-08-20 18:18:30 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 250 seconds)
2021-08-20 18:19:15 +0200quantum(~quantum@user/quantum/x-8556232)
2021-08-20 18:20:07 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-20 18:21:42 +0200 <adamCS> arahael: Not sure if it will work but sometimes you can just do a bunch of "allow-newer" in cabal.project and then things work.
2021-08-20 18:23:45 +0200kuribas(~user@ptr-25vy0i7hpbjw2llku95.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-08-20 18:24:32 +0200notzmv(~zmv@user/notzmv)
2021-08-20 18:34:26 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-08-20 18:35:10 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-08-20 18:35:36 +0200hendursaga(~weechat@user/hendursaga)
2021-08-20 18:36:23 +0200 <lechner> Hi, what does this error from ghci mean, please? "<command line>: cannot satisfy -package-id" https://paste.debian.net/1208358/
2021-08-20 18:40:22 +0200 <lechner> I cleaned up my builds with 'rm -rf' but have since built (although with debug symbols disabled in cabal)
2021-08-20 18:42:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 18:43:43 +0200qbt(~edun@user/edun) (Quit: Leaving)
2021-08-20 18:44:29 +0200 <sm> lechner: IIRC it might mean you should force reinstall tagtree
2021-08-20 18:44:31 +0200 <dsal> lechner: it just means you are requiring a package that can't be found.
2021-08-20 18:44:53 +0200derelict(~derelict@user/derelict) (Quit: WeeChat 3.2)
2021-08-20 18:46:10 +0200Boomerang(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 252 seconds)
2021-08-20 18:47:20 +0200oxide_(~lambda@user/oxide)
2021-08-20 18:47:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-20 18:48:04 +0200 <monochrom> When "let" and "where" are both legal, I am inclined to "where" because more people do this and it is easier to lay out. But there is an exception: when for educational purpose, in a few cases, the presentation goes better if the ingredients are presented before the composition punch line.
2021-08-20 18:50:04 +0200 <dsal> I argued from the other direction. I want to know the most important parts and then decide whether I need to look up something later.
2021-08-20 18:50:52 +0200pavonia(~user@user/siracusa)
2021-08-20 18:50:55 +0200 <dsal> The example introduced two magic numbers and a function with a really obvious name with `let` as if knowing the details of these things helped me understand what was happening.
2021-08-20 18:51:30 +0200zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-08-20 18:52:45 +0200zaquest(~notzaques@5.128.210.178)
2021-08-20 18:52:53 +0200ubert1(~Thunderbi@178.115.47.86.wireless.dyn.drei.com)
2021-08-20 18:53:06 +0200 <sm> wheres are easier to extract to a function since they can't depend on things above
2021-08-20 18:53:35 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 18:53:37 +0200oxide_(~lambda@user/oxide) (Quit: oxide_)
2021-08-20 18:53:55 +0200 <sm> or even if not extracted, they make the chunks and dependencies within a large function clearer
2021-08-20 18:54:23 +0200 <lechner> sm dsal: thanks! tagtree was a local package. why would ghci require it? should i zap store/ghc-8.8.4/package.db/package.cache ?
2021-08-20 18:54:25 +0200ubert(~Thunderbi@178.115.64.138.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-08-20 18:54:25 +0200ubert1ubert
2021-08-20 18:56:26 +0200 <sm> and yes, sometimes it's useful to introduce things bottom, with let. I think this is more often so with complicated/not-well-understood operations, where you need to learn some new terms to even understand what the higher level thing is about
2021-08-20 18:56:38 +0200 <sm> bottom up
2021-08-20 18:57:34 +0200 <sm> lechner: I'd just try force reinstalling tagtree with your chosen haskell package manager
2021-08-20 18:58:05 +0200 <lechner> sm: i don't want it anymore. (it came from emanote)
2021-08-20 18:58:30 +0200 <dsal> I wrote so many qc properties as `counterexample s $ a == b`
2021-08-20 18:58:41 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it)
2021-08-20 18:59:08 +0200 <dsal> lechner: I'm not very familiar with those problems. I use nix and stack and have a different set of problems. I just read the error. :)
2021-08-20 18:59:40 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-08-20 19:01:27 +0200 <sm> lechner: i see it's being included in the list of "core" libs in debug output when you just run ghci. I'm not sure why, maybe it really is needed ? In any case, I would try what I said, it's quick and would tell you something
2021-08-20 19:02:49 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 19:02:57 +0200 <dsal> Maybe I should use my counterexample example. `s` needs `a` and `b` which are derived from arguments and are also needed for the comparison. It'd be silly to make the user read some of my gross printing code before seeing how values are constructed for comparison, but otherwise the values need to be passed down. In any case, the bulk of text might end up being only interesting if you need details on how an error condition is
2021-08-20 19:02:57 +0200 <dsal> explained.
2021-08-20 19:03:17 +0200 <sm> maybe you busted ghc's version of it with your hamfisted emanote install efforts ? :)
2021-08-20 19:06:32 +0200 <lechner> sm: maybe i should have used nix, after all. i just zapped, before reading your previous message, most of my (user) cabal directory. only ./bin and ./config are left. unfortunately, now i get https://paste.debian.net/1208362/
2021-08-20 19:07:01 +0200 <lechner> where does it learn that the user db should exist?
2021-08-20 19:07:26 +0200 <sm> original problem solved! :)
2021-08-20 19:07:39 +0200 <sm> maybe nuke .ghc also ?
2021-08-20 19:07:55 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 268 seconds)
2021-08-20 19:11:46 +0200 <lechner> sm: yay! that worked. to keep my little red λ, i removed only some (other) build artifacts with rm -rf ~/.ghc/x86_64-linux-8.8.4/ thanks!
2021-08-20 19:12:21 +0200 <sm> great
2021-08-20 19:17:12 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 19:17:23 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 19:17:32 +0200oxide_(~lambda@user/oxide)
2021-08-20 19:18:15 +0200derelict(~derelict@user/derelict)
2021-08-20 19:18:37 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 252 seconds)
2021-08-20 19:19:48 +0200smitop(~smitop@user/smitop) (Quit: Ping timeout (120 seconds))
2021-08-20 19:20:35 +0200smitop(~smitop@user/smitop)
2021-08-20 19:20:44 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-08-20 19:21:51 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-20 19:25:53 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 248 seconds)
2021-08-20 19:28:16 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 250 seconds)
2021-08-20 19:28:22 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-08-20 19:28:49 +0200azeem(~azeem@176.200.243.66)
2021-08-20 19:29:39 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection)
2021-08-20 19:30:39 +0200Maya50(~Maya@p4ffdb725.dip0.t-ipconnect.de)
2021-08-20 19:34:05 +0200ananthakumaran(~ananthaku@49.207.194.59) (Quit: leaving)
2021-08-20 19:35:22 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-20 19:36:19 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 19:37:24 +0200azeem(~azeem@176.200.243.66) (Read error: Connection reset by peer)
2021-08-20 19:37:39 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
2021-08-20 19:41:22 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection)
2021-08-20 19:43:46 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 19:45:21 +0200retroid_(~retro@5ec19a54.skybroadband.com)
2021-08-20 19:48:28 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection)
2021-08-20 19:51:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-20 19:55:06 +0200Matthias1(~Matthias1@casewireless11.CWRU.Edu) (Read error: Connection reset by peer)
2021-08-20 19:56:21 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-08-20 20:02:28 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-08-20 20:02:55 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 20:06:01 +0200lavaman(~lavaman@98.38.249.169)
2021-08-20 20:07:34 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 252 seconds)
2021-08-20 20:09:13 +0200keutoi(~keutoi@157.48.195.127) (Ping timeout: 252 seconds)
2021-08-20 20:09:46 +0200notzmv(~zmv@user/notzmv)
2021-08-20 20:10:19 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-08-20 20:11:14 +0200keutoi(~keutoi@106.208.52.196)
2021-08-20 20:13:45 +0200jakalx(~jakalx@base.jakalx.net)
2021-08-20 20:18:59 +0200lavaman(~lavaman@98.38.249.169)
2021-08-20 20:23:19 +0200Xnuk(~xnuk@45.76.202.58) (Quit: ZNC - https://znc.in)
2021-08-20 20:24:02 +0200Xnuk(~xnuk@45.76.202.58)
2021-08-20 20:29:26 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
2021-08-20 20:31:44 +0200 <_bin> What is the idiomatic way to run a loop until SIGTERM, forking a new thread with the same function every n minutes?
2021-08-20 20:34:46 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 20:35:07 +0200 <dsal> forever + threadDelay + async, I suppose.
2021-08-20 20:36:10 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-20 20:36:39 +0200Guest38(~Guest38@75-54-107-59.lightspeed.hstntx.sbcglobal.net)
2021-08-20 20:36:49 +0200 <Rembane_> _bin: What's a thread in this case?
2021-08-20 20:38:33 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-20 20:38:49 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-20 20:40:46 +0200dschrempf(~dominik@92-249-159-252.pool.digikabel.hu)
2021-08-20 20:42:13 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 252 seconds)
2021-08-20 20:42:25 +0200keutoi(~keutoi@106.208.52.196) (Quit: leaving)
2021-08-20 20:42:27 +0200Guest38(~Guest38@75-54-107-59.lightspeed.hstntx.sbcglobal.net) (Quit: Client closed)
2021-08-20 20:43:21 +0200 <_bin> Rembane_: forkIO, I guess
2021-08-20 20:45:13 +0200 <Rembane_> _bin: Cool, dsal's idea should work for that too. :)
2021-08-20 20:48:20 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-08-20 20:48:59 +0200Guest60(~Guest60@modemcable169.17-58-74.mc.videotron.ca)
2021-08-20 20:51:19 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection)
2021-08-20 20:52:31 +0200 <Guest60> I'm writting wrappers for a bunch of different things (a database and a bunch of HTTP APIs), I'm not sure how to handle errors
2021-08-20 20:52:36 +0200 <Guest60> should I just define custom Error sum types in each module, make them instances of Exception and throw in IO ? I mostly want everything to compose nicely
2021-08-20 20:53:13 +0200dschrempf(~dominik@92-249-159-252.pool.digikabel.hu) (Ping timeout: 252 seconds)
2021-08-20 20:54:25 +0200 <_bin> dsal, Remobane_: Thanks.
2021-08-20 21:00:22 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
2021-08-20 21:00:22 +0200benin036932(~benin@183.82.178.142) (Ping timeout: 252 seconds)
2021-08-20 21:01:08 +0200Maya50(~Maya@p4ffdb725.dip0.t-ipconnect.de) (Quit: Client closed)
2021-08-20 21:07:44 +0200benin036932(~benin@183.82.178.142)
2021-08-20 21:11:06 +0200 <_bin> Any recommendation on logging frameworks? co-log and katip appear to be two common ones, but I'm not sure as to why one or the other is better.
2021-08-20 21:17:28 +0200xff0x(~xff0x@2001:1a81:5207:3100:686a:e8fd:47a9:633d) (Ping timeout: 250 seconds)
2021-08-20 21:22:42 +0200venue(~venue@user/venue)
2021-08-20 21:23:35 +0200Obo(~roberto@h-46-59-103-134.a498.priv.bahnhof.se) (Quit: WeeChat 2.8)
2021-08-20 21:26:15 +0200 <lechner> Hi, many friendly souls here told me to prefer 'putStrLn' over 'print', and especially 'printf', but 'hlint' recommends the former! https://paste.debian.net/1208376/
2021-08-20 21:27:35 +0200 <monochrom> Are you ignoring the context that ". show" is also present?
2021-08-20 21:28:24 +0200 <monochrom> But I would delete hlint altogether.
2021-08-20 21:28:47 +0200 <monochrom> If you prefer "putStrLn . show", if this is your coding style, then this is your coding style.
2021-08-20 21:28:59 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 21:29:25 +0200 <Rembane_> I just do what hlint tells me, it makes my life more interesting and increases the chance that monochrom becomes my arch enemy.
2021-08-20 21:29:26 +0200 <monochrom> Along the way, I would also delete any memory of hearing an unconditional, one-size-fits-all "prefer putStrLn over print".
2021-08-20 21:29:44 +0200 <monochrom> Do people really say things like "prefer apple to orange" in their style guides?
2021-08-20 21:29:57 +0200 <monochrom> haha
2021-08-20 21:30:24 +0200 <lechner> does 'print' need a <> "\n" ?
2021-08-20 21:30:29 +0200 <nitrix> print is literally putStrLn . show, so I don't see how it could be a problem semantically, nor syntactically (way simpler than the composition).
2021-08-20 21:30:30 +0200 <monochrom> No.
2021-08-20 21:31:41 +0200 <lechner> How about "newtype instead of data"? https://paste.debian.net/1208378/
2021-08-20 21:32:17 +0200 <monochrom> Did you see the line "Note: decreases laziness"?
2021-08-20 21:32:55 +0200 <monochrom> BTW I think you should also wear pink instead of blue tomorrow.
2021-08-20 21:33:10 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 240 seconds)
2021-08-20 21:33:17 +0200 <monochrom> And for tonight's dinner you should prefer fish over veggies.
2021-08-20 21:33:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-20 21:33:38 +0200 <nitrix> I smell more a symptom of someone that developed the bad habit of memorizing strict rules and applying them systematically, without really understanding what they're doing or why they're doing it in the first place. Props for being suspicious and asking though.
2021-08-20 21:33:40 +0200 <lechner> yeah, i use that type to parse JSON, and do not understand it. does it imply "!" on the constituents ?
2021-08-20 21:34:09 +0200 <monochrom> OK, I have two points.
2021-08-20 21:34:09 +0200 <lechner> nitrix: i am a noobie
2021-08-20 21:34:32 +0200 <monochrom> 1. Learn newtype. Then you can decide whether it fits your purpose.
2021-08-20 21:34:46 +0200 <monochrom> 2. It probably doesn't matter for now and for the next few months either.
2021-08-20 21:35:12 +0200oxide_(~lambda@user/oxide) (Quit: oxide_)
2021-08-20 21:35:40 +0200 <nitrix> That's generous. Make that a year.
2021-08-20 21:36:36 +0200 <monochrom> In fact I stick to "data" in my course, even where Haskellers would use newtype. Yes I totally have "data State s a = MkState (s -> (s, a))".
2021-08-20 21:36:54 +0200 <monochrom> Screw hlint. It is an anti-educational tool.
2021-08-20 21:37:11 +0200 <monochrom> When pros use it, I can understand.
2021-08-20 21:37:12 +0200 <lechner> or it competes with you?
2021-08-20 21:37:28 +0200 <lechner> in a way you dislike
2021-08-20 21:37:30 +0200 <nitrix> hlint and hoogle don't seem to deliver too well on their promises.
2021-08-20 21:37:45 +0200kenran(~kenran@200116b82b157f00af733520c5a4c898.dip.versatel-1u1.de)
2021-08-20 21:38:15 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-08-20 21:38:16 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds)
2021-08-20 21:38:19 +0200 <Rembane_> nitrix: I think that depends on what you think they promise.
2021-08-20 21:38:30 +0200 <monochrom> Well I can't call something or someone a competitor if they derail the job rather than do a better job.
2021-08-20 21:38:41 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds)
2021-08-20 21:39:37 +0200 <lechner> there are good and bad restaurants
2021-08-20 21:39:52 +0200 <monochrom> Tangential digressions are the enemy of teaching and learning. When I and my students are still at the stage of learning lambdas, for example (\x -> x + 3), suggesting "why not (+ 3)" is derailing. Only smartasses and #haskell regulars do this.
2021-08-20 21:40:15 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-08-20 21:40:52 +0200 <lechner> but do you agree with the recommendation?
2021-08-20 21:41:05 +0200 <lechner> outside your class
2021-08-20 21:41:08 +0200 <monochrom> Depends on the context? Isn't that my point?
2021-08-20 21:41:34 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr)
2021-08-20 21:41:48 +0200 <monochrom> Outside my class there are still a lot of beginners in #haskell whom I would not bring up sections too early either.
2021-08-20 21:42:00 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
2021-08-20 21:42:01 +0200Lord_of_Life_Lord_of_Life
2021-08-20 21:42:10 +0200 <lechner> hlint is a poor teacher
2021-08-20 21:42:47 +0200 <monochrom> If the reader is ready for (+ 3) I write (+ 3). If the reader is not ready for that, I write (\x -> x + 3). If the reader is not even ready for that, I write "let f x = x + 3 in ..."
2021-08-20 21:44:00 +0200 <lechner> isn't the lambda harder than a partially applied function?
2021-08-20 21:44:17 +0200 <lechner> maybe i use RPN too mkch
2021-08-20 21:44:22 +0200 <lechner> much
2021-08-20 21:47:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-20 21:47:40 +0200alx741(~alx741@181.196.69.234) (Ping timeout: 252 seconds)
2021-08-20 21:50:50 +0200nschoe(~quassel@2a01:e0a:8e:a190:1cfd:5590:1382:edd9) (Ping timeout: 250 seconds)
2021-08-20 21:50:50 +0200Megant(megant@user/megant) (Ping timeout: 250 seconds)
2021-08-20 21:51:41 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-08-20 21:53:43 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 21:53:49 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-08-20 21:54:11 +0200dschrempf(~dominik@92-249-159-252.pool.digikabel.hu)
2021-08-20 21:54:49 +0200mei(~mei@user/mei) (Ping timeout: 252 seconds)
2021-08-20 21:55:53 +0200dschrempf(~dominik@92-249-159-252.pool.digikabel.hu) (Client Quit)
2021-08-20 21:56:45 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-20 21:57:53 +0200 <sm>   someone should do the remember quote thingy with Rembane's "I just do what hlint tells me, it makes my life more interesting and increases the chance that monochrom becomes my arch enemy."
2021-08-20 21:58:17 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-20 21:58:56 +0200 <monochrom> @remember Rembane I just do what hlint tells me, it makes my life more interesting and increases the chance that monochrom becomes my arch enemy.
2021-08-20 21:58:56 +0200 <lambdabot> Okay.
2021-08-20 21:59:04 +0200Megant(megant@user/megant)
2021-08-20 21:59:30 +0200 <lechner> that actually works?
2021-08-20 21:59:39 +0200 <Rembane_> :D
2021-08-20 21:59:40 +0200xff0x(~xff0x@2001:1a81:5207:3100:686a:e8fd:47a9:633d)
2021-08-20 21:59:43 +0200 <sm> nice :)
2021-08-20 22:00:03 +0200alx741(~alx741@181.196.68.120)
2021-08-20 22:01:57 +0200lavaman(~lavaman@98.38.249.169)
2021-08-20 22:05:16 +0200juhp(~juhp@128.106.188.220) (Ping timeout: 252 seconds)
2021-08-20 22:07:19 +0200juhp(~juhp@128.106.188.220)
2021-08-20 22:09:21 +0200gustik(~gustik@2a01:c844:2410:9020:63ab:4bb6:83d2:e11b)
2021-08-20 22:12:33 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 22:13:17 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-20 22:13:36 +0200s-h-i-n-o-b-i(~quassel@104.244.75.124) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-08-20 22:14:33 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection)
2021-08-20 22:16:00 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-08-20 22:18:30 +0200 <tomsmeding> https://ircbrowse.tomsmeding.com/quotes.rss
2021-08-20 22:18:43 +0200 <tomsmeding> I honestly don't know offhand how far back that goes
2021-08-20 22:19:15 +0200 <tomsmeding> at least only libera, not freenode
2021-08-20 22:20:27 +0200 <tomsmeding> that was the first (and yet only) @remember quote on liberachat! 🎉
2021-08-20 22:22:09 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-08-20 22:22:49 +0200Guest8144(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-20 22:25:58 +0200glguy(x@libera/staff/glguy) (Quit: Quit)
2021-08-20 22:26:08 +0200glguy(x@libera/staff/glguy)
2021-08-20 22:26:45 +0200acidjnk_new(~acidjnk@p200300d0c72b9557dc14868c6ad3e278.dip0.t-ipconnect.de)
2021-08-20 22:27:51 +0200chris(~chris@81.96.113.213)
2021-08-20 22:27:54 +0200chrisGuest1143
2021-08-20 22:29:11 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving)
2021-08-20 22:31:07 +0200tomboy64(~tomboy64@user/tomboy64) (Quit: Off to see the wizard.)
2021-08-20 22:32:39 +0200Guest1143(~chris@81.96.113.213) (Ping timeout: 268 seconds)
2021-08-20 22:33:54 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-20 22:34:04 +0200tomboy64(~tomboy64@user/tomboy64)
2021-08-20 22:36:49 +0200 <siers> tomsmeding, did you write the ListFamily yourself?
2021-08-20 22:37:01 +0200 <siers> tomsmeding, and the rest of that paste
2021-08-20 22:37:43 +0200Megant(megant@user/megant) (Ping timeout: 252 seconds)
2021-08-20 22:38:16 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-08-20 22:38:38 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-08-20 22:41:50 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-08-20 22:43:36 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-20 22:44:43 +0200ub(~Thunderbi@178.115.47.86.wireless.dyn.drei.com)
2021-08-20 22:45:36 +0200 <tomsmeding> siers: yeah
2021-08-20 22:45:49 +0200 <tomsmeding> followed the example in the documentation of Family
2021-08-20 22:46:12 +0200 <siers> tomsmeding, had you seen tricks with Refl before?
2021-08-20 22:46:53 +0200pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com)
2021-08-20 22:47:17 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-08-20 22:47:36 +0200 <tomsmeding> siers: this is code I've been writing recently :p https://github.com/tomsmeding/accelerate/blob/no-explode/src/Data/Array/Accelerate/Trafo/AD/Transl…
2021-08-20 22:47:57 +0200 <tomsmeding> so yeah
2021-08-20 22:48:10 +0200ubert(~Thunderbi@178.115.47.86.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-08-20 22:48:10 +0200ububert
2021-08-20 22:49:57 +0200 <tomsmeding> siers: the ExprTermFamily in the gdiff documentation is analogous to 'ListFamily a' in my code
2021-08-20 22:50:35 +0200 <tomsmeding> so 'ExprTermFamily ty fields' corresponds to 'ListFamily a ty fields': I added an additional type parameter
2021-08-20 22:50:47 +0200 <tomsmeding> hence instance Family (ListFamily a)
2021-08-20 22:51:03 +0200 <tomsmeding> and not just instance Family ExprTermFamily
2021-08-20 22:54:46 +0200ubert(~Thunderbi@178.115.47.86.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-08-20 22:56:56 +0200random-jellyfish(~random-je@user/random-jellyfish)
2021-08-20 22:57:48 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-08-20 22:58:08 +0200gustik(~gustik@2a01:c844:2410:9020:63ab:4bb6:83d2:e11b) (Quit: Leaving)
2021-08-20 23:00:11 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-20 23:00:40 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 23:03:56 +0200MQ-17J(~MQ-17J@2607:fb90:8824:bf5d:8f75:f298:534b:ce5e)
2021-08-20 23:05:13 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 252 seconds)
2021-08-20 23:06:14 +0200oxide(~lambda@user/oxide) (Ping timeout: 250 seconds)
2021-08-20 23:06:20 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-08-20 23:08:14 +0200oxide(~lambda@user/oxide)
2021-08-20 23:10:10 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 23:10:30 +0200Guest60(~Guest60@modemcable169.17-58-74.mc.videotron.ca) (Quit: Client closed)
2021-08-20 23:13:19 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-08-20 23:13:28 +0200mjrosenb(~mrosenbe@nyc.schrodinger.com) (Ping timeout: 252 seconds)
2021-08-20 23:20:45 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-08-20 23:20:51 +0200cheater1__(~Username@user/cheater)
2021-08-20 23:20:54 +0200cheater1__cheater
2021-08-20 23:26:19 +0200HarveyPwca(~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06)
2021-08-20 23:26:43 +0200 <ixlun> Is it possible to define a typeclass that has a requires only a value to be implemented?
2021-08-20 23:27:03 +0200 <ixlun> as opposed to a function
2021-08-20 23:28:00 +0200 <monochrom> Bounded defines two values. Perhaps you can draw inspirations from it.
2021-08-20 23:28:45 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-08-20 23:29:29 +0200 <[exa]> (also, "function are values")
2021-08-20 23:30:38 +0200Megant(~kaitsu@user/megant)
2021-08-20 23:30:42 +0200 <[exa]> technically, Monoid is also "value"-only now (the "function" is in Semigroup)
2021-08-20 23:31:48 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds)
2021-08-20 23:31:48 +0200 <ixlun> They are very close to what I'm after. I'm trying to do something like https://pastebin.com/mQ4JEScb
2021-08-20 23:32:01 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-20 23:32:35 +0200 <ixlun> so each type that implements ParsableSection has to define it's own ID. Then in the 'parse' function, I can deduce the id from the type that's passed in.
2021-08-20 23:33:42 +0200 <hpc> sectionId needs to have k somewhere in its type
2021-08-20 23:33:45 +0200 <[exa]> you'd need to run the sectionId with a type application though, because otherwise there's no way how it can see which instance it belongs to
2021-08-20 23:33:55 +0200 <[exa]> consider Proxy
2021-08-20 23:34:13 +0200 <[exa]> (or something related)
2021-08-20 23:35:10 +0200Megant(~kaitsu@user/megant) (Ping timeout: 240 seconds)
2021-08-20 23:35:28 +0200 <[exa]> and yeah, as hpc says -- I'd really vote for `sectionId :: k -> Word16`
2021-08-20 23:35:46 +0200 <[exa]> it will allow you to parametrize the stuff by additional data
2021-08-20 23:38:10 +0200 <ixlun> But then wouldn't I run into a chicken and egg scenario? In that the parse funciton yields a 'k' but I need to construct one to call sectionId?
2021-08-20 23:38:48 +0200 <ixlun> and parse needs to call sectionId before it can do the parse
2021-08-20 23:39:28 +0200oxide_(~lambda@user/oxide)
2021-08-20 23:39:52 +0200 <hpc> in that case go with Proxy
2021-08-20 23:40:10 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-08-20 23:41:32 +0200 <ixlun> Cool, then I guess the type signature would be: sectionId :: Proxy k?
2021-08-20 23:41:38 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection)
2021-08-20 23:41:51 +0200o1lo01ol1o(~o1lo01ol1@5.181.115.89.rev.vodafone.pt)
2021-08-20 23:42:08 +0200 <ixlun> sorry: sectionId :: Proxy k -> Word16
2021-08-20 23:42:19 +0200 <hpc> yep
2021-08-20 23:42:31 +0200 <c_wraith> that works, though you might do better with sectionId :: proxy k -> Word16
2021-08-20 23:42:43 +0200 <c_wraith> making that p lowercase does some nice things
2021-08-20 23:43:06 +0200 <hpc> sectionId Proxy @Foo
2021-08-20 23:43:24 +0200 <c_wraith> In particular, it lets you pass values of other types that you might already have lying around in
2021-08-20 23:43:49 +0200 <c_wraith> And parametricity guarantees you can't try to *use* the value
2021-08-20 23:44:29 +0200 <hpc> not that you can do much with a Proxy value in the first place ;)
2021-08-20 23:44:53 +0200 <c_wraith> can't do much, but you can at least pattern match on it
2021-08-20 23:45:02 +0200 <c_wraith> Which can cause things to happen
2021-08-20 23:45:14 +0200 <[exa]> o wow lowercase proxy
2021-08-20 23:45:17 +0200 <[exa]> gooooooooood
2021-08-20 23:45:26 +0200 <[exa]> (thanks!)
2021-08-20 23:45:51 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-08-20 23:46:14 +0200 <monochrom> This is why I would write "p k -> Word16" instead.
2021-08-20 23:47:50 +0200oxide(~lambda@user/oxide) (Ping timeout: 250 seconds)
2021-08-20 23:48:07 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 252 seconds)
2021-08-20 23:49:15 +0200 <hpc> just be careful, this is the gateway drug to f s t a b :D
2021-08-20 23:52:38 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-20 23:53:09 +0200 <ixlun> Hmm okay. I gave it ago, and I'm getting an error. Here is the full code: https://termbin.com/r6qo
2021-08-20 23:54:45 +0200 <hpc> might need scoped type variables?
2021-08-20 23:54:52 +0200 <monochrom> Yeah, that.
2021-08-20 23:55:06 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2021-08-20 23:56:35 +0200 <ixlun> Here is the error https://termbin.com/7klc
2021-08-20 23:56:44 +0200 <monochrom> local "foo :: Bar a" means "foo :: forall a. Bar a" i.e. "foo :: Bar nothing_to_do_with_other_types"
2021-08-20 23:57:46 +0200 <ixlun> Issue still persists with scoped type variables
2021-08-20 23:58:17 +0200 <monochrom> You do have to write more than turning on the extension.
2021-08-20 23:58:48 +0200 <monochrom> you have to now say "parseSection :: forall a m. (ParsableSection a, MonadError String m) => CodePlug -> ..."
2021-08-20 23:59:18 +0200 <ixlun> Ahh, so when I say 'p = Proxy :: Proxy a'. the 'a' is a different type variable and doesn 't refer to the ParsableSection 'a'?