2021/11/17

2021-11-17 00:00:02 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
2021-11-17 00:00:06 +0100adium(adium@user/adium) (Ping timeout: 260 seconds)
2021-11-17 00:00:35 +0100 <monochrom> unit73e: I think it's a foldr
2021-11-17 00:01:34 +0100 <unit73e> monochrom, yeah seems like it. I'm converting that.
2021-11-17 00:01:45 +0100 <unit73e> but I'll do the newbie way first
2021-11-17 00:02:22 +0100 <monochrom> It is also OK to leave the code as is. We don't need to foldr-ize everything that can be foldr-ized.
2021-11-17 00:03:21 +0100 <unit73e> I just don't like that empty list function there doing nothing
2021-11-17 00:03:28 +0100ystael(~ystael@user/ystael) (Read error: Connection reset by peer)
2021-11-17 00:04:25 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 250 seconds)
2021-11-17 00:04:42 +0100 <monochrom> Ah. Maybe you like this middle ground: renderSprites' r t xs p = go xs where go [] = return (); go (x:xs) = do ... ; go xs
2021-11-17 00:06:07 +0100rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
2021-11-17 00:06:10 +0100 <monochrom> (I'm too lazy to type out "renderer", "position", etc. You should still stick to the longer, better names :) )
2021-11-17 00:06:21 +0100 <unit73e> that's fine I get it lol thanks
2021-11-17 00:06:37 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 265 seconds)
2021-11-17 00:07:11 +0100 <unit73e> this is just for an example to print all "idle" animation sprites in sequence anyway
2021-11-17 00:07:16 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-17 00:07:21 +0100 <unit73e> it's not going to be used in pratice
2021-11-17 00:07:58 +0100 <unit73e> maybe I should just print the texture positions instead
2021-11-17 00:08:01 +0100 <monochrom> Ho hrm, it may be actually a mapM_
2021-11-17 00:08:31 +0100 <unit73e> the problem with mapM_ is I need to accumulate the sum of points
2021-11-17 00:08:32 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-11-17 00:08:46 +0100 <unit73e> but I can first convert the list
2021-11-17 00:08:50 +0100 <unit73e> and then use mapM_
2021-11-17 00:09:11 +0100 <unit73e> which makes more sense than that thing I pulled off
2021-11-17 00:09:20 +0100 <monochrom> Oh oops, I forgot that position is not pos.
2021-11-17 00:09:27 +0100zincy_(~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection)
2021-11-17 00:09:42 +0100 <unit73e> but you know what? I'll just print the texture positions lol
2021-11-17 00:09:49 +0100 <monochrom> haha OK
2021-11-17 00:09:56 +0100 <unit73e> since it doesn't really matter lol
2021-11-17 00:10:13 +0100 <janus> int-e: but what is the 'same thing'? geekosaur said that there still is a workaround that forces ($) to always be impredicative, probably even if the (fixed) extension ImpredicativeTypes is off
2021-11-17 00:10:40 +0100 <geekosaur> that is my understanding, yes
2021-11-17 00:11:22 +0100 <geekosaur> the main difference is ImpredicativeTypes always had a very vague specification, and by itself it wasn't always sufficient to make ($) impredicative even when turned on, so there was a hack to always make it work
2021-11-17 00:11:25 +0100 <int-e> janus: so there's still an ad-hoc hack of some kind
2021-11-17 00:12:02 +0100 <geekosaur> with QuickLook, there is now a sane impredicative types story *and* it makes ($) work as expected, so the hack has been reduced to always making it impredicative even whne quicklook is disabled
2021-11-17 00:12:24 +0100 <janus> hehe imagine if ghc devs forced everybody to turn ImpredicativeTypes on by removing this hack :P
2021-11-17 00:12:34 +0100 <janus> would be an even larger outcry than for the not-eq stuff :O
2021-11-17 00:12:43 +0100 <geekosaur> runST isn't used *that* often, I think
2021-11-17 00:12:44 +0100servytor(uid525486@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-17 00:12:57 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Read error: Connection timed out)
2021-11-17 00:13:06 +0100 <geekosaur> but still, they do at least try to avoid breaking older programs
2021-11-17 00:13:23 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-17 00:13:29 +0100 <int-e> geekosaur: oh but when I use it, doing runST $ do [...] is a very common pattern
2021-11-17 00:13:31 +0100 <geekosaur> (which is one reason there's a shitstorm brewing over neq)
2021-11-17 00:15:03 +0100 <monochrom> BlockArguments was a solution to "runST do", but people decided to hate it.
2021-11-17 00:15:06 +0100 <int-e> There's the BlockArguments thing too and I hate it.
2021-11-17 00:15:13 +0100 <monochrom> See? :)
2021-11-17 00:15:17 +0100 <hpc> what's wrong with block arguments?
2021-11-17 00:15:19 +0100 <geekosaur> nice timing
2021-11-17 00:15:22 +0100 <int-e> monochrom: Happy to confirm.
2021-11-17 00:16:59 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-11-17 00:17:09 +0100 <glguy> hpc: what's wrong is I have to them them on all the time to use them rather than just getting the better syntax
2021-11-17 00:17:17 +0100 <int-e> hpc: it's irrational, it goes against decades of training and habits :P
2021-11-17 00:17:44 +0100 <glguy> I learned that they were a good idea from writing Agda
2021-11-17 00:18:19 +0100 <monochrom> Hrm, is BlockArguments included in GHC2021?
2021-11-17 00:18:24 +0100 <int-e> hpc: the way things are, when I see runST do I read `do` as a variable and then I have to resolve a clash between that and it being a keyword. This is *not* the case for the *familiar* runST $ do
2021-11-17 00:18:31 +0100 <int-e> habits die hard
2021-11-17 00:18:38 +0100 <hpc> heh, that's fair
2021-11-17 00:18:45 +0100 <yushyin> monochrom: no :/
2021-11-17 00:18:46 +0100 <monochrom> sob sob no
2021-11-17 00:19:02 +0100 <janus> hmm you have the same situation with all kinda of other keywords
2021-11-17 00:19:11 +0100 <geekosaur> I don't have that problem but I'm conditioned to see do as a keyword. It just looks weird
2021-11-17 00:19:13 +0100 <monochrom> Well, at least ScopedTypeVariables is in.
2021-11-17 00:19:16 +0100 <janus> keywords always need special casing in your brain , and syntax highlighting helps with that
2021-11-17 00:19:21 +0100ec(~ec@gateway/tor-sasl/ec)
2021-11-17 00:19:22 +0100 <glguy> > 1 * do 3 + 4
2021-11-17 00:19:24 +0100 <lambdabot> 7
2021-11-17 00:19:57 +0100 <janus> int-e: i think you just turned me into a BlockArguments fan ;)
2021-11-17 00:20:20 +0100int-eshrugs
2021-11-17 00:20:38 +0100 <monochrom> I'm OK with BlockArguments when there are line breaks to help, e.g., "x = runST do \n", "y = withYYY \h -> \n".
2021-11-17 00:20:39 +0100 <janus> i thought there would be some elaborate argument about how it makes it harder to parse or something :P
2021-11-17 00:20:58 +0100pfurla(~pfurla@2804:14d:5c81:4104:8de2:1993:a832:eced) (Quit: gone to sleep. ZZZzzz…)
2021-11-17 00:21:03 +0100 <monochrom> If you don't have those \n's, the code is harder to eyeball, yes.
2021-11-17 00:21:26 +0100 <monochrom> But who would omit those \n's in practice?
2021-11-17 00:21:55 +0100 <glguy> f \x -> x + 1
2021-11-17 00:22:02 +0100 <int-e> janus: Well it's harder to parse for me personally. I'm grown-up to realize that this is not the case for everyone. And I usually don't care how hard things are to parse for a compiler; if I did I wouldn't touch Haskell at all, the whole indentation story is crazy from that perspective.
2021-11-17 00:22:06 +0100 <glguy> function applied to lambdas
2021-11-17 00:22:07 +0100Pickchea(~private@user/pickchea)
2021-11-17 00:22:08 +0100 <geekosaur> janus, it's actually easier
2021-11-17 00:22:12 +0100jumper149(~jumper149@static.6.71.203.116.clients.your-server.de) (Quit: WeeChat 3.3)
2021-11-17 00:22:13 +0100 <janus> monochrom: there was a person here a couple of months ago who removed all the spacing he could ;)
2021-11-17 00:22:17 +0100 <int-e> s/grown-up to/grown-up enough to/
2021-11-17 00:22:20 +0100 <geekosaur> it eliminates an unnecessary production rule in the grammar
2021-11-17 00:22:30 +0100 <monochrom> "f \x -> x + 1" is short enough that I would support "f (\x -> x + 1)".
2021-11-17 00:22:45 +0100 <monochrom> For longer examples you would have line breaks in the first place.
2021-11-17 00:22:57 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 00:23:04 +0100 <geekosaur> but as monochrom shows, some uses are harder for *people* to parse
2021-11-17 00:23:08 +0100 <glguy> monochrom: It works well to have something like: thing \x y z -> \n function body
2021-11-17 00:23:35 +0100 <glguy> It's silly to argue that is harder to parse because you're not used to it; that's just how things go when change happens and then you get used to it
2021-11-17 00:24:14 +0100 <janus> we must sample the innocent purescript programmers who have never lived the NoBlockArguments life to find out how their brains work
2021-11-17 00:25:22 +0100 <Rembane_> Quite well thank you.
2021-11-17 00:25:26 +0100ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2021-11-17 00:25:31 +0100 <monochrom> haha
2021-11-17 00:25:51 +0100 <int-e> janus: does it involve electrodes
2021-11-17 00:25:57 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
2021-11-17 00:26:21 +0100pfurla(~pfurla@2804:14d:5c81:4104:8de2:1993:a832:eced)
2021-11-17 00:27:19 +0100 <janus> only if you include 'tesla coil' in your definition of electrodes. *evil merkel/burns pose*
2021-11-17 00:27:44 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Read error: No route to host)
2021-11-17 00:28:08 +0100 <monochrom> "GHC2021 is used by GHC if neither Haskell98 nor Haskell2010 is turned on explicitly." Haha, I'm surprised no one made a bigger fuss about this than about no-/=
2021-11-17 00:28:43 +0100 <monochrom> (I just tried in ghci-9.2, "data F a = F a a deriving Functor" is gladly accepted under default settings)
2021-11-17 00:28:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 00:29:53 +0100 <monochrom> Ugh why is PostfixOperators included?!
2021-11-17 00:31:00 +0100 <int-e> > let (!) = product . enumFromTo 1 in (5!)
2021-11-17 00:31:01 +0100 <geekosaur> I think nobody made a fuss because people normally use cabal files and cabal defaults to haskell2010. but that's supposed to change in an upcoming cabal version and *then* we may hear about it
2021-11-17 00:31:02 +0100 <lambdabot> 120
2021-11-17 00:31:08 +0100whatsupdoc(uid509081@hampstead.irccloud.com)
2021-11-17 00:31:17 +0100mark__(~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-11-17 00:31:26 +0100 <janus> monochrome: there is still time for Snoyman to get annoyed by a GHC2021 extension and choose to set Haskell2010 by default in stack ;)
2021-11-17 00:31:42 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2021-11-17 00:34:35 +0100 <int-e> monochrom: Have you been bitten by PostfixOperators? (It's just an eta reduction in the desugaring of (foo ?), right? Which is one of those things that is usually fine...)
2021-11-17 00:34:55 +0100 <monochrom> No.
2021-11-17 00:35:23 +0100 <monochrom> I haven't been bitten by PostfixOperators.
2021-11-17 00:36:19 +0100 <int-e> I mean it's not all that useful either... I'd never write the above in real code.
2021-11-17 00:36:39 +0100 <monochrom> Right, I don't think people actually use it.
2021-11-17 00:36:40 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-17 00:37:18 +0100 <monochrom> I guess the selection criterion was simply "widely agreed to be totally harmless".
2021-11-17 00:38:23 +0100 <janus> would it make it possible to have a postfix lift that is exclamation mark?
2021-11-17 00:38:29 +0100 <janus> then haskell would look like rust :P
2021-11-17 00:38:38 +0100 <janus> if used with e.g. ExceptT
2021-11-17 00:38:48 +0100 <janus> oh my, the calamity
2021-11-17 00:38:52 +0100 <monochrom> I use that criterion too to argue against people who make a big fuss about "why is 'let {} in 5' legal? this makes no sense!"
2021-11-17 00:39:20 +0100 <geekosaur> let (!) = liftIO in ...
2021-11-17 00:39:39 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Read error: Connection timed out)
2021-11-17 00:39:57 +0100 <monochrom> Heh
2021-11-17 00:40:01 +0100 <geekosaur> or unsafePerformIO if you really want to call out the dogs :)
2021-11-17 00:40:24 +0100pfurla_(~pfurla@16.191.255.173.client.dyn.strong-mf37.as54203.net)
2021-11-17 00:40:40 +0100 <janus> oh no, i meant question mark. which is used in rust to escalate the error of their Either (called Result)
2021-11-17 00:40:47 +0100 <int-e> janus: it's a bit of a misnomer because the ? in (foo ?) isn't really a standalone postfix operator; the parentheses are required
2021-11-17 00:41:00 +0100Sgeo(~Sgeo@user/sgeo)
2021-11-17 00:41:10 +0100 <geekosaur> because it's a special case of an operator section
2021-11-17 00:41:33 +0100 <janus> oh, then it's harder to use and misuse
2021-11-17 00:41:34 +0100 <int-e> so no, it won't look like Rust.
2021-11-17 00:41:51 +0100 <monochrom> It looks like (Rust!) :)
2021-11-17 00:41:54 +0100pfurla(~pfurla@2804:14d:5c81:4104:8de2:1993:a832:eced) (Ping timeout: 265 seconds)
2021-11-17 00:42:10 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 00:42:29 +0100 <int-e> EtaReducedLeftSections
2021-11-17 00:45:35 +0100pfurla_(~pfurla@16.191.255.173.client.dyn.strong-mf37.as54203.net) (Ping timeout: 250 seconds)
2021-11-17 00:46:15 +0100max22-(~maxime@2a01cb0883359800fa2f4e7c9f6204ba.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-11-17 00:47:38 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 00:48:17 +0100glguy(x@libera/staff/glguy) (Quit: Quit)
2021-11-17 00:50:30 +0100pfurla(~pfurla@2804:14d:5c81:4104:a029:e568:3465:8d9f)
2021-11-17 00:51:51 +0100glguy(x@libera/staff/glguy)
2021-11-17 00:54:23 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
2021-11-17 00:54:43 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 00:55:36 +0100mark__(~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de)
2021-11-17 01:02:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-11-17 01:05:02 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
2021-11-17 01:06:14 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-11-17 01:06:34 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 01:08:03 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-11-17 01:10:51 +0100eruditass(uid248673@uxbridge.irccloud.com)
2021-11-17 01:13:48 +0100Flonk(~Flonk@vps-zap441517-1.zap-srv.com)
2021-11-17 01:14:14 +0100Flonk(~Flonk@vps-zap441517-1.zap-srv.com) (Client Quit)
2021-11-17 01:15:31 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
2021-11-17 01:16:06 +0100Flonk(~Flonk@vps-zap441517-1.zap-srv.com)
2021-11-17 01:16:22 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 01:19:33 +0100EvanR(~evan@user/evanr)
2021-11-17 01:19:59 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-17 01:20:19 +0100alzgh(~alzgh@user/alzgh)
2021-11-17 01:20:58 +0100Guest42(~Guest42@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
2021-11-17 01:21:59 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 250 seconds)
2021-11-17 01:29:10 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
2021-11-17 01:30:13 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
2021-11-17 01:30:28 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-11-17 01:31:31 +0100vysn(~vysn@user/vysn) (Ping timeout: 250 seconds)
2021-11-17 01:31:45 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-17 01:34:59 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 01:38:27 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-17 01:38:27 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-17 01:38:27 +0100wroathe(~wroathe@user/wroathe)
2021-11-17 01:38:42 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 01:43:00 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-17 01:43:17 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-11-17 01:44:24 +0100_________(~nobody@user/noodly) (Ping timeout: 268 seconds)
2021-11-17 01:44:47 +0100mark__(~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-11-17 01:45:23 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 250 seconds)
2021-11-17 01:45:25 +0100_________(~nobody@user/noodly)
2021-11-17 01:46:39 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 01:49:47 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 01:52:17 +0100EvanR(~evan@user/evanr) (Quit: Leaving)
2021-11-17 01:56:19 +0100mark__(~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de)
2021-11-17 01:58:26 +0100mvk(~mvk@2607:fea8:5cc3:e900::df92)
2021-11-17 02:00:54 +0100EvanR(~evan@user/evanr)
2021-11-17 02:01:49 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-11-17 02:11:52 +0100alx741(~alx741@181.196.68.87) (Ping timeout: 256 seconds)
2021-11-17 02:12:20 +0100 <remexre> is there a type family of kind Nat -> Symbol?
2021-11-17 02:16:51 +0100 <EvanR> ehm what would that do, print the thing out in base ten or something xD
2021-11-17 02:17:32 +0100 <remexre> yeah
2021-11-17 02:17:34 +0100 <remexre> exactly that
2021-11-17 02:17:42 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 02:18:47 +0100 <EvanR> I'm sure it's possible
2021-11-17 02:19:02 +0100 <awpr> it probably became possible to write in base-4.16.0.0 with the addition of AppendSymbol and ConsSymbol
2021-11-17 02:19:44 +0100 <awpr> it's not gonna be super well-behaved in polymorphic contexts, though
2021-11-17 02:20:57 +0100 <dsal> If you want to print in base10, you're going to have to wait for at least 6 more major releases.
2021-11-17 02:26:11 +0100alx741(~alx741@181.196.69.19)
2021-11-17 02:26:18 +0100moet(~moet@mobile-166-171-249-243.mycingular.net) (Ping timeout: 265 seconds)
2021-11-17 02:27:58 +0100moet(~moet@mobile-166-170-38-150.mycingular.net)
2021-11-17 02:30:16 +0100 <remexre> oh, can you not use ConsSymbol in instances?
2021-11-17 02:30:27 +0100unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 250 seconds)
2021-11-17 02:32:40 +0100jbox(~jbox@user/jbox)
2021-11-17 02:36:20 +0100 <awpr> on the RHS of a type family instance? probably just needs UndecidableInstances
2021-11-17 02:38:03 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-17 02:39:06 +0100 <remexre> looks like no
2021-11-17 02:39:30 +0100 <moet> t
2021-11-17 02:40:53 +0100mimmy_(~mimmy@72.142.88.18)
2021-11-17 02:42:01 +0100 <ozzloy_> https://paste.tomsmeding.com/qEdr8PSc line 64, i created an answer for finding the minimum and maximum. i'd like to improve on it.
2021-11-17 02:42:59 +0100 <ozzloy_> for example, one thing i'd like to do is use foldr, but i'm not sure how to create the function to send to foldr
2021-11-17 02:43:04 +0100 <awpr> remexre: AppendSymbol in a type family instance RHS worked fine for me (I tried on a GHC version before ConsSymbol was added, so couldn't try that). what's the error?
2021-11-17 02:43:26 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 02:43:27 +0100 <remexre> Illegal type synonym family application ‘ConsSymbol'_' (ToString n)’ in instance: HasField (ConsSymbol '_' (ToString n)) a b
2021-11-17 02:43:36 +0100mimmy(~mimmy@146.70.75.156) (Ping timeout: 256 seconds)
2021-11-17 02:43:43 +0100 <ozzloy_> line 59 seems like a good function, but i'd have to turn the initial list into a list of pairs
2021-11-17 02:45:44 +0100 <jackdk> Is there a common name for this trick: writing `instance a ~ X => FooClass (Bar a)` instead of `instance FooClass (Bar X)`?
2021-11-17 02:45:52 +0100 <EvanR> ozzloy_, you've nerd sniped me
2021-11-17 02:47:42 +0100 <ozzloy_> EvanR, cool!
2021-11-17 02:47:52 +0100 <awpr> oh, that's not the RHS of an instance but an instance head. yeah, you can't have type families in instance heads (presumably because GHC would have to compute the inverse of the type family to figure out whether the instance matched)
2021-11-17 02:48:02 +0100 <ozzloy_> the code at the bottom was from someone in here. i should have written the name
2021-11-17 02:48:11 +0100 <ozzloy_> from 85 and below
2021-11-17 02:48:27 +0100 <ozzloy_> i'm not sure what it means, exactly, but i believe it addresses this problem
2021-11-17 02:48:32 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 02:48:32 +0100 <remexre> awpr: hm, is there any way to like, get it to do that :P (at least for ConsSymbol and (1 +))
2021-11-17 02:51:03 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.3)
2021-11-17 02:51:21 +0100 <awpr> I don't think so, without changing the underlying kind to something that has cons/succ as data constructors
2021-11-17 02:52:23 +0100 <awpr> for `HasField`, seems like you're kinda stuck since it's built into `base`. for things involving arithmetic, peano naturals tend to behave better than the built-in `Nat`s in that regard
2021-11-17 02:53:14 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-17 02:55:58 +0100 <ozzloy_> https://paste.tomsmeding.com/Z0USB0gg everyK, line 109, is there a pattern matching way to say the two arguments are the same value?
2021-11-17 02:58:56 +0100 <monochrom> No.
2021-11-17 02:59:30 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 03:00:53 +0100 <EvanR> heh, "non-linear pattern"
2021-11-17 03:01:27 +0100 <sm> I think it must be f a b | a==b = ...
2021-11-17 03:02:20 +0100 <EvanR> you gotta admit that feature would be interesting, among other cool pattern match ideas not implemented in haskell
2021-11-17 03:04:06 +0100unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2021-11-17 03:08:06 +0100alx741(~alx741@181.196.69.19) (Quit: alx741)
2021-11-17 03:10:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-17 03:10:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-17 03:10:13 +0100wroathe(~wroathe@user/wroathe)
2021-11-17 03:12:24 +0100 <monochrom> Eh, I like Steve Buscemi too.
2021-11-17 03:13:31 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2021-11-17 03:14:55 +0100zaquest(~notzaques@5.130.79.72)
2021-11-17 03:15:02 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-11-17 03:18:07 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-11-17 03:18:07 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-11-17 03:18:07 +0100finn_elijaFinnElija
2021-11-17 03:18:23 +0100perrierjouetCharles_Attends
2021-11-17 03:24:20 +0100alzgh(~alzgh@user/alzgh)
2021-11-17 03:32:57 +0100 <EvanR> wth
2021-11-17 03:34:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-17 03:34:15 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 03:37:43 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-17 03:39:08 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 03:40:06 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 03:40:44 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 265 seconds)
2021-11-17 03:41:16 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
2021-11-17 03:47:53 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2021-11-17 03:48:42 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-17 03:48:57 +0100xff0x(~xff0x@port-92-195-74-242.dynamic.as20676.net) (Ping timeout: 265 seconds)
2021-11-17 03:50:29 +0100xff0x(~xff0x@2001:1a81:5370:a900:85a3:6303:a932:32a1)
2021-11-17 03:52:02 +0100edwtjo(~edwtjo@user/edwtjo) (Ping timeout: 260 seconds)
2021-11-17 04:05:53 +0100edwtjo(~edwtjo@h-109-228-137-133.A213.priv.bahnhof.se)
2021-11-17 04:05:53 +0100edwtjo(~edwtjo@h-109-228-137-133.A213.priv.bahnhof.se) (Changing host)
2021-11-17 04:05:53 +0100edwtjo(~edwtjo@user/edwtjo)
2021-11-17 04:06:32 +0100JimL(~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 240 seconds)
2021-11-17 04:08:03 +0100jkaye(~jkaye@2601:281:8300:7530:c291:7247:e8a1:1137)
2021-11-17 04:09:15 +0100boxscape_(~boxscape_@i59F67A72.versanet.de) (Ping timeout: 265 seconds)
2021-11-17 04:09:18 +0100mark__(~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-11-17 04:14:28 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-17 04:14:53 +0100 <ozzloy_> https://paste.tomsmeding.com/0movjx2y when line 105 says "(Ord a)" the compiler says it should be "(Num a)" and when line 105 says "(Num a)" the compiler wants "(Ord a)"
2021-11-17 04:15:24 +0100pfurla(~pfurla@2804:14d:5c81:4104:a029:e568:3465:8d9f) (Quit: gone to sleep. ZZZzzz…)
2021-11-17 04:15:58 +0100 <ozzloy_> sm, oh, i'll try that
2021-11-17 04:16:00 +0100pfurla(~pfurla@2804:14d:5c81:4104:a029:e568:3465:8d9f)
2021-11-17 04:17:19 +0100 <geekosaur> you need both
2021-11-17 04:17:19 +0100unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 268 seconds)
2021-11-17 04:18:13 +0100 <geekosaur> (Num does *not* imply Ord, because of types like Complex Double which are Num but not meaningfully Ord. except we have an Ord for it anyway because Maps need it. meh)
2021-11-17 04:19:01 +0100 <dolio> People really shouldn't be using Complex Double as a map key.
2021-11-17 04:20:25 +0100 <ozzloy_> what's the syntax for putting in both? i tried a few things. also, what word or phrase would i search to find out how to specify both?
2021-11-17 04:20:27 +0100 <geekosaur> anyway you need Ord because you do a comparison via (<), and you need Num because you both substitute i with 0 and compute (i + 1)
2021-11-17 04:20:38 +0100 <geekosaur> (Num a, Ord a) => ...
2021-11-17 04:20:45 +0100 <ozzloy_> thanks!
2021-11-17 04:21:04 +0100 <ozzloy_> so let's say i didn't know that syntax. what would i search for to find it?
2021-11-17 04:21:38 +0100 <geekosaur> the only thing I know is "constraint tuple" but just the phrase would give you the answer :(
2021-11-17 04:22:00 +0100 <ozzloy_> ah, so those things are called constraints
2021-11-17 04:22:08 +0100 <sm> ozzloy_: browsing the GHC user guide would be a good way
2021-11-17 04:22:09 +0100 <ozzloy_> 'which the error message does say
2021-11-17 04:22:22 +0100 <sm> browsing the haskell wiki would also find examples, possibly a bit quicker
2021-11-17 04:22:27 +0100 <ozzloy_> oh wait, no it doesn't
2021-11-17 04:22:30 +0100 <geekosaur> "haskell multiple constraints" seems to get decent answers
2021-11-17 04:22:36 +0100 <ozzloy_> i thought i remember seeing that phrase though
2021-11-17 04:22:38 +0100 <ozzloy_> thanks!
2021-11-17 04:22:46 +0100 <ozzloy_> s/phrase/term/
2021-11-17 04:23:03 +0100 <sm> browsing any large haskell codebase would be another way
2021-11-17 04:23:35 +0100smmeant haskell wikibook, not haskell wiki
2021-11-17 04:24:46 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 04:27:36 +0100 <monochrom> I read a proper tutorial back then. Today there are proper textbooks, even better.
2021-11-17 04:28:49 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-11-17 04:28:49 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-11-17 04:28:49 +0100finn_elijaFinnElija
2021-11-17 04:30:02 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 04:30:49 +0100bliminse_(~bliminse@host86-188-36-178.range86-188.btcentralplus.com)
2021-11-17 04:30:55 +0100bliminse(~bliminse@host86-185-253-43.range86-185.btcentralplus.com) (Ping timeout: 250 seconds)
2021-11-17 04:31:26 +0100mimmy_(~mimmy@72.142.88.18) (Quit: WeeChat 3.3)
2021-11-17 04:32:37 +0100 <EvanR> the haskell report explains all syntax (except for extensions...)
2021-11-17 04:33:07 +0100 <ozzloy_> https://paste.tomsmeding.com/wzhWEcXe everyK now works!
2021-11-17 04:33:27 +0100 <ozzloy_> i have started "learn you a haskell' a couple times
2021-11-17 04:33:53 +0100 <monochrom> Pretty sure it covers that too somewhere.
2021-11-17 04:34:06 +0100 <ozzloy_> probably
2021-11-17 04:34:26 +0100 <ozzloy_> knowing that those are called "constraints" i think is going to be the most useful
2021-11-17 04:34:47 +0100 <ozzloy_> in terms of quickly finding the right syntax for related things in the future
2021-11-17 04:34:47 +0100 <monochrom> Maybe not exactly (Num a, Ord a) letter by letter, but surely the concept of having two constraints and the syntax for it.
2021-11-17 04:35:14 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-11-17 04:35:28 +0100 <monochrom> And maybe not the exact wording "constraint" but surely "(XXX a, YYY a)" in which XXX and YYY are classes.
2021-11-17 04:35:28 +0100 <ozzloy_> heh, it would be funny if it literally had "(Num a, Ord a) somewhere
2021-11-17 04:36:55 +0100 <ozzloy_> yeah, "haskell multiple classes" gave a stackoverflow with the right syntax
2021-11-17 04:37:03 +0100 <ozzloy_> thanks all
2021-11-17 04:38:32 +0100renzhi(~xp@2607:fa49:6500:b100::6e7f)
2021-11-17 04:42:47 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-11-17 04:42:54 +0100 <ozzloy_> https://paste.tomsmeding.com/4XINUqY3 lol, i'm trying to reverse the result of everyK, but when i search "haskell reverse" there's a bunch of results about how to write reverse. so i guessed 'reverse l' and that worked
2021-11-17 04:43:57 +0100 <ozzloy_> also, should everyK 2 [1,2,3,4,5] return [2,4] or [1,3,5] ? the problem statement doesn't say, so this is more of a "what's your opinion?".
2021-11-17 04:46:08 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-11-17 04:46:45 +0100 <EvanR> > reverse [2,3,5,7,11]
2021-11-17 04:46:46 +0100 <lambdabot> [11,7,5,3,2]
2021-11-17 04:47:49 +0100 <ozzloy_> thanks
2021-11-17 04:48:02 +0100 <EvanR> even putting a number in for k and asking the question is problematic
2021-11-17 04:48:36 +0100 <EvanR> e.g. return every 2nd item, return every 1st item, return every 0th item?
2021-11-17 04:49:13 +0100 <EvanR> ok it says k is positive
2021-11-17 04:49:21 +0100 <ozzloy_> yeah, we need to switch as a species to 0 based indexing for everything
2021-11-17 04:50:51 +0100moet(~moet@mobile-166-170-38-150.mycingular.net) (Ping timeout: 250 seconds)
2021-11-17 04:51:15 +0100waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
2021-11-17 04:51:22 +0100 <EvanR> in [0..] every "5th item" is like 0, 5, 10, 15, ... my opinion xD
2021-11-17 04:52:17 +0100 <EvanR> even though, the 5th item (4) isn't there
2021-11-17 04:52:31 +0100moet(~moet@mobile-166-170-38-148.mycingular.net)
2021-11-17 04:53:28 +0100 <EvanR> 4, 9, 14, 19 is just ridiculous!
2021-11-17 04:53:38 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-17 04:55:39 +0100td_(~td@94.134.91.233) (Ping timeout: 265 seconds)
2021-11-17 04:57:20 +0100td_(~td@94.134.91.227)
2021-11-17 04:59:31 +0100pfurla(~pfurla@2804:14d:5c81:4104:a029:e568:3465:8d9f) (Quit: gone to sleep. ZZZzzz…)
2021-11-17 05:00:53 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 05:08:31 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-17 05:08:48 +0100img(~img@user/img)
2021-11-17 05:09:31 +0100 <dsal> How come there's a reverse function but not a forward function?
2021-11-17 05:09:51 +0100 <dsal> :t forward
2021-11-17 05:09:52 +0100 <lambdabot> [a] -> [a]
2021-11-17 05:09:57 +0100 <dsal> > forward [1, 2, 3]
2021-11-17 05:09:58 +0100 <lambdabot> [1,2,3]
2021-11-17 05:10:26 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net)
2021-11-17 05:11:27 +0100 <EvanR> I know. There's even a "sideways"
2021-11-17 05:11:33 +0100 <EvanR> > transpose [1,2,3]
2021-11-17 05:11:34 +0100 <lambdabot> error:
2021-11-17 05:11:34 +0100 <lambdabot> • No instance for (Num [()]) arising from a use of ‘e_1123’
2021-11-17 05:11:34 +0100 <lambdabot> • In the expression: e_1123
2021-11-17 05:11:43 +0100 <EvanR> shucks
2021-11-17 05:12:21 +0100 <dsal> Sideways is pretty neat.
2021-11-17 05:12:31 +0100jkaye(~jkaye@2601:281:8300:7530:c291:7247:e8a1:1137) (Ping timeout: 250 seconds)
2021-11-17 05:15:42 +0100 <Axman6> we have a filter, but where's unfilter? Give me back what's been taken!
2021-11-17 05:17:15 +0100 <EvanR> for that you need reversible computing, and we come full circle
2021-11-17 05:17:23 +0100jle`(~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com) (Quit: WeeChat 3.3)
2021-11-17 05:22:44 +0100jle`(~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com)
2021-11-17 05:24:16 +0100EvanR(~evan@user/evanr) (Quit: Leaving)
2021-11-17 05:24:21 +0100 <dsal> That sounds a little bit like something I did in a codebase... What is that.
2021-11-17 05:27:22 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-11-17 05:27:33 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 265 seconds)
2021-11-17 05:27:34 +0100 <dsal> Oh yeah. I use that for some enum mapping in postgres instances. Given an `a -> ByteString` I could make a `ByteString -> Maybe a` for bidirectional coding.
2021-11-17 05:27:41 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 250 seconds)
2021-11-17 05:28:26 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net)
2021-11-17 05:31:04 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-17 05:32:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 05:32:15 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-17 05:33:47 +0100mvk(~mvk@2607:fea8:5cc3:e900::df92) (Ping timeout: 268 seconds)
2021-11-17 05:34:58 +0100Guest80(~Guest80@pd9ed7c7f.dip0.t-ipconnect.de)
2021-11-17 05:35:04 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2021-11-17 05:37:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-17 05:37:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-17 05:37:03 +0100wroathe(~wroathe@user/wroathe)
2021-11-17 05:37:20 +0100mbuf(~Shakthi@122.162.1.56)
2021-11-17 05:37:47 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 05:37:52 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-17 05:38:24 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 05:40:59 +0100 <sm> which is the best gui viewer for profiles currently ?
2021-11-17 05:44:35 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 05:45:21 +0100deadmarshal(~deadmarsh@95.38.119.2)
2021-11-17 05:47:48 +0100 <sm> maybe maerwald will add it to ghcup, and I'll stop having to ask this
2021-11-17 05:51:05 +0100MoC_(~moc@user/moc) (Ping timeout: 250 seconds)
2021-11-17 05:51:13 +0100MoC(~moc@user/moc)
2021-11-17 06:00:54 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-11-17 06:02:26 +0100boxscape_(~boxscape_@i59F67A8D.versanet.de)
2021-11-17 06:02:57 +0100 <ozzloy_> :t sidwats [1,2,3]
2021-11-17 06:02:58 +0100 <lambdabot> error:
2021-11-17 06:02:58 +0100 <lambdabot> Variable not in scope: sidwats :: [a0] -> t
2021-11-17 06:03:16 +0100 <ozzloy_> :t sidways [1,2,3]
2021-11-17 06:03:17 +0100 <lambdabot> error:
2021-11-17 06:03:17 +0100 <lambdabot> Variable not in scope: sidways :: [a0] -> t
2021-11-17 06:03:24 +0100 <ozzloy_> :t sideways [1,2,3]
2021-11-17 06:03:25 +0100 <lambdabot> error:
2021-11-17 06:03:25 +0100 <lambdabot> Variable not in scope: sideways :: [a0] -> t
2021-11-17 06:03:49 +0100 <Axman6> ok, really dumb question - how do you run ghci so it can see pckages you have installed with cabal new-install foo
2021-11-17 06:04:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-11-17 06:04:41 +0100 <ozzloy_> :t transpose [[1],[2],[3]]
2021-11-17 06:04:42 +0100 <lambdabot> Num a => [[a]]
2021-11-17 06:05:02 +0100 <ozzloy_> > transpose [[1],[2],[3]]
2021-11-17 06:05:04 +0100 <lambdabot> [[1,2,3]]
2021-11-17 06:05:18 +0100 <ozzloy_> transpose [[1,2,3]]
2021-11-17 06:05:25 +0100 <ozzloy_> > transpose [[1,2,3]]
2021-11-17 06:05:26 +0100 <lambdabot> [[1],[2],[3]]
2021-11-17 06:05:45 +0100 <glguy> Axman6: I do: cabal repl --build-dep foo
2021-11-17 06:06:43 +0100 <Axman6> huh, ok, I have never done that
2021-11-17 06:07:09 +0100 <Axman6> I sense hacks: fake-package-0
2021-11-17 06:10:47 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-11-17 06:11:15 +0100smdiscovers one command to generate a time-and-space profile from your default executable:
2021-11-17 06:11:15 +0100smstack run --profile --rts-options -p
2021-11-17 06:11:36 +0100econo(uid147250@user/econo)
2021-11-17 06:12:05 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-11-17 06:12:29 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2021-11-17 06:18:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-17 06:18:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-17 06:18:07 +0100wroathe(~wroathe@user/wroathe)
2021-11-17 06:22:39 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-11-17 06:23:49 +0100 <dsal> > transpose ["dog", "ole", "mem"]
2021-11-17 06:23:51 +0100 <lambdabot> ["dom","ole","gem"]
2021-11-17 06:43:39 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 06:45:56 +0100renzhi(~xp@2607:fa49:6500:b100::6e7f) (Ping timeout: 268 seconds)
2021-11-17 06:47:51 +0100deadmarshal(~deadmarsh@95.38.119.2) (Ping timeout: 250 seconds)
2021-11-17 06:52:53 +0100aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-11-17 06:53:32 +0100Guest80(~Guest80@pd9ed7c7f.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-11-17 06:58:41 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 250 seconds)
2021-11-17 07:02:36 +0100sagax(~sagax_nb@user/sagax) (Read error: Connection reset by peer)
2021-11-17 07:09:28 +0100n8chan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Read error: No route to host)
2021-11-17 07:10:26 +0100n8chan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-11-17 07:10:47 +0100whatsupdoc(uid509081@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-17 07:14:41 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 245 seconds)
2021-11-17 07:16:47 +0100moet(~moet@mobile-166-170-38-148.mycingular.net) (Ping timeout: 265 seconds)
2021-11-17 07:19:33 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-11-17 07:21:43 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-17 07:22:18 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 07:25:26 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-11-17 07:25:50 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-11-17 07:26:51 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 07:29:07 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-11-17 07:31:50 +0100Feuermagier_(~Feuermagi@2a02:2488:4211:3400:b6fd:ec18:acf6:f1a8)
2021-11-17 07:32:36 +0100christiaanb(sid84827@lymington.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 07:34:02 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 268 seconds)
2021-11-17 07:34:11 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-11-17 07:35:49 +0100christiaanb(sid84827@lymington.irccloud.com)
2021-11-17 07:36:59 +0100philpax_(sid516926@lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-17 07:37:24 +0100sagax(~sagax_nb@user/sagax)
2021-11-17 07:38:50 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-11-17 07:40:10 +0100philpax_(sid516926@lymington.irccloud.com)
2021-11-17 07:41:13 +0100 <ozzloy_> https://paste.tomsmeding.com/OfRIGoPO i'd like to rewrite minAndMax with foldr. i wrote one version which uses foldr, but does 2n comparisons
2021-11-17 07:41:37 +0100 <ozzloy_> and i wrote a step function that would do 3n/2 comparisons instead
2021-11-17 07:41:49 +0100 <ozzloy_> that's minAndMaxHelper
2021-11-17 07:42:49 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-11-17 07:43:11 +0100 <ozzloy_> well, it's currently written as a function that takes 4 inputs, but it could easily be 2 tuples instead
2021-11-17 07:43:15 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-11-17 07:43:24 +0100 <ozzloy_> but i don't know how to convert the incoming list into a list of tuples
2021-11-17 07:43:44 +0100 <ozzloy_> even so, it feels like i'm missing something here
2021-11-17 07:44:44 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-11-17 07:46:13 +0100Vajb(~Vajb@nalkaylds2h97nzof-2.v6.elisa-mobile.fi)
2021-11-17 07:49:02 +0100mrianbloom(sid350277@ilkley.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 07:49:02 +0100teehemkay(sid14792@lymington.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 07:49:02 +0100teehemkay_teehemkay
2021-11-17 07:49:27 +0100ephemient(uid407513@lymington.irccloud.com) (Ping timeout: 268 seconds)
2021-11-17 07:49:27 +0100jonrh(sid5185@ilkley.irccloud.com) (Ping timeout: 268 seconds)
2021-11-17 07:50:00 +0100ephemient(uid407513@lymington.irccloud.com)
2021-11-17 07:52:12 +0100mrianbloom(sid350277@ilkley.irccloud.com)
2021-11-17 07:52:26 +0100teehemkay_(sid14792@lymington.irccloud.com)
2021-11-17 07:52:39 +0100jonrh(sid5185@ilkley.irccloud.com)
2021-11-17 07:54:26 +0100deadmarshal(~deadmarsh@95.38.119.2)
2021-11-17 08:00:06 +0100superbil(~superbil@1-34-176-171.hinet-ip.hinet.net) (Quit: WeeChat 3.3)
2021-11-17 08:00:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 08:01:31 +0100rkrishnan(~user@122.167.19.65)
2021-11-17 08:10:16 +0100mmhat(~mmh@55d47379.access.ecotel.net)
2021-11-17 08:10:44 +0100retroid_(~retro@97e2ba2e.skybroadband.com)
2021-11-17 08:10:51 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 08:13:30 +0100retro_(~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
2021-11-17 08:14:00 +0100aegon(~mike@174.127.249.180)
2021-11-17 08:15:45 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 08:23:31 +0100superbil(~superbil@1-34-176-171.hinet-ip.hinet.net)
2021-11-17 08:23:55 +0100Guest80(~Guest80@pd9ed7c7f.dip0.t-ipconnect.de)
2021-11-17 08:26:39 +0100deadmarshal(~deadmarsh@95.38.119.2) (Ping timeout: 250 seconds)
2021-11-17 08:31:34 +0100 <ozzloy_> anyone in here use spacemacs?
2021-11-17 08:34:26 +0100michalz(~michalz@185.246.204.57)
2021-11-17 08:34:37 +0100deadmarshal(~deadmarsh@95.38.119.2)
2021-11-17 08:35:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-11-17 08:35:11 +0100xff0x(~xff0x@2001:1a81:5370:a900:85a3:6303:a932:32a1) (Ping timeout: 264 seconds)
2021-11-17 08:35:41 +0100xff0x(~xff0x@2001:1a81:5370:a900:40b1:f398:28bb:45d6)
2021-11-17 08:37:39 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-11-17 08:38:47 +0100jbox(~jbox@user/jbox) (Ping timeout: 264 seconds)
2021-11-17 08:39:39 +0100neurocyte0132889(~neurocyte@45.136.170.104)
2021-11-17 08:39:39 +0100neurocyte0132889(~neurocyte@45.136.170.104) (Changing host)
2021-11-17 08:39:39 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-11-17 08:41:15 +0100DoseMeBoofy(~cads@ip-64-72-99-234.lasvegas.net) (Ping timeout: 268 seconds)
2021-11-17 08:47:04 +0100retro_(~retro@97e2ba2e.skybroadband.com)
2021-11-17 08:48:19 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 08:50:30 +0100retroid_(~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
2021-11-17 08:51:35 +0100cads(~cads@ip-64-72-99-234.lasvegas.net)
2021-11-17 08:53:27 +0100 <johnjay> no
2021-11-17 08:53:41 +0100 <tomsmeding> ozzloy_: pairList (a:b:xs) = (a,b) : pairList xs ; pairList [] = [] ; pairList _ = error "odd length input"
2021-11-17 08:53:43 +0100 <tomsmeding> :p
2021-11-17 08:54:17 +0100 <tomsmeding> if you want to use one foldr reduction only, you could add a boolean to the state, indicating whether you're in the first or the second component of the pair
2021-11-17 08:54:38 +0100 <johnjay> is miranda similar to haskell? the paper i'm looking at has examples in miranda
2021-11-17 08:54:50 +0100 <ozzloy_> i ... could
2021-11-17 08:55:05 +0100fef(~thedawn@user/thedawn)
2021-11-17 08:55:23 +0100 <ozzloy_> then i have to check that boolean, which seems like it defeats the 3n/2 thing
2021-11-17 08:55:41 +0100 <ozzloy_> tomsmeding, thanks for the feedback
2021-11-17 08:56:00 +0100 <tomsmeding> depending on whether you count that as a comparison :D
2021-11-17 08:56:19 +0100 <tomsmeding> johnjay: haskell is inspired by miranda iirc
2021-11-17 08:56:27 +0100 <ozzloy_> to check a boolean's value, doesn't something somewhere get compared with 0?
2021-11-17 08:56:42 +0100 <johnjay> ok.
2021-11-17 08:56:56 +0100 <tomsmeding> yeah, but to fold over a list, you also have to compare the top-level constructor with [] and with (:) each time ;)
2021-11-17 08:56:58 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-17 08:57:06 +0100alzgh(~alzgh@user/alzgh)
2021-11-17 08:57:11 +0100 <tomsmeding> which happens implicitly in pattern matching
2021-11-17 08:57:19 +0100 <ozzloy_> ah
2021-11-17 08:57:38 +0100 <ozzloy_> it was always more than 3n/2
2021-11-17 08:57:39 +0100 <tomsmeding> and presumably that one doesn't count
2021-11-17 08:57:42 +0100 <ozzloy_> always has been
2021-11-17 08:57:48 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 08:57:48 +0100 <tomsmeding> always will be
2021-11-17 08:57:56 +0100 <ozzloy_> the mask falls away
2021-11-17 08:58:16 +0100 <tomsmeding> and the light reveals itself
2021-11-17 08:58:17 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:d1a7:a86b:c4f9:1801)
2021-11-17 08:59:21 +0100 <ozzloy_> thanks. the truth is brutal, but i prefer living in reality
2021-11-17 08:59:31 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2021-11-17 09:00:01 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-11-17 09:00:19 +0100 <ozzloy_> well, for reals, thanks. i'm off to bed
2021-11-17 09:00:35 +0100 <tomsmeding> have a good night :)
2021-11-17 09:02:37 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 09:07:17 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-11-17 09:08:43 +0100hololeap(~hololeap@user/hololeap)
2021-11-17 09:09:17 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-17 09:11:49 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-11-17 09:12:08 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
2021-11-17 09:14:14 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 265 seconds)
2021-11-17 09:14:53 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
2021-11-17 09:16:08 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-11-17 09:21:57 +0100chexum_(~quassel@gateway/tor-sasl/chexum)
2021-11-17 09:21:58 +0100deadmarshal(~deadmarsh@95.38.119.2) (Ping timeout: 256 seconds)
2021-11-17 09:21:59 +0100fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-11-17 09:22:00 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 276 seconds)
2021-11-17 09:22:51 +0100JimL(~quassel@89-162-2-132.fiber.signal.no)
2021-11-17 09:24:52 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 265 seconds)
2021-11-17 09:25:18 +0100boxscape_(~boxscape_@i59F67A8D.versanet.de) (Quit: Connection closed)
2021-11-17 09:28:13 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-11-17 09:28:40 +0100hololeap(~hololeap@user/hololeap) (Read error: Connection reset by peer)
2021-11-17 09:29:59 +0100hololeap(~hololeap@user/hololeap)
2021-11-17 09:37:53 +0100cfricke(~cfricke@user/cfricke)
2021-11-17 09:38:49 +0100mc47(~mc47@xmonad/TheMC47)
2021-11-17 09:40:48 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-11-17 09:43:53 +0100vysn(~vysn@user/vysn)
2021-11-17 09:47:13 +0100 <Profpatsch> If I export Foo(getFoo) instead of Foo(Foo, getFoo), will I still be able to construct Foo outside of the module?
2021-11-17 09:47:31 +0100 <Profpatsch> (I want to prevent that)
2021-11-17 09:47:36 +0100boxscape_(~boxscape_@134.171.69.87)
2021-11-17 09:50:19 +0100aarchi(sid486183@uxbridge.irccloud.com) (Ping timeout: 268 seconds)
2021-11-17 09:52:31 +0100aarchi(sid486183@uxbridge.irccloud.com)
2021-11-17 09:52:35 +0100Codaraxis(~Codaraxis@user/codaraxis) (Quit: Leaving)
2021-11-17 09:53:06 +0100whatsupdoc(uid509081@hampstead.irccloud.com)
2021-11-17 09:54:14 +0100 <tomsmeding> no, because the constructor is not exported
2021-11-17 09:54:16 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee)
2021-11-17 09:54:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 09:56:07 +0100 <tomsmeding> barring unsafeCoerce of course
2021-11-17 09:56:17 +0100 <tomsmeding> normal 'coerce' seems to be protected!
2021-11-17 09:57:34 +0100 <tomsmeding> Profpatsch: note that while not exporting the constructor prevents well-meaning people from constructing a Foo; malicious people can do unsafeCoerce and get a Foo anyway
2021-11-17 09:57:58 +0100 <boxscape_> :o how dare they
2021-11-17 09:58:21 +0100 <tomsmeding> still better than the enforcement of 'private' in C++ :p
2021-11-17 09:58:31 +0100 <boxscape_> true
2021-11-17 09:58:46 +0100 <tomsmeding> boxscape_: offtopic, I wonder, why the _
2021-11-17 09:59:02 +0100 <boxscape_> because I'm too lazy to log into matrix, where I'm logged in as boxscape
2021-11-17 09:59:12 +0100 <tomsmeding> ah :)
2021-11-17 10:00:06 +0100santiagopim[m](~santiagop@2001:470:69fc:105::e57d) (Quit: You have been kicked for being idle)
2021-11-17 10:03:37 +0100 <lortabac> Profpatsch: you may still be able to construct a Foo if it is an instance of Num, IsString, IsList...
2021-11-17 10:05:43 +0100 <Profpatsch> tomsmeding: strange, it felt like Foo(getFoo) would also allow construction, at least I didn’t get an error.
2021-11-17 10:06:03 +0100MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-11-17 10:07:01 +0100 <tomsmeding> Profpatsch: seeing is believing
2021-11-17 10:07:50 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-11-17 10:08:13 +0100 <merijn> tomsmeding: Not with current levels of generative ML :p
2021-11-17 10:09:09 +0100 <kritzefitz> Profpatsch: Is "getFoo" a record field of "Foo"? In that case you can use it to update that field in existing "Foo"s outside of the module.
2021-11-17 10:09:53 +0100chele(~chele@user/chele)
2021-11-17 10:11:51 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-17 10:13:07 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving)
2021-11-17 10:15:57 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
2021-11-17 10:16:36 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Client Quit)
2021-11-17 10:16:52 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
2021-11-17 10:16:58 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
2021-11-17 10:17:32 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-17 10:25:04 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-17 10:28:05 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2021-11-17 10:36:51 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 250 seconds)
2021-11-17 10:37:01 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-17 10:44:42 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 256 seconds)
2021-11-17 10:45:07 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2021-11-17 10:45:31 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
2021-11-17 10:45:58 +0100 <Profpatsch> kritzefitz: yeah it is
2021-11-17 10:46:13 +0100 <Profpatsch> But it looked to me like (Foo "test") also worked
2021-11-17 10:50:16 +0100 <boxscape_> I finally understand how Applicative is a Monoid
2021-11-17 10:50:17 +0100Vajb(~Vajb@nalkaylds2h97nzof-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2021-11-17 10:50:20 +0100 <boxscape_> pure :: Identity ~> f
2021-11-17 10:50:31 +0100 <boxscape_> (<*>) :: f `Day` f ~> f
2021-11-17 10:50:55 +0100 <boxscape_> (I think that's <*> anyway)
2021-11-17 10:51:20 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-11-17 10:52:08 +0100 <boxscape_> (type f ~> g = forall a . f a -> g a)
2021-11-17 10:54:02 +0100 <lortabac> boxscape_: I find this alternative formulation of Applicative simpler to understand: https://wiki.haskell.org/Typeclassopedia#Alternative_formulation
2021-11-17 10:54:27 +0100 <boxscape_> interesting
2021-11-17 10:54:33 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 10:55:16 +0100deadmarshal(~deadmarsh@95.38.119.2)
2021-11-17 10:55:57 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 10:56:18 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
2021-11-17 10:57:10 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2021-11-17 10:58:09 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 10:59:02 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:00:35 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:00:44 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:01:03 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 11:02:17 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:02:25 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:04:49 +0100cads(~cads@ip-64-72-99-234.lasvegas.net) (Ping timeout: 250 seconds)
2021-11-17 11:05:45 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:05:53 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:07:13 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:07:20 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 11:07:21 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:07:40 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:07:47 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:07:50 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:08:04 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:08:20 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
2021-11-17 11:09:26 +0100 <kuribas> dminuoso: good news, my pr was merged :)
2021-11-17 11:09:46 +0100 <kuribas> dminuoso: the one that adds the label to the error message in cassava.
2021-11-17 11:10:12 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Remote host closed the connection)
2021-11-17 11:10:20 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:11:21 +0100alzgh(~alzgh@user/alzgh) (Ping timeout: 256 seconds)
2021-11-17 11:12:20 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-17 11:14:11 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 268 seconds)
2021-11-17 11:14:54 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-11-17 11:15:08 +0100aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-11-17 11:16:45 +0100 <dminuoso> kuribas: Yeah just saw.
2021-11-17 11:17:02 +0100 <dminuoso> Im tempted to just attoparsec through this csv instead though
2021-11-17 11:17:11 +0100rtpg(sid443069@ilkley.irccloud.com) (Ping timeout: 264 seconds)
2021-11-17 11:17:12 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
2021-11-17 11:17:29 +0100 <dminuoso> With a first lexing phase, naively it seems rather simple
2021-11-17 11:17:34 +0100davetapley(sid666@uxbridge.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 11:17:34 +0100rtpg(sid443069@ilkley.irccloud.com)
2021-11-17 11:17:50 +0100 <dminuoso> Then I can simply use <?> to annotate parts
2021-11-17 11:18:08 +0100gonz____(sid304396@lymington.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 11:18:42 +0100christiaanb(sid84827@lymington.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 11:18:42 +0100bjs(sid190364@user/bjs) (Ping timeout: 256 seconds)
2021-11-17 11:18:42 +0100Pent(sid313808@lymington.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 11:18:42 +0100awpr(uid446117@lymington.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 11:19:06 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Quit: Leaving.)
2021-11-17 11:19:14 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:19:40 +0100bjs(sid190364@user/bjs)
2021-11-17 11:19:41 +0100christiaanb(sid84827@lymington.irccloud.com)
2021-11-17 11:19:41 +0100awpr(uid446117@lymington.irccloud.com)
2021-11-17 11:19:42 +0100Pent(sid313808@lymington.irccloud.com)
2021-11-17 11:20:45 +0100davetapley(sid666@uxbridge.irccloud.com)
2021-11-17 11:20:56 +0100fef(~thedawn@user/thedawn)
2021-11-17 11:21:23 +0100gonz____(sid304396@lymington.irccloud.com)
2021-11-17 11:22:04 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:22:12 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:22:41 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
2021-11-17 11:23:17 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:23:27 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:24:32 +0100 <kuribas> dminuoso: for my libraries, I am going to always use structured errors, instead of just `String`.
2021-11-17 11:25:09 +0100alzgh(alzgh@user/alzgh)
2021-11-17 11:26:35 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:26:42 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:28:10 +0100 <Maxdamantus> Does that mean you're not allowed to change what errors are produced?
2021-11-17 11:28:31 +0100 <Maxdamantus> Since that would presumably be breaking your API.
2021-11-17 11:29:29 +0100alzgh(alzgh@user/alzgh) (Ping timeout: 256 seconds)
2021-11-17 11:29:47 +0100 <Maxdamantus> (if the error just has an unstructured string, you should be able to change that because obviously noone is meant to match on a random string)
2021-11-17 11:30:17 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:30:41 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:31:55 +0100rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-11-17 11:32:04 +0100rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Client Quit)
2021-11-17 11:32:12 +0100rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-11-17 11:32:46 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:32:57 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:33:11 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:33:24 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:33:25 +0100alzgh(~alzgh@user/alzgh)
2021-11-17 11:33:44 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:33:58 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:34:01 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:34:07 +0100 <kuribas> Maxdamantus: Typically I have "MyError c", with a data constructor "CustomErr c", so you can add your own error type.
2021-11-17 11:34:51 +0100 <kuribas> Maxdamantus: Or do you mean keeping backwards compatibility?
2021-11-17 11:35:28 +0100 <kuribas> No, I may add data constructors if necessary, potentially breaking code.
2021-11-17 11:35:51 +0100 <kuribas> Though it shouldn't change much once the API is stable.
2021-11-17 11:36:05 +0100chele_(~chele@user/chele)
2021-11-17 11:36:15 +0100 <Maxdamantus> Yes. Presumably the reason for structuring errors is that a user will match on the different errors, so they assume certain errors are produced under certain circumstances.
2021-11-17 11:36:56 +0100 <kuribas> Indeed.
2021-11-17 11:37:09 +0100cheleGuest6942
2021-11-17 11:37:09 +0100chele_chele
2021-11-17 11:37:17 +0100 <kuribas> But if the user only wants to catch some errors, it can be still backwards compatible.
2021-11-17 11:37:19 +0100 <Maxdamantus> Linux isn't allowed to decide to replace EPERM with a different set of more granular permission errors.
2021-11-17 11:38:02 +0100 <kuribas> like: case err of SomeErrorICareAbout foo bar -> process foo bar; _ -> otherCases
2021-11-17 11:38:45 +0100Guest6942(~chele@user/chele) (Ping timeout: 265 seconds)
2021-11-17 11:39:07 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 11:39:21 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 11:40:32 +0100 <kuribas> Maxdamantus: for my SQL library, the error messages haven't changed lately.
2021-11-17 11:40:32 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-17 11:42:17 +0100 <kuribas> Maxdamantus: https://hackage.haskell.org/package/hasqlator-mysql-0.1.0/docs/Database-MySQL-Hasqlator.html#t:SQL…
2021-11-17 11:42:25 +0100mark___(~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de)
2021-11-17 11:42:28 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 11:44:26 +0100__monty__(~toonn@user/toonn)
2021-11-17 11:46:16 +0100gentauro(~gentauro@user/gentauro)
2021-11-17 11:47:27 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 11:48:17 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 11:48:17 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-17 11:50:22 +0100 <Maxdamantus> Does the `SQLError` data constructor include connection errors as well as errors produced by the SQL server (eg, SQL syntax error due to malformed query, or integrity constraint violation due to state of database)?
2021-11-17 11:50:57 +0100 <Maxdamantus> I'd probably be inclined to be more granular in that case, but yeah, at some point you just have to have a string.
2021-11-17 11:51:16 +0100gentauro(~gentauro@user/gentauro)
2021-11-17 11:53:05 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-17 11:53:11 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-17 11:53:19 +0100mastarija(~mastarija@2a05:4f46:e06:ff00:a943:a997:c897:f5b)
2021-11-17 11:53:55 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 11:54:30 +0100 <Maxdamantus> Oh, looks like there are different errors for those cases raised by mysql-haskell.
2021-11-17 11:54:56 +0100 <kuribas> Maxdamantus: hmm, it looks like I am never throwing that one.
2021-11-17 11:55:06 +0100 <kuribas> I might as well delete it then.
2021-11-17 11:55:23 +0100 <kuribas> I guess my original idea was to rethrow the ones from mysql-haskell.
2021-11-17 11:56:28 +0100 <kuribas> Maxdamantus: it's perhaps a bad example, because these are the kinds of errors you typically don't catch.
2021-11-17 11:56:46 +0100 <Maxdamantus> Errors you don't catch should just be strings imo.
2021-11-17 11:56:46 +0100 <kuribas> Maxdamantus: At least not in a granular way, you normally assume the queries are correct.
2021-11-17 11:57:48 +0100 <kuribas> Perhaps... But it's easy to go from structured to a string. The other way is not true.
2021-11-17 11:58:11 +0100pfurla(~pfurla@177.142.247.67)
2021-11-17 11:58:31 +0100gentauro(~gentauro@user/gentauro)
2021-11-17 11:58:56 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 12:00:35 +0100alx741(~alx741@181.196.69.19)
2021-11-17 12:01:25 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-11-17 12:03:45 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:d1a7:a86b:c4f9:1801) (Ping timeout: 250 seconds)
2021-11-17 12:04:39 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 12:05:23 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 12:06:25 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-17 12:09:08 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-17 12:10:10 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 12:11:04 +0100mastarija(~mastarija@2a05:4f46:e06:ff00:a943:a997:c897:f5b) (Quit: Leaving)
2021-11-17 12:11:53 +0100gentauro(~gentauro@user/gentauro)
2021-11-17 12:13:50 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-17 12:14:58 +0100pfurla_(~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53)
2021-11-17 12:16:47 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 12:16:53 +0100gentauro(~gentauro@user/gentauro)
2021-11-17 12:18:52 +0100pfurla(~pfurla@177.142.247.67) (Ping timeout: 265 seconds)
2021-11-17 12:18:52 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-17 12:21:36 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 12:21:53 +0100gentauro(~gentauro@user/gentauro)
2021-11-17 12:22:57 +0100whatsupdoc(uid509081@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-17 12:23:10 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-17 12:25:00 +0100gonz____(sid304396@lymington.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 12:25:06 +0100acertain(sid470584@hampstead.irccloud.com) (Ping timeout: 245 seconds)
2021-11-17 12:25:06 +0100amir(sid22336@user/amir) (Ping timeout: 268 seconds)
2021-11-17 12:25:35 +0100whez(sid470288@lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-11-17 12:25:43 +0100integral(sid296274@user/integral) (Ping timeout: 268 seconds)
2021-11-17 12:26:20 +0100bw(sid2730@user/betawaffle) (Ping timeout: 268 seconds)
2021-11-17 12:26:20 +0100scav(sid309693@helmsley.irccloud.com) (Ping timeout: 268 seconds)
2021-11-17 12:26:42 +0100cln(sid336875@ilkley.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 12:27:34 +0100rtpg(sid443069@ilkley.irccloud.com) (Ping timeout: 268 seconds)
2021-11-17 12:27:34 +0100glowcoil(sid3405@tinside.irccloud.com) (Ping timeout: 268 seconds)
2021-11-17 12:27:48 +0100cln(sid336875@ilkley.irccloud.com)
2021-11-17 12:27:56 +0100cv(~cv@103.142.31.135)
2021-11-17 12:27:59 +0100bw(sid2730@user/betawaffle)
2021-11-17 12:28:11 +0100astra`(sid289983@user/amish) (Ping timeout: 268 seconds)
2021-11-17 12:28:15 +0100gonz____(sid304396@lymington.irccloud.com)
2021-11-17 12:28:18 +0100acertain(sid470584@hampstead.irccloud.com)
2021-11-17 12:28:18 +0100amir(sid22336@user/amir)
2021-11-17 12:28:46 +0100integral(sid296274@user/integral)
2021-11-17 12:28:47 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 12:28:48 +0100idnar(sid12240@debian/mithrandi) (Ping timeout: 268 seconds)
2021-11-17 12:28:52 +0100scav(sid309693@helmsley.irccloud.com)
2021-11-17 12:29:08 +0100gentauro(~gentauro@user/gentauro)
2021-11-17 12:29:31 +0100rtpg(sid443069@ilkley.irccloud.com)
2021-11-17 12:29:52 +0100astra`(sid289983@user/amish)
2021-11-17 12:29:53 +0100idnar(sid12240@debian/mithrandi)
2021-11-17 12:30:22 +0100glowcoil(sid3405@tinside.irccloud.com)
2021-11-17 12:30:29 +0100whez(sid470288@lymington.irccloud.com)
2021-11-17 12:30:33 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-17 12:33:51 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 12:36:24 +0100gentauro(~gentauro@user/gentauro)
2021-11-17 12:36:54 +0100NiKaN(sid385034@helmsley.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 12:36:54 +0100AndreasK__(sid320732@uxbridge.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 12:37:28 +0100rubin55(sid175221@hampstead.irccloud.com) (Ping timeout: 256 seconds)
2021-11-17 12:39:09 +0100rubin55(sid175221@hampstead.irccloud.com)
2021-11-17 12:39:22 +0100sprout_(~quassel@2a02:a467:ccd6:1:2c29:7076:9399:3f2e)
2021-11-17 12:39:49 +0100NiKaN(sid385034@helmsley.irccloud.com)
2021-11-17 12:40:18 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 12:40:18 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-17 12:40:26 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 12:41:12 +0100AndreasK__(sid320732@uxbridge.irccloud.com)
2021-11-17 12:41:12 +0100rubin55(sid175221@hampstead.irccloud.com) (Max SendQ exceeded)
2021-11-17 12:41:24 +0100gentauro(~gentauro@user/gentauro)
2021-11-17 12:42:18 +0100rubin55(sid175221@hampstead.irccloud.com)
2021-11-17 12:43:02 +0100sprout(~quassel@2a02:a467:ccd6:1:e14a:d90e:46d2:87c4) (Ping timeout: 265 seconds)
2021-11-17 12:43:02 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-17 12:45:23 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-17 12:45:38 +0100michalz(~michalz@185.246.204.57) (Read error: No route to host)
2021-11-17 12:46:09 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 12:46:42 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-17 12:46:55 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-17 12:47:10 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 12:47:17 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-17 12:47:31 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 12:47:39 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-17 12:47:53 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 12:48:01 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-17 12:48:39 +0100gentauro(~gentauro@user/gentauro)
2021-11-17 12:49:47 +0100zincy_(~zincy@host86-181-60-139.range86-181.btcentralplus.com)
2021-11-17 12:49:52 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-17 12:50:33 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 12:51:05 +0100 <cv> Iam wrting a simple API
2021-11-17 12:51:06 +0100 <cv> I am planning to have formatted logs with timestamp log level etc
2021-11-17 12:51:06 +0100 <cv> I am planning just write a simple function that takes some arguments and formats the message before printing it to  console or file
2021-11-17 12:51:07 +0100 <cv> Is this alright or should I use some library like hslogger
2021-11-17 12:51:51 +0100zincy_(~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection)
2021-11-17 12:52:06 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 12:56:44 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 12:57:44 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:02:15 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 13:03:26 +0100 <dminuoso> It's not really for us to say whether its alright.
2021-11-17 13:03:32 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:03:33 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 250 seconds)
2021-11-17 13:05:12 +0100 <dminuoso> Personally Im a fan of monad-logger because it provides a clean separation between the logging interface and the implementation. Sadly it just pulls in quite a few dependencies.
2021-11-17 13:05:19 +0100tengu1(~tengu1@cpe-70-121-244-14.neb.res.rr.com)
2021-11-17 13:06:19 +0100 <dminuoso> So even if I handrolled it, I would do the same.
2021-11-17 13:06:42 +0100 <dminuoso> newtype LoggingT m a = LoggingT { runLoggingT :: (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) -> m a }
2021-11-17 13:06:47 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:93ca:4590:d6e0:969f)
2021-11-17 13:07:22 +0100 <dminuoso> That way your code that does the logging is completely decoupled from how logging occurs
2021-11-17 13:08:04 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 13:09:21 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:11:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-17 13:12:15 +0100cv(~cv@103.142.31.135) (Quit: Client closed)
2021-11-17 13:12:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 13:14:18 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 13:15:07 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:17:21 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-11-17 13:17:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-11-17 13:18:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 13:18:33 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 13:19:46 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 13:20:55 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:23:22 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-17 13:23:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-11-17 13:23:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 13:23:54 +0100bliminse_(~bliminse@host86-188-36-178.range86-188.btcentralplus.com) (Quit: leaving)
2021-11-17 13:23:55 +0100mark___(~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-11-17 13:23:56 +0100jakalx(~jakalx@base.jakalx.net)
2021-11-17 13:24:47 +0100deadmarshal(~deadmarsh@95.38.119.2) (Ping timeout: 250 seconds)
2021-11-17 13:25:32 +0100stef204(~stef204@user/stef204)
2021-11-17 13:25:39 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 13:26:50 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:27:23 +0100jespada(~jespada@252-155-231-201.fibertel.com.ar)
2021-11-17 13:31:22 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 13:32:28 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:34:09 +0100bliminse(~bliminse@host86-188-36-178.range86-188.btcentralplus.com)
2021-11-17 13:37:32 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 13:37:54 +0100deadmarshal(~deadmarsh@95.38.119.2)
2021-11-17 13:38:17 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:40:37 +0100betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-11-17 13:42:38 +0100deadmarshal(~deadmarsh@95.38.119.2) (Ping timeout: 256 seconds)
2021-11-17 13:42:58 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 13:44:03 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:46:02 +0100mark___(~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de)
2021-11-17 13:46:32 +0100fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-11-17 13:47:05 +0100machinedgod(~machinedg@24.105.81.50)
2021-11-17 13:48:37 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 13:49:49 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:52:01 +0100pfurla_(~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53) (Quit: gone to sleep. ZZZzzz…)
2021-11-17 13:52:46 +0100pfurla(~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53)
2021-11-17 13:53:50 +0100Charles_Attends(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
2021-11-17 13:54:14 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-11-17 13:54:16 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 13:55:03 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 13:55:37 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 13:56:23 +0100mmhat(~mmh@55d47379.access.ecotel.net) (Quit: WeeChat 3.3)
2021-11-17 13:58:55 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-11-17 14:00:12 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 14:01:23 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 14:01:27 +0100fef(~thedawn@user/thedawn)
2021-11-17 14:04:26 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-11-17 14:05:12 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 265 seconds)
2021-11-17 14:05:57 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 14:07:10 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 14:09:41 +0100miled(~miled@37.211.46.14)
2021-11-17 14:09:51 +0100rkrishnan(~user@122.167.19.65) (Ping timeout: 250 seconds)
2021-11-17 14:10:10 +0100 <miled> Hey guys
2021-11-17 14:10:32 +0100 <miled> could anyone help me in the Test section
2021-11-17 14:10:51 +0100 <miled> Uploaded file: https://uploads.kiwiirc.com/files/31e65220f6e6fa9172af43d86c4a8d60/pasted.txt
2021-11-17 14:11:36 +0100 <maerwald> what is the question
2021-11-17 14:12:06 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 14:12:16 +0100 <miled> I want to test the function myOr using generated inputs tests
2021-11-17 14:12:22 +0100pfurla(~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53) (Quit: gone to sleep. ZZZzzz…)
2021-11-17 14:13:16 +0100 <maerwald> miled: https://www.stackbuilders.com/news/a-quickcheck-tutorial-generators
2021-11-17 14:14:36 +0100pfurla(~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53)
2021-11-17 14:16:13 +0100deadmarshal(~deadmarsh@95.38.119.2)
2021-11-17 14:17:49 +0100 <kuribas> miled: your myOr function is not total.
2021-11-17 14:17:56 +0100 <kuribas> miled: try "myOr []"
2021-11-17 14:18:33 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 14:19:14 +0100 <kuribas> miled: also: 'x == True' == x
2021-11-17 14:19:26 +0100 <kuribas> > let x = True in x == True
2021-11-17 14:19:28 +0100 <lambdabot> True
2021-11-17 14:19:31 +0100 <kuribas> > let x = True in x
2021-11-17 14:19:33 +0100 <lambdabot> True
2021-11-17 14:20:15 +0100 <xddq[m]> Uhmm.. I want to convert a list of strings like ```["hello","world"]``` to [hello, world]
2021-11-17 14:20:15 +0100 <xddq[m]> Is there some simple function for this?
2021-11-17 14:20:15 +0100 <xddq[m]> ```show ["hello","world"]``` results in ```"[\"hello\",\"world\"]"``` which results in ```["hello","world"]``` when calling print on that string.
2021-11-17 14:20:42 +0100 <dminuoso> xddq[m]: readMaybe gives you roundtripping via show
2021-11-17 14:20:47 +0100 <dminuoso> At least if the instances behave correctly
2021-11-17 14:20:54 +0100Feuermagier_(~Feuermagi@2a02:2488:4211:3400:b6fd:ec18:acf6:f1a8) (Quit: Leaving)
2021-11-17 14:20:58 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-11-17 14:21:30 +0100 <dminuoso> % import Text.Read (readMaybe)
2021-11-17 14:21:30 +0100 <yahb> dminuoso:
2021-11-17 14:21:42 +0100 <dminuoso> % let x :: Maybe [String]; x = readMaybe (show ["hello", "world"]) in x
2021-11-17 14:21:42 +0100 <yahb> dminuoso: Just ["hello","world"]
2021-11-17 14:22:21 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-11-17 14:22:28 +0100nschoe(~quassel@178.251.84.79)
2021-11-17 14:23:34 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 14:24:41 +0100 <xddq[m]> dminuoso: Thank you for the answer. But the result is ["hello","world"] and I want it to become [hello, world]
2021-11-17 14:25:05 +0100 <boxscape_> you want to print [hello, world] to the terminal?
2021-11-17 14:25:23 +0100 <xddq[m]> yeah, to a file
2021-11-17 14:25:51 +0100 <kuribas> > show ["hello", "world"]
2021-11-17 14:25:52 +0100 <lambdabot> "[\"hello\",\"world\"]"
2021-11-17 14:26:18 +0100 <dminuoso> xddq[m]: Ideally just write this manually.
2021-11-17 14:26:19 +0100 <kuribas> xddq[m]: you want to remove the quotes?
2021-11-17 14:26:21 +0100 <boxscape_> > putStrLn $ "[" <> intercalate "," ["hello", "world"] <> "]"
2021-11-17 14:26:22 +0100 <lambdabot> <IO ()>
2021-11-17 14:26:25 +0100 <boxscape_> % putStrLn $ "[" <> intercalate "," ["hello", "world"] <> "]"
2021-11-17 14:26:25 +0100 <yahb> boxscape_: [hello,world]
2021-11-17 14:26:34 +0100 <dminuoso> Neither `show` nor `read` are good mechanisms for actual serialization or deserializatoin
2021-11-17 14:26:41 +0100 <dminuoso> They are developer shortcuts for quick introspection at best
2021-11-17 14:26:49 +0100 <kuribas> > filter (/= '"') $ show ["hello", "world"]
2021-11-17 14:26:50 +0100 <lambdabot> "[hello,world]"
2021-11-17 14:27:00 +0100 <dminuoso> kuribas: Yes, and if you have "hello\""?
2021-11-17 14:27:12 +0100 <kuribas> > filter (/= '"') $ show ["hello\"", "world"]
2021-11-17 14:27:13 +0100 <lambdabot> "[hello\\,world]"
2021-11-17 14:27:29 +0100 <boxscape_> % putStrLn $ "[" <> intercalate "," ["hello\"", "world"] <> "]"
2021-11-17 14:27:29 +0100 <yahb> boxscape_: [hello",world]
2021-11-17 14:28:42 +0100 <dminuoso> The solution is to simply do: let xs = ["hello", "world"] in "[" <> intercalate ", " <> "]"
2021-11-17 14:28:48 +0100 <xddq[m]> boxscape_: that's perfect, thank you!
2021-11-17 14:28:50 +0100 <dminuoso> Yup, what boxscape_ wrote
2021-11-17 14:29:05 +0100cv(~cv@103.142.31.135)
2021-11-17 14:29:24 +0100 <dminuoso> xddq[m]: Also, if you want to take full control of output, consider a prettyprinter library like `prettyprinter` or `pretty`
2021-11-17 14:29:33 +0100jmorris(uid433911@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-17 14:29:41 +0100 <dminuoso> Very useful if you want to do some nice human readable formatting
2021-11-17 14:29:58 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 14:30:01 +0100 <dminuoso> But perfectly useable for machine readable content as well
2021-11-17 14:30:06 +0100 <dminuoso> We generate config files with it :)
2021-11-17 14:31:10 +0100 <dminuoso> (Altenative f, Foldable t) => t (f a) -> f a
2021-11-17 14:31:16 +0100 <dminuoso> Does this exist in base?
2021-11-17 14:31:53 +0100miled(~miled@37.211.46.14) (Quit: Connection closed)
2021-11-17 14:32:09 +0100 <opqdonut> :t Control.Applicative.Alternative.asum
2021-11-17 14:32:09 +0100 <lambdabot> error:
2021-11-17 14:32:10 +0100 <lambdabot> Not in scope: ‘Control.Applicative.Alternative.asum’
2021-11-17 14:32:10 +0100 <lambdabot> No module named ‘Control.Applicative.Alternative’ is imported.
2021-11-17 14:32:20 +0100 <opqdonut> well anyway, asum :: (Foldable t, Alternative f) => t (f a) -> f a
2021-11-17 14:32:42 +0100 <opqdonut> oh huh that's from the monadplus package, I thought I was in base
2021-11-17 14:32:49 +0100 <kuribas> @hoogle asum
2021-11-17 14:32:49 +0100 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
2021-11-17 14:32:49 +0100 <lambdabot> Data.Conduit.Combinators asum :: (Monad m, Alternative f) => ConduitT (f a) o m (f a)
2021-11-17 14:32:49 +0100 <lambdabot> Protolude asum :: (Foldable t, Alternative f) => t (f a) -> f a
2021-11-17 14:32:53 +0100 <boxscape_> % newtype RawString = RawString {getRawString :: String}
2021-11-17 14:32:53 +0100 <yahb> boxscape_:
2021-11-17 14:32:55 +0100 <dminuoso> opqdonut: Ah! Hoogle apparently failed when you switch those constraints around
2021-11-17 14:32:56 +0100 <boxscape_> % instance Show RawString where show = getRawString
2021-11-17 14:32:56 +0100 <yahb> boxscape_:
2021-11-17 14:32:59 +0100 <kuribas> Pretty sure that's in base
2021-11-17 14:33:00 +0100 <dminuoso> Thanks.
2021-11-17 14:33:03 +0100 <boxscape_> % print . map RawString $ ["hello", "world"]
2021-11-17 14:33:03 +0100 <yahb> boxscape_: [hello,world]
2021-11-17 14:33:15 +0100 <dminuoso> opqdonut: And it's in base, its just not imported in yahb
2021-11-17 14:33:19 +0100 <dminuoso> Anyway. Thanks!
2021-11-17 14:33:30 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2021-11-17 14:33:31 +0100 <opqdonut> yeah so it seems
2021-11-17 14:33:41 +0100 <kuribas> https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Foldable.html#v:asum
2021-11-17 14:33:49 +0100 <boxscape_> (violating the unspoken Show law I suppose)
2021-11-17 14:33:54 +0100 <dminuoso> Oh the module specification is wrong
2021-11-17 14:33:57 +0100 <kuribas> :t Data.Foldable.asum
2021-11-17 14:33:58 +0100 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
2021-11-17 14:33:58 +0100 <dminuoso> its either Data.Foldable or Control.Applicative
2021-11-17 14:34:42 +0100 <opqdonut> I ended up here from google: https://hackage.haskell.org/package/monadplus-1.4.2/docs/Control-Applicative-Alternative.html
2021-11-17 14:34:46 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 14:34:48 +0100 <opqdonut> trying to land in the control.applicative docs
2021-11-17 14:35:23 +0100 <xddq[m]> Why did you use "<>" instead of "++" for ```"[" <> intercalate ", " ["hello","world"] <> "]"``` ? Do you always use <> on lists? Is there a difference?
2021-11-17 14:35:35 +0100 <boxscape_> xddq[m] you can use either, <> is more general
2021-11-17 14:36:05 +0100 <boxscape_> google can be pretty terrible for searching hackage, I've been confused at times as to why the API is very different from what I expect, before realizing it took me to a ten-year old version of the library
2021-11-17 14:36:06 +0100 <dminuoso> <> being more general means less refactoring if you swap things out later
2021-11-17 14:36:22 +0100 <dminuoso> xddq[m]: Consider, if you later used prettyprinter, <> still remains the operator to concatenate two documents
2021-11-17 14:36:27 +0100 <dminuoso> But if you had used ++, you'd have to replace that
2021-11-17 14:36:47 +0100 <xddq[m]> interesting, thanks!
2021-11-17 14:36:56 +0100 <dminuoso> Added benefit of ++ is, if you're using variables, it's more obvious what the arguments types are
2021-11-17 14:36:59 +0100 <kuribas> boxscape_: doesn't ++ have better optimization?
2021-11-17 14:37:04 +0100 <kuribas> with rewrite rules?
2021-11-17 14:37:53 +0100 <dminuoso> If you're relying on rewrite rules on String for acceptable performance, you probably shouldn't be using String in the firstp lace
2021-11-17 14:38:08 +0100 <dminuoso> Or lists in general
2021-11-17 14:38:26 +0100 <dminuoso> So Ill file this under premature optimization
2021-11-17 14:38:33 +0100 <boxscape_> kuribas (<>) is defined as (++) and is being inlined, so I would expect the performance to be the same as long as it's clear that it's being instantiated to (++) at the call site, but I'm not super familiar with how RULES work so, idk
2021-11-17 14:38:46 +0100 <dminuoso> boxscape_: The inlining happens in the simplifier
2021-11-17 14:38:49 +0100 <dminuoso> Where do RULES fire?
2021-11-17 14:38:56 +0100 <boxscape_> I don't know
2021-11-17 14:39:13 +0100 <dminuoso> Ah, rules are applied in the simplifier
2021-11-17 14:39:29 +0100 <boxscape_> so should be equivalent then?
2021-11-17 14:39:35 +0100 <dminuoso> Yes? No?
2021-11-17 14:39:39 +0100 <boxscape_> ok :)
2021-11-17 14:39:39 +0100 <yushyin> Maybe?
2021-11-17 14:39:50 +0100 <dminuoso> The interaction between simplifier steps are incredibly subtle and they all influence each other
2021-11-17 14:41:55 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 14:41:59 +0100 <dminuoso> Can GHC inline recursive functions to a degree?
2021-11-17 14:42:33 +0100 <dminuoso> That is, would it ever turn `"a" ++ "bc" into "abc"?
2021-11-17 14:43:02 +0100dminuosoremembers GHC not inlining recursive things as a fundamental rule, but is not quite sure whether he misremembers
2021-11-17 14:44:07 +0100 <maerwald> dminuoso: top-level recursion yes
2021-11-17 14:44:29 +0100 <geekosaur> it doesn't inline when recursion is directly involved, and there's no direct recursion in "a" ++ "bc". but it also doesn't do constant folding
2021-11-17 14:44:47 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 264 seconds)
2021-11-17 14:44:48 +0100 <maerwald> e.g. https://hackage.haskell.org/package/base-4.16.0.0/docs/src/GHC.Base.html#map
2021-11-17 14:44:49 +0100 <boxscape_> just tested it, the Core only contains "abc"
2021-11-17 14:44:49 +0100 <dminuoso> geekosaur: The definition of (++) is recursive
2021-11-17 14:44:51 +0100 <maerwald> doesn't inline
2021-11-17 14:45:00 +0100rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
2021-11-17 14:45:03 +0100 <maerwald> but there are rewrite rules
2021-11-17 14:45:15 +0100 <boxscape_> (in fact it only contains "abc"#)
2021-11-17 14:45:19 +0100 <geekosaur> right, but the definition doesn't matter here, the rewrite rule would be on ++ not its definition
2021-11-17 14:45:33 +0100 <geekosaur> huh, so it does constant fold
2021-11-17 14:45:38 +0100 <dminuoso> "++" [~1] forall xs ys. xs ++ ys = augment (\c n -> foldr c n xs) ys
2021-11-17 14:45:40 +0100 <dminuoso> Ah
2021-11-17 14:46:14 +0100michalz(~michalz@185.246.204.121)
2021-11-17 14:46:46 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 14:47:25 +0100 <cv> How do I convert base64 encoded string to png
2021-11-17 14:47:35 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-17 14:49:07 +0100 <maerwald> what did you encode? :D
2021-11-17 14:49:41 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-11-17 14:49:59 +0100 <boxscape_> also tested this: the core representation of two functions is identical if you use (<>) for one and (+) for the other. ( kuribas , dminuoso )
2021-11-17 14:50:45 +0100 <boxscape_> (...and when (<>) is instantiated to [], of course)
2021-11-17 14:51:24 +0100 <dminuoso> boxscape_: Perhaps, I still wouldn't rely on it.
2021-11-17 14:51:30 +0100 <boxscape_> that's fair
2021-11-17 14:51:46 +0100infinity0(~infinity0@occupy.ecodis.net) (Ping timeout: 256 seconds)
2021-11-17 14:51:56 +0100dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-17 14:52:03 +0100drdo1(~drdo@roach0.drdo.eu)
2021-11-17 14:52:05 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 265 seconds)
2021-11-17 14:52:08 +0100 <dminuoso> Use what is more expressive/maintainable, and worry about performance later iff profiling determines it to be a hot spot
2021-11-17 14:52:08 +0100drdo(~drdo@roach0.drdo.eu) (Read error: Connection reset by peer)
2021-11-17 14:52:09 +0100drdo1drdo
2021-11-17 14:53:01 +0100jackhill(~jackhill@kalessin.dragonsnail.net) (Ping timeout: 245 seconds)
2021-11-17 14:53:15 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 14:53:57 +0100jackhill(~jackhill@kalessin.dragonsnail.net)
2021-11-17 14:54:15 +0100dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net)
2021-11-17 14:54:37 +0100infinity0(~infinity0@occupy.ecodis.net)
2021-11-17 14:55:23 +0100motherfsck(~motherfsc@user/motherfsck)
2021-11-17 14:55:49 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2021-11-17 14:56:45 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2021-11-17 14:57:16 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-11-17 14:57:37 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2021-11-17 14:57:53 +0100deadmarshal(~deadmarsh@95.38.119.2) (Ping timeout: 265 seconds)
2021-11-17 14:57:57 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 14:59:20 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 15:00:18 +0100vysn(~vysn@user/vysn) (Ping timeout: 265 seconds)
2021-11-17 15:03:26 +0100ystael(~ystael@user/ystael)
2021-11-17 15:04:01 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 250 seconds)
2021-11-17 15:04:12 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-17 15:04:16 +0100 <boxscape_> % unpackCString# "foo"# -- what exactly happens here? Does GHC place a C String "foo\0" at address some address aliased to "foo"# when I use "foo"#? Or is the C String created by the call to unpackCString?
2021-11-17 15:04:16 +0100 <yahb> boxscape_: "foo"
2021-11-17 15:05:03 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 15:05:08 +0100 <boxscape_> in other words, if I use "foo"# for something other than unpackCString#, is the C String not created?
2021-11-17 15:05:41 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-11-17 15:07:17 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-11-17 15:07:25 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 15:09:35 +0100 <geekosaur> my knowledge is limited here but I gather "foo"# is a packed utf8 string with a nul at the end
2021-11-17 15:09:39 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 15:09:53 +0100 <geekosaur> so it just happens to work with unpackCString# as long as it doesn't have an embedded NUL
2021-11-17 15:09:56 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2021-11-17 15:10:06 +0100 <boxscape_> hm I see
2021-11-17 15:10:18 +0100jkaye(~jkaye@2601:281:8300:7530:3845:93d:d6fd:67fb)
2021-11-17 15:10:18 +0100 <geekosaur> I don't know how the unboxed string rep works if there's a NUL in the middle; it may be encoded
2021-11-17 15:10:25 +0100 <boxscape_> I guess what's confusing me is that the type of "foo"# is Addr#, which doesn't sound very much like it's String-like
2021-11-17 15:10:51 +0100 <geekosaur> I do know for certain that ghc does not store string literals in their normal boxed form, but in a packed representation
2021-11-17 15:10:51 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 15:10:59 +0100 <boxscape_> ok
2021-11-17 15:11:18 +0100 <geekosaur> which is why IsString and friends were so easy to add
2021-11-17 15:11:39 +0100 <boxscape_> % unpackCString# "fo\0o"# -- geekosaur there you go
2021-11-17 15:11:39 +0100 <yahb> boxscape_: "fo"
2021-11-17 15:12:03 +0100 <geekosaur> right, as I said, it just happens to work as long as there's no embedded NUL
2021-11-17 15:12:04 +0100 <maerwald> geekosaur: IsString instance for String isn't even valid Haskell2010 :D
2021-11-17 15:12:08 +0100 <boxscape_> right, ok
2021-11-17 15:12:11 +0100 <opqdonut> I love how simple the source of unpackCString# is
2021-11-17 15:12:13 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-11-17 15:12:27 +0100 <geekosaur> but "fo\0"# used as a packed string literal doesn't choke on the \0
2021-11-17 15:12:28 +0100 <opqdonut> https://hackage.haskell.org/package/ghc-prim-0.8.0/docs/src/GHC.CString.html#unpackCString%23
2021-11-17 15:12:46 +0100 <opqdonut> just straightforward recursive list generation, not even using build
2021-11-17 15:12:49 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
2021-11-17 15:14:49 +0100 <boxscape_> Okay so if I'm understanding correctly, "foo"# really is morally a String literal, not an address, and the reason its type is Addr# is just that the address is how you access the resulting String
2021-11-17 15:15:34 +0100 <geekosaur> the only place these literals live is in the initialized data segment of the executable, not the heap, so Addr# is the only way to represent their address
2021-11-17 15:15:34 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 15:15:49 +0100 <boxscape_> ok
2021-11-17 15:16:12 +0100 <geekosaur> (normally)
2021-11-17 15:16:36 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 15:16:42 +0100 <boxscape_> (I guess ideally I'd like to see them be of type `newtype String# = String# Addr#` or something)
2021-11-17 15:17:49 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 15:18:00 +0100 <geekosaur> I don't think newtypes exist at the level those strings are normally found (Core)
2021-11-17 15:18:03 +0100 <hippoid> is reading a csv from stdin and then creating a data type considered parsing?
2021-11-17 15:18:15 +0100 <geekosaur> it's a form of parsing, yes
2021-11-17 15:18:24 +0100pfurla(~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53) (Quit: gone to sleep. ZZZzzz…)
2021-11-17 15:18:25 +0100 <boxscape_> geekosaur right but I can create them in surface haskell as well. I guess it's not a common thing though
2021-11-17 15:18:33 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 15:18:47 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 15:18:47 +0100 <geekosaur> that said, "csv" is really poorly defined and goes all over the place, you are better off using a library like cassava instead of trying to do it yourself
2021-11-17 15:18:55 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 15:19:43 +0100 <hippoid> ok thanks... going to check out cassava
2021-11-17 15:19:50 +0100 <geekosaur> boxscape_, right, but then we don't have newtype Int# either, the type of 3# is Int# which is primitive
2021-11-17 15:20:07 +0100 <geekosaur> because when these normally come up you're down in primitive-land
2021-11-17 15:20:21 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 15:20:30 +0100 <boxscape_> yes, but the type there makes much more sense to me - 3# is some sort of integer-like type. Whereas "foo"# is a string literal, not an address
2021-11-17 15:20:39 +0100 <boxscape_> s/type/value
2021-11-17 15:21:14 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 15:22:40 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 15:22:48 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 15:22:48 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 15:23:00 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 15:23:46 +0100rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-11-17 15:23:59 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 15:24:14 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl)
2021-11-17 15:24:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-17 15:24:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-17 15:24:20 +0100wroathe(~wroathe@user/wroathe)
2021-11-17 15:27:11 +0100johnny_sitar(~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
2021-11-17 15:27:52 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 15:29:36 +0100cv(~cv@103.142.31.135) (Quit: Client closed)
2021-11-17 15:32:54 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 260 seconds)
2021-11-17 15:33:11 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-17 15:34:31 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 15:39:21 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
2021-11-17 15:42:11 +0100rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
2021-11-17 15:44:46 +0100shriekingnoise(~shrieking@186.137.144.80)
2021-11-17 15:47:10 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 15:48:29 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2021-11-17 15:48:29 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2021-11-17 15:48:29 +0100dibblego(~dibblego@haskell/developer/dibblego)
2021-11-17 15:49:32 +0100DNH(~DNH@2a02:8109:b740:2c4:5132:6531:a874:2df6)
2021-11-17 15:50:54 +0100max22-(~maxime@2a01cb0883359800b81dd38911f0cee9.ipv6.abo.wanadoo.fr)
2021-11-17 15:53:32 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-17 15:54:19 +0100pfurla(~pfurla@201.17.118.230)
2021-11-17 15:54:23 +0100mark___(~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-11-17 15:54:45 +0100mark___(~a@p200300ef973db1f2502293e1a26d2ca1.dip0.t-ipconnect.de)
2021-11-17 16:00:30 +0100 <merijn> boxscape_: String literals are already more primitive
2021-11-17 16:00:43 +0100 <boxscape_> more primitive than what?
2021-11-17 16:01:02 +0100 <merijn> boxscape_: String literals are stored as specific byte arrays in the binary that get converted to String lazily
2021-11-17 16:01:20 +0100 <merijn> boxscape_: Text uses this to have a more efficient conversion for String literals when using OverloadedStrings
2021-11-17 16:01:30 +0100 <boxscape_> okay
2021-11-17 16:02:26 +0100 <merijn> (basically it has a rewrite rule that converts "internalToString . stringToText" with "internalToText"
2021-11-17 16:03:35 +0100 <boxscape_> I see, interesting
2021-11-17 16:05:08 +0100dibblego(~dibblego@haskell/developer/dibblego) (Excess Flood)
2021-11-17 16:05:28 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-11-17 16:05:45 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2021-11-17 16:05:45 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2021-11-17 16:05:45 +0100dibblego(~dibblego@haskell/developer/dibblego)
2021-11-17 16:13:17 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
2021-11-17 16:13:51 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
2021-11-17 16:18:03 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 16:18:23 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 264 seconds)
2021-11-17 16:22:39 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2021-11-17 16:24:08 +0100johnjay(~pi@192.142.100.50) (Ping timeout: 256 seconds)
2021-11-17 16:24:50 +0100tengu1(~tengu1@cpe-70-121-244-14.neb.res.rr.com) (Quit: Client closed)
2021-11-17 16:26:11 +0100johnjay(~pi@192.142.100.50)
2021-11-17 16:41:33 +0100xkuru(~xkuru@user/xkuru)
2021-11-17 16:48:41 +0100Guest80(~Guest80@pd9ed7c7f.dip0.t-ipconnect.de) (Quit: Client closed)
2021-11-17 16:49:21 +0100Guest80(~Guest80@pd9ed7c7f.dip0.t-ipconnect.de)
2021-11-17 16:53:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-11-17 16:56:16 +0100boxscape_(~boxscape_@134.171.69.87) (Quit: Connection closed)
2021-11-17 17:00:08 +0100codygman[m](~codygman@2001:470:69fc:105::b4ba) (Quit: You have been kicked for being idle)
2021-11-17 17:02:40 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-11-17 17:04:08 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 17:06:00 +0100jespada(~jespada@252-155-231-201.fibertel.com.ar) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-17 17:08:54 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-11-17 17:10:30 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 17:11:10 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-17 17:11:15 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:93ca:4590:d6e0:969f) (Quit: WeeChat 2.8)
2021-11-17 17:17:24 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
2021-11-17 17:17:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-17 17:17:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-17 17:17:46 +0100wroathe(~wroathe@user/wroathe)
2021-11-17 17:21:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 17:23:04 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-17 17:23:58 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
2021-11-17 17:24:05 +0100zebrag(~chris@user/zebrag)
2021-11-17 17:25:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-11-17 17:26:24 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-11-17 17:28:50 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 17:29:34 +0100zmt00(~zmt00@user/zmt00)
2021-11-17 17:33:03 +0100EvanR(~evan@user/evanr)
2021-11-17 17:35:46 +0100Lycurgus(~juan@98.4.112.204)
2021-11-17 17:39:39 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 17:42:32 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection)
2021-11-17 17:43:12 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-17 17:44:02 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-17 17:44:05 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-11-17 17:44:17 +0100nschoe(~quassel@178.251.84.79) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-11-17 17:44:56 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-17 17:53:52 +0100EvanR(~evan@user/evanr) (Quit: Leaving)
2021-11-17 17:54:18 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
2021-11-17 17:56:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 18:01:05 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-11-17 18:02:25 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-17 18:03:13 +0100pfurla(~pfurla@201.17.118.230) (Quit: gone to sleep. ZZZzzz…)
2021-11-17 18:05:36 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 18:05:53 +0100moet(~moet@mobile-166-171-251-63.mycingular.net)
2021-11-17 18:07:31 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-17 18:08:54 +0100img(~img@user/img)
2021-11-17 18:09:03 +0100pfurla(~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53)
2021-11-17 18:09:13 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 18:10:15 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
2021-11-17 18:12:40 +0100tired-(~tired@user/tired) (Quit: /)
2021-11-17 18:13:16 +0100tired(~tired@user/tired)
2021-11-17 18:14:04 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 18:15:04 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 18:17:09 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-11-17 18:19:53 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 18:20:56 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 18:22:49 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 265 seconds)
2021-11-17 18:24:17 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 18:25:58 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 18:27:22 +0100dibblego(~dibblego@haskell/developer/dibblego) (Excess Flood)
2021-11-17 18:27:29 +0100mbuf(~Shakthi@122.162.1.56) (Quit: Leaving)
2021-11-17 18:27:48 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2021-11-17 18:27:48 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2021-11-17 18:27:48 +0100dibblego(~dibblego@haskell/developer/dibblego)
2021-11-17 18:27:54 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2021-11-17 18:28:36 +0100theproffesor(~theproffe@user/theproffesor) (Quit: Leaving)
2021-11-17 18:29:04 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-11-17 18:30:07 +0100 <oats> does `base` not contain any functions for working with directories?
2021-11-17 18:30:24 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net)
2021-11-17 18:31:02 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
2021-11-17 18:31:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-11-17 18:32:15 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 18:32:45 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-11-17 18:35:20 +0100EvanR(~evan@user/evanr)
2021-11-17 18:37:35 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-17 18:38:07 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2021-11-17 18:40:00 +0100 <maerwald> no
2021-11-17 18:40:57 +0100 <maerwald> directories make for a poor cross-platform abstraction, so either you use unix/Win32 or you hope `directory` does what you think it does
2021-11-17 18:42:38 +0100img(~img@user/img) (Ping timeout: 265 seconds)
2021-11-17 18:42:56 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
2021-11-17 18:44:16 +0100deadmarshal(~deadmarsh@95.38.119.2)
2021-11-17 18:44:33 +0100 <oats> gotcha
2021-11-17 18:44:40 +0100whatsupdoc(uid509081@hampstead.irccloud.com)
2021-11-17 18:45:39 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 18:46:43 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3)
2021-11-17 18:47:26 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 268 seconds)
2021-11-17 18:48:38 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-17 18:50:51 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
2021-11-17 18:52:18 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 265 seconds)
2021-11-17 18:56:27 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net)
2021-11-17 18:57:23 +0100jkaye(~jkaye@2601:281:8300:7530:3845:93d:d6fd:67fb) (Ping timeout: 264 seconds)
2021-11-17 18:57:43 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
2021-11-17 18:57:48 +0100 <EvanR> this is encouraging... trying to update my old ghc by doing ghcup, curl complains about certs, and the link for more info is at haxx.se which is a redirect xD
2021-11-17 18:57:52 +0100 <EvanR> https://i.imgur.com/h6paSpY.png
2021-11-17 19:00:29 +0100 <jneira[m]> you always can add `-k` but the script does subsequent curl calls to haskell.org andthey will fail as well
2021-11-17 19:01:37 +0100Successus(~Successus@gateway/tor-sasl/successus)
2021-11-17 19:02:23 +0100 <EvanR> tried to add latest glfw-b as a dep, but base is too old gotta update ghc. curl is too old gotta update OSX I guess. OSX too old gotta buy a new Mac xD
2021-11-17 19:02:46 +0100chele(~chele@user/chele) (Remote host closed the connection)
2021-11-17 19:02:50 +0100 <jneira[m]> if i browse the url the certificate seems to be ok, with expired date `Thu, 27 Jan 2022 06:48:31 GMT`
2021-11-17 19:03:05 +0100 <monochrom> I cannot reproduce the certificate error.
2021-11-17 19:03:11 +0100Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-11-17 19:03:32 +0100 <monochrom> One of us has a compromised internet connection.
2021-11-17 19:03:57 +0100alzgh(~alzgh@user/alzgh)
2021-11-17 19:04:14 +0100 <Successus> Hi, does ghc 8.8.4 use editline? I was trying to set up some keybindings in ~/.editrc but none of them work in ghci. For example I tried bind ^R em-next-word. Could you please tell me if there is some error, or does ghc not read that file?
2021-11-17 19:05:03 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-11-17 19:05:31 +0100 <EvanR> is haxx.se a normal thing to see in a curl error message
2021-11-17 19:05:32 +0100 <monochrom> It uses haskeline. I forgot where is the doc for the config.
2021-11-17 19:05:38 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 256 seconds)
2021-11-17 19:05:56 +0100 <monochrom> curl.haxx.se is curl's website.
2021-11-17 19:05:57 +0100 <awpr> I do remember haxx.se being the website for cURL
2021-11-17 19:06:29 +0100 <EvanR> ok good
2021-11-17 19:06:30 +0100 <Successus> yes it is the website of curl
2021-11-17 19:06:54 +0100 <EvanR> it redirects to curl.se which is saner looking
2021-11-17 19:06:57 +0100 <Successus> alright so I will find documentation for haskeline. Just to confirm it uses haskeline by default, no need to install it?
2021-11-17 19:07:03 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net)
2021-11-17 19:07:13 +0100 <awpr> brb checking if backdoor.nsa.gov is available to register for a new crypto library
2021-11-17 19:07:28 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 19:07:46 +0100Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 265 seconds)
2021-11-17 19:07:59 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-17 19:08:05 +0100 <monochrom> https://github.com/judah/haskeline has links to how to config.
2021-11-17 19:08:26 +0100 <Successus> Alright, thank you very much!
2021-11-17 19:09:00 +0100 <EvanR> I wonder if this has to do with lets encrypt
2021-11-17 19:10:15 +0100quarkyalice(~quarkyali@user/quarkyalice)
2021-11-17 19:10:20 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 19:11:43 +0100 <monochrom> Ah, missed one question. Yes, ghci already uses haskeline out of the box, nothing to install.
2021-11-17 19:11:52 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 19:11:56 +0100 <gentauro> 19:05 < monochrom> curl.haxx.se is curl's website
2021-11-17 19:12:03 +0100jbox(~jbox@user/jbox)
2021-11-17 19:12:04 +0100 <gentauro> and where you can get mozillas CA's ;0
2021-11-17 19:12:06 +0100 <gentauro> ;)
2021-11-17 19:12:30 +0100 <monochrom> I don't understand the joke.
2021-11-17 19:12:50 +0100 <gentauro> `https://curl.haxx.se/ca/cacert.pem`
2021-11-17 19:13:06 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 19:13:11 +0100 <Successus> great to hear, thank you!
2021-11-17 19:13:19 +0100 <gentauro> `curl \ --remote-name \ --time-cond \ cacert.pem \ https://curl.haxx.se/ca/cacert.pem`
2021-11-17 19:13:22 +0100 <gentauro> :)
2021-11-17 19:13:45 +0100 <gentauro> I use those when I code my `http-clients` from scratch in Haskell (when I need support for TLS)
2021-11-17 19:14:03 +0100ephemient(uid407513@lymington.irccloud.com) (Ping timeout: 265 seconds)
2021-11-17 19:14:11 +0100ephemient(uid407513@lymington.irccloud.com)
2021-11-17 19:14:23 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-17 19:14:32 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 265 seconds)
2021-11-17 19:14:41 +0100jkaye(~jkaye@2601:281:8300:7530:75fb:eacf:8ea0:5f8)
2021-11-17 19:14:44 +0100alzgh(~alzgh@user/alzgh)
2021-11-17 19:15:23 +0100 <monochrom> OK I see, tangential.
2021-11-17 19:16:25 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net)
2021-11-17 19:17:47 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-17 19:18:45 +0100 <maerwald> http-clients?
2021-11-17 19:18:52 +0100 <Successus> I found this if someone is interested http://trac.haskell.org/haskeline/wiki/UserPrefs
2021-11-17 19:19:00 +0100 <Successus> it's old link
2021-11-17 19:19:11 +0100 <geekosaur> isn't trac long gone?
2021-11-17 19:19:19 +0100rusty(~rustyboy@82.77.237.221)
2021-11-17 19:19:22 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
2021-11-17 19:22:07 +0100dhruvasagar(~dhruvasag@49.207.218.36) (Quit: WeeChat 3.3)
2021-11-17 19:22:19 +0100 <maerwald> yeah, that link isn't useful
2021-11-17 19:22:35 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2021-11-17 19:24:30 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 19:26:03 +0100gdown(~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net)
2021-11-17 19:27:40 +0100 <Successus> https://github.com/judah/haskeline/wiki/UserPreferences https://github.com/judah/haskeline/wiki/CustomKeyBindings https://blog.rcook.org/blog/2018/ghci-custom-key-bindings/
2021-11-17 19:29:22 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-17 19:29:56 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-17 19:30:12 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection)
2021-11-17 19:30:16 +0100alzgh(~alzgh@user/alzgh)
2021-11-17 19:32:08 +0100jespada(~jespada@252-155-231-201.fibertel.com.ar)
2021-11-17 19:33:21 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
2021-11-17 19:35:53 +0100Guest80(~Guest80@pd9ed7c7f.dip0.t-ipconnect.de) (Quit: Client closed)
2021-11-17 19:35:58 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 19:36:36 +0100Guest80(~Guest80@pd9ed7c7f.dip0.t-ipconnect.de)
2021-11-17 19:40:55 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 19:42:05 +0100deadmarshal(~deadmarsh@95.38.119.2) (Ping timeout: 265 seconds)
2021-11-17 19:42:43 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
2021-11-17 19:43:16 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 19:44:02 +0100epolanski(uid312403@helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-17 19:46:01 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 268 seconds)
2021-11-17 19:47:13 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net)
2021-11-17 19:52:08 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-17 19:52:17 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net) (Remote host closed the connection)
2021-11-17 19:52:29 +0100alzgh(~alzgh@user/alzgh)
2021-11-17 19:52:38 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net)
2021-11-17 19:53:20 +0100Guest17(~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-11-17 20:03:11 +0100tired(~tired@user/tired) (Quit: /)
2021-11-17 20:03:26 +0100quarkyalice(~quarkyali@user/quarkyalice) (Ping timeout: 256 seconds)
2021-11-17 20:03:50 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-11-17 20:03:53 +0100 <energizer> in pattern matching, i could say `| x < 5 = 5 | x < 10 = 10 | otherwise = 99` or `| -inf < x < 5 = 5 | 5 <= x < 10 = 10 | otherwise = 99`. does anybody do the latter, or is that considered overly verbose bad style?
2021-11-17 20:04:37 +0100 <monochrom> The latter doesn't compile in the first place.
2021-11-17 20:04:43 +0100tired(~tired@user/tired)
2021-11-17 20:05:11 +0100 <energizer> you know what i mean tho
2021-11-17 20:05:17 +0100max22-(~maxime@2a01cb0883359800b81dd38911f0cee9.ipv6.abo.wanadoo.fr) (Ping timeout: 265 seconds)
2021-11-17 20:05:33 +0100 <monochrom> Yes, I know that you write what you mean, no more no less.
2021-11-17 20:05:57 +0100 <monochrom> Perhaps ask a math channel if you doesn't need your notation to compile.
2021-11-17 20:06:11 +0100aegon(~mike@174.127.249.180)
2021-11-17 20:09:32 +0100 <shapr> energizer: I've never seen the latter used in production code.
2021-11-17 20:09:40 +0100 <energizer> shapr: thank you
2021-11-17 20:11:12 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 20:13:16 +0100Guest80(~Guest80@pd9ed7c7f.dip0.t-ipconnect.de) (Quit: Client closed)
2021-11-17 20:14:16 +0100theproffesor(~theproffe@2601:282:847f:8010::390f)
2021-11-17 20:14:16 +0100theproffesor(~theproffe@2601:282:847f:8010::390f) (Changing host)
2021-11-17 20:14:16 +0100theproffesor(~theproffe@user/theproffesor)
2021-11-17 20:14:57 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-11-17 20:15:23 +0100 <EvanR> depending on who talk to, they may respond to IRC math notation as if they were a compiler xD
2021-11-17 20:15:35 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 20:16:40 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-17 20:16:54 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 20:17:20 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-17 20:18:39 +0100 <sm> ERROR missing word at 1:18
2021-11-17 20:19:51 +0100tired(~tired@user/tired) (Quit: /)
2021-11-17 20:20:12 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-11-17 20:20:31 +0100tired(~tired@user/tired)
2021-11-17 20:21:43 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 20:22:42 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 20:23:27 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net) (Remote host closed the connection)
2021-11-17 20:23:53 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net)
2021-11-17 20:25:00 +0100rusty(~rustyboy@82.77.237.221) (Remote host closed the connection)
2021-11-17 20:27:17 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 20:27:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 20:28:17 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
2021-11-17 20:28:22 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-11-17 20:29:27 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 250 seconds)
2021-11-17 20:29:52 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
2021-11-17 20:30:12 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net)
2021-11-17 20:30:36 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
2021-11-17 20:30:43 +0100 <maerwald> is mingw32_HOST_OS define if you cross-compile for windows?
2021-11-17 20:30:49 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
2021-11-17 20:32:14 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-11-17 20:33:43 +0100max22-(~maxime@2a01cb0883359800ee51d0bfa17b1585.ipv6.abo.wanadoo.fr)
2021-11-17 20:34:07 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 20:35:11 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 264 seconds)
2021-11-17 20:38:33 +0100adium(adium@user/adium)
2021-11-17 20:39:03 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-17 20:39:50 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
2021-11-17 20:47:08 +0100ubert(~Thunderbi@p200300ecdf0ba28041546fb5cdf9abd5.dip0.t-ipconnect.de)
2021-11-17 20:51:27 +0100evocatus(~evocatus@84.51.113.13)
2021-11-17 20:51:52 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
2021-11-17 20:51:54 +0100tfeb(~tfb@88.98.95.237)
2021-11-17 20:52:20 +0100Pickchea(~private@user/pickchea)
2021-11-17 20:55:31 +0100tafa(~tafa@2a04:52c0:101:85c::1) (Ping timeout: 245 seconds)
2021-11-17 20:55:34 +0100tafama(~tafa@tafa.xyz)
2021-11-17 20:55:52 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-11-17 20:57:18 +0100lyiriyah(~lyiriyah@user/lyiriyah)
2021-11-17 20:58:23 +0100lyiriyah(~lyiriyah@user/lyiriyah) (Client Quit)
2021-11-17 21:00:34 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-17 21:01:48 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-11-17 21:01:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-11-17 21:02:48 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
2021-11-17 21:03:37 +0100dlbh^(~dlbh@h178.173.139.63.static.ip.windstream.net) (Remote host closed the connection)
2021-11-17 21:05:12 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 256 seconds)
2021-11-17 21:05:30 +0100 <ProfSimm> I started writing a language and i finally understood why referential transparency matters.
2021-11-17 21:05:42 +0100quarkyalice(~quarkyali@user/quarkyalice)
2021-11-17 21:05:47 +0100 <ProfSimm> I was quite the "this is bullshit for nerds" guy before, and using mutable var
2021-11-17 21:05:49 +0100 <ProfSimm> s*
2021-11-17 21:06:18 +0100 <ProfSimm> Specifically in my languages every expression is like a separate thread (green), everything is massively parallel
2021-11-17 21:06:22 +0100 <ProfSimm> Does Haskell have this/
2021-11-17 21:06:24 +0100 <ProfSimm> ?
2021-11-17 21:07:35 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 250 seconds)
2021-11-17 21:07:56 +0100juhp(~juhp@128.106.188.82)
2021-11-17 21:08:05 +0100 <shapr> ProfSimm: no, but you can do something close with the Control.Parallel libraries.
2021-11-17 21:08:33 +0100 <ProfSimm> Thanks
2021-11-17 21:08:47 +0100 <awpr> there isn't automatic massive parallelization, but if you squint really hard, it might look like a thunk is a suspended green thread, and forcing a thunk is the current thread yielding to the particular suspended thread it's blocked on
2021-11-17 21:08:57 +0100 <shapr> ProfSimm: there's overhead in creating a new computation for handing off to your other threads, so you probably want to use larger chunks than every expression
2021-11-17 21:09:03 +0100dsrt^(~dsrt@h178.173.139.63.static.ip.windstream.net)
2021-11-17 21:09:04 +0100 <shapr> ProfSimm: but I want to hear about your language, sounds nifty
2021-11-17 21:09:10 +0100 <awpr> (but that's a really weird way of looking at thunks)
2021-11-17 21:09:11 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 21:09:12 +0100 <ProfSimm> awpr, yup
2021-11-17 21:09:45 +0100 <shapr> I've heard that Erlang is good at firing up a huge pile of tiny computations, but Erlang is also sort of single core last I checked (just really good at handing off work to other instances on other cores)
2021-11-17 21:10:13 +0100 <shapr> ProfSimm: is there a blog about your language?
2021-11-17 21:10:29 +0100 <ProfSimm> shapr, I need to have it take better shape. But I'll definitely come here when I have something to show
2021-11-17 21:10:36 +0100 <shapr> Also, there was related work around cloud haskell https://haskell-distributed.github.io/
2021-11-17 21:10:37 +0100tafama(~tafa@tafa.xyz) (Ping timeout: 250 seconds)
2021-11-17 21:10:45 +0100Midjak(~Midjak@82-65-111-221.subs.proxad.net)
2021-11-17 21:10:46 +0100 <shapr> but I dunno how related to what you describe
2021-11-17 21:11:55 +0100 <shapr> ProfSimm: in general it sounds like your language is based on graph reduction?
2021-11-17 21:12:03 +0100 <ProfSimm> In short, like LISP everything in my thing is a sequence (read: iterator). Iterators are move-only, so they don't need referential transparency per se. Expressions themselves are also a sequence that's being reduced left to right (apply current item as a function to the next item until one item left).
2021-11-17 21:12:18 +0100 <shapr> where you can then hand off chunks to be reduced to any free worker ?
2021-11-17 21:12:42 +0100shaprthinks about that
2021-11-17 21:13:39 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 21:13:54 +0100 <shapr> ProfSimm: is your language also lazy (non-strict) ?
2021-11-17 21:14:14 +0100 <awpr> sounds a bit like GHC's idea of spark-based parallelism: it can record that you want a particular thunk evaluated to WHNF, and go start doing that on any thread that's available
2021-11-17 21:14:31 +0100 <awpr> (the "spark" is the name for the task of evaluating a particular thunk for its own sake)
2021-11-17 21:14:55 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 21:15:03 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-17 21:15:24 +0100 <awpr> I think the language-level interface to that is the builtin `par` function that creates a spark for its first argument and then returns the second
2021-11-17 21:15:44 +0100 <shapr> yeah, you may want to read http://simonmar.github.io/pages/pcph.html or some of the related research papers.
2021-11-17 21:16:37 +0100 <ProfSimm> shapr, the dominant "shape" is a tree of sequences. An expression is a sequence I reduce (foo bar baz qux) but if you put commas (foo bar, baz qux) then it's seen as separate sub-expressions, and each is evaluated in parallel. You can also generate sequences programmatically (the output of every function is implicitly a sequence). However you can apply labels on values and refer then in other
2021-11-17 21:16:37 +0100 <ProfSimm> subexpressions, in which case the referring expression suspends as a thunk until the value is available, for ex: (x: 10, x + x) calculates the list (10, 20), it tries in parallel, but second one blocks until first is done.
2021-11-17 21:16:48 +0100 <ProfSimm> And those "References" to vars, make it a graph in a way
2021-11-17 21:16:49 +0100 <ProfSimm> yes
2021-11-17 21:17:08 +0100 <EvanR> if expression, i.e. a tree, is being reduced "left to right", i.e. one child at a time, I imagine it is eager eval
2021-11-17 21:17:37 +0100 <shapr> can a 'sequence' have a tree shape?
2021-11-17 21:17:52 +0100 <ProfSimm> shachaf, by having subsequences yes
2021-11-17 21:18:18 +0100tafa(~tafa@2a04:52c0:101:85c::1)
2021-11-17 21:18:50 +0100 <EvanR> (cond false (+ 1 2) (* 2 3)) => (cond false 3 (* 2 3)) => (cond false 3 6) => 6
2021-11-17 21:18:58 +0100 <shapr> ProfSimm: I think you have *many* wonderful adventures ahead of you
2021-11-17 21:19:05 +0100 <ProfSimm> shapr, EvanR, it's neither fully lazy, nor fully eager, in fact this is not finalized. But basically I leave something as a thunk or a sequence until it's "observed". But if a function as marked as having side effects it executes serially and eagerly
2021-11-17 21:19:21 +0100 <EvanR> ok like a suspend form
2021-11-17 21:19:25 +0100 <ProfSimm> Yes
2021-11-17 21:19:45 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-17 21:19:47 +0100 <ProfSimm> shapr yeah :) it's a rabbit';s hole
2021-11-17 21:19:53 +0100 <shapr> oh man, I had some optimal lambda calculas reduction papers around here somewhere
2021-11-17 21:20:04 +0100 <ProfSimm> shapr, I'm dreaming the universe is made of evaluating sequences, it's getting nuts
2021-11-17 21:20:52 +0100 <shapr> ProfSimm: have you read up on lazy evaluation and flavors that do sharing?
2021-11-17 21:21:34 +0100 <awpr> there's actually a discussion of this just a bit ago in #haskell-beginners, incl. a book recommendation for implementing lazy evaluation efficiently on real hardware
2021-11-17 21:21:49 +0100 <ProfSimm> shapr, I have a probably somewhat superficial idea. I've been thinking of adding memoization to "pure" functions
2021-11-17 21:22:00 +0100 <EvanR> this book "the implementation of functional programming languages" (lazy) is pretty wild
2021-11-17 21:22:08 +0100 <awpr> yeah, that one
2021-11-17 21:22:24 +0100 <shapr> I consider the STG to be epic magic
2021-11-17 21:22:32 +0100 <ProfSimm> https://www.microsoft.com/en-us/research/uploads/prod/1987/01/slpj-book-1987.pdf
2021-11-17 21:22:32 +0100 <EvanR> though maybe quite old at this point
2021-11-17 21:22:33 +0100 <ProfSimm> this/
2021-11-17 21:22:34 +0100 <awpr> seems perfect as a jumping-off point for novel variations on the evaluation model
2021-11-17 21:22:36 +0100 <awpr> yep
2021-11-17 21:22:57 +0100 <ProfSimm> Thanks folks
2021-11-17 21:23:02 +0100 <shapr> someone was recently telling me there are new developments in that area, but I forgot to ask for citations
2021-11-17 21:23:07 +0100 <awpr> it is quite old, and GHC has newer, fancier stuff. but it's the best overview I've found of how the area generally works
2021-11-17 21:23:18 +0100 <shapr> ProfSimm: feel free to hang around and chat, lots of fun things here
2021-11-17 21:23:24 +0100 <ProfSimm> :D
2021-11-17 21:24:17 +0100 <shapr> oh, this is the most recent thing I ran across for STG things https://github.com/quchen/stgi#ghcs-current-stg
2021-11-17 21:24:49 +0100 <monochrom> Nice.
2021-11-17 21:24:55 +0100tfeb(~tfb@88.98.95.237) (Ping timeout: 250 seconds)
2021-11-17 21:25:53 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
2021-11-17 21:26:17 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 21:26:50 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-11-17 21:26:58 +0100neurocyte0132889(~neurocyte@45.136.170.104)
2021-11-17 21:26:58 +0100neurocyte0132889(~neurocyte@45.136.170.104) (Changing host)
2021-11-17 21:26:58 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-11-17 21:27:58 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 21:29:02 +0100 <EvanR> the Scanning Tunneling G-machine
2021-11-17 21:30:59 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 21:31:58 +0100 <janus> is a summary of the TemplateHaskell reverse dependencies problem available somewhere online?
2021-11-17 21:32:20 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 21:34:01 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 250 seconds)
2021-11-17 21:34:24 +0100m4lvin(~m4lvin@w4eg.de) (Quit: m4lvin)
2021-11-17 21:34:30 +0100m4lvin(~m4lvin@w4eg.de)
2021-11-17 21:36:59 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-17 21:37:02 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 21:37:53 +0100 <ProfSimm> By the way I've been thinking. I'm reducing lists of expressions in parallel, but I reduce individual expressions left to right as in: (a b c d e) runs as a(b(c(d(e)))). Is there some kind of reduction process that doesn't have specific direction and is possibly parallelizable?
2021-11-17 21:38:34 +0100 <ProfSimm> If the operations are commutative one could possibly flip the order
2021-11-17 21:38:51 +0100 <ProfSimm> But not sure semantics we could have in other cases.
2021-11-17 21:39:59 +0100 <EvanR> if you think of your list like that, you could subsume the of the sequence into the idea of an expression and only deal with 1 concept
2021-11-17 21:40:36 +0100 <ProfSimm> EvanR, sorry I didn't understand
2021-11-17 21:40:53 +0100 <EvanR> well what are the rules for forming an expression
2021-11-17 21:41:36 +0100 <EvanR> what are the basic or atomic expressions, and how do you combine expressions to make a bigger one
2021-11-17 21:41:58 +0100 <EvanR> in the process you may not need the idea of sequence
2021-11-17 21:42:48 +0100 <EvanR> nvm that's a tangent
2021-11-17 21:43:12 +0100 <ProfSimm> A function i call the "interpreter" receives all elements of an expression as an iterator. Then it interprets the first item according to custom rules (resolving a binding etc.) and that produces a result. I fetch the next item from the iterator, and I run result = result(next)
2021-11-17 21:43:20 +0100 <ProfSimm> And I keep repeating this until the iterator is over
2021-11-17 21:43:30 +0100 <EvanR> if you ignore side effects and evaluating an expression always completes, then you're free to reduce in whatever order you want
2021-11-17 21:43:33 +0100 <ProfSimm> Finally I apply result with no arguments result = result();
2021-11-17 21:43:35 +0100 <ProfSimm> And that's it
2021-11-17 21:43:41 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 21:43:49 +0100 <EvanR> or in parallel
2021-11-17 21:44:01 +0100 <ProfSimm> A specific item can itself be an expression, which is evaluated with a separate interpreter
2021-11-17 21:44:45 +0100 <ProfSimm> I have a pipe operator too, though to apply this way: result = next(result)
2021-11-17 21:44:49 +0100 <EvanR> sounds like your expressions have a lot more going on than being merely expressions
2021-11-17 21:44:53 +0100 <awpr> this sounds like just expression trees and currying, in exactly the way Haskell has it
2021-11-17 21:45:09 +0100 <awpr> modulo being able to generate expression "iterators" at runtime
2021-11-17 21:45:29 +0100 <ProfSimm> awpr interesting
2021-11-17 21:46:33 +0100 <ProfSimm> awpr, my model is entirely intepreted, I run the interpreter in the IDE and it reduces everything that's pure, and that generates type errors and so on
2021-11-17 21:46:36 +0100 <awpr> er, in Haskell the resolution of sequences to "parenthesized" expression trees is up to the parser instead of anything at runtime, but it's the same kind of grouping
2021-11-17 21:46:37 +0100 <EvanR> yes in haskell f x y z is really ((f x) y) z, application nodes only have 2 elements
2021-11-17 21:46:42 +0100 <EvanR> f applied to x
2021-11-17 21:46:45 +0100 <ProfSimm> I may have AOT/JIT compilation but that'll also be based on the interpreter
2021-11-17 21:47:06 +0100 <janus> is the templatehaskell invalidation problem a bug or is it more of a fundamental design problem?
2021-11-17 21:47:08 +0100 <EvanR> so there's no sequence
2021-11-17 21:47:27 +0100evocatus(~evocatus@84.51.113.13) (Quit: Leaving)
2021-11-17 21:47:39 +0100 <ProfSimm> EvanR, nice I didn't realize I'm doing exactly the same thing
2021-11-17 21:48:07 +0100 <ProfSimm> EvanR one small difference is i apply with no arguments in the end, and every value is a function which when called with no arguments, returns itself
2021-11-17 21:48:09 +0100 <EvanR> in lisp though you expect to get the sequence of arguments in some cases
2021-11-17 21:48:15 +0100 <EvanR> (+ 1 2 3 4)
2021-11-17 21:48:16 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 21:48:23 +0100 <EvanR> so it's different
2021-11-17 21:48:27 +0100 <ProfSimm> EvanR, i do closures in another way, by adding a "placeholder" to generate a thunk with parameters
2021-11-17 21:48:43 +0100 <EvanR> haskell gets by by having no such thing as function applied to no arguments
2021-11-17 21:48:56 +0100 <EvanR> since it's pure, that would have to be a constant value
2021-11-17 21:49:20 +0100 <ProfSimm> EvanR i.e. foo: sum (5, ?) would produce a closure. Which when called like this: bar: foo 7 // bar is 12 now
2021-11-17 21:49:24 +0100 <EvanR> closures implemented as partially applied functions is a classic
2021-11-17 21:50:36 +0100 <EvanR> did you say you were making a pure language?
2021-11-17 21:50:57 +0100 <ProfSimm> EvanR, functions can be pure or not pure, they're pure by default.
2021-11-17 21:51:26 +0100 <awpr> that syntax can get into some trouble w.r.t. how big the closure is: in something like `sum (mul (5, ?), 8)`, is that like `\x -> 5*x + 8`, or like `(\x -> 5 + x) * 8`?
2021-11-17 21:51:26 +0100 <ProfSimm> EvanR, when they're not pure the use is quite restricted.
2021-11-17 21:51:29 +0100 <EvanR> being able to assume everything is pure really simplifies some things xD
2021-11-17 21:51:37 +0100 <ProfSimm> EvanR it does yesh
2021-11-17 21:51:56 +0100 <ProfSimm> EvanR, I'm tempted to kinda wall off all the side-effects, but I'm *trying* to kinda keep them in for pragmatic purposes
2021-11-17 21:53:09 +0100 <EvanR> idris has a nifty syntax for writing side effecting sub expression, which is desugared into >>=
2021-11-17 21:53:38 +0100 <EvanR> which is itself a nifty way to express side effects (er, main effects)
2021-11-17 21:53:38 +0100 <ProfSimm> EvanR, I actually had this conundrum. I had no null value per se. So applying a function with no parameters is like applying a function without applying a function.
2021-11-17 21:54:39 +0100 <EvanR> in haskell a function with no args that is just supposed to have an effect is just something else entirely, a command. E.g. exitFailure :: IO a
2021-11-17 21:54:48 +0100 <EvanR> which is just a value
2021-11-17 21:55:00 +0100 <EvanR> no function arrow
2021-11-17 21:55:04 +0100 <ProfSimm> Ah, command is an excellent name for impure function
2021-11-17 21:55:12 +0100 <awpr> my understanding is that Haskell ended up with purity because it _had_ to, to make lazy evaluation make any sense
2021-11-17 21:55:26 +0100 <awpr> you might be heading in the same direction :)
2021-11-17 21:55:32 +0100 <EvanR> to have any hope of making sense at least xD
2021-11-17 21:55:35 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 21:55:41 +0100 <EvanR> jury may still be out
2021-11-17 21:56:13 +0100Guest17(~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
2021-11-17 21:56:19 +0100 <ProfSimm> I wanna keep it syntactically similar and ideally differentiate only by keyword or something
2021-11-17 21:56:27 +0100 <ProfSimm> But yeah
2021-11-17 21:56:30 +0100jespada(~jespada@252-155-231-201.fibertel.com.ar) (Quit: Textual IRC Client: www.textualapp.com)
2021-11-17 21:56:55 +0100 <EvanR> having many different things without different syntax is one of lisps warts imo xD
2021-11-17 21:57:09 +0100 <ProfSimm> Yes
2021-11-17 21:57:17 +0100 <ProfSimm> It's a hard balance
2021-11-17 21:57:42 +0100 <ProfSimm> Make it explicit, looks like alien language to non-experts. Make it non-explicit, experts are pulling their hair out
2021-11-17 21:58:55 +0100acidjnk(~acidjnk@p200300d0c7271e86155557ae7ddf7b60.dip0.t-ipconnect.de)
2021-11-17 21:59:04 +0100servytor(uid525486@hampstead.irccloud.com)
2021-11-17 22:00:02 +0100 <EvanR> after so much haskell I have to ask myself why functions turned out to be the thing associated with side effects and not say... memory writes or something else
2021-11-17 22:00:17 +0100 <EvanR> or the stack
2021-11-17 22:00:19 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 22:00:21 +0100lavaman(~lavaman@98.38.249.169)
2021-11-17 22:00:22 +0100 <EvanR> but here we are
2021-11-17 22:00:57 +0100 <ProfSimm> EvanR, Pascal had the word function() for function with args and procedure; with functions without.
2021-11-17 22:01:20 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
2021-11-17 22:01:21 +0100 <ProfSimm> EvanR, where the implicit notion was functions are safe and procedures have side effects. Then other languages thought "eh, we'll use one keyword"
2021-11-17 22:01:22 +0100 <ProfSimm> :P
2021-11-17 22:01:31 +0100 <EvanR> interesting
2021-11-17 22:01:57 +0100 <dsal> Eiffel was kind of neat like this. Things should either change state or view state, but not both.
2021-11-17 22:02:02 +0100 <ProfSimm> I mean this is a bit like languages calling STRINGS... SCALAR
2021-11-17 22:02:13 +0100 <ProfSimm> I mean a piece of text is not a scalar.
2021-11-17 22:02:25 +0100Gurkenglas_(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-17 22:02:27 +0100 <ProfSimm> But there you go :)
2021-11-17 22:02:47 +0100 <ProfSimm> Shows how the two audiences (mathematicians, and programmers) interact, but they don't understand all the words.
2021-11-17 22:03:00 +0100rusty(~rustyboy@82.77.237.221)
2021-11-17 22:03:21 +0100 <dsal> That's all of humanity, though.
2021-11-17 22:03:21 +0100 <EvanR> you can fit (c-string) "FOOBAR!" in a word64 xD
2021-11-17 22:03:35 +0100 <EvanR> very scalar
2021-11-17 22:03:52 +0100 <ProfSimm> ;-)
2021-11-17 22:05:50 +0100yauhsien(~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 22:05:50 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2021-11-17 22:06:08 +0100Successus(~Successus@gateway/tor-sasl/successus) ()
2021-11-17 22:06:45 +0100 <ProfSimm> Do you know one thing I find troublesome with functional languages. They kinda eliminate time, which is good, but all real-world systems depend heavily on things happening in time.
2021-11-17 22:08:02 +0100 <EvanR> in haskell you have to access real time through IO
2021-11-17 22:08:06 +0100 <ProfSimm> For example artificial neural networks tend to work like grids of numbers multiplied by other grids (matrixes, or tensors in general), and there's always a result flowing down the network. Actual neurons don't fire "zeroes" at other neurons. They spike with a specific pattern in time. Like morse code sort of
2021-11-17 22:08:28 +0100 <EvanR> though you could build the concept of time into your DSL, possibly abstracting it
2021-11-17 22:08:38 +0100 <EvanR> see FRP
2021-11-17 22:08:48 +0100 <dsal> Time in TLA+ doesn't have anything to do with the wall.
2021-11-17 22:09:25 +0100mvk(~mvk@2607:fea8:5cc3:e900::df92)
2021-11-17 22:09:42 +0100 <exarkun> Time in your ANNs also doesn't have to have anything to do with the wall, if you don't want it to.
2021-11-17 22:09:51 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
2021-11-17 22:10:09 +0100 <ProfSimm> Well, in ANN you can have time series and say "this data is sliced in these intervals"
2021-11-17 22:10:15 +0100 <ProfSimm> And you can pass zeroes where you have no signal
2021-11-17 22:10:29 +0100 <ProfSimm> But my point is there no "frames" in nature. There's no "null". And there's no "0"
2021-11-17 22:10:40 +0100 <ProfSimm> Instead there's a lack of a thing.
2021-11-17 22:10:48 +0100 <ProfSimm> And then it happens in specific time periods
2021-11-17 22:10:51 +0100dsrt^(~dsrt@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 250 seconds)
2021-11-17 22:11:10 +0100 <exarkun> To put it differently, you can have time in your purely functional software.
2021-11-17 22:11:23 +0100 <ProfSimm> How tho
2021-11-17 22:11:27 +0100 <She> Is this a roundabout way of talking about mutability?
2021-11-17 22:11:32 +0100 <ProfSimm> haha
2021-11-17 22:11:37 +0100 <ProfSimm> Well. Not quite
2021-11-17 22:11:54 +0100 <exarkun> If you're just modeling time as a real number then ... you have a real number, it is a parameter to your functions, you pass in a value for it.
2021-11-17 22:12:02 +0100 <ProfSimm> More about "relative order and time proximity of related events"
2021-11-17 22:12:33 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-11-17 22:12:40 +0100 <ProfSimm> Relative order could be seen as me talking about mutability actually
2021-11-17 22:12:45 +0100 <ProfSimm> But time proximity is trickier
2021-11-17 22:12:47 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 22:12:47 +0100 <exarkun> This is true whether you are writing functional code or not. It's more or less just good practice for writing good code.
2021-11-17 22:12:50 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-11-17 22:12:57 +0100 <exarkun> I'm not talking about mutability, fwiw.
2021-11-17 22:13:42 +0100 <exarkun> You have a function the computation of which depends on a value that you happen to call time? You pass that value in to the function as an argument.
2021-11-17 22:14:04 +0100 <ProfSimm> exarkun, ok let me put it this way.
2021-11-17 22:14:19 +0100 <ProfSimm> exarkun, say you are reading from 100 lazy sequences.
2021-11-17 22:14:25 +0100 <EvanR> time may or may not also be needed in your semantics for concurrency
2021-11-17 22:14:54 +0100 <ProfSimm> exarkun, input is calculated from those sequences very slowly, maybe you get a value or two a day
2021-11-17 22:15:19 +0100 <exarkun> Laziness is a complication, I suppose.
2021-11-17 22:15:23 +0100 <ProfSimm> exarkun, but sometimes 40+ values come within the span of 5 seconds. And then YOU want to emit a value from your own sequence to someone else
2021-11-17 22:15:41 +0100 <ProfSimm> So question is how we model this effectively
2021-11-17 22:15:45 +0100 <EvanR> another fun case to look at is that library to produce crypto computations that are resistant to timing attacks, by making each operation take the same amount of time... what was it called...
2021-11-17 22:15:54 +0100 <exarkun> I can believe that /laziness/ makes dealing with time more difficult.
2021-11-17 22:16:13 +0100 <ProfSimm> exarkun, frankly this is a hard problem even in imperative languages
2021-11-17 22:16:40 +0100 <ProfSimm> exarkun our computers are inherently synchronous, they do things all the time, whether input is coming or not. Well there's an idle loop, but that's a cludge
2021-11-17 22:16:40 +0100 <exarkun> Eh. There aren't "hard" problems in the way you mean that, I think. There are problems you know how to solve and problems you don't know how to solve.
2021-11-17 22:16:51 +0100 <EvanR> you can encode the time cost into your type system, and then making it work with eager or lazy eval
2021-11-17 22:16:55 +0100 <exarkun> Sure, if some person doesn't know how to solve it, it may be hard for that person.
2021-11-17 22:17:21 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 22:17:26 +0100 <EvanR> then have the implementation ensure the time cost is accurate, in case that matters
2021-11-17 22:17:38 +0100 <EvanR> usually we don't want that and just want it to go as fast as possible
2021-11-17 22:17:46 +0100 <ProfSimm> I suppose I'd need some accumulator in my code, that, when i get a value, i read the clock, and I attenuate the accumulator based on "passed time" like a capacitor that's leaking
2021-11-17 22:17:57 +0100 <ProfSimm> Then I add the value I got and check if i'm over the threshold
2021-11-17 22:18:18 +0100 <ProfSimm> But it's clunky.
2021-11-17 22:18:28 +0100 <exarkun> ProfSimm: I think laziness is the complicating factor because in the scenario you describe, you're using Haskell's implementation of laziness to control when things happen and Haskell's implementation of laziness does not give you time information along with that feature.
2021-11-17 22:18:28 +0100 <EvanR> are we getting into real time OS too?
2021-11-17 22:18:53 +0100 <exarkun> ProfSimm: If Haskell's implementation of laziness accounted for wanting to know /when/ lazy things resolved, then the solution would be obvious.
2021-11-17 22:19:15 +0100 <exarkun> ProfSimm: Similarly, if you didn't use Haskell's implementation of laziness as part of your system, you could use a different tool that accounts for time better.
2021-11-17 22:19:16 +0100 <ProfSimm> exarkun, yes
2021-11-17 22:19:21 +0100 <exarkun> And then the solution would also be obvious.
2021-11-17 22:19:39 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 265 seconds)
2021-11-17 22:19:43 +0100 <ProfSimm> exarkun, maybe we can model the lazy sequence as a stream of values of the wall clock :)
2021-11-17 22:19:48 +0100 <EvanR> estimating time costs has been easier so far with eager evaluation
2021-11-17 22:20:07 +0100 <EvanR> but that's not the same as functional removing time
2021-11-17 22:20:27 +0100 <awpr> this is pretty much exactly the domain of FRP: figuring out how to deal with continuously-varying quantities and discrete occurrences in terms of pure functional abstractions
2021-11-17 22:20:42 +0100 <EvanR> yes! xD
2021-11-17 22:20:56 +0100 <awpr> there's a ton of interesting research into it, lots of different approaches, etc.
2021-11-17 22:20:59 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 22:21:29 +0100 <EvanR> FRP was all about including time in your semantics
2021-11-17 22:21:54 +0100 <awpr> in fact I think some actual FRP implementations early on genuinely used lazy lists of (time, value) pairs
2021-11-17 22:24:12 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 22:24:58 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Excess Flood)
2021-11-17 22:27:01 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
2021-11-17 22:27:04 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-11-17 22:28:33 +0100zincy_(~zincy@host86-181-60-139.range86-181.btcentralplus.com)
2021-11-17 22:28:35 +0100EvanR(~evan@user/evanr) (Ping timeout: 264 seconds)
2021-11-17 22:29:04 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 22:31:42 +0100ubert(~Thunderbi@p200300ecdf0ba28041546fb5cdf9abd5.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-11-17 22:36:11 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 22:36:35 +0100jmorris(uid433911@hampstead.irccloud.com)
2021-11-17 22:37:42 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-17 22:37:46 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
2021-11-17 22:38:25 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-11-17 22:38:42 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-17 22:39:57 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-11-17 22:40:45 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 22:41:07 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-11-17 22:42:06 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 22:42:15 +0100robertm(robertm@lattice.rojoma.com) (Quit: WeeChat 3.0)
2021-11-17 22:42:24 +0100robertm(robertm@lattice.rojoma.com)
2021-11-17 22:44:41 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection)
2021-11-17 22:46:38 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 22:47:44 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 22:47:57 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-11-17 22:52:27 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 22:53:38 +0100trillp(~trillp@69.233.98.238)
2021-11-17 22:54:00 +0100EvanR(~evan@2600:1700:ba69:10:c80:91ea:a064:8fa5)
2021-11-17 22:54:37 +0100trillp(~trillp@69.233.98.238) ()
2021-11-17 22:56:46 +0100EvanR(~evan@2600:1700:ba69:10:c80:91ea:a064:8fa5) (Changing host)
2021-11-17 22:56:46 +0100EvanR(~evan@user/evanr)
2021-11-17 22:57:27 +0100quarkyalice(~quarkyali@user/quarkyalice) (Remote host closed the connection)
2021-11-17 22:58:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-17 22:59:09 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 23:00:44 +0100dsrt^(~dsrt@h178.173.139.63.static.ip.windstream.net)
2021-11-17 23:01:10 +0100emf_(~emf@163.114.132.1)
2021-11-17 23:03:43 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-11-17 23:04:07 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 23:04:35 +0100emf(~emf@2620:10d:c090:400::5:69fc) (Ping timeout: 268 seconds)
2021-11-17 23:05:01 +0100dsrt^(~dsrt@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 250 seconds)
2021-11-17 23:10:11 +0100 <sm> oh is that "all" FRP is ?
2021-11-17 23:10:12 +0100 <sm> TeaTime in https://en.wikipedia.org/wiki/Croquet_Project did that, I wonder if that was considered FRP
2021-11-17 23:10:36 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 23:12:00 +0100 <EvanR> lol
2021-11-17 23:12:29 +0100 <monochrom> Lazy [(time, value)] may or may not be an efficient representation. This also depends on languages. So, lazy [(time, value)] is not all of FRP, there is extra research and engineering for how to be efficient.
2021-11-17 23:12:47 +0100Midjak(~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
2021-11-17 23:13:22 +0100 <EvanR> having explicity access to the time value can make some weird situations possibl
2021-11-17 23:13:33 +0100 <monochrom> However, assuming that someone has made an efficient implementation, then the user-side mental model is "time -> value". For a user, that is "all" of FRP.
2021-11-17 23:14:37 +0100zincy_(~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection)
2021-11-17 23:15:25 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 23:15:48 +0100 <EvanR> there's a lot packed into that "->" there xD
2021-11-17 23:15:51 +0100mvk(~mvk@2607:fea8:5cc3:e900::df92) (Ping timeout: 250 seconds)
2021-11-17 23:16:43 +0100pfurla(~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53) (Quit: gone to sleep. ZZZzzz…)
2021-11-17 23:20:04 +0100dsrt^(~dsrt@h178.173.139.63.static.ip.windstream.net)
2021-11-17 23:22:34 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 23:23:03 +0100juhp(~juhp@128.106.188.82) (Quit: juhp)
2021-11-17 23:23:16 +0100juhp(~juhp@128.106.188.82)
2021-11-17 23:24:36 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 256 seconds)
2021-11-17 23:25:06 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
2021-11-17 23:27:07 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 23:27:20 +0100michalz(~michalz@185.246.204.121) (Remote host closed the connection)
2021-11-17 23:28:22 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 23:29:17 +0100dsrt^(~dsrt@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 250 seconds)
2021-11-17 23:29:49 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
2021-11-17 23:30:43 +0100dsrt^(~dsrt@h178.173.139.63.static.ip.windstream.net)
2021-11-17 23:32:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-11-17 23:33:07 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-11-17 23:34:10 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 23:36:11 +0100dang72(~dang@75-164-198-225.ptld.qwest.net)
2021-11-17 23:37:52 +0100texasmynsted(~texasmyns@99.96.221.112)
2021-11-17 23:39:20 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-17 23:42:23 +0100 <monochrom> OK, regarding yesterday's GHC 9.2 impredicativity and user-defined "app :: (a -> b) -> a -> b" and runST: I just tested it, need to turn on ImpredicativeTypes but "meh = runST `app` pure ()" is accepted.
2021-11-17 23:43:03 +0100 <texasmynsted> What would you recommend for simple text macro-style manipulation? attoparsec, something different? I would like make a collection of editor-style text transformation macros in Haskell
2021-11-17 23:43:32 +0100 <monochrom> ($) is still special, yes, so that you can still have "runST $ ..." without turning on ImpredicativeTypes. This is good for existing code bases, I bet.
2021-11-17 23:45:32 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 23:45:34 +0100dsrt^(~dsrt@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 256 seconds)
2021-11-17 23:45:57 +0100dsrt^(~dsrt@h178.173.139.63.static.ip.windstream.net)
2021-11-17 23:47:17 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2021-11-17 23:48:06 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Ping timeout: 265 seconds)
2021-11-17 23:48:20 +0100zaquest(~notzaques@5.130.79.72)
2021-11-17 23:48:39 +0100 <monochrom> Ah here is the improved special treatment for ($): "even without ImpredicativeTypes GHC switches on Quick Look for applications of ($)". So, not very hacky now. :)
2021-11-17 23:49:46 +0100 <geekosaur> right, that's pretty much what I said yesterday
2021-11-17 23:50:31 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2021-11-17 23:52:27 +0100vysn(~vysn@user/vysn)
2021-11-17 23:53:17 +0100wolfshappen(~waff@irc.furworks.de) (Quit: later)
2021-11-17 23:55:21 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 265 seconds)
2021-11-17 23:55:27 +0100 <janus> monochrom: great thanks for testing
2021-11-17 23:55:34 +0100obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-17 23:55:43 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
2021-11-17 23:57:02 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-17 23:57:05 +0100obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl)