2021/07/19

2021-07-19 00:00:39 +0200 <dsal> I think it's the date/time stuff that has fancy Show instances that just make life miserable when you have them in data structures.
2021-07-19 00:01:08 +0200 <lechner> i should not use UTCTime in JSON decls?
2021-07-19 00:01:13 +0200 <pavonia> Custom Show instances are a PITA if you have to debug things. Just don't do it
2021-07-19 00:01:22 +0200 <lechner> okay
2021-07-19 00:01:42 +0200 <monochrom> Established practice is still something to respect. Of course, "respect" allows exceptions. OK I'm on a fence, I'll stop now.
2021-07-19 00:02:04 +0200 <lechner> i'm just learning
2021-07-19 00:02:13 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-19 00:02:33 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-19 00:02:35 +0200fendor(~fendor@178.165.167.65.wireless.dyn.drei.com) (Remote host closed the connection)
2021-07-19 00:03:08 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-07-19 00:03:26 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
2021-07-19 00:04:01 +0200 <sm> for learning, do whatever you like :)
2021-07-19 00:04:34 +0200yauhsien_(~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-07-19 00:04:58 +0200 <exarkun> Where's the Haskell implementation of https://en.wikipedia.org/wiki/Turtle_graphics ?
2021-07-19 00:05:04 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-19 00:05:22 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
2021-07-19 00:05:52 +0200 <lechner> what's the precedence between $ and ++ please?
2021-07-19 00:06:55 +0200 <dminuoso> %i ($)
2021-07-19 00:07:05 +0200 <dminuoso> % :i ($)
2021-07-19 00:07:05 +0200 <yahb> dminuoso: ($) :: (a -> b) -> a -> b -- Defined in `GHC.Base'; infixr 0 $
2021-07-19 00:07:07 +0200 <dminuoso> % :i (++)
2021-07-19 00:07:08 +0200 <yahb> dminuoso: (++) :: [a] -> [a] -> [a] -- Defined in `GHC.Base'; infixr 5 ++
2021-07-19 00:07:18 +0200 <dminuoso> lechner: ^- See the fixity declarations?
2021-07-19 00:08:05 +0200 <dminuoso> The number is the precedence level
2021-07-19 00:08:09 +0200 <dsal> % :i (<>)
2021-07-19 00:08:09 +0200 <yahb> dsal: type GHC.Base.Semigroup :: * -> Constraint; class GHC.Base.Semigroup a where; (<>) :: a -> a -> a; ...; -- Defined in `GHC.Base'; infixr 6 <>
2021-07-19 00:08:17 +0200 <dsal> That's interesting.
2021-07-19 00:08:20 +0200 <dminuoso> And the `r` in infixr means its right-associative. We also have infixl for left associative
2021-07-19 00:08:28 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 246 seconds)
2021-07-19 00:09:02 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-07-19 00:09:23 +0200 <dminuoso> If no fixity is declared, an operator defaults to infixl 9.
2021-07-19 00:09:33 +0200 <lechner> dsal: ++ binds more tightly than $ right?
2021-07-19 00:09:41 +0200 <dminuoso> Yes.
2021-07-19 00:10:01 +0200 <monochrom> What do "0" and "5" tell you?
2021-07-19 00:10:18 +0200_xor(~xor@74.215.232.67) (Ping timeout: 268 seconds)
2021-07-19 00:10:32 +0200 <lechner> a relative ordering
2021-07-19 00:10:35 +0200 <dsal> I don't ever use ++. I just never considered ++ was lower than <>
2021-07-19 00:10:44 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-07-19 00:11:06 +0200 <lechner> what is <> please? i have only seen that in purescript
2021-07-19 00:11:14 +0200 <dsal> :t (<>)
2021-07-19 00:11:16 +0200 <lambdabot> Semigroup a => a -> a -> a
2021-07-19 00:11:17 +0200 <dsal> :t (++)
2021-07-19 00:11:19 +0200 <lambdabot> [a] -> [a] -> [a]
2021-07-19 00:11:35 +0200 <dsal> ++ only works for lists. <> is like ++ but works for many other types.
2021-07-19 00:11:39 +0200 <xsperry> lechner, you can think of it as a more general ++. it works with more than just lists
2021-07-19 00:12:02 +0200 <lechner> dsal: should is stick to concat instead of ++?
2021-07-19 00:12:29 +0200 <dsal> :t concat
2021-07-19 00:12:30 +0200 <lambdabot> Foldable t => t [a] -> [a]
2021-07-19 00:12:31 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-19 00:12:37 +0200 <dsal> :t fold
2021-07-19 00:12:39 +0200 <lambdabot> (Foldable t, Monoid m) => t m -> m
2021-07-19 00:12:51 +0200 <dsal> That doesn't do the same thing, but depending on what you're doing, it might be better.
2021-07-19 00:13:18 +0200 <dsal> I use <> often, I just don't use ++. You can use ++ if you like. I was just commenting on the precedence.
2021-07-19 00:14:41 +0200 <dsal> I've got logging functions like `logErrorL, logInfoL, logDbgL :: (Foldable f, MonadLogger m) => f T.Text-> m ()` which are helpful when I want to log a list of Texts. e.g., `logInfoL = logInfoN . fold`
2021-07-19 00:19:55 +0200hexfive(~eric@50.35.83.177)
2021-07-19 00:19:55 +0200zangi(~zangi@103.154.230.230) (Read error: Connection reset by peer)
2021-07-19 00:21:23 +0200Guest31(~Guest31@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Client closed)
2021-07-19 00:27:12 +0200 <lechner> are those two lines acceptable for a newbie? https://dpaste.org/sqiW#L96,97
2021-07-19 00:27:33 +0200ph88^(~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c) (Read error: Connection reset by peer)
2021-07-19 00:27:56 +0200ph88^(~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de)
2021-07-19 00:28:48 +0200 <dminuoso> Looks fine.
2021-07-19 00:29:12 +0200 <lechner> thanks to everyone for your help!
2021-07-19 00:29:22 +0200 <dminuoso> The `nice 19` looks dubious though.
2021-07-19 00:29:48 +0200 <lechner> what should it look like?
2021-07-19 00:30:48 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-19 00:31:08 +0200 <lechner> I'm trying to do this: https://salsa.debian.org/lintian/kickoff/-/blob/master/runner#L57
2021-07-19 00:31:36 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-19 00:31:50 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-07-19 00:34:05 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 244 seconds)
2021-07-19 00:34:46 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-19 00:35:03 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
2021-07-19 00:35:40 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-07-19 00:37:34 +0200azeem(~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Remote host closed the connection)
2021-07-19 00:37:44 +0200azeem(~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it)
2021-07-19 00:44:29 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Ping timeout: 258 seconds)
2021-07-19 00:44:34 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-19 00:45:55 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 00:47:27 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-19 00:48:54 +0200chomwitt(~Pitsikoko@athedsl-32487.home.otenet.gr) (Quit: Leaving)
2021-07-19 00:49:07 +0200chomwitt(~chomwitt@2a02:587:dc04:b400:12c3:7bff:fe6d:d374)
2021-07-19 00:51:00 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-07-19 00:52:55 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2021-07-19 00:54:15 +0200chomwitt(~chomwitt@2a02:587:dc04:b400:12c3:7bff:fe6d:d374) (Leaving)
2021-07-19 00:56:54 +0200acidjnk(~acidjnk@p200300d0c72b9531605cd8043a67e221.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2021-07-19 00:57:09 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 255 seconds)
2021-07-19 00:57:18 +0200acidjnk(~acidjnk@p200300d0c72b9531605cd8043a67e221.dip0.t-ipconnect.de)
2021-07-19 00:57:24 +0200vysn(~vysn@user/vysn) (Quit: WeeChat 3.0.1)
2021-07-19 00:58:14 +0200vysn(~vysn@user/vysn)
2021-07-19 00:58:38 +0200vysn(~vysn@user/vysn) (Client Quit)
2021-07-19 00:58:44 +0200acid(~acid@user/acid) (Read error: Connection reset by peer)
2021-07-19 00:58:52 +0200acid(~acid@2a01:4f9:c010:898a::1)
2021-07-19 00:59:07 +0200econo(uid147250@user/econo)
2021-07-19 00:59:15 +0200acidGuest152
2021-07-19 01:03:14 +0200smichel17[m]silly17[m]
2021-07-19 01:05:32 +0200 <lechner> why do ++ and concat not do the same thing, please?
2021-07-19 01:05:51 +0200 <int-e> they have different types?
2021-07-19 01:06:39 +0200 <geekosaur> what do you mean by "not do the same thing"?
2021-07-19 01:06:45 +0200 <geekosaur> :t (++)
2021-07-19 01:06:46 +0200 <lambdabot> [a] -> [a] -> [a]
2021-07-19 01:06:46 +0200 <int-e> concat takes a list of lists (well, a traversable of lists, but let's simplify) and appends those; ++ takes two lists and appends them
2021-07-19 01:06:58 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2021-07-19 01:06:58 +0200 <geekosaur> :t concat
2021-07-19 01:06:59 +0200 <lambdabot> Foldable t => t [a] -> [a]
2021-07-19 01:07:04 +0200 <int-e> foldable, my bad
2021-07-19 01:07:14 +0200 <int-e> Why do we use "t" for a Foldable.
2021-07-19 01:07:27 +0200cheater(~Username@user/cheater)
2021-07-19 01:07:47 +0200 <lechner> are they different when used with String?
2021-07-19 01:07:55 +0200 <int-e> (That's what misled me, though it shouldn't have.)
2021-07-19 01:07:58 +0200 <geekosaur> I think this may be ghc inferring a type and calling it "t" because that's the default
2021-07-19 01:08:07 +0200 <int-e> > concat ["a","b","c"]
2021-07-19 01:08:09 +0200 <lambdabot> "abc"
2021-07-19 01:08:09 +0200 <geekosaur> lechner, a String is just a list of Char
2021-07-19 01:08:11 +0200 <int-e> > "a" ++ "b"
2021-07-19 01:08:12 +0200 <lambdabot> "ab"
2021-07-19 01:08:19 +0200 <int-e> it's still a completely different type
2021-07-19 01:08:37 +0200 <dsal> Two things and a list of two things are not the same type.
2021-07-19 01:08:58 +0200 <int-e> You can rewrite xs ++ ys as concat [xs,ys] if you like.
2021-07-19 01:09:22 +0200 <lechner> that's what i meant. thanks!
2021-07-19 01:09:27 +0200 <int-e> (it may come at a small performance penalty)
2021-07-19 01:09:34 +0200 <int-e> (I haven't checked)
2021-07-19 01:10:22 +0200 <lechner> performance is a binary event here atm
2021-07-19 01:11:55 +0200 <int-e> Checked, evidently concat [xs, ys] gets rewritten to xs ++ ys, so there's no difference.
2021-07-19 01:12:10 +0200 <int-e> (when compiling with ghc with optimizations enabled)
2021-07-19 01:12:46 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-19 01:13:41 +0200 <int-e> I don't know what "binary event" means.
2021-07-19 01:13:44 +0200 <arahael> The joy of a bit of early-morning haskell before work. :D
2021-07-19 01:14:08 +0200 <beaky> hello does ghc do whole program optimization like mlton
2021-07-19 01:14:24 +0200 <arahael> It's _remarkable_ how one can get by with sloppy code in haskell: You can trivially and painlessly refactor it. So nice.
2021-07-19 01:15:18 +0200 <int-e> beaky: no, it compiles modules separately, though there's inlining across modules for small functions.
2021-07-19 01:17:27 +0200 <arahael> int-e: There was this last year, though: https://www.patreon.com/posts/introducing-ghc-38173710 Has anything happened in that space since then or has it fizzled out?
2021-07-19 01:18:45 +0200 <int-e> I don't really know. I saw that there was some discussion on GRIN on here 2 hours ago...
2021-07-19 01:19:43 +0200 <geekosaur> there is apparently still some ongoing work but it hasn't been upstreamed and isn't yet usable in production
2021-07-19 01:19:54 +0200cjb(~cjb@user/cjb)
2021-07-19 01:21:12 +0200silly17[m]smichel17[m]
2021-07-19 01:21:49 +0200 <int-e> Or is that 26 hours ago, my client has no dates in the timestamp, and my feeling for time is all messed up
2021-07-19 01:22:39 +0200 <arahael> I'm personally a bit torn between thinking that that research is awesome - and or wishing that compilation took way less memory, even though memory doesn't seem to affect me because I never have less than 16 GB of RAM these days.
2021-07-19 01:23:25 +0200 <geekosaur> 26 hours ago more likely
2021-07-19 01:23:37 +0200 <geekosaur> was when I was in the discussion at least
2021-07-19 01:24:18 +0200 <int-e> cf. https://paste.debian.net/hidden/d3d82af6/
2021-07-19 01:25:17 +0200 <int-e> Yes, it was 26 hours ago. I still don't know whether it's related to that patreon thing. The topic clearly overlaps heavily.
2021-07-19 01:26:10 +0200 <int-e> (don't bookmark that paste, I set it to expire in 24h)
2021-07-19 01:27:15 +0200 <geekosaur> people can get it from ircbrowse if they want it :)
2021-07-19 01:27:40 +0200 <geekosaur> admittedly it'd help if it were searchable, but can't have everything
2021-07-19 01:29:29 +0200 <geekosaur> that was the one I was talking about, at least. don't know with 100% certainty it was the one dmj` intended, but it seemed to match up
2021-07-19 01:33:57 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 265 seconds)
2021-07-19 01:34:41 +0200acidjnk(~acidjnk@p200300d0c72b9531605cd8043a67e221.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2021-07-19 01:36:07 +0200caubert(~caubert@136.244.111.235) (Quit: WeeChat 3.1)
2021-07-19 01:38:48 +0200caubert(~caubert@136.244.111.235)
2021-07-19 01:39:44 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-19 01:41:13 +0200ph88^(~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Ping timeout: 258 seconds)
2021-07-19 01:42:43 +0200ph88^(~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c)
2021-07-19 01:42:47 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
2021-07-19 01:48:22 +0200caubert(~caubert@136.244.111.235) (Quit: WeeChat 3.2)
2021-07-19 01:50:01 +0200caubert(~caubert@136.244.111.235)
2021-07-19 01:50:43 +0200dajoer(~david@user/gvx)
2021-07-19 01:54:57 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-19 01:55:03 +0200phma(phma@2001:5b0:211f:63f8:7d7f:3315:17e4:ee3e) (Read error: Connection reset by peer)
2021-07-19 01:55:31 +0200_xor(~xor@74.215.232.67)
2021-07-19 01:58:15 +0200phma(phma@2001:0:c38c:c38c:3cee:b989:bcd3:2f3d)
2021-07-19 02:04:52 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-19 02:07:48 +0200phma(phma@2001:0:c38c:c38c:3cee:b989:bcd3:2f3d) (Ping timeout: 255 seconds)
2021-07-19 02:07:50 +0200phma_(phma@2001:5b0:211f:1178:dd66:934e:c06f:5919)
2021-07-19 02:10:14 +0200Null_A(~null_a@2601:645:8700:2290:a961:38e5:e25d:7cd0) ()
2021-07-19 02:10:17 +0200phma_phma
2021-07-19 02:11:34 +0200machinedgod(~machinedg@24.105.81.50)
2021-07-19 02:13:19 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
2021-07-19 02:14:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
2021-07-19 02:15:38 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-19 02:18:21 +0200 <dminuoso> Mmm. Im doing an URL style percent encoding/decoding of bytestring. I have two Word8 and want to prepend them to a ByteString, what's the efficient way to do this here?
2021-07-19 02:19:32 +0200 <Axman6> I would have a look at the bytestring-base16 code to find efficient ways to do things. otherwise I'd probably just say use a builder if it's likely you'll be doing more appends/prepends
2021-07-19 02:21:33 +0200 <dminuoso> I was thinking along the lines of: let dualton c1 c2 = unsafeCreate 2 $ \p -> poke p c1 >> poke (p `plusPtr` 1) c2 in dualton x1 x2 <> rest
2021-07-19 02:21:45 +0200 <dminuoso> Axman6: Mmm.
2021-07-19 02:22:10 +0200 <dminuoso> Ah, yes. Perhaps that is the better way indeed
2021-07-19 02:22:57 +0200 <Axman6> if you know exactly how large the result will be there's definitely tricks to make it fast, but usually if the question is ')how do I construct a bytestring from parts" the answer is Builder
2021-07-19 02:23:52 +0200smtnet3(~asdfasdfa@202.36.244.28) (Quit: Leaving)
2021-07-19 02:26:36 +0200 <dminuoso> Mmm, so on the outside Im inside conduit. Maybe there's a way to stream a bytestring builder into a conduit
2021-07-19 02:27:21 +0200 <dminuoso> Apparently not, but that's fine
2021-07-19 02:28:03 +0200zebrag(~chris@user/zebrag)
2021-07-19 02:29:03 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-07-19 02:29:46 +0200 <dminuoso> @tell burnsidesLlama It just occured to me, that the generalization you are looking for is `scanl` or `scanr`.
2021-07-19 02:29:46 +0200 <lambdabot> Consider it noted.
2021-07-19 02:32:22 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-19 02:32:42 +0200Atum_(~IRC@user/atum/x-2392232) (Ping timeout: 240 seconds)
2021-07-19 02:36:38 +0200 <Axman6> dminuoso: using https://hackage.haskell.org/package/bytestring-0.11.1.0/docs/Data-ByteString-Builder-Internal.html… you can efficiently stream a bytestring
2021-07-19 02:40:20 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 02:41:38 +0200 <Axman6> ... maybe, actually struggling to see how to take in Builders and then use that
2021-07-19 02:42:41 +0200TtechAdran
2021-07-19 02:44:42 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
2021-07-19 02:44:52 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-19 02:45:00 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d)
2021-07-19 02:56:24 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-19 02:58:05 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-07-19 03:02:47 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-19 03:02:53 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 255 seconds)
2021-07-19 03:03:36 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-19 03:05:00 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 03:07:59 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-07-19 03:12:16 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-19 03:17:26 +0200enemeth79(uid309041@id-309041.tooting.irccloud.com)
2021-07-19 03:18:37 +0200meinside_(uid24933@id-24933.brockwell.irccloud.com)
2021-07-19 03:19:00 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
2021-07-19 03:23:09 +0200xff0x_(~xff0x@2001:1a81:525b:ea00:e4bc:612d:f531:cac7) (Ping timeout: 250 seconds)
2021-07-19 03:25:10 +0200xff0x_(~xff0x@2001:1a81:5299:ea00:490d:5ed2:61e8:145d)
2021-07-19 03:25:57 +0200dre(~dre@2001:8003:c932:c301:e078:5df6:bd54:b22a)
2021-07-19 03:27:39 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-19 03:29:29 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-07-19 03:29:53 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 03:34:53 +0200derelict(~derelict@user/derelict)
2021-07-19 03:40:35 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-07-19 03:43:32 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-07-19 03:44:08 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 03:44:15 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-19 03:46:21 +0200ph88^(~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c) (Ping timeout: 255 seconds)
2021-07-19 03:47:15 +0200smichel17(~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17)
2021-07-19 03:49:14 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-19 03:49:50 +0200shailangsa(~shailangs@host86-145-14-107.range86-145.btcentralplus.com) (Ping timeout: 268 seconds)
2021-07-19 03:50:40 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-07-19 03:51:56 +0200alx741(~alx741@186.178.109.120) (Quit: alx741)
2021-07-19 04:00:19 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
2021-07-19 04:01:24 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-19 04:01:46 +0200ph88^(~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c)
2021-07-19 04:06:20 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-19 04:11:02 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-07-19 04:12:38 +0200td_(~td@muedsl-82-207-238-204.citykom.de) (Ping timeout: 258 seconds)
2021-07-19 04:13:52 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-19 04:14:20 +0200td_(~td@muedsl-82-207-238-108.citykom.de)
2021-07-19 04:15:11 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-07-19 04:15:11 +0200FinnElijaGuest3119
2021-07-19 04:15:11 +0200Guest3119(~finn_elij@user/finn-elija/x-0085643) (Killed (strontium.libera.chat (Nickname regained by services)))
2021-07-19 04:15:11 +0200finn_elijaFinnElija
2021-07-19 04:16:58 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-07-19 04:17:07 +0200cheater(~Username@user/cheater)
2021-07-19 04:19:23 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-07-19 04:20:15 +0200h98(~h98@187.83.249.216.dyn.smithville.net)
2021-07-19 04:25:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-19 04:25:58 +0200shailangsa(~shailangs@host86-186-191-14.range86-186.btcentralplus.com)
2021-07-19 04:29:18 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
2021-07-19 04:35:28 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
2021-07-19 04:38:19 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-19 04:40:02 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-19 04:40:46 +0200 <dmj`> int-e: there is a patreon for GRIN work yes
2021-07-19 04:41:13 +0200 <dmj`> Some of what I said is related to that
2021-07-19 04:41:55 +0200chris_(~chris@81.96.113.213)
2021-07-19 04:44:10 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-07-19 04:44:12 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-07-19 04:44:57 +0200allbery_bgeekosaur
2021-07-19 04:44:57 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 04:46:42 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-19 04:49:10 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-07-19 04:52:27 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-19 04:56:57 +0200jushur(~human@user/jushur) (Quit: ¯\_(ツ)_/¯)
2021-07-19 04:59:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
2021-07-19 05:00:51 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-07-19 05:01:41 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
2021-07-19 05:02:35 +0200vicfred(~vicfred@user/vicfred)
2021-07-19 05:05:12 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 05:11:10 +0200GeorgeArmani(~GeorgeArm@76-236-222-208.lightspeed.tukrga.sbcglobal.net)
2021-07-19 05:11:30 +0200 <GeorgeArmani> Can someone help me understand this error message ?
2021-07-19 05:11:32 +0200 <GeorgeArmani> any' :: (a -> Bool) -> a -> Bool
2021-07-19 05:11:32 +0200 <GeorgeArmani> any' f xs = foldl step False xs where
2021-07-19 05:11:33 +0200 <GeorgeArmani> step acc (y:ys)
2021-07-19 05:11:33 +0200 <GeorgeArmani> | f y = True
2021-07-19 05:11:34 +0200 <GeorgeArmani> | otherwise = acc
2021-07-19 05:11:41 +0200 <GeorgeArmani> Fold.hs:52:30: error:
2021-07-19 05:11:42 +0200 <GeorgeArmani> • Occurs check: cannot construct the infinite type: a ~ t0 [a]
2021-07-19 05:11:42 +0200 <GeorgeArmani> • In the third argument of ‘foldl’, namely ‘xs’
2021-07-19 05:11:43 +0200 <GeorgeArmani> In the expression: foldl step False xs
2021-07-19 05:11:43 +0200 <GeorgeArmani> In an equation for ‘any'’:
2021-07-19 05:11:44 +0200 <GeorgeArmani> any' f xs
2021-07-19 05:11:44 +0200 <GeorgeArmani> = foldl step False xs
2021-07-19 05:11:45 +0200 <GeorgeArmani> where
2021-07-19 05:11:45 +0200 <GeorgeArmani> step acc (y : ys)
2021-07-19 05:11:46 +0200 <GeorgeArmani> | f y = True
2021-07-19 05:11:46 +0200 <GeorgeArmani> | otherwise = acc
2021-07-19 05:12:28 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-07-19 05:13:31 +0200 <geekosaur> please don't paste directly into the channel like that
2021-07-19 05:13:32 +0200 <Axman6> @where paste
2021-07-19 05:13:32 +0200 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2021-07-19 05:14:55 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 05:14:59 +0200 <geekosaur> but it's telling you that 'a' cannot at the same time be a Foldable over a list and an element of that list
2021-07-19 05:15:15 +0200 <GeorgeArmani> https://paste.tomsmeding.com/qsfDJyUC#file-1
2021-07-19 05:15:16 +0200 <Axman6> yeah take a close look at the type you've given any'
2021-07-19 05:15:18 +0200 <geekosaur> think about your type signature
2021-07-19 05:15:33 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-07-19 05:15:54 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
2021-07-19 05:18:15 +0200 <geekosaur> it may also be helpful to give step the type signature you think it should have
2021-07-19 05:18:30 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-19 05:19:23 +0200peterhil(~peterhil@mobile-access-b04801-219.dhcp.inet.fi)
2021-07-19 05:19:40 +0200wei2912(~wei2912@112.199.250.21)
2021-07-19 05:24:01 +0200Guest152(~acid@2a01:4f9:c010:898a::1) (Changing host)
2021-07-19 05:24:01 +0200Guest152(~acid@user/acid)
2021-07-19 05:24:13 +0200Guest152acid
2021-07-19 05:26:28 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2021-07-19 05:26:39 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
2021-07-19 05:26:41 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-19 05:27:01 +0200enemeth79(uid309041@id-309041.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-19 05:30:00 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-19 05:33:40 +0200Null_A(~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d)
2021-07-19 05:34:28 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-19 05:38:22 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-19 05:38:48 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-19 05:39:44 +0200 <GeorgeArmani> I'm really having a tough time sorting that out
2021-07-19 05:41:22 +0200 <geekosaur> what does the type "a" in your type signature represent?
2021-07-19 05:41:49 +0200 <geekosaur> remember that it's going to be the same type everywhere in that signature
2021-07-19 05:43:29 +0200 <GeorgeArmani> I think it should be a list every time its used?
2021-07-19 05:43:48 +0200 <geekosaur> is it in (a -> Bool)?
2021-07-19 05:44:45 +0200TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-07-19 05:47:05 +0200 <GeorgeArmani> ahhhh so should it be ------- any' :: (a -> Bool) -> [a] -> Bool
2021-07-19 05:47:15 +0200 <geekosaur> yes
2021-07-19 05:49:09 +0200 <geekosaur> I suspect from your original error that this will only fix one problem, though
2021-07-19 05:49:25 +0200 <GeorgeArmani> correct
2021-07-19 05:49:39 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
2021-07-19 05:50:45 +0200 <GeorgeArmani> In fact, I had that type signature originally but changed it to deal with this error https://paste.tomsmeding.com/ntGaaQnX
2021-07-19 05:51:42 +0200 <GeorgeArmani> Wait just putting [xs] like that worked
2021-07-19 05:52:05 +0200 <GeorgeArmani> https://paste.tomsmeding.com/qirkhcRw
2021-07-19 05:52:10 +0200 <GeorgeArmani> Im not sure why though
2021-07-19 05:53:26 +0200derelict(~derelict@user/derelict) (Ping timeout: 255 seconds)
2021-07-19 05:54:20 +0200aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-07-19 05:55:08 +0200 <GeorgeArmani> I get it now. Thanks Geekosaur.
2021-07-19 05:55:53 +0200 <geekosaur> yeh, you are splitting the list in step as well when you don't need to because fold already is
2021-07-19 05:56:25 +0200 <geekosaur> so it thinks you need a list of lists. that's why I suggested putting a type signature on step
2021-07-19 05:56:37 +0200 <GeorgeArmani> exactly, I deleted calling head in step and removed the [] around xs
2021-07-19 05:56:58 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-07-19 06:00:50 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 06:04:03 +0200 <GeorgeArmani> Sorry for asking so many questions. I am confused about the type signature for step.
2021-07-19 06:04:41 +0200 <GeorgeArmani> I thought it would be Bool -> a -> Bool , but it is throwing an error at compile
2021-07-19 06:07:51 +0200 <h98> what's your code right now? that type signature sounds right to me
2021-07-19 06:09:13 +0200 <GeorgeArmani> https://paste.tomsmeding.com/kU1zB95f
2021-07-19 06:09:30 +0200 <geekosaur> oh, right, this requires ScopedTypeVariables to specify a signature
2021-07-19 06:10:14 +0200derelict(~derelict@user/derelict)
2021-07-19 06:10:30 +0200 <geekosaur> otherwise the a you specify in the type signature for step is unrelated to the one specified for any', but that breaks f
2021-07-19 06:10:31 +0200 <GeorgeArmani> Ok ill look into that
2021-07-19 06:11:11 +0200 <geekosaur> sometimes ghc is annoying that way
2021-07-19 06:11:22 +0200 <h98> should compile as-is if you delete the type signature now
2021-07-19 06:11:42 +0200 <GeorgeArmani> ahhhh ok. That is a little frustrating.
2021-07-19 06:12:04 +0200 <GeorgeArmani> yeah h98 thank you. I just wanted to make sure that I understood what was going on fully.
2021-07-19 06:12:04 +0200 <geekosaur> yes, but I suggested adding the type signature, having forgotten it wouldn';t work :(
2021-07-19 06:12:42 +0200 <GeorgeArmani> All good :) . Appreciate the help, Geekosaur.
2021-07-19 06:13:42 +0200benin03694(~benin@106.198.95.190)
2021-07-19 06:14:55 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-19 06:15:44 +0200benin0369(~benin@183.82.204.23) (Ping timeout: 265 seconds)
2021-07-19 06:15:44 +0200benin03694benin0369
2021-07-19 06:16:57 +0200falafel_(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-19 06:17:03 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
2021-07-19 06:18:59 +0200benin03699(~benin@183.82.205.17)
2021-07-19 06:19:05 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
2021-07-19 06:19:52 +0200Null_A(~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d) (Remote host closed the connection)
2021-07-19 06:20:53 +0200benin0369(~benin@106.198.95.190) (Ping timeout: 255 seconds)
2021-07-19 06:20:53 +0200benin03699benin0369
2021-07-19 06:26:42 +0200oxide(~lambda@user/oxide)
2021-07-19 06:27:51 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-19 06:30:06 +0200GeorgeArmani(~GeorgeArm@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Client closed)
2021-07-19 06:34:22 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-07-19 06:40:40 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection)
2021-07-19 06:41:08 +0200anandprabhu(anandprabh@gateway/vpn/airvpn/anandprabhu)
2021-07-19 06:41:13 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com)
2021-07-19 06:41:45 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-07-19 06:42:03 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-19 06:42:07 +0200geekosaurbrandon
2021-07-19 06:45:02 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-07-19 06:45:13 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 06:47:58 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-07-19 06:48:36 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds)
2021-07-19 06:52:56 +0200 <lechner> Hi, is it possible to catch decompression errors from LZMA here? https://salsa.debian.org/lintian/kickoff/-/blob/master/Collect.hs#L82
2021-07-19 06:54:12 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-07-19 06:55:46 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
2021-07-19 06:56:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-19 07:00:01 +0200ChanServ(ChanServ@services.libera.chat) (shutting down)
2021-07-19 07:00:04 +0200cheater(~Username@user/cheater) (Remote host closed the connection)
2021-07-19 07:00:24 +0200azeem(~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Remote host closed the connection)
2021-07-19 07:00:48 +0200ChanServ(ChanServ@services.libera.chat)
2021-07-19 07:00:48 +0200cadmium.libera.chat+o ChanServ
2021-07-19 07:01:39 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
2021-07-19 07:04:00 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-19 07:04:32 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 07:04:55 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 07:07:10 +0200falafel_(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-07-19 07:10:48 +0200 <dsal> lechner: It uses MonadFail. You could use exceptions
2021-07-19 07:10:52 +0200 <dsal> @package exceptions
2021-07-19 07:10:53 +0200 <lambdabot> https://hackage.haskell.org/package/exceptions
2021-07-19 07:12:06 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-07-19 07:14:28 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-07-19 07:20:27 +0200Null_A(~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d)
2021-07-19 07:22:12 +0200jneira(~jneira@212.8.115.226)
2021-07-19 07:24:13 +0200 <Hecate> o/
2021-07-19 07:24:26 +0200 <Hecate> I'm trying to better understand how I can use Comonad in my programs
2021-07-19 07:25:04 +0200 <Hecate> I've seen *one* usage of Comonad in a codebase, in which it acted as a priviledged accessor, like https://twitter.com/TechnoEmpress/status/1416992128643776513
2021-07-19 07:26:04 +0200 <Hecate> but I think the usecase really stops at running "whatever <- asks extract"
2021-07-19 07:27:01 +0200 <Hecate> But then it feels more like I've created one more indirection
2021-07-19 07:27:54 +0200 <Hecate> that being said if I need more polymorphism on the 'Comonad r' this could be good
2021-07-19 07:30:15 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-07-19 07:30:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
2021-07-19 07:32:05 +0200 <lechner> dsal: thanks!
2021-07-19 07:32:57 +0200derelict(~derelict@user/derelict) (Quit: WeeChat 3.2)
2021-07-19 07:41:00 +0200Guest95(~Guest95@50.47.115.102)
2021-07-19 07:43:02 +0200 <Guest95> Hello! I currently use Spacemacs as my Haskell code editor. What code editor would you recommend? Is Yi worth looking in to?
2021-07-19 07:43:24 +0200mthvedt(uid501949@id-501949.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-19 07:46:17 +0200 <Hecate> Guest95: Yi was an interesting project but I fear it may be dead these days
2021-07-19 07:46:31 +0200paolino(~paolo@84.33.141.5)
2021-07-19 07:46:33 +0200 <Hecate> Guest95: I use neovim + lua plugins and config (if you're allergic to too much VimL)
2021-07-19 07:46:34 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2021-07-19 07:50:41 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
2021-07-19 07:53:15 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-19 07:54:12 +0200Null_A(~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d) (Read error: Connection reset by peer)
2021-07-19 07:55:07 +0200dre(~dre@2001:8003:c932:c301:e078:5df6:bd54:b22a) (Quit: Leaving)
2021-07-19 07:56:49 +0200Guest95(~Guest95@50.47.115.102) (Quit: Client closed)
2021-07-19 07:56:50 +0200 <lechner> Thanks for the pointer to yi. I may have found a minimal replacement for things like commit messages for mg, which is even less maintained and can't do Unicode
2021-07-19 08:01:00 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-19 08:03:17 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 268 seconds)
2021-07-19 08:05:23 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-19 08:05:47 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 08:11:47 +0200Guest55(~Guest55@50.47.115.102)
2021-07-19 08:15:07 +0200dre(~dre@2001:8003:c932:c301:9820:d974:d4b6:d3c4)
2021-07-19 08:26:24 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-07-19 08:26:43 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2021-07-19 08:31:22 +0200vysn(~vysn@user/vysn)
2021-07-19 08:32:22 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-19 08:34:39 +0200ishutin(~ishutin@85-238-93-30.pool.digikabel.hu)
2021-07-19 08:42:16 +0200jjhoo_jjhoo
2021-07-19 08:42:55 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-19 08:47:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-07-19 08:48:33 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-07-19 08:50:26 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds)
2021-07-19 08:51:31 +0200oxide(~lambda@user/oxide) (Read error: Connection reset by peer)
2021-07-19 08:51:55 +0200kuribas(~user@ptr-25vy0i7jsa6kv1vvjg7.18120a2.ip6.access.telenet.be)
2021-07-19 08:57:17 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-19 08:57:39 +0200chele(~chele@user/chele)
2021-07-19 08:58:33 +0200aman(~aman@user/aman)
2021-07-19 08:59:05 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-07-19 09:00:27 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 255 seconds)
2021-07-19 09:01:46 +0200aman(~aman@user/aman) (Client Quit)
2021-07-19 09:02:56 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-19 09:05:33 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-07-19 09:07:25 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2021-07-19 09:08:04 +0200fendor(~fendor@77.119.223.215.wireless.dyn.drei.com)
2021-07-19 09:09:55 +0200h98(~h98@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
2021-07-19 09:11:38 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-19 09:12:29 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-07-19 09:16:41 +0200KUrare(~KUrare@user/kurare)
2021-07-19 09:16:55 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8)
2021-07-19 09:17:05 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-07-19 09:17:13 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-19 09:20:52 +0200KUrare(~KUrare@user/kurare) (Ping timeout: 252 seconds)
2021-07-19 09:21:03 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-07-19 09:24:54 +0200smtnet3(~asdfasdfa@202.36.244.28)
2021-07-19 09:26:33 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-19 09:26:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-19 09:28:48 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 09:28:57 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
2021-07-19 09:30:35 +0200hseg(~gesh@185.120.126.10)
2021-07-19 09:31:11 +0200brandon(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-07-19 09:31:16 +0200analognoise1(~analognoi@2600:8801:8c26:9e00:cdb0:ec42:cea0:b1e2)
2021-07-19 09:32:12 +0200analognoise(~analognoi@83.136.182.93) (Ping timeout: 245 seconds)
2021-07-19 09:34:08 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-19 09:34:12 +0200geekosaurbrandon
2021-07-19 09:39:25 +0200__monty__(~toonn@user/toonn)
2021-07-19 09:41:25 +0200Guest55(~Guest55@50.47.115.102) (Ping timeout: 246 seconds)
2021-07-19 09:41:32 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-07-19 09:41:47 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-07-19 09:44:33 +0200analognoise1(~analognoi@2600:8801:8c26:9e00:cdb0:ec42:cea0:b1e2) (Ping timeout: 255 seconds)
2021-07-19 09:47:15 +0200Brianmancer(~Neuromanc@user/briandamag) (Ping timeout: 255 seconds)
2021-07-19 09:51:33 +0200acidjnk(~acidjnk@p200300d0c72b9531f8c9d06c34eef88c.dip0.t-ipconnect.de)
2021-07-19 09:57:11 +0200isekaijin(~pyon@user/pyon) (Quit: WeeChat 3.2)
2021-07-19 09:59:29 +0200dre(~dre@2001:8003:c932:c301:9820:d974:d4b6:d3c4) (Quit: Leaving)
2021-07-19 09:59:33 +0200michalz(~michalz@185.246.204.55)
2021-07-19 10:06:37 +0200hendursa1(~weechat@user/hendursaga)
2021-07-19 10:09:39 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-07-19 10:11:35 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-19 10:12:29 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-07-19 10:17:32 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it)
2021-07-19 10:17:34 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-07-19 10:20:06 +0200brandon(~geekosaur@xmonad/geekosaur) (Ping timeout: 255 seconds)
2021-07-19 10:24:49 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 10:28:39 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-07-19 10:30:00 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-07-19 10:31:05 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
2021-07-19 10:31:17 +0200Lord_of_Life_Lord_of_Life
2021-07-19 10:31:49 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 246 seconds)
2021-07-19 10:33:21 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-07-19 10:36:14 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 10:37:16 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-19 10:38:19 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-07-19 10:38:45 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2021-07-19 10:40:12 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-19 10:40:24 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 10:40:32 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-19 10:41:04 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 10:45:23 +0200davros(~davros@host86-185-61-40.range86-185.btcentralplus.com)
2021-07-19 10:47:17 +0200guest719(~user@49.5.6.87)
2021-07-19 10:47:39 +0200lars8(~bc817c21@217.29.117.252)
2021-07-19 10:48:19 +0200 <guest719> why `traverse` would immediatly exit when it meet a Left a?
2021-07-19 10:48:51 +0200 <guest719> traverse (\i -> if odd i then Right () else Left i) [1..10]
2021-07-19 10:49:42 +0200 <lars8> > traverse (\i -> if odd i then Right () else Left i) [1..10]
2021-07-19 10:49:44 +0200 <lambdabot> Left 2
2021-07-19 10:51:41 +0200 <lars8> > sequence [Left 1, Right 2]
2021-07-19 10:51:42 +0200 <lambdabot> Left 1
2021-07-19 10:51:46 +0200 <lars8> @src sequence
2021-07-19 10:51:46 +0200 <lambdabot> sequence [] = return []
2021-07-19 10:51:46 +0200 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
2021-07-19 10:51:46 +0200 <lambdabot> --OR
2021-07-19 10:51:46 +0200 <lambdabot> sequence xs = foldr (liftM2 (:)) (return []) xs
2021-07-19 10:52:00 +0200 <lars8> does that help?
2021-07-19 10:52:50 +0200 <lars8> traverse f is basically sequence . map f
2021-07-19 10:53:22 +0200 <guest719> but why it meet Left a will early exit?
2021-07-19 10:53:48 +0200 <lars8> because that's what liftM2 does
2021-07-19 10:54:04 +0200 <guest719> @src liftM2
2021-07-19 10:54:04 +0200 <lambdabot> liftM2 f m1 m2 = do
2021-07-19 10:54:04 +0200 <lambdabot> x1 <- m1
2021-07-19 10:54:05 +0200 <lambdabot> x2 <- m2
2021-07-19 10:54:05 +0200 <lambdabot> return (f x1 x2)
2021-07-19 10:54:23 +0200 <lars8> > liftM2 (+) (Right 1) (Right 2)
2021-07-19 10:54:25 +0200 <lambdabot> Right 3
2021-07-19 10:54:35 +0200 <lars8> > liftM2 (+) (Right 1) (Left 2)
2021-07-19 10:54:36 +0200 <lambdabot> Left 2
2021-07-19 10:54:48 +0200 <dminuoso> guest719: `Either a`, like `Maybe`, models computations with exceptions.
2021-07-19 10:55:07 +0200 <dminuoso> So a `Left err` or `Nothing` has the same semantics as an exception, it shortcircuits the entire computation
2021-07-19 10:55:12 +0200 <lars8> if any argument is Left, entire computation is Left
2021-07-19 10:55:17 +0200 <guest719> oh, Left 2 will break the computation chain in >>=
2021-07-19 10:55:21 +0200 <dminuoso> Yes.
2021-07-19 10:55:52 +0200 <guest719> dminuoso and why it's that? define in >>= ?
2021-07-19 10:55:55 +0200 <dminuoso> guest719: Yes.
2021-07-19 10:56:26 +0200 <dminuoso> The applicative and monadic interface of `Maybe` and `Either s` simply models exceptions.
2021-07-19 10:56:27 +0200 <guest719> dminuoso except Left a and Nothing, is there other would break computation chain?
2021-07-19 10:56:30 +0200 <dminuoso> There's no deeper reason than that.
2021-07-19 10:56:37 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-19 10:56:39 +0200 <dminuoso> Sure there are others
2021-07-19 10:56:46 +0200 <guest719> for examples?
2021-07-19 10:57:06 +0200 <dminuoso> ExceptT
2021-07-19 10:57:19 +0200 <dminuoso> Though that's just an `Either s` in disguise
2021-07-19 10:57:36 +0200 <guest719> I can't help when you said Exception, I always think about run-time Exceptions
2021-07-19 10:57:48 +0200 <dminuoso> Yes, these are pretty much like runtime exceptions!
2021-07-19 10:57:51 +0200 <dminuoso> Consider:
2021-07-19 10:57:53 +0200 <guest719> why haskell would give it another name
2021-07-19 10:58:02 +0200 <dminuoso> These are value-level/user-defined exceptions
2021-07-19 10:58:02 +0200 <guest719> wouldn't
2021-07-19 10:58:38 +0200 <dminuoso> guest719: We also have regular RTS exceptions as you know them inside IO.
2021-07-19 10:58:48 +0200 <dminuoso> But in pure computations it might still be useful to have shortcircuiting semantics
2021-07-19 10:58:57 +0200 <dminuoso> Like with traverse.
2021-07-19 10:59:18 +0200 <dminuoso> Say you have a tree, and you want to process each node - but in a way that if you generate an error at any, that the entire computation is considered failed.
2021-07-19 10:59:46 +0200 <dminuoso> Then you can use `Maybe` or `Either s` (depending on whether you want to keep information about the error condition)
2021-07-19 11:00:06 +0200 <dminuoso> Then producing `Nothing` is semantically equivalent to throwing an exception, except we can do this in pure code and without any special support from the runtime system.
2021-07-19 11:00:20 +0200 <dminuoso> data Maybe a = Nothin | Just a
2021-07-19 11:00:25 +0200 <dminuoso> instance Monad Maybe where ...
2021-07-19 11:00:42 +0200 <dminuoso> Voila! You have created exception semantics on your own, no exception primitive support needed in the language.
2021-07-19 11:01:23 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 265 seconds)
2021-07-19 11:02:48 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-07-19 11:03:00 +0200 <albet70> can we think it as a failure computation?
2021-07-19 11:03:37 +0200 <albet70> what about 1/0?
2021-07-19 11:03:47 +0200 <albet70> 1/0 is an Exception?
2021-07-19 11:04:05 +0200 <albet70> IO failure is an Exception?
2021-07-19 11:05:09 +0200 <albet70> fmap (+1) Nothing would be an Exception?
2021-07-19 11:05:30 +0200 <dminuoso> `Nothing` acts as an exception, yes.
2021-07-19 11:05:55 +0200 <dminuoso> 1/0 is an interesting subject for several reasons
2021-07-19 11:06:46 +0200 <dminuoso> % :t (1/0)
2021-07-19 11:06:46 +0200 <yahb> dminuoso: ; <interactive>:1:3: error: Variable not in scope: (/) :: t0 -> t1 -> t
2021-07-19 11:06:59 +0200 <dminuoso> % :q
2021-07-19 11:06:59 +0200 <yahb> dminuoso:
2021-07-19 11:07:00 +0200 <dminuoso> % :t (1/0)
2021-07-19 11:07:01 +0200 <yahb> dminuoso: Fractional a => a
2021-07-19 11:07:06 +0200 <dminuoso> % :i Fractional
2021-07-19 11:07:08 +0200 <yahb> dminuoso: type Fractional :: * -> Constraint; class Num a => Fractional a where; (/) :: a -> a -> a; recip :: a -> a; fromRational :: Rational -> a; {-# MINIMAL fromRational, (recip | (/)) #-}; -- Defined in `GHC.Real'; instance Fractional a => Fractional (Identity a) -- Defined in `Data.Functor.Identity'; instance forall a k (b :: k). Fractional a => Fractional (Const a b) -- Defined in `Data.Functor.Co
2021-07-19 11:07:19 +0200 <dminuoso> % :t (/)
2021-07-19 11:07:20 +0200 <yahb> dminuoso: Fractional a => a -> a -> a
2021-07-19 11:07:34 +0200 <dminuoso> albet70: ^- so you see, this is either Float or Double, at which point IEEE 754 semantics apply.
2021-07-19 11:08:05 +0200 <dminuoso> Under which 1/0 is defined to be either positive or negative infinity (depending on the sign of 0)
2021-07-19 11:08:26 +0200 <dminuoso> So 1/0 is actually a well defined value, perhaps unintuitively.
2021-07-19 11:09:18 +0200 <dminuoso> But, what you probably meant is:
2021-07-19 11:09:22 +0200 <dminuoso> % 1 `div` 0
2021-07-19 11:09:22 +0200 <yahb> dminuoso: *** Exception: divide by zero
2021-07-19 11:09:31 +0200 <dminuoso> % :t div
2021-07-19 11:09:31 +0200 <yahb> dminuoso: Integral a => a -> a -> a
2021-07-19 11:09:46 +0200Patternmaster(~georg@li1192-118.members.linode.com) (Ping timeout: 252 seconds)
2021-07-19 11:09:58 +0200Patternmaster(~georg@li1192-118.members.linode.com)
2021-07-19 11:10:02 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-07-19 11:10:04 +0200 <albet70> yes, div 0
2021-07-19 11:10:07 +0200 <dminuoso> albet70: ^- so yeah, this is a partial computation. We could have also made it non-partial and given it the type `div :: Integral a => a -> a -> Maybe a`, which produces Nothing for that case.
2021-07-19 11:10:30 +0200jolly(~jolly@208.180.97.158) (Ping timeout: 252 seconds)
2021-07-19 11:12:02 +0200 <dminuoso> albet70: In general, it's better to encode a failure as `Maybe` or `Either s` rather than producing an error (like div does)
2021-07-19 11:12:34 +0200 <dminuoso> albet70: The reason is, you cant catch an `error` sensibly (its impossible in pure code, and you have imprecise error semantics if you try to do this from IO). error is really a sad part in Haskell.
2021-07-19 11:12:55 +0200 <dminuoso> But you can catch a Nothing just fine (you just pattern match with case-of)
2021-07-19 11:13:02 +0200 <dminuoso> Dont even need IO for that.
2021-07-19 11:14:21 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 11:15:25 +0200 <albet70> but haskell does try catch to capture runtime errors like IO error
2021-07-19 11:15:48 +0200 <albet70> and IO socket error, how to use Either to detect?
2021-07-19 11:16:01 +0200 <dminuoso> haskell does not try and catch runtime errors at all
2021-07-19 11:16:08 +0200 <dminuoso> They blow up your entire program
2021-07-19 11:17:30 +0200 <dminuoso> You have to explicitly catch them in IO
2021-07-19 11:17:44 +0200 <dminuoso> And it's subtly difficult to do this because of lazy evaluation
2021-07-19 11:17:47 +0200 <dminuoso> Consider
2021-07-19 11:17:49 +0200 <dminuoso> % :t evaluate
2021-07-19 11:17:49 +0200 <yahb> dminuoso: a -> IO a
2021-07-19 11:18:39 +0200 <dminuoso> This one only evaluates up until WHNF. You could still have errors lingering in not-yet-evaluated parts. There's tricks to get around this, but you need to be aware of this
2021-07-19 11:18:57 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-07-19 11:19:34 +0200 <dminuoso> It's why uses of `error` are highly discouraged, since it's completely unclear which library functions could possibly trigger an `error`. The most common one that regularly causes headaches for me is\
2021-07-19 11:19:36 +0200 <dminuoso> % :t read
2021-07-19 11:19:36 +0200 <yahb> dminuoso: Read a => String -> a
2021-07-19 11:19:56 +0200 <dminuoso> If you think about it, it should be dead obvious that this is *very* partial (by very I mean almost all strings produce an invalid result, only very few strings produce a parsable value)
2021-07-19 11:20:24 +0200 <dminuoso> But this type of error quickly bubbles up and cant be reasonably caught anymore
2021-07-19 11:20:55 +0200 <dminuoso> A way better function instead is:
2021-07-19 11:20:57 +0200 <dminuoso> % :t readMaybe
2021-07-19 11:20:57 +0200 <yahb> dminuoso: ; <interactive>:1:1: error: Variable not in scope: readMaybe
2021-07-19 11:21:07 +0200 <dminuoso> % import Data.Text (readMaybe)
2021-07-19 11:21:07 +0200 <yahb> dminuoso: ; <interactive>:1:19: error: Module `Data.Text' does not export `readMaybe'
2021-07-19 11:21:17 +0200 <dminuoso> % import Text.Read (readMaybe)
2021-07-19 11:21:18 +0200 <yahb> dminuoso:
2021-07-19 11:21:19 +0200 <dminuoso> % :t readMaybe
2021-07-19 11:21:19 +0200 <yahb> dminuoso: Read a => String -> Maybe a
2021-07-19 11:27:02 +0200rahguzar(~rahguzar@dynamic-adsl-94-34-39-251.clienti.tiscali.it)
2021-07-19 11:27:55 +0200azeem(~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it)
2021-07-19 11:28:04 +0200rahguzar(~rahguzar@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Client Quit)
2021-07-19 11:35:05 +0200dibblego(~dibblego@haskell/developer/dibblego) (Excess Flood)
2021-07-19 11:35:22 +0200dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2021-07-19 11:35:22 +0200dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2021-07-19 11:35:22 +0200dibblego(~dibblego@haskell/developer/dibblego)
2021-07-19 11:39:05 +0200tom__(~tom@2a00:23c8:9700:8001:a918:fa2c:4713:fcbd) (Remote host closed the connection)
2021-07-19 11:41:07 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 246 seconds)
2021-07-19 11:45:03 +0200dunj3(~dunj3@2001:16b8:3046:8200:9324:28de:5bca:d5dc)
2021-07-19 11:45:16 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 11:47:09 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-07-19 11:47:45 +0200peterhil(~peterhil@mobile-access-b04801-219.dhcp.inet.fi) (Ping timeout: 268 seconds)
2021-07-19 11:48:35 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 11:49:15 +0200jumper149(~jumper149@80.240.31.34)
2021-07-19 11:53:01 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 246 seconds)
2021-07-19 12:06:07 +0200 <guest719> dminuoso about traverse "<dminuoso> Say you have a tree, and you want to process each node - but in a way that if you generate an error at any, that the entire computation is considered failed." could we use foldr >=> pure here?
2021-07-19 12:06:36 +0200 <guest719> a bunch of function inside a list, then foldr
2021-07-19 12:07:08 +0200 <guest719> apply on this tree, if one node failed, then return immediatly
2021-07-19 12:14:45 +0200 <jumper149> Is it wrong to say "MonadPlus is obsolete"? Just like `return` is obsolete because of `pure`?
2021-07-19 12:16:00 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-19 12:16:04 +0200hexfive(~eric@50.35.83.177) (Quit: WeeChat 3.0)
2021-07-19 12:16:16 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-19 12:19:15 +0200xsperry(~as@user/xsperry) (Remote host closed the connection)
2021-07-19 12:19:25 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-19 12:20:44 +0200xsperry(~as@user/xsperry)
2021-07-19 12:21:23 +0200peterhil(~peterhil@mobile-access-b04801-219.dhcp.inet.fi)
2021-07-19 12:22:22 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-19 12:23:45 +0200moondog(~root@185.234.208.208.r.toneticgroup.pl)
2021-07-19 12:25:06 +0200 <moondog> hi, quick question, suppose I'd like to parse Haskell files to find particular method calls and it's argument types, where should I start? Is there any tooling for that to avoid writing everything from scratch?
2021-07-19 12:25:24 +0200 <dminuoso> guest719: Firstly, `f >=> pure = f`
2021-07-19 12:25:25 +0200Brianmancer(~Neuromanc@user/briandamag)
2021-07-19 12:25:44 +0200 <dminuoso> guest719: And what you are thinking of already is traverse precisely.
2021-07-19 12:25:47 +0200 <dminuoso> % :t traverse
2021-07-19 12:25:47 +0200 <yahb> dminuoso: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
2021-07-19 12:26:33 +0200 <guest719> dminuoso fmap can't do early exit because it's type, but >>= can do early exit
2021-07-19 12:26:48 +0200 <dminuoso> guest719: Yes, and traverse uses >> internally
2021-07-19 12:26:56 +0200 <dminuoso> (So it's a bit more general even)
2021-07-19 12:26:56 +0200 <guest719> dminuoso I remeber there're different between fmap and >>=
2021-07-19 12:27:10 +0200 <dminuoso> % :t (>>)
2021-07-19 12:27:10 +0200 <yahb> dminuoso: Monad m => m a -> m b -> m b
2021-07-19 12:27:11 +0200 <guest719> >>= can do if-else, and fmap can't do if-else
2021-07-19 12:27:17 +0200 <dminuoso> Well, strictly speaking:
2021-07-19 12:27:20 +0200 <dminuoso> % :t (*>)
2021-07-19 12:27:20 +0200 <yahb> dminuoso: Applicative f => f a -> f b -> f b
2021-07-19 12:27:54 +0200 <dminuoso> guest719: `traverse` can be thought to use (*>) internally, which is just an Applicative version of >>
2021-07-19 12:28:04 +0200 <dminuoso> Roughly the idea is:
2021-07-19 12:29:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-19 12:29:39 +0200 <dminuoso> We take this function (a -> f b) (say `String -> IO Int`)from above, and we `fmap` over the structure (say `[String]`). Then, each value is replaced with a computation of some type (say `IO Int`), so the whole structure then is `[IO Int]`.
2021-07-19 12:29:55 +0200 <dibblego> you might be thinking of traverse_
2021-07-19 12:29:58 +0200 <dminuoso> Then we `sequence` this, which turns `[IO Int] -> IO [Int]`
2021-07-19 12:32:32 +0200 <dminuoso> Imagine this to be: sequence (x:xs) = (:) <$> x <*> sequence xs; sequence [] = pure []
2021-07-19 12:32:58 +0200 <dminuoso> dibblego: Ah yeah. I guess that was wrong of me.
2021-07-19 12:33:06 +0200 <dminuoso> While I was typing the definition, I realized my mistake.
2021-07-19 12:33:44 +0200 <dminuoso> % mySequence (x:xs) = (:) <$> x <*> mySequence xs; mySequence [] = pure []
2021-07-19 12:33:44 +0200 <yahb> dminuoso:
2021-07-19 12:33:46 +0200 <dminuoso> % :t mySequence
2021-07-19 12:33:46 +0200 <yahb> dminuoso: Applicative f => [f a] -> f [a]
2021-07-19 12:33:52 +0200 <dibblego> I think sequence is more obvious in the way you are trying to explain it, like this:
2021-07-19 12:33:53 +0200 <dminuoso> % mySequence [Just 10, Just 20, Just 30]
2021-07-19 12:33:53 +0200 <yahb> dminuoso: Just [10,20,30]
2021-07-19 12:34:20 +0200 <dibblego> (::.) = liftA2 (:); lift0 = pure; sequence (x:xs) = x ::. sequence xs; sequence [] = lift0 []
2021-07-19 12:35:56 +0200 <dibblego> once liftA2 is understood conceptually, then (*>) is quite simply: const id with some liftA2-ness
2021-07-19 12:36:49 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net)
2021-07-19 12:40:21 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-07-19 12:41:48 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection)
2021-07-19 12:42:51 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-07-19 12:44:49 +0200caubert(~caubert@136.244.111.235) (Quit: WeeChat 3.2)
2021-07-19 12:45:07 +0200caubert(~caubert@136.244.111.235)
2021-07-19 12:45:09 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 258 seconds)
2021-07-19 12:46:02 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-19 12:46:27 +0200anandprabhu(anandprabh@gateway/vpn/airvpn/anandprabhu) (Quit: Leaving)
2021-07-19 12:49:28 +0200berberman_(~berberman@user/berberman)
2021-07-19 12:50:04 +0200berberman(~berberman@user/berberman) (Ping timeout: 246 seconds)
2021-07-19 12:54:05 +0200Topsi(~Tobias@dyndsl-095-033-024-196.ewe-ip-backbone.de)
2021-07-19 12:56:36 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 13:01:58 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-07-19 13:03:26 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-19 13:06:28 +0200lars8(~bc817c21@217.29.117.252) (Quit: quit)
2021-07-19 13:07:38 +0200AlexNoo_(~AlexNoo@178.34.161.231)
2021-07-19 13:08:00 +0200cfricke(~cfricke@user/cfricke)
2021-07-19 13:08:01 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-07-19 13:08:31 +0200cfricke(~cfricke@user/cfricke) (Client Quit)
2021-07-19 13:09:18 +0200Alex_test(~al_test@178.34.162.246) (Ping timeout: 258 seconds)
2021-07-19 13:09:18 +0200AlexZenon(~alzenon@178.34.162.246) (Ping timeout: 258 seconds)
2021-07-19 13:11:06 +0200AlexNoo(~AlexNoo@178.34.162.246) (Ping timeout: 256 seconds)
2021-07-19 13:12:55 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-19 13:13:12 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-19 13:15:17 +0200Alex_test(~al_test@178.34.161.231)
2021-07-19 13:16:34 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-19 13:16:36 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 13:16:40 +0200AlexZenon(~alzenon@178.34.161.231)
2021-07-19 13:16:53 +0200moondog(~root@185.234.208.208.r.toneticgroup.pl) (Quit: leaving)
2021-07-19 13:18:35 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: lambdap)
2021-07-19 13:18:46 +0200 <albet70> so could we say traverse another version of fmap which it can do earlier exit?
2021-07-19 13:21:01 +0200 <[exa]> "another" may be a weak label for the myriad of extra stuff it can do :]
2021-07-19 13:21:11 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2021-07-19 13:22:28 +0200elf_fortrez(~elf_fortr@adsl-72-50-4-55.prtc.net)
2021-07-19 13:27:07 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-07-19 13:27:44 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-07-19 13:28:04 +0200 <dminuoso> albet70: Mmm, not just that.
2021-07-19 13:28:37 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 13:28:38 +0200 <dminuoso> albet70: Say you have a Tree of values, say of type String. For each string you want to query some database, and replace the string with some value you read from the database, say something of type User.
2021-07-19 13:29:00 +0200 <dminuoso> then you can do: do { userTree <- traverse fetchUserFromString stringTree; ... }
2021-07-19 13:29:46 +0200 <dminuoso> albet70: The key thing to realize is that Applicative/Monad encode certain.. "effects". For `Maybe/Either e` the effect is that of an exception, for IO it's outside world interaction, for list it's non-determinism, etc..
2021-07-19 13:30:00 +0200 <dminuoso> So we map each element to an effectful computation, and then sequence them
2021-07-19 13:30:38 +0200 <dminuoso> Important bit to notice, is that traverse fundamentally does not change the "shape" of that structure. So if you traverse over a tree, the shape of it remains (so you cant drop or create nodes)
2021-07-19 13:31:44 +0200 <dminuoso> traverse on a list for example gives us a more generalized version of effectful loops. So a Python loop in which you do say database queries can be written with `traverse`
2021-07-19 13:31:57 +0200 <dminuoso> But `traverse` allows us to do even more, not just database queries
2021-07-19 13:32:03 +0200 <dminuoso> And it works on not just lists, but also trees.
2021-07-19 13:32:42 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 255 seconds)
2021-07-19 13:33:47 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-19 13:34:14 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds)
2021-07-19 13:39:18 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de)
2021-07-19 13:39:46 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-07-19 13:39:46 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-07-19 13:39:46 +0200turlando(~turlando@user/turlando)
2021-07-19 13:42:20 +0200turlando_(~turlando@93-42-250-112.ip89.fastwebnet.it) (Ping timeout: 265 seconds)
2021-07-19 13:42:26 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de) (Client Quit)
2021-07-19 13:43:01 +0200AlexNoo_AlexNoo
2021-07-19 13:43:12 +0200elf_fortrez(~elf_fortr@adsl-72-50-4-55.prtc.net) (Quit: Client closed)
2021-07-19 13:44:34 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds)
2021-07-19 13:45:34 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de)
2021-07-19 13:50:10 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-19 13:51:26 +0200siraben(~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200Aleci[m](~alecilibr@2001:470:69fc:105::32e7) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200carmysilna(~brightly-@2001:470:69fc:105::2190) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200kadoban(~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200Tisoxin(~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200rednaZ[m](~r3dnazmat@2001:470:69fc:105::ba70) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200inkbottle[m](~inkbottle@2001:470:69fc:105::2ff5) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200boxscape(~boxscape@user/boxscape) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:27 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200peddie(~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200gxt(~gxt@2001:470:69fc:105::3513) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200cdepillabout[m](~cdepillab@2001:470:69fc:105::3d3) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200ormaaj(~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200polykernel(~polykerne@user/polykernel) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200unclechu(~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200Deewiant(~deewiant@2001:470:69fc:105::2fd3) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200jophish(~jophish@2001:470:69fc:105::670) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200bitonic(~bitonic@2001:470:69fc:105::1812) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200PotatoHatsue(~berberman@2001:470:69fc:105::b488) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200jaror[m](~jaror@2001:470:69fc:105::265) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200sridonhiatus[m](~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:28 +0200unrooted(~unrooted@2001:470:69fc:105::a4a) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:29 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:29 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200vbeatrice[m](~vbeatrice@2001:470:69fc:105::3ebf) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200fakehacker[m](~fakehacke@2001:470:69fc:105::b5f0) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200Guest7801(~sylveonma@2001:470:69fc:105::2d95) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200ixlun(~ixlun@2001:470:69fc:105::41b3) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200jellz[m](~jellzmatr@2001:470:69fc:105::2daa) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200dminuoso[m](~dminuosom@2001:470:69fc:105::33bb) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200RohitGoswami[m](~rgoswamim@2001:470:69fc:105::16cc) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200yin[m](~zwromatri@2001:470:69fc:105::1d4) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200Soft(~soft-matr@2001:470:69fc:105::c75) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:31 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:32 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:32 +0200ecameron[m](~ecameronm@2001:470:69fc:105::35df) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:32 +0200infinisil(~infinisil@2001:470:69fc:105::ff8) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:32 +0200Ollie[m](~ollieocha@2001:470:69fc:105::41a5) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:32 +0200aveltras[m](~aveltrasm@2001:470:69fc:105::3ef9) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:32 +0200octeep[m]1(~octeepmoc@2001:470:69fc:105::695e) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:33 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:33 +0200afotgkmnzj7asv3r(~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:33 +0200zfnmxt(~zfnmxtzfn@user/zfnmxt) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:38 +0200sm(~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:38 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:38 +0200bb010g(~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:39 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:39 +0200SimonWeiss[m](~weiss-dma@2001:470:69fc:105::bebd) (Quit: Bridge terminating on SIGTERM)
2021-07-19 13:51:51 +0200euandreh(~euandreh@191.181.59.160)
2021-07-19 13:54:47 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79)
2021-07-19 13:56:24 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-07-19 14:01:44 +0200cuz(~user@2601:182:cc02:8b0:5d77:6ee9:7f95:9dca)
2021-07-19 14:04:11 +0200 <dibblego> traverse is exactly fmap, if you use Identity in place of the general Applicative
2021-07-19 14:04:18 +0200ac(~aloiscoch@2001:470:69fc:105::65)
2021-07-19 14:04:18 +0200sm(~sm@plaintextaccounting/sm)
2021-07-19 14:04:18 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd)
2021-07-19 14:04:18 +0200fgaz(~fgaz@2001:470:69fc:105::842)
2021-07-19 14:04:18 +0200jaror[m](~jaror@2001:470:69fc:105::265)
2021-07-19 14:04:18 +0200peddie(~peddie@2001:470:69fc:105::25d)
2021-07-19 14:04:18 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284)
2021-07-19 14:04:18 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2)
2021-07-19 14:04:18 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db)
2021-07-19 14:04:18 +0200bb010g(~bb010g@2001:470:69fc:105::9a5)
2021-07-19 14:04:19 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e)
2021-07-19 14:04:19 +0200Artem[m](~artemtype@2001:470:69fc:105::75b)
2021-07-19 14:04:19 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a)
2021-07-19 14:04:19 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b)
2021-07-19 14:04:19 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f)
2021-07-19 14:04:19 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2021-07-19 14:04:19 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32)
2021-07-19 14:04:19 +0200kadoban(~kadoban@user/kadoban)
2021-07-19 14:04:19 +0200carmysilna(~brightly-@2001:470:69fc:105::2190)
2021-07-19 14:04:19 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22)
2021-07-19 14:04:19 +0200bitonic(~bitonic@2001:470:69fc:105::1812)
2021-07-19 14:04:19 +0200ericson2314(~ericson23@2001:470:69fc:105::70c)
2021-07-19 14:04:19 +0200jophish(~jophish@2001:470:69fc:105::670)
2021-07-19 14:04:19 +0200PotatoHatsue(~berberman@2001:470:69fc:105::b488)
2021-07-19 14:04:19 +0200siraben(~siraben@user/siraben)
2021-07-19 14:04:19 +0200Deewiant(~deewiant@2001:470:69fc:105::2fd3)
2021-07-19 14:04:19 +0200cdepillabout[m](~cdepillab@2001:470:69fc:105::3d3)
2021-07-19 14:04:19 +0200ixlun(~ixlun@2001:470:69fc:105::41b3)
2021-07-19 14:04:19 +0200unclechu(~unclechu@2001:470:69fc:105::354)
2021-07-19 14:04:19 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5)
2021-07-19 14:04:19 +0200unrooted(~unrooted@2001:470:69fc:105::a4a)
2021-07-19 14:04:19 +0200Aleci[m](~alecilibr@2001:470:69fc:105::32e7)
2021-07-19 14:04:19 +0200rednaZ[m](~r3dnazmat@2001:470:69fc:105::ba70)
2021-07-19 14:04:20 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2021-07-19 14:04:20 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b)
2021-07-19 14:04:20 +0200inkbottle[m](~inkbottle@2001:470:69fc:105::2ff5)
2021-07-19 14:04:20 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda)
2021-07-19 14:04:20 +0200gxt(~gxt@2001:470:69fc:105::3513)
2021-07-19 14:04:20 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2021-07-19 14:04:20 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4)
2021-07-19 14:04:20 +0200boxscape(~boxscape@user/boxscape)
2021-07-19 14:04:20 +0200infinisil(~infinisil@2001:470:69fc:105::ff8)
2021-07-19 14:04:20 +0200ormaaj(~ormaaj@user/ormaaj)
2021-07-19 14:04:20 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56)
2021-07-19 14:04:20 +0200Tisoxin(~ikosit@user/ikosit)
2021-07-19 14:04:20 +0200sridonhiatus[m](~sridmatri@2001:470:69fc:105::1c2)
2021-07-19 14:04:20 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef)
2021-07-19 14:04:20 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2021-07-19 14:04:20 +0200polykernel(~polykerne@user/polykernel)
2021-07-19 14:04:20 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d)
2021-07-19 14:04:23 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2021-07-19 14:04:30 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae)
2021-07-19 14:04:30 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8)
2021-07-19 14:04:30 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0)
2021-07-19 14:04:30 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7)
2021-07-19 14:04:31 +0200aveltras[m](~aveltrasm@2001:470:69fc:105::3ef9)
2021-07-19 14:04:31 +0200Ollie[m](~ollieocha@2001:470:69fc:105::41a5)
2021-07-19 14:04:31 +0200ecameron[m](~ecameronm@2001:470:69fc:105::35df)
2021-07-19 14:04:31 +0200dminuoso[m](~dminuosom@2001:470:69fc:105::33bb)
2021-07-19 14:04:31 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1)
2021-07-19 14:04:31 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d)
2021-07-19 14:04:31 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d)
2021-07-19 14:04:31 +0200Soft(~soft-matr@2001:470:69fc:105::c75)
2021-07-19 14:04:31 +0200RohitGoswami[m](~rgoswamim@2001:470:69fc:105::16cc)
2021-07-19 14:04:32 +0200yin[m](~zwromatri@2001:470:69fc:105::1d4)
2021-07-19 14:04:32 +0200jellz[m](~jellzmatr@2001:470:69fc:105::2daa)
2021-07-19 14:04:32 +0200SimonWeiss[m](~weiss-dma@2001:470:69fc:105::bebd)
2021-07-19 14:04:32 +0200afotgkmnzj7asv3r(~afotgkmnz@2001:470:69fc:105::c24b)
2021-07-19 14:04:32 +0200octeep[m]1(~octeepmoc@2001:470:69fc:105::695e)
2021-07-19 14:04:32 +0200fakehacker[m](~fakehacke@2001:470:69fc:105::b5f0)
2021-07-19 14:04:32 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f)
2021-07-19 14:04:32 +0200 <dibblego> but it also does other Applicative things, not just Identity
2021-07-19 14:04:33 +0200Sylveon(~sylveonma@2001:470:69fc:105::2d95)
2021-07-19 14:04:33 +0200oak-(~oakuniver@2001:470:69fc:105::fcd)
2021-07-19 14:04:34 +0200vbeatrice[m](~vbeatrice@2001:470:69fc:105::3ebf)
2021-07-19 14:04:56 +0200SylveonGuest6263
2021-07-19 14:05:43 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-19 14:06:16 +0200zangi(~zangi@103.154.230.230)
2021-07-19 14:06:36 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-07-19 14:07:26 +0200gentauro(~gentauro@user/gentauro)
2021-07-19 14:09:05 +0200cfricke(~cfricke@user/cfricke)
2021-07-19 14:14:39 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-07-19 14:14:48 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 14:16:02 +0200burnside_(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 14:16:02 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-07-19 14:18:02 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-19 14:20:34 +0200chomwitt(~chomwitt@2a02:587:dc04:b400:12c3:7bff:fe6d:d374)
2021-07-19 14:21:00 +0200burnside_(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-19 14:21:26 +0200smichel17(~smichel17@c-73-68-217-18.hsd1.ma.comcast.net)
2021-07-19 14:34:32 +0200favonia(~favonia@user/favonia)
2021-07-19 14:35:30 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-19 14:35:38 +0200dudek(~dudek@185.150.236.155)
2021-07-19 14:36:56 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 252 seconds)
2021-07-19 14:39:11 +0200qbt(~edun@user/edun)
2021-07-19 14:40:23 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 244 seconds)
2021-07-19 14:41:01 +0200favonia(~favonia@user/favonia) (Ping timeout: 246 seconds)
2021-07-19 14:42:18 +0200favonia(~favonia@user/favonia)
2021-07-19 14:42:40 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2021-07-19 14:45:53 +0200 <hseg> hi. have this generator http://ix.io/3tqe, and I would like to generalize it so its input generators can depend on each other's results (i.e. want to be able to pass [a -> Gen a])
2021-07-19 14:46:15 +0200 <hseg> have tried just doing that, but it involves a lot of churn
2021-07-19 14:46:22 +0200yauhsien(~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-07-19 14:46:30 +0200 <hseg> is there a more mtl'y way of writing this that can help avoid this churn
2021-07-19 14:46:33 +0200 <hseg> ?
2021-07-19 14:47:55 +0200fef(~thedawn@user/thedawn)
2021-07-19 14:48:03 +0200 <hseg> presumably, I'd want to have inputs be sth like [n a] with MonadGen n and some constraint expressing that whatever effects n gives are liftable to m
2021-07-19 14:48:43 +0200 <hseg> but that looks overly involved
2021-07-19 14:51:44 +0200Xnuk(~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in)
2021-07-19 14:52:00 +0200Xnuk(~xnuk@vultr.xnu.kr)
2021-07-19 14:53:34 +0200jolly(~jolly@208.180.97.158)
2021-07-19 14:54:05 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 14:54:53 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-19 14:54:59 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 14:58:34 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
2021-07-19 14:58:35 +0200 <zangi> probably a paradox, but does having IO means haskell is impure? :)
2021-07-19 14:58:42 +0200 <Axman6> no
2021-07-19 14:59:30 +0200 <zangi> does IO itself impure? what does it mean to be "pure" in haskell sense?
2021-07-19 14:59:49 +0200 <Axman6> IO is pure, the execution of it may not be. dibblego is excellent at explaining why
2021-07-19 14:59:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-19 14:59:59 +0200Axman6handballs the conversation to dibblego
2021-07-19 15:00:15 +0200 <DigitalKiwi> what about unsafeCoerce
2021-07-19 15:00:52 +0200 <zangi> who's dibblego?
2021-07-19 15:01:07 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-07-19 15:01:09 +0200alx741(~alx741@186.178.109.120)
2021-07-19 15:01:13 +0200 <DigitalKiwi> why's dibblego
2021-07-19 15:01:43 +0200 <Axman6> HE authored much of the NICTA/Data61/System-F FP course, where we explain why IO is pure
2021-07-19 15:01:46 +0200 <Axman6> He*
2021-07-19 15:02:18 +0200 <zangi> does he have any article about this issue?
2021-07-19 15:02:20 +0200 <DigitalKiwi> ofc we all know the answer to how's dibblego (by plane)
2021-07-19 15:02:27 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-07-19 15:02:35 +0200 <DigitalKiwi> ba dum tsch
2021-07-19 15:02:40 +0200juhp(~juhp@128.106.188.66)
2021-07-19 15:03:14 +0200 <DigitalKiwi> https://github.com/system-f/fp-course
2021-07-19 15:03:41 +0200 <DigitalKiwi> https://www.youtube.com/watch?v=NzIZzvbplSM&list=PLly9WMAVMrayYo2c-1E_rIRwBXG_FbLBW
2021-07-19 15:04:14 +0200ikex1(ash@user/ikex)
2021-07-19 15:04:27 +0200 <zangi> DigitalKiwi++
2021-07-19 15:04:42 +0200hseg(~gesh@185.120.126.10) (Ping timeout: 240 seconds)
2021-07-19 15:05:09 +0200 <zangi> thanks, anyway does it mean IO in haskell is different to IO in other (imperative) languages?
2021-07-19 15:05:50 +0200ikex(~ash@user/ikex) (Ping timeout: 258 seconds)
2021-07-19 15:05:51 +0200ikex1ikex
2021-07-19 15:06:42 +0200fradet(~fradet@216.252.75.247) (Ping timeout: 240 seconds)
2021-07-19 15:07:53 +0200 <[exa]> zangi: haskell is pure; the ugly impure execution of the IO action recipes written in haskell is only done by computers
2021-07-19 15:07:54 +0200fradet(~fradet@216.252.75.247)
2021-07-19 15:08:27 +0200 <kuribas> [exa]: but then any language is pure?
2021-07-19 15:09:12 +0200 <[exa]> nah, some languages rely on that impurity
2021-07-19 15:10:27 +0200 <[exa]> (and some certain others are just dirty)
2021-07-19 15:11:44 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-19 15:14:07 +0200anandprabhu(~anandprab@94.202.243.198)
2021-07-19 15:15:18 +0200 <DigitalKiwi> i like my coffee like i like my programming languages; strong, statically typed, purely functional with type inference and lazy evaluation.
2021-07-19 15:16:18 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-07-19 15:17:41 +0200anandprabhu(~anandprab@94.202.243.198) (Client Quit)
2021-07-19 15:18:13 +0200 <lechner> Hi, how can I use MonadFail to handle exceptions from Codec.Compression.Lzma, please?
2021-07-19 15:27:37 +0200jackhill(~jackhill@kalessin.dragonsnail.net) (Ping timeout: 245 seconds)
2021-07-19 15:28:16 +0200jiribenes(~jiribenes@rosa.jiribenes.com) (Ping timeout: 246 seconds)
2021-07-19 15:29:45 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-07-19 15:30:45 +0200peterhil(~peterhil@mobile-access-b04801-219.dhcp.inet.fi) (Ping timeout: 258 seconds)
2021-07-19 15:33:02 +0200jackhill(~jackhill@kalessin.dragonsnail.net)
2021-07-19 15:34:21 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-07-19 15:34:58 +0200 <Boarders> is there a variant combinator in megaparsec that is like: do {t <- takeWhileP Nothing (/= '\n'); char '\n'; pure t}
2021-07-19 15:37:46 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 268 seconds)
2021-07-19 15:37:48 +0200cuz(~user@2601:182:cc02:8b0:5d77:6ee9:7f95:9dca) (Ping timeout: 255 seconds)
2021-07-19 15:38:53 +0200Sgeo(~Sgeo@user/sgeo)
2021-07-19 15:40:37 +0200 <tdammers> https://hackage.haskell.org/package/parser-combinators-1.3.0/docs/Control-Applicative-Combinators.… maybe?
2021-07-19 15:41:19 +0200 <dmj`> lechner: did you try using `catch`
2021-07-19 15:43:45 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 15:44:40 +0200 <Boarders> manyTill is very related but not quite the same
2021-07-19 15:45:32 +0200 <lechner> dmj`: i'm still reading, and working on my general Haskell learning curve
2021-07-19 15:48:54 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-07-19 15:49:09 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 258 seconds)
2021-07-19 15:49:22 +0200hendursaga(~weechat@user/hendursaga)
2021-07-19 15:50:10 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 15:51:21 +0200 <lechner> dmj`: but i do have working program (which i wrote) where I could try your suggestion. how do i use catch, please? https://salsa.debian.org/lintian/kickoff/-/blob/master/Collect.hs#L82
2021-07-19 15:51:52 +0200aforemny_aforemny
2021-07-19 15:54:40 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-07-19 15:54:47 +0200michalz(~michalz@185.246.204.55) (Remote host closed the connection)
2021-07-19 15:55:26 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2021-07-19 15:55:46 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-07-19 16:01:50 +0200econo(uid147250@user/econo)
2021-07-19 16:02:12 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-07-19 16:02:33 +0200jackhill(~jackhill@kalessin.dragonsnail.net) (Ping timeout: 255 seconds)
2021-07-19 16:05:19 +0200sandersndr
2021-07-19 16:05:40 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-07-19 16:05:55 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 16:06:39 +0200 <tzh> hey so i'm working on a haskell game; does anybody have any suggestions for an input library that would work well? previously i've used reactive-banana, which worked well enough even if its FRP nature made it a little clunky for use in a highly-interactive program. i saw some people mention using arrowized FRP libraries likes Yampa/dunai but that seems more like something to use for physics integration than for things like 'how to click on
2021-07-19 16:06:40 +0200 <tzh> a menu'
2021-07-19 16:09:15 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-07-19 16:09:21 +0200cuz(~user@38.140.58.234)
2021-07-19 16:09:30 +0200chomwitt(~chomwitt@2a02:587:dc04:b400:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds)
2021-07-19 16:10:43 +0200jippiedoe(~david@2a02-a44c-e14e-1-1bc4-b398-e9ad-3132.fixed6.kpn.net)
2021-07-19 16:13:08 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
2021-07-19 16:14:12 +0200 <kuribas> tzh: reactive-banana isn't an input library, it's a FRP library.
2021-07-19 16:14:20 +0200 <kuribas> You can use it with any UI library.
2021-07-19 16:15:21 +0200 <maerwald> SDL2?
2021-07-19 16:15:37 +0200 <[exa]> tzh: immediate-mode GUIs (google imgui) are priceless for games, except I don't know if we have any for haskell yet
2021-07-19 16:15:51 +0200 <tzh> kuribas: okay yes it's not a raw input-catching library; i'm actually using glfw for that. what i'm looking for is an input _processing_ library, to impose some order onto my input flow so it's not a bunch of ad-hoc garbage
2021-07-19 16:16:18 +0200 <kuribas> tzh: reactive-banana should be fine.
2021-07-19 16:17:39 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 16:18:43 +0200OndejSkup[m](~mimivxmat@2001:470:69fc:105::c300)
2021-07-19 16:19:12 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 16:19:13 +0200ph88_(~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de)
2021-07-19 16:19:16 +0200jippiedoe(~david@2a02-a44c-e14e-1-1bc4-b398-e9ad-3132.fixed6.kpn.net) (Quit: Leaving)
2021-07-19 16:21:02 +0200 <tzh> the main issue with reactive-banana is that it gets pretty clunky since it only runs in IO and thus can never directly run actual buffer writes... (well, okay, there are ways but that becomes a mess of running all input-processing code inside a render monad, with an unknown timing to my render loop). which means i need to have its output actions queue render actions like buffer allocations/writes, and then outside of the event loop pull
2021-07-19 16:21:03 +0200 <tzh> them out so they can actually be run, which seems a little clunky and counter to the FRP experience, but i don't really see how that could be avoided given how opengl rendering works. so really i'd just like for that experience to be a bit smoother
2021-07-19 16:21:04 +0200jiribenes(~jiribenes@rosa.jiribenes.com)
2021-07-19 16:22:31 +0200ph88^(~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c) (Ping timeout: 246 seconds)
2021-07-19 16:23:24 +0200jackhill(~jackhill@kalessin.dragonsnail.net)
2021-07-19 16:23:35 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
2021-07-19 16:26:11 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
2021-07-19 16:27:25 +0200favonia(~favonia@user/favonia) (Ping timeout: 246 seconds)
2021-07-19 16:27:50 +0200favonia(~favonia@user/favonia)
2021-07-19 16:28:24 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 252 seconds)
2021-07-19 16:28:36 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 16:30:23 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-07-19 16:33:49 +0200acidjnk_new(~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de)
2021-07-19 16:36:18 +0200Null_A(~null_a@2601:645:8700:2290:34e6:e307:f490:7d07)
2021-07-19 16:36:56 +0200acidjnk(~acidjnk@p200300d0c72b9531f8c9d06c34eef88c.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2021-07-19 16:36:56 +0200peterhil(~peterhil@mobile-access-b04801-219.dhcp.inet.fi)
2021-07-19 16:38:00 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 16:41:22 +0200acidjnk_new(~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-07-19 16:49:52 +0200allbery_bgeekosaur
2021-07-19 16:50:15 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-19 16:50:34 +0200favonia(~favonia@user/favonia)
2021-07-19 16:52:25 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-07-19 16:53:43 +0200chris_(~chris@81.96.113.213)
2021-07-19 16:55:56 +0200fef(~thedawn@user/thedawn)
2021-07-19 17:01:52 +0200kar1[m](~kar1matri@2001:470:69fc:105::c308)
2021-07-19 17:08:45 +0200cfricke(~cfricke@user/cfricke)
2021-07-19 17:13:30 +0200jackhill(~jackhill@kalessin.dragonsnail.net) (Ping timeout: 252 seconds)
2021-07-19 17:18:00 +0200 <dmj`> lechner: do { result <- try (evaluate (decompress bytes)) :: IO (Either SomeException ByteString); case result of { Left e -> print e; Right bytes -> print (length bytes) } }
2021-07-19 17:18:03 +0200nuncanada(~dude@179.235.162.215)
2021-07-19 17:20:41 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-19 17:22:18 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-07-19 17:22:29 +0200 <Las[m]> Question about bound threads: Will unbound threads use an OS thread created by forkOS?
2021-07-19 17:22:51 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-19 17:23:36 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-19 17:26:24 +0200 <monochrom> Probably in an ideal world shouldn't matter but in practice the GHC implementers wouldn't troll themselves by doing that.
2021-07-19 17:26:28 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-19 17:26:36 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 265 seconds)
2021-07-19 17:27:33 +0200zmt00(~zmt00@user/zmt00)
2021-07-19 17:28:14 +0200 <monochrom> In practice there is pure Haskell code that can hold up an OS thread uninterruptible. Now what can you do when the rightful owner of the OS thread needs it?
2021-07-19 17:29:51 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-19 17:30:03 +0200 <c_wraith> honestly, that's not a very important edge case, given that the same pure code that will hold a thread uninterruptably will also block garbage collection, and therefore the entire program via stop-the-world GC
2021-07-19 17:30:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-19 17:31:12 +0200 <c_wraith> If you write a loop that does that, you get what you deserve whether bound threads are involved or not.
2021-07-19 17:31:51 +0200 <c_wraith> (this is why mueval starts new processes, not just threads)
2021-07-19 17:32:33 +0200abc(~abc@213.195.121.143)
2021-07-19 17:32:47 +0200abc(~abc@213.195.121.143) (Client Quit)
2021-07-19 17:35:59 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-07-19 17:37:44 +0200derelict(~derelict@user/derelict)
2021-07-19 17:38:48 +0200lbseale(~lbseale@user/ep1ctetus)
2021-07-19 17:39:03 +0200chomwitt(~chomwitt@athedsl-32487.home.otenet.gr)
2021-07-19 17:43:00 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Remote host closed the connection)
2021-07-19 17:43:13 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 17:43:28 +0200 <jumper149> The diagram here: https://wiki.haskell.org/Typeclassopedia
2021-07-19 17:43:49 +0200 <jumper149> It is missing the superclass `Alternative` of `MonadPlus` :(
2021-07-19 17:44:45 +0200andrews(~andrews@user/andrews)
2021-07-19 17:44:56 +0200andrews(~andrews@user/andrews) ()
2021-07-19 17:46:09 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-19 17:46:38 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-19 17:47:00 +0200kuribas(~user@ptr-25vy0i7jsa6kv1vvjg7.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-07-19 17:47:07 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-07-19 17:49:46 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-19 17:50:12 +0200bbhoss_(sid18216@id-18216.tinside.irccloud.com) ()
2021-07-19 17:51:32 +0200bbhoss(sid18216@id-18216.tinside.irccloud.com)
2021-07-19 17:51:48 +0200tlax(tlax@kapsi.fi) (Ping timeout: 276 seconds)
2021-07-19 17:51:55 +0200tlax(tlax@kapsi.fi)
2021-07-19 17:52:22 +0200Logio(em@kapsi.fi) (Ping timeout: 252 seconds)
2021-07-19 17:52:44 +0200ent(entgod@kapsi.fi) (Ping timeout: 256 seconds)
2021-07-19 17:54:34 +0200 <Boarders> in haddock if I want to include an example that is too long then is the thing to put definitions in a codeblock or make the example multi-line or something else?
2021-07-19 17:54:42 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-19 17:55:56 +0200 <sm> Boarders: you can have
2021-07-19 17:55:56 +0200 <sm> @
2021-07-19 17:55:56 +0200 <sm> multi line example...
2021-07-19 17:56:00 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-07-19 17:57:16 +0200favonia(~favonia@user/favonia)
2021-07-19 17:57:29 +0200Logio(em@kapsi.fi)
2021-07-19 17:57:43 +0200slycelote(~slycelote@user/slycelote)
2021-07-19 17:57:51 +0200ent(entgod@kapsi.fi)
2021-07-19 17:58:40 +0200 <Boarders> how do you indicate with that what it should evaluate to?
2021-07-19 17:58:50 +0200slycelote_(~slycelote@user/slycelote) (Ping timeout: 255 seconds)
2021-07-19 17:59:45 +0200 <sm> (maybe that got truncated. @ delimiters.)
2021-07-19 18:00:15 +0200 <sm> Boarders: are you asking about doctests ? the doctest doc will tell
2021-07-19 18:02:34 +0200 <sm> https://github.com/sol/doctest#readme
2021-07-19 18:04:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-19 18:07:13 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-19 18:07:46 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-19 18:09:41 +0200chris_(~chris@81.96.113.213)
2021-07-19 18:13:53 +0200dudek(~dudek@185.150.236.155) (Read error: Connection reset by peer)
2021-07-19 18:15:29 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-07-19 18:16:17 +0200cuz(~user@38.140.58.234) (Remote host closed the connection)
2021-07-19 18:16:29 +0200cuz(~user@38.140.58.234)
2021-07-19 18:16:58 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-07-19 18:16:58 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-07-19 18:17:01 +0200allbery_bgeekosaur
2021-07-19 18:20:57 +0200dunkeln(~dunkeln@188.71.231.232)
2021-07-19 18:20:58 +0200dunkeln(~dunkeln@188.71.231.232) (Client Quit)
2021-07-19 18:20:59 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-07-19 18:21:01 +0200 <gentauro> does anybody has the link to a tweet staging: «category theory is the mathematics of mathematics»?
2021-07-19 18:21:19 +0200 <gentauro> I think it was from a female cs prof (I recall)
2021-07-19 18:21:20 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 255 seconds)
2021-07-19 18:22:29 +0200dunkeln(~dunkeln@188.71.231.232)
2021-07-19 18:22:56 +0200 <Boarders> https://twitter.com/emilyriehl/status/979375728373518336?s=20
2021-07-19 18:24:55 +0200 <lechner> dmj`: it compiled, but did not stop the program from terminating. i got the same message as before: "Codec.Compression.Lzma.decompressWith: decoding error LzmaRetOK" https://dpaste.org/FGQs#L7,84,85,86,87
2021-07-19 18:24:57 +0200 <c_wraith> In that tweet she credits Eugenia Cheng, which is a name I've heard before.
2021-07-19 18:26:09 +0200blackeuler(~blackeule@72.82.14.206)
2021-07-19 18:26:44 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 268 seconds)
2021-07-19 18:27:41 +0200blackeuler(~blackeule@72.82.14.206) (Client Quit)
2021-07-19 18:28:42 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-19 18:30:58 +0200nuncanada(~dude@179.235.162.215) (Read error: Connection reset by peer)
2021-07-19 18:31:13 +0200 <lechner> just make sure you pronounce it right, please http://eugeniacheng.com/pronunciation/
2021-07-19 18:31:20 +0200favonia(~favonia@user/favonia)
2021-07-19 18:31:34 +0200Axman6(~Axman6@user/axman6) (Ping timeout: 256 seconds)
2021-07-19 18:34:40 +0200nuncanada(~dude@179.235.162.215)
2021-07-19 18:36:00 +0200favonia(~favonia@user/favonia) (Remote host closed the connection)
2021-07-19 18:36:56 +0200favonia(~favonia@user/favonia)
2021-07-19 18:37:10 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Remote host closed the connection)
2021-07-19 18:37:25 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-19 18:41:23 +0200 <dmj`> lechner: I think the issue is that you're not forking a thread to handle new clients, so your server terminates immediately, since the main thread of execution exits.. You're just blocking on a socket receive until the client exits, then your process terminates. You need to fork threads for each client and ensure the main thread of execution is running indefinitely
2021-07-19 18:42:11 +0200fendor(~fendor@77.119.223.215.wireless.dyn.drei.com) (Remote host closed the connection)
2021-07-19 18:42:36 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 256 seconds)
2021-07-19 18:43:30 +0200 <lechner> dmj`: without a decoding error, this does run forever https://dpaste.org/FGQs#L105
2021-07-19 18:43:47 +0200 <lechner> via iterateM_
2021-07-19 18:45:07 +0200 <lechner> it is in fact my motivation to catch the error
2021-07-19 18:45:47 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-19 18:46:10 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 18:47:15 +0200ablutor(~quassel@wasscher.com) (Quit: going for vitamine d)
2021-07-19 18:48:10 +0200ablutor(~quassel@wasscher.com)
2021-07-19 18:50:07 +0200derelict(~derelict@user/derelict) (Ping timeout: 245 seconds)
2021-07-19 18:52:23 +0200 <gentauro> 18:22 < Boarders> https://twitter.com/emilyriehl/status/979375728373518336
2021-07-19 18:52:29 +0200 <gentauro> Boarders: that's the one. Thx :)
2021-07-19 18:53:25 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-19 18:54:56 +0200cfricke(~cfricke@user/cfricke)
2021-07-19 19:00:22 +0200oso(~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f) (Ping timeout: 246 seconds)
2021-07-19 19:00:44 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-07-19 19:03:07 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 258 seconds)
2021-07-19 19:03:29 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
2021-07-19 19:03:35 +0200vemek1(~vemek@2a03:b0c0:2:d0::d98:1)
2021-07-19 19:04:05 +0200azeem(~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Ping timeout: 255 seconds)
2021-07-19 19:06:20 +0200azeem(~azeem@176.200.239.190)
2021-07-19 19:07:24 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-19 19:07:44 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-19 19:07:54 +0200gustik(~gustik@2a01:c844:2416:5920:437:26a4:3a9:3895)
2021-07-19 19:08:07 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-19 19:08:51 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 19:09:14 +0200gustik(~gustik@2a01:c844:2416:5920:437:26a4:3a9:3895) (Quit: Leaving)
2021-07-19 19:09:31 +0200gustik(~gustik@2a01:c844:2416:5920:437:26a4:3a9:3895)
2021-07-19 19:10:57 +0200favonia(~favonia@user/favonia) (Ping timeout: 245 seconds)
2021-07-19 19:14:26 +0200chomwitt(~chomwitt@athedsl-32487.home.otenet.gr) (Ping timeout: 255 seconds)
2021-07-19 19:14:51 +0200jushur(~human@user/jushur)
2021-07-19 19:14:52 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Remote host closed the connection)
2021-07-19 19:15:14 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-19 19:15:23 +0200azeem(~azeem@176.200.239.190) (Ping timeout: 258 seconds)
2021-07-19 19:15:39 +0200jumper149(~jumper149@80.240.31.34)
2021-07-19 19:16:03 +0200benin0369(~benin@183.82.205.17) (Ping timeout: 255 seconds)
2021-07-19 19:16:10 +0200 <jumper149> I want to choose a Haskell formatter. Are there any nice comparisons? Maybe a blog post?
2021-07-19 19:16:12 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-07-19 19:17:00 +0200 <[exa]> jumper149: probably best to ask yourself why you want the formatting at first
2021-07-19 19:17:07 +0200 <dsal> Haskell In Depth went over them slightly, but didn't offer an opinion.
2021-07-19 19:17:32 +0200 <dsal> IMO, ormolu is weird and wrong, but it's the new kid and at least some people like it.
2021-07-19 19:17:34 +0200 <dminuoso> I chose emacs as my formatter. I can press enter, and it formats the code nicely.
2021-07-19 19:17:35 +0200azeem(~azeem@176.200.239.190)
2021-07-19 19:17:35 +0200benin0369(~benin@183.82.176.182)
2021-07-19 19:17:49 +0200 <dminuoso> If it does it wrong, I can change the indentation with a single keypress.
2021-07-19 19:17:55 +0200 <[exa]> fourmolu is kinda less bad than ormolu
2021-07-19 19:18:17 +0200geekosaurformats man8ually as no formatter matches his preference
2021-07-19 19:18:30 +0200 <dsal> I use stylish-haskell when I remember. It usually does OK.
2021-07-19 19:18:41 +0200 <jumper149> I want formatting to be consistent over a project. And I would like something that makes sense with git.
2021-07-19 19:18:48 +0200 <maerwald> brittany got close to my needs, but it tends to pull apart code so much that stuff becomes overly verbose
2021-07-19 19:18:55 +0200 <dsal> I mainly like my imports tidy.
2021-07-19 19:18:59 +0200 <dminuoso> jumper149: A consistent style is already a bizarre thing.
2021-07-19 19:19:02 +0200 <dsal> jumper149: git just stores blobs, so that's not a big deal. :)
2021-07-19 19:19:11 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 19:19:11 +0200 <dminuoso> jumper149: Code formatting communicates intent and structure, its highly contextual.
2021-07-19 19:19:22 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 19:19:39 +0200 <maerwald> dminuoso: yes, the consistency argument is mostly nonsense imo. The "I'm too lazy argument" I can get behind
2021-07-19 19:19:42 +0200 <maerwald> because I am
2021-07-19 19:19:43 +0200 <dsal> ormolu was inspired by elm's canonical format in a lot of way and they prioritized making it easy to read diffs generated by whatever tools they happened to use. This is a terrible mistake, IMO.
2021-07-19 19:19:45 +0200 <monochrom> Perhaps "makes sense with git" means "makes sense with diff".
2021-07-19 19:19:49 +0200 <dminuoso> It's sort of the equivalent of saying "a paragraph must always have 3 sentences". It's a stupid proposition to begin with.
2021-07-19 19:20:01 +0200 <jumper149> monochrom: exactly!
2021-07-19 19:20:21 +0200 <dminuoso> Yes, if each paragraph has 3 sentences, you have a consistent formatting of your natural language. But it really hampers readability
2021-07-19 19:20:25 +0200 <dsal> Most of the time when I'm reading code, I'm not reading diffs. I'd rather prioritize the code over the diffs.
2021-07-19 19:20:32 +0200 <monochrom> People keep XYing their diction all the time. Remember that one time when someone said "haddock" to mean doctest?
2021-07-19 19:20:33 +0200xff0x_(~xff0x@2001:1a81:5299:ea00:490d:5ed2:61e8:145d) (Ping timeout: 255 seconds)
2021-07-19 19:20:38 +0200azeem(~azeem@176.200.239.190) (Read error: Connection reset by peer)
2021-07-19 19:21:24 +0200xff0x_(~xff0x@2001:1a81:5299:ea00:2c16:bae7:eca6:fd06)
2021-07-19 19:21:48 +0200azeem(~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it)
2021-07-19 19:21:49 +0200 <maerwald> dsal: in a lot of PRs I've seen at work there was no way to understand anything from the diff without a walkthrough by the author. Even looking at my own PRs I don't understand anything. In some companies the author writes a walkthrough in the diff comments, but even then: diffs lie
2021-07-19 19:22:16 +0200 <maerwald> you don't see the code you changed, only the lines you changed
2021-07-19 19:22:26 +0200 <jumper149> I particularly want a formatter for stuff like same style Haddocks (-- vs {- -}), sorted imports and extensions.
2021-07-19 19:22:36 +0200favonia(~favonia@user/favonia)
2021-07-19 19:22:43 +0200 <dminuoso> jumper149: For import/extensions sorting, I find stylish-haskell to be agreeable.
2021-07-19 19:22:49 +0200 <dminuoso> (It just breaks in the presence of QQs and TH)
2021-07-19 19:22:54 +0200 <maerwald> and CPP
2021-07-19 19:23:16 +0200 <dminuoso> jumper149: But note, you should chose your tool to fit *your* style.
2021-07-19 19:23:16 +0200 <dsal> maerwald: yeah. I have that problem reading diffs sometimes. Like, cool you changed x to y... but what was x and what's y?
2021-07-19 19:23:34 +0200 <maerwald> also: reverse dependencies of your code
2021-07-19 19:23:57 +0200 <maerwald> you might need to re-read the entire codebase from a different perspective
2021-07-19 19:24:21 +0200 <maerwald> while the scrum master is asking why the PR is still not merged
2021-07-19 19:24:34 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-07-19 19:24:56 +0200 <maerwald> but hey... not everyone works in security critical code: just push and hope for the best
2021-07-19 19:25:02 +0200 <monochrom> "the closer you look, the less you see"
2021-07-19 19:25:30 +0200 <dminuoso> monochrom: Yes, that was the mentality of openssl. Distance yourself from the code and embrace Heartbleed!
2021-07-19 19:25:32 +0200 <dsal> These modern "diff-friendly" things take something small, clear and readable and make me have to scroll to understand what's going on. https://www.irccloud.com/pastebin/dhodxIZ7/ok.elm
2021-07-19 19:25:42 +0200 <monochrom> haha
2021-07-19 19:26:11 +0200 <geekosaur> I somewhat regularly have to click on the extend buttons in github to understand a diff
2021-07-19 19:26:26 +0200 <geekosaur> which is the simple version of this
2021-07-19 19:26:54 +0200 <monochrom> Clearly, the logical conclusion is one token per line. >:)
2021-07-19 19:27:08 +0200 <dsal> There are lots of cases where formatters seem to do that.
2021-07-19 19:27:13 +0200 <maerwald> There is a very grumpy C coder on my LinkedIn feed, always riling about security and code correctness. Then one day he wrote why: his bug actually killed people, because it was some control system about pressure valves.
2021-07-19 19:27:16 +0200 <dsal> With lines between them.
2021-07-19 19:28:05 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-19 19:28:09 +0200 <dsal> monochrom: Like, imagine how hard this would be to read if that 'o' shared a line with any of the other code: https://www.irccloud.com/pastebin/lIpmTDCu/format.elm
2021-07-19 19:28:18 +0200 <maerwald> but I don't know what he thinks of code formatters
2021-07-19 19:28:40 +0200 <maerwald> then again: that's a solved issue in C anyway
2021-07-19 19:29:15 +0200 <dsal> I really like tools that do static analysis and stuff in my code to tell me when I could do things better. That's an unreasonably hard problem to solve well, though.
2021-07-19 19:29:49 +0200Deide(~Deide@user/deide)
2021-07-19 19:34:15 +0200o1lo01ol1o(~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
2021-07-19 19:34:59 +0200 <maerwald> I think the main question is: do you align code or just do syntactical indenting
2021-07-19 19:36:35 +0200euouae(~euouae@user/euouae)
2021-07-19 19:36:50 +0200 <euouae> Hello
2021-07-19 19:37:15 +0200 <euouae> I want to create a lazy list whose nth element is a function of its predecessor
2021-07-19 19:37:21 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-07-19 19:37:27 +0200 <monochrom> iterate
2021-07-19 19:37:38 +0200 <euouae> What do you mean
2021-07-19 19:37:49 +0200 <monochrom> Look for that function name in the standard library.
2021-07-19 19:39:21 +0200 <euouae> Thank you !
2021-07-19 19:39:53 +0200 <maerwald> @hoogle iterate
2021-07-19 19:39:53 +0200 <lambdabot> Prelude iterate :: (a -> a) -> a -> [a]
2021-07-19 19:39:53 +0200 <lambdabot> Data.List iterate :: (a -> a) -> a -> [a]
2021-07-19 19:39:53 +0200 <lambdabot> Data.List.NonEmpty iterate :: (a -> a) -> a -> NonEmpty a
2021-07-19 19:40:27 +0200 <maerwald> @where hoogle
2021-07-19 19:40:27 +0200 <lambdabot> http://haskell.org/hoogle http://hoogle.haskell.org http://fpcomplete.com/hoogle – See also Hayoo, which searches more packages: http://hayoo.fh-wedel.de/
2021-07-19 19:40:40 +0200 <maerwald> hayoo is dead no?
2021-07-19 19:40:44 +0200benin0369(~benin@183.82.176.182) (Ping timeout: 268 seconds)
2021-07-19 19:41:01 +0200 <maerwald> and the fpcomplete link too
2021-07-19 19:41:16 +0200 <monochrom> yikes
2021-07-19 19:41:44 +0200 <geekosaur> yeh, nobody's updated that
2021-07-19 19:42:03 +0200chomwitt(~chomwitt@athedsl-32487.home.otenet.gr)
2021-07-19 19:42:24 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-19 19:42:39 +0200 <euouae> Has anyone tried Haskell on a supercomputer?
2021-07-19 19:42:48 +0200 <geekosaur> @where+ hoogle https://hoogle.haskell.org see also https://haskell.org/hoogle which searches a different default set of libraries
2021-07-19 19:42:48 +0200 <lambdabot> I will remember.
2021-07-19 19:43:04 +0200 <geekosaur> define supercomputer
2021-07-19 19:43:15 +0200 <maerwald> for me, both links are the same
2021-07-19 19:43:33 +0200 <geekosaur> interesting, maybe they made the old one go away
2021-07-19 19:43:34 +0200 <maerwald> haskell.org/hoogle redirects to hoogle.haskell.org
2021-07-19 19:43:40 +0200 <euouae> Hmm I’m trying to run a lot of computations and get an answer
2021-07-19 19:43:46 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 240 seconds)
2021-07-19 19:43:53 +0200 <euouae> for now I have like 100 cores etc
2021-07-19 19:43:56 +0200 <geekosaur> @where+ hoogle https://hoogle.haskell.org
2021-07-19 19:43:56 +0200 <lambdabot> Nice!
2021-07-19 19:44:47 +0200maxie(~IceChat95@45.100.3.196)
2021-07-19 19:44:49 +0200 <dmj`> Someone should write a library for parsing XML with GHC.Generics
2021-07-19 19:45:46 +0200 <geekosaur> iirc ghc's performance gets worse the more cores you have :( (but maybe this has improved, that was around 7.x)
2021-07-19 19:46:06 +0200 <geekosaur> mostly because of stop-the-world gc, though
2021-07-19 19:46:39 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-19 19:46:51 +0200 <euouae> Okay interesting
2021-07-19 19:46:59 +0200 <davean> It gets harder to make it perform well with more cores, it doesn't inhernety not perform well.
2021-07-19 19:47:06 +0200 <maerwald> dmj`: why are you using xml :>
2021-07-19 19:47:08 +0200 <davean> But no super computing task is single process
2021-07-19 19:47:21 +0200 <euouae> Davean my knowledge is limited
2021-07-19 19:47:22 +0200 <davean> I mean if you could fit it on one system it wouldn't really be using a modern supercomputer
2021-07-19 19:47:50 +0200 <euouae> I am not great at Haskell and never programmed for supercomputers before
2021-07-19 19:48:57 +0200favonia(~favonia@user/favonia)
2021-07-19 19:49:49 +0200 <euouae> But Haskell is really attractive for math
2021-07-19 19:49:52 +0200 <davean> I think I've heard of some super computer Haskell use. I'd say everything to do with super computers is pretty definitionally specialized
2021-07-19 19:50:17 +0200 <euouae> Yeah basically you need to be very knowledgeable in the domain davean
2021-07-19 19:50:25 +0200 <euouae> And I’m just trying to get by
2021-07-19 19:50:30 +0200 <maerwald> is this about bitcoin mining?
2021-07-19 19:50:33 +0200 <davean> The domain, but also that specific computer
2021-07-19 19:50:38 +0200 <davean> maerwald: I sure hope not!
2021-07-19 19:50:46 +0200 <euouae> No lol it’s research
2021-07-19 19:50:50 +0200 <dmj`> maerwald: AWS S3 still uses XML, https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html
2021-07-19 19:51:17 +0200 <euouae> Bitcoin stuff is so scummy o want nothing with. It
2021-07-19 19:52:26 +0200 <davean> maerwald: Many code bugs kill a large number of fractional people
2021-07-19 19:52:28 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
2021-07-19 19:53:01 +0200 <euouae> Davean I don’t understand how situational it could be though
2021-07-19 19:53:22 +0200 <euouae> what I have is some pure math computations applied to many different numbers (say)
2021-07-19 19:53:54 +0200 <davean> euouae: The structure of the super computers differ, and the primary issue with super computers is communication
2021-07-19 19:54:03 +0200 <davean> You optimize communication, not compute
2021-07-19 19:54:11 +0200 <euouae> For now I’m on a single node
2021-07-19 19:54:14 +0200 <davean> The network structures are all different for different optimalities
2021-07-19 19:54:26 +0200 <davean> Yes, and theres no modern single node super computers
2021-07-19 19:54:54 +0200 <euouae> It’s not necessarily a supercomputer since it’s single node but I’m starting from that
2021-07-19 19:54:55 +0200 <davean> even on a single processor, you have to deal with inter-core communication issues, they're just less
2021-07-19 19:55:07 +0200 <euouae> Inter core?
2021-07-19 19:55:22 +0200 <euouae> Are you talking about worker communication?
2021-07-19 19:55:27 +0200oso(~oso@2601:58c:c080:a950:f275:2530:b398:680b)
2021-07-19 19:55:28 +0200 <euouae> I’m not following
2021-07-19 19:56:41 +0200benin0369(~benin@106.198.95.190)
2021-07-19 19:57:54 +0200 <geekosaur> things like shared memory access
2021-07-19 19:58:13 +0200 <euouae> Why is that important ?
2021-07-19 19:58:29 +0200 <euouae> I think in my problem no memory is shared
2021-07-19 19:58:48 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
2021-07-19 19:58:54 +0200 <euouae> It’s like map f xs but parallel
2021-07-19 19:59:09 +0200 <geekosaur> if you're handling out subproblems to different threads/cores to be worked on, then there is at least some shared memory
2021-07-19 19:59:12 +0200 <euouae> More or less, maybe with a stop condition
2021-07-19 19:59:36 +0200 <euouae> Okay but this is the most basic form of it right?
2021-07-19 19:59:40 +0200peterhil_(~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
2021-07-19 20:00:20 +0200benin03694(~benin@183.82.177.8)
2021-07-19 20:01:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-19 20:02:10 +0200benin0369(~benin@106.198.95.190) (Ping timeout: 252 seconds)
2021-07-19 20:02:10 +0200benin03694benin0369
2021-07-19 20:02:19 +0200peterhil(~peterhil@mobile-access-b04801-219.dhcp.inet.fi) (Ping timeout: 268 seconds)
2021-07-19 20:04:02 +0200 <euouae> Anyway those issues are part of the algorithm right?
2021-07-19 20:04:14 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-19 20:04:14 +0200 <euouae> Not some other aspect of the peoblrm
2021-07-19 20:04:20 +0200 <euouae> problem*
2021-07-19 20:04:39 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
2021-07-19 20:04:39 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 20:04:54 +0200 <davean> I mean your algorithm isn't determined
2021-07-19 20:05:02 +0200 <davean> you design one to optimize for the HW
2021-07-19 20:05:06 +0200 <geekosaur> you'd best hope they are, but that would mean it's been specialized to your supercomputer
2021-07-19 20:05:27 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 20:05:51 +0200 <davean> what alg. is best depends on what your counting, and what the various costs are
2021-07-19 20:06:02 +0200 <davean> along with your expected problem parameters
2021-07-19 20:06:45 +0200 <euouae> So it’s really hard or are you just talking about the optimal case?
2021-07-19 20:07:14 +0200 <monochrom> I would think "really hard" and "the optimal case" go well together.
2021-07-19 20:07:55 +0200 <davean> Depends on the problem
2021-07-19 20:08:14 +0200 <davean> if you're scaling it up past a very small case though I'm talking about what it usually takes to do a servicable job at it
2021-07-19 20:08:49 +0200 <euouae> Davean are you speaking from experience with industry or research
2021-07-19 20:08:59 +0200derelict(~derelict@user/derelict)
2021-07-19 20:09:12 +0200 <euouae> obviously any optimization means more profit in industry I imagine it’s really right
2021-07-19 20:09:15 +0200 <davean> yes, though my research wasn't particularly compute intensive even if it was "AI"
2021-07-19 20:09:43 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-07-19 20:09:50 +0200 <euouae> But in research there can be diminishing returns because your problem isn’t computationally feasible anyway after n=10 etc
2021-07-19 20:10:22 +0200 <euouae> Okay… hmmm. Is it possible for me to get into this at all or am I hopeless?
2021-07-19 20:10:36 +0200 <davean> euouae: I mean theres a huge difference between Floyd-Warshall and A*
2021-07-19 20:10:43 +0200 <davean> euouae: but they both sorta solve the same problem space
2021-07-19 20:10:44 +0200 <geekosaur> nobody here can tell that as we don't know your problem
2021-07-19 20:10:59 +0200 <euouae> I don’t know those davean
2021-07-19 20:11:31 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 250 seconds)
2021-07-19 20:11:55 +0200 <euouae> Okay maybe I’ll ask again if I have something more to show
2021-07-19 20:11:56 +0200 <davean> ANd oh no, Floyd-Warshall is O(|V|^3), and A* is only O(|E|)! Clearly A* is always better? Except not at all
2021-07-19 20:12:22 +0200fendor(~fendor@77.119.223.215.wireless.dyn.drei.com)
2021-07-19 20:12:45 +0200 <euouae> Big constants davean?
2021-07-19 20:12:45 +0200 <davean> well |E| can be ~ |V|^2, and what if you want the best paths, not approximations, but you're metric isn't admissible? And you want it for all of them? Or even just one side of those?
2021-07-19 20:12:51 +0200 <davean> euouae: no, nothing to do with constants
2021-07-19 20:13:25 +0200dunkeln(~dunkeln@188.71.231.232) (Ping timeout: 268 seconds)
2021-07-19 20:13:40 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-19 20:13:41 +0200 <davean> Algrithmicly Floyd-Warshall is the same complexity for some use cases, because while they solve the same-ish problems, they do it for different uses
2021-07-19 20:13:57 +0200 <davean> if you do something |V|^2 |V times, thats |V|^3
2021-07-19 20:14:17 +0200 <davean> But Floyd-Warshall requires more communication
2021-07-19 20:14:27 +0200 <davean> A* is the "embarasingly" paralleler case
2021-07-19 20:14:53 +0200 <davean> so if you're CPUs are very seperated, maybe you want to work more like that again, except not you can go back and plan the communication of F-W ...
2021-07-19 20:15:40 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-19 20:16:14 +0200 <euouae> Oh man I’m not following
2021-07-19 20:17:29 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Quit: Leaving)
2021-07-19 20:18:10 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-07-19 20:18:36 +0200chris_(~chris@81.96.113.213)
2021-07-19 20:20:08 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 252 seconds)
2021-07-19 20:20:36 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-07-19 20:21:41 +0200euandreh(~euandreh@191.181.59.160) (Quit: WeeChat 3.2)
2021-07-19 20:22:54 +0200euouae(~euouae@user/euouae) (Quit: Client closed)
2021-07-19 20:23:34 +0200chris_(~chris@81.96.113.213) (Ping timeout: 268 seconds)
2021-07-19 20:29:59 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
2021-07-19 20:30:19 +0200Topsi(~Tobias@dyndsl-095-033-024-196.ewe-ip-backbone.de) (Quit: Leaving.)
2021-07-19 20:31:29 +0200pavonia(~user@user/siracusa)
2021-07-19 20:33:26 +0200zangi(~zangi@103.154.230.230) (Ping timeout: 252 seconds)
2021-07-19 20:33:29 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
2021-07-19 20:34:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-07-19 20:35:30 +0200chris_(~chris@81.96.113.213)
2021-07-19 20:35:31 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-19 20:36:29 +0200dunkeln(~dunkeln@188.71.231.232)
2021-07-19 20:37:58 +0200chris_(~chris@81.96.113.213)
2021-07-19 20:38:46 +0200Null_A(~null_a@2601:645:8700:2290:34e6:e307:f490:7d07) (Remote host closed the connection)
2021-07-19 20:40:46 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-19 20:41:58 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-19 20:43:27 +0200matijja(~matijja@193.77.181.201) (Quit: ZNC 1.8.1 - https://znc.in)
2021-07-19 20:44:47 +0200fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-07-19 20:44:49 +0200matijja(~matijja@193.77.181.201)
2021-07-19 20:45:17 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 20:46:51 +0200chris_(~chris@81.96.113.213)
2021-07-19 20:51:27 +0200chris_(~chris@81.96.113.213) (Ping timeout: 255 seconds)
2021-07-19 20:55:01 +0200dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 268 seconds)
2021-07-19 20:59:40 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
2021-07-19 21:01:27 +0200hseg(~gesh@185.120.126.10)
2021-07-19 21:01:36 +0200dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net)
2021-07-19 21:02:31 +0200euouae(~euouae@user/euouae)
2021-07-19 21:02:37 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Remote host closed the connection)
2021-07-19 21:02:41 +0200h98(~h98@187.83.249.216.dyn.smithville.net)
2021-07-19 21:03:36 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-07-19 21:04:02 +0200 <euouae> Hello why am I getting a stack overflow for this? sum $ map f [T x y z | x<-xs, y<-xs, z<-xs ] where xs has 256 elements
2021-07-19 21:04:22 +0200 <euouae> and f calculates the area of the triangle with vertices x y and z
2021-07-19 21:04:25 +0200 <Hecate> euouae: stack or heap?
2021-07-19 21:04:34 +0200 <euouae> Says stack on Gucci
2021-07-19 21:04:36 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-19 21:04:37 +0200 <euouae> Ghci
2021-07-19 21:05:44 +0200 <davean> 256^3?
2021-07-19 21:05:47 +0200 <h98> 256^3 = 16,777,216
2021-07-19 21:05:57 +0200 <euouae> I was hoping that it wouldn’t have to expand a 256^3 list before summing
2021-07-19 21:06:03 +0200 <geekosaur> is this sum being foldl again?
2021-07-19 21:06:23 +0200 <euouae> Are you asking me?
2021-07-19 21:06:30 +0200 <geekosaur> no
2021-07-19 21:07:00 +0200 <hseg> hi. have this generator http://ix.io/3tqe, and I would like to generalize it so its input generators can depend on each other's results (i.e. want to be able to pass [a -> Gen a])
2021-07-19 21:07:11 +0200 <Rembane> euouae: What happens if you replace sum with foldr1 (+) ?
2021-07-19 21:07:20 +0200 <hseg> have tried just doing that, but it involves a lot of churn
2021-07-19 21:07:26 +0200 <hseg> is there a more mtl'y way of writing this that can help avoid this churn
2021-07-19 21:07:28 +0200 <hseg> ?
2021-07-19 21:07:46 +0200dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 246 seconds)
2021-07-19 21:08:18 +0200 <Hecate> euouae: until you're on the version of GHC that has sum strict without optimisations, please enable them when you do stuff like that, otherwise space leaks will knock at your door
2021-07-19 21:09:10 +0200 <geekosaur> well, you also have to be on a version of ghc which allows optiimization in ghci
2021-07-19 21:09:11 +0200 <euouae> Okay so 8.6.5 is old
2021-07-19 21:09:31 +0200chris_(~chris@81.96.113.213)
2021-07-19 21:09:45 +0200 <euouae> Rembane got same thing much later
2021-07-19 21:10:05 +0200 <Rembane> euouae: Got it!
2021-07-19 21:10:06 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-19 21:10:09 +0200 <euouae> Ok I guess I have to enable optimizations
2021-07-19 21:10:13 +0200 <euouae> Got what ?
2021-07-19 21:10:23 +0200 <davean> foldr' (+) 0 instead of sum sohuld fix it also
2021-07-19 21:11:22 +0200 <davean> (That doesn't require optimizations)
2021-07-19 21:11:36 +0200 <maerwald> anyone good with libarchive? Do you have a guarantee that when reading list of archive entries that the first entry is the root folder (if any)?
2021-07-19 21:12:31 +0200 <davean> maerwald: I certainly can make a tar that thats not true of.
2021-07-19 21:12:37 +0200dunkeln(~dunkeln@188.71.231.232) (Ping timeout: 268 seconds)
2021-07-19 21:12:48 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-07-19 21:12:54 +0200 <maerwald> yeah... I want to strip the root folder, but libarchive API doesn't have that
2021-07-19 21:12:59 +0200 <davean> libarchive would have to pre-read the entire tar to avoid it, at best
2021-07-19 21:13:01 +0200juhp(~juhp@128.106.188.66)
2021-07-19 21:13:27 +0200 <geekosaur> and there are versions of tar that re-output a folder after its contents to allow the other end to more easily set mtime etc.
2021-07-19 21:13:38 +0200o1lo01ol1o(~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Remote host closed the connection)
2021-07-19 21:14:17 +0200 <maerwald> the alternative is to unpack as-is, make sure you're on the same device and then do an atomic move operation, stripping the root folder away
2021-07-19 21:14:24 +0200 <euouae> Davean also gives me stack overflow
2021-07-19 21:14:27 +0200 <maerwald> but on windows, any file operation is doomed to have locking issues
2021-07-19 21:14:28 +0200benin0369(~benin@183.82.177.8) (Ping timeout: 268 seconds)
2021-07-19 21:14:46 +0200 <euouae> You might be able to hack libarchive
2021-07-19 21:14:51 +0200 <maerwald> no time
2021-07-19 21:15:17 +0200chris_(~chris@81.96.113.213)
2021-07-19 21:16:30 +0200 <davean> maerwald: Conceptually you'd have to do 2 passes over a tar for that, at best
2021-07-19 21:16:51 +0200 <maerwald> I think the idea would be to lazily read all entries... fmap over them and strip the root dir, lazily create a new tar archive from the entries and then lazily unpack it
2021-07-19 21:17:05 +0200 <davean> why create a new tar archive?
2021-07-19 21:17:07 +0200 <euouae> Man pages are outdated
2021-07-19 21:17:11 +0200 <davean> why not just process them as you unpack?
2021-07-19 21:17:14 +0200 <euouae> Maybe read the source code
2021-07-19 21:17:16 +0200 <maerwald> davean: there's no function to unpack from entries
2021-07-19 21:17:44 +0200 <h98> euouae did you try foldr (\x y -> (f x) + y) 0 [T x y z ....]?
2021-07-19 21:18:46 +0200 <euouae> Maerwald: seems related https://github.com/libarchive/libarchive/wiki/WishList#seek-in-archives
2021-07-19 21:19:05 +0200 <euouae> H98 would thy be better?
2021-07-19 21:19:23 +0200 <maerwald> euouae: the haskell bindings might not be exhaustive
2021-07-19 21:19:48 +0200chris_(~chris@81.96.113.213) (Ping timeout: 255 seconds)
2021-07-19 21:19:53 +0200 <euouae> Yeah you’d have to make that but even then I’m painting to the fact that it’s on a wishlist maereald
2021-07-19 21:20:11 +0200 <maerwald> I'd have to write my own version of `toDisk :: Entry FilePath ByteString -> IO ()`
2021-07-19 21:20:19 +0200 <maerwald> which sounds trivial, but isn't
2021-07-19 21:20:39 +0200 <euouae> Go for a solution that isn’t efficient but works?
2021-07-19 21:20:46 +0200 <maerwald> hardlinks, softlinks, preserving file properties
2021-07-19 21:21:34 +0200 <euouae> H98 also gives stack overflow
2021-07-19 21:21:55 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-19 21:23:00 +0200AWizzArd_AWizzArd
2021-07-19 21:23:33 +0200AWizzArd(~code@gehrels.uberspace.de) (Changing host)
2021-07-19 21:23:33 +0200AWizzArd(~code@user/awizzard)
2021-07-19 21:24:05 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 21:24:10 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-19 21:27:21 +0200 <euouae> So the issue is ghci being silly right
2021-07-19 21:27:28 +0200dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net)
2021-07-19 21:28:01 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds)
2021-07-19 21:29:49 +0200 <h98> yeah I think so
2021-07-19 21:29:51 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
2021-07-19 21:29:52 +0200 <h98> I tried this: https://paste.tomsmeding.com/QVCoWxOz
2021-07-19 21:30:05 +0200qbt(~edun@user/edun) (Quit: WeeChat 3.2)
2021-07-19 21:30:14 +0200 <h98> if I compile and run it i get 6467616768 after a few seconds
2021-07-19 21:30:26 +0200 <h98> if I call test in ghci I get a stack overflow
2021-07-19 21:30:30 +0200 <h98> version 8.10.4
2021-07-19 21:32:16 +0200 <euouae> Thank you !
2021-07-19 21:32:27 +0200 <euouae> Did you have to enable optimizations ?
2021-07-19 21:33:13 +0200 <h98> I have no idea how, so I don't think so
2021-07-19 21:33:21 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-19 21:34:14 +0200 <euouae> Thanks
2021-07-19 21:34:22 +0200 <geekosaur> ghci can't do optimizations except in very recent versions
2021-07-19 21:36:39 +0200maerwald(~maerwald@mail.hasufell.de) (Changing host)
2021-07-19 21:36:39 +0200maerwald(~maerwald@user/maerwald)
2021-07-19 21:37:30 +0200alx741(~alx741@186.178.109.120) (Ping timeout: 252 seconds)
2021-07-19 21:38:00 +0200 <h98> oh but foldl' works
2021-07-19 21:38:38 +0200 <h98> https://paste.tomsmeding.com/dLbV73r1 same thing, but no overflow in ghci
2021-07-19 21:39:35 +0200 <h98> RWH p. 97 talks about this
2021-07-19 21:42:33 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2021-07-19 21:42:52 +0200 <dsal> why is `sum` bad? Is this one of those things where fixing it breaks something probably nobody cares about?
2021-07-19 21:44:39 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-19 21:46:05 +0200_73(~user@pool-96-252-123-136.bstnma.fios.verizon.net)
2021-07-19 21:46:08 +0200 <monochrom> I compiled with -O, no stack overflow, in fact immediate answer.
2021-07-19 21:46:47 +0200 <monochrom> main = print (let xs = [1..256] in sum [ x+y+z | x <- xs, y <- xs, z <- xs ])
2021-07-19 21:46:59 +0200 <geekosaur> dsal, there was a whole discussion on -cafe about various things using foldl instead of foldl'
2021-07-19 21:47:15 +0200 <geekosaur> and thereby being prone to stack overflows
2021-07-19 21:47:28 +0200 <geekosaur> sum being the prime example
2021-07-19 21:47:35 +0200 <_73> what is the right abstraction to avoid explicit recursion on a function using a monadic action. I tried to write it as a foldr but wasn't able to succeed. Here is my code that does use explicit recursion: http://dpaste.com/2SKMBLTA8
2021-07-19 21:48:15 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
2021-07-19 21:48:32 +0200 <dsal> :t foldM
2021-07-19 21:48:33 +0200 <lambdabot> (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b
2021-07-19 21:48:48 +0200 <geekosaur> I think it comes down to nobody thought about it and the original Prelude was written for comprehensibility by newcomers rather than performance
2021-07-19 21:49:05 +0200 <dsal> @src sum
2021-07-19 21:49:06 +0200 <lambdabot> sum = foldl (+) 0
2021-07-19 21:49:22 +0200 <monochrom> Oh don't worry about @src, it's independently handwritten.
2021-07-19 21:49:28 +0200 <monochrom> Hell, s/worry/trust/
2021-07-19 21:49:39 +0200 <dsal> Yeah. I just tend to assume it's a simplification for understanding.
2021-07-19 21:49:57 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-19 21:50:10 +0200 <monochrom> Yeah, great educational tool.
2021-07-19 21:50:44 +0200 <geekosaur> and @src is mostly lifted from the Report, and is similarly intended for reading rather than running
2021-07-19 21:50:52 +0200paolino(~paolo@84.33.141.5) (Remote host closed the connection)
2021-07-19 21:51:52 +0200oso(~oso@2601:58c:c080:a950:f275:2530:b398:680b) (Ping timeout: 246 seconds)
2021-07-19 21:52:04 +0200alx741(~alx741@186.178.108.174)
2021-07-19 21:52:05 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 21:52:17 +0200o1lo01ol1o(~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
2021-07-19 21:52:32 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 252 seconds)
2021-07-19 21:52:42 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-19 21:52:55 +0200 <_73> I got it work with foldM thanks
2021-07-19 21:53:28 +0200favonia(~favonia@user/favonia)
2021-07-19 21:53:38 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 252 seconds)
2021-07-19 21:56:51 +0200ziman(~ziman@user/ziman) (Ping timeout: 276 seconds)
2021-07-19 21:57:11 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
2021-07-19 21:57:17 +0200ziman(~ziman@c25-5.condornet.sk)
2021-07-19 21:57:47 +0200o1lo01ol1o(~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 255 seconds)
2021-07-19 21:59:59 +0200ziman(~ziman@c25-5.condornet.sk) (Changing host)
2021-07-19 21:59:59 +0200ziman(~ziman@user/ziman)
2021-07-19 22:00:53 +0200 <euouae> Heh I got “killed” after I run ghc
2021-07-19 22:01:14 +0200 <euouae> What does that mean ?
2021-07-19 22:01:29 +0200 <geekosaur> the OOM killer got you
2021-07-19 22:01:50 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 255 seconds)
2021-07-19 22:01:57 +0200 <geekosaur> i.e. the Linux kernel decided your process was eating too much memory and nuked it
2021-07-19 22:03:39 +0200 <geekosaur> (or similar for OS X, etc.; only Windows will differ but it has its own way of dealing with that)
2021-07-19 22:04:39 +0200 <euouae> Hmm alright the oom reaper
2021-07-19 22:05:15 +0200juhp(~juhp@128.106.188.66) (Ping timeout: 255 seconds)
2021-07-19 22:06:33 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds)
2021-07-19 22:07:44 +0200juhp(~juhp@128.106.188.66)
2021-07-19 22:09:27 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Quit: Leaving)
2021-07-19 22:15:09 +0200euouae(~euouae@user/euouae) (Quit: Ping timeout (120 seconds))
2021-07-19 22:15:31 +0200lavaman(~lavaman@98.38.249.169)
2021-07-19 22:15:51 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
2021-07-19 22:16:07 +0200 <ddb> geekosaur: is that discussion about things using foldl instead of foldl' logged or archived anywhere?
2021-07-19 22:17:23 +0200 <maerwald> can you have extaustiveness check with NamedFieldPuns?
2021-07-19 22:18:25 +0200ubert(~Thunderbi@91.141.42.221.wireless.dyn.drei.com)
2021-07-19 22:18:25 +0200 <maerwald> let's say you have Foo = Foo { foo1 :: String, foo2 :: String, foo3 :: String } and you want to pattern match on it without relying on the order, but also make sure you don't miss something when a new record is added
2021-07-19 22:19:21 +0200me_(~me@87-59-111-97-cable.dk.customer.tdc.net)
2021-07-19 22:19:27 +0200me_(~me@87-59-111-97-cable.dk.customer.tdc.net) (Client Quit)
2021-07-19 22:19:49 +0200 <maerwald> Relying on order is shitty when all the records are of the same type
2021-07-19 22:19:52 +0200me_(~me@87-59-111-97-cable.dk.customer.tdc.net)
2021-07-19 22:20:06 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
2021-07-19 22:20:12 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-07-19 22:20:33 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-19 22:20:58 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-07-19 22:21:18 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-19 22:22:19 +0200 <geekosaur> ddb, somewhere on the haskell-cafe mailing list archives
2021-07-19 22:23:10 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 22:23:55 +0200me_(~me@87-59-111-97-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-07-19 22:24:06 +0200favonia(~favonia@user/favonia)
2021-07-19 22:25:36 +0200zebrag(~chris@user/zebrag)
2021-07-19 22:26:04 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-19 22:26:21 +0200Brumaire(~quassel@81-64-14-121.rev.numericable.fr)
2021-07-19 22:30:18 +0200Brumaire(~quassel@81-64-14-121.rev.numericable.fr) (Remote host closed the connection)
2021-07-19 22:30:19 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 268 seconds)
2021-07-19 22:31:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-19 22:32:09 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-19 22:35:04 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
2021-07-19 22:35:24 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
2021-07-19 22:35:30 +0200BestSteve(~beststeve@220-135-3-239.HINET-IP.hinet.net) (Ping timeout: 245 seconds)
2021-07-19 22:35:54 +0200BestSteve(~beststeve@220-135-3-239.HINET-IP.hinet.net)
2021-07-19 22:36:34 +0200xff0x_(~xff0x@2001:1a81:5299:ea00:2c16:bae7:eca6:fd06) (Ping timeout: 240 seconds)
2021-07-19 22:38:36 +0200xff0x_(~xff0x@185.65.135.235)
2021-07-19 22:44:51 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
2021-07-19 22:45:08 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 22:45:10 +0200spruit11_(~quassel@2a02:a467:ccd6:1:11d0:89ea:1c73:9299)
2021-07-19 22:47:10 +0200BestSteve(~beststeve@220-135-3-239.HINET-IP.hinet.net) (Ping timeout: 245 seconds)
2021-07-19 22:47:31 +0200spruit11(~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b) (Ping timeout: 246 seconds)
2021-07-19 22:48:54 +0200xff0x_(~xff0x@185.65.135.235) (Ping timeout: 258 seconds)
2021-07-19 22:48:54 +0200BestSteve(~beststeve@2001-b011-0002-3b2a-06d9-f5ff-fe38-e249.dynamic-ip6.hinet.net)
2021-07-19 22:50:48 +0200xff0x_(~xff0x@2001:1a81:5299:ea00:2c16:bae7:eca6:fd06)
2021-07-19 22:51:36 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 255 seconds)
2021-07-19 22:52:23 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 22:52:40 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-07-19 22:56:12 +0200hexfive(~eric@50.35.83.177)
2021-07-19 22:56:48 +0200acidjnk_new(~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de)
2021-07-19 22:57:36 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
2021-07-19 22:57:55 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-07-19 22:58:26 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit)
2021-07-19 22:58:45 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-07-19 22:59:05 +0200oso(~oso@2601:58c:c080:a950:f275:2530:b398:680b)
2021-07-19 23:01:00 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit)
2021-07-19 23:01:02 +0200 <hseg> feels like this can be expressed in standard terms, any ideas? http://ix.io/3tsp
2021-07-19 23:01:20 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-07-19 23:02:17 +0200 <hseg> idea is to sum a list, then if possible without changing the sign, replace the last element by its difference from the sum so it all sums to 0
2021-07-19 23:02:46 +0200 <hseg> (need to maintain signs, and the list is sorted by absolute value)
2021-07-19 23:03:35 +0200dunj3(~dunj3@2001:16b8:3046:8200:9324:28de:5bca:d5dc) (Remote host closed the connection)
2021-07-19 23:05:07 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit)
2021-07-19 23:05:27 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-07-19 23:05:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-19 23:06:05 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-19 23:06:47 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit)
2021-07-19 23:07:07 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-07-19 23:07:50 +0200 <dsal> > let xs = init [1, 2, 3] in xs <> [0 - sum xs] -- hseg like this? I'm a bit confused by your specification.
2021-07-19 23:07:51 +0200 <lambdabot> [1,2,-3]
2021-07-19 23:08:01 +0200Null_A(~null_a@2601:645:8700:2290:34e6:e307:f490:7d07)
2021-07-19 23:08:49 +0200 <hseg> spec is: (assuming output is Just): ((==) `on` compare 0) xs (fixSum xs), sum (fixSum xs) == 0
2021-07-19 23:09:35 +0200 <hseg> and I'm choosing to limit the cases i'm fixing to those (==) `on` init
2021-07-19 23:10:37 +0200 <hseg> hrm. your code is probably clearer -- just need to compose with a guard to make sure it satisfies spec
2021-07-19 23:10:52 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-19 23:10:54 +0200 <hseg> though if there were some way of avoiding the append, that would be nice
2021-07-19 23:12:07 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
2021-07-19 23:12:27 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-07-19 23:13:59 +0200 <EvanR> you want to change the last element of a list?
2021-07-19 23:14:03 +0200 <hseg> y
2021-07-19 23:14:07 +0200 <EvanR> oof
2021-07-19 23:14:53 +0200 <hseg> could fix it so it's correct-by-construction, but that makes my generator code very ugly
2021-07-19 23:14:57 +0200 <EvanR> can you designate the first element the element that needs to be changed
2021-07-19 23:15:28 +0200 <hseg> nope -- sorted ascending by absolute value
2021-07-19 23:15:44 +0200 <EvanR> how about descending
2021-07-19 23:15:58 +0200 <hseg> and there's enough stuff depending on this already that I'd rather not push that redesign
2021-07-19 23:16:46 +0200 <hseg> should just take the l and continue -- probably not going to be significant enough to matter
2021-07-19 23:16:51 +0200 <hseg> (lists will be short)
2021-07-19 23:17:09 +0200 <hseg> at least it's O(n) vs O(1), not O(n) vs O(n^k)
2021-07-19 23:17:10 +0200 <EvanR> i like to split things up into steps rather than code golfing
2021-07-19 23:17:30 +0200 <hseg> ?
2021-07-19 23:17:44 +0200 <hseg> where are you seeing golfing in my code?
2021-07-19 23:17:49 +0200 <EvanR> or in this case, perhaps write a combinator that traverses a list and uses a function argument to decide how to modify the last element
2021-07-19 23:18:02 +0200 <EvanR> i only saw 1 line of code, so it seems like golf xD
2021-07-19 23:18:10 +0200 <hseg> :)
2021-07-19 23:18:44 +0200 <hseg> posted code earlier, but that could work
2021-07-19 23:19:04 +0200spruit11(~quassel@2a02:a467:ccd6:1:617d:c9ec:74dc:292b)
2021-07-19 23:19:05 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
2021-07-19 23:19:24 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-07-19 23:19:42 +0200 <hseg> k, not bad enough to matter
2021-07-19 23:19:43 +0200 <EvanR> a combination fold and specialized list reconstructor. And scanl may already be that
2021-07-19 23:20:42 +0200 <davean> hseg: how does this handle the singleton list?
2021-07-19 23:20:48 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-19 23:21:04 +0200 <hseg> [0] -> Just [0], [x] -> Nothing
2021-07-19 23:21:14 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit)
2021-07-19 23:21:30 +0200spruit11_(~quassel@2a02:a467:ccd6:1:11d0:89ea:1c73:9299) (Ping timeout: 240 seconds)
2021-07-19 23:21:31 +0200 <EvanR> oh failure, nvm
2021-07-19 23:21:41 +0200 <davean> Oh damn, thats ... ok
2021-07-19 23:21:53 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar)
2021-07-19 23:22:26 +0200 <EvanR> if you're changing the last element wouldn't [x] |-> Just [0]
2021-07-19 23:22:36 +0200 <davean> EvanR: Thats why I asked!
2021-07-19 23:23:01 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Ping timeout: 268 seconds)
2021-07-19 23:23:11 +0200 <davean> I had suspicions about the spec
2021-07-19 23:23:13 +0200 <hseg> no, because i need elementwise (==) `on` compare 0
2021-07-19 23:23:37 +0200 <hseg> which is more important to me than success fixing the sum
2021-07-19 23:24:30 +0200 <EvanR> less a spec and more a would be nice list xD
2021-07-19 23:24:44 +0200 <davean> Yah, I think you need to think about your actual problem space hseg
2021-07-19 23:24:52 +0200 <davean> I suspect you haven't come to understanding of your actual goals
2021-07-19 23:25:26 +0200 <hseg> am writing a quickcheck generator. all I need is that it generate enough correct values quickly
2021-07-19 23:25:42 +0200 <davean> No, thats not what you need for good quickchecks
2021-07-19 23:25:54 +0200 <davean> Thats what you need for invalid quickchecks
2021-07-19 23:26:09 +0200 <hseg> because I also need a good shrink?
2021-07-19 23:26:18 +0200 <hseg> (need one regardless (: )
2021-07-19 23:26:19 +0200 <davean> No, shrink is secondary and never required
2021-07-19 23:26:41 +0200 <davean> Quickcheck generators have to cover the domain, or at least the preimage
2021-07-19 23:26:54 +0200 <hseg> basically all I'm using this for is for randomly sampling the domain
2021-07-19 23:27:11 +0200 <davean> But you've just described NOT sampling the domain
2021-07-19 23:27:28 +0200 <davean> you'd just described sampling a particular subdomain of the domain
2021-07-19 23:28:03 +0200 <davean> And even suggested it isn't the preimage
2021-07-19 23:28:07 +0200 <davean> (strongly)
2021-07-19 23:28:36 +0200 <davean> Making the quickcheck results close to meaingless
2021-07-19 23:28:54 +0200cuz(~user@38.140.58.234) (Ping timeout: 268 seconds)
2021-07-19 23:29:01 +0200 <hseg> perhaps. am not using the full power of quickcheck, regardless
2021-07-19 23:29:11 +0200 <davean> This isn't about power, this is about validity
2021-07-19 23:29:32 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 258 seconds)
2021-07-19 23:29:38 +0200 <hseg> yes? so I know I will get false positives/negatives
2021-07-19 23:30:03 +0200 <davean> So whats the point of running this code at all? You know as much before it runs as after
2021-07-19 23:30:08 +0200 <hseg> as long as I'm still having recognizable true negatives, I'm not worried about it
2021-07-19 23:31:02 +0200 <hseg> I'm testing a hypothesis that an invariant I have in mind is fine enough to predict the value of a function
2021-07-19 23:31:29 +0200 <hseg> so as long as my samplings show it isn't, I don't care that I haven't sampled the entire space
2021-07-19 23:31:34 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-19 23:31:35 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-07-19 23:31:42 +0200 <EvanR> maybe this is a probabalistic application
2021-07-19 23:31:53 +0200 <hseg> not probabilistic. hypothesis testing
2021-07-19 23:32:08 +0200 <EvanR> counterexample finding?
2021-07-19 23:32:16 +0200 <hseg> exactly
2021-07-19 23:32:20 +0200 <EvanR> cool
2021-07-19 23:32:28 +0200 <EvanR> it only takes 1 xD
2021-07-19 23:32:34 +0200 <hseg> exactly
2021-07-19 23:32:46 +0200 <hseg> and unfortunately, I have >>>1
2021-07-19 23:33:37 +0200 <hseg> so I need to refine the invariant I'm using
2021-07-19 23:33:52 +0200 <hseg> not clear how, though
2021-07-19 23:34:29 +0200 <hseg> welp. that's what research is for, ig
2021-07-19 23:34:31 +0200 <EvanR> eventually you will not find any counterexamples
2021-07-19 23:34:54 +0200 <hseg> yeah. am hoping that by then, will have actual proof that my invariant works
2021-07-19 23:36:12 +0200 <hseg> especially considering this is trying to give a closed form for a recursive formula, have high hopes it is possible
2021-07-19 23:39:48 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
2021-07-19 23:39:53 +0200cuz(~user@38.140.58.234)
2021-07-19 23:40:06 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-07-19 23:40:50 +0200o1lo01ol1o(~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
2021-07-19 23:41:52 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-19 23:42:57 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
2021-07-19 23:43:11 +0200fendor(~fendor@77.119.223.215.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-07-19 23:44:16 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-19 23:44:46 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-19 23:45:01 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
2021-07-19 23:45:32 +0200o1lo01ol1o(~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 265 seconds)
2021-07-19 23:45:32 +0200cuz(~user@38.140.58.234) (Ping timeout: 265 seconds)
2021-07-19 23:45:57 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-19 23:46:28 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-07-19 23:46:29 +0200ubert(~Thunderbi@91.141.42.221.wireless.dyn.drei.com) (Remote host closed the connection)
2021-07-19 23:50:33 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 255 seconds)
2021-07-19 23:51:06 +0200burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-07-19 23:53:52 +0200pesada(~agua@2804:18:70:635e:1:0:3619:5a18)
2021-07-19 23:54:45 +0200Matthias1(~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
2021-07-19 23:55:58 +0200agua(~agua@2804:14c:8793:8e2f:642c:be4c:c775:de87) (Ping timeout: 256 seconds)
2021-07-19 23:57:09 +0200agua(~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04)
2021-07-19 23:57:36 +0200bpv(~bryce@207.73.178.205)
2021-07-19 23:58:23 +0200burnsidesLlama(~burnsides@client-8-87.eduroam.oxuni.org.uk)
2021-07-19 23:59:00 +0200 <bpv> How is it going?