2021/10/22

2021-10-22 00:00:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 00:00:46 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:01:52 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:02:46 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:03:53 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:04:46 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:05:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-22 00:05:52 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:06:08 +0200 <dsal> Is it possible to have a function that uses a type without declaring the type it uses? I want to make a thing that, for example, verifies round tripping of an enum without having to specify the values since it's a bounded enum already.
2021-10-22 00:06:20 +0200 <dsal> I guess I can use a Proxy.
2021-10-22 00:06:46 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:07:11 +0200 <monochrom> Yeah I would use a proxy type.
2021-10-22 00:07:33 +0200 <monochrom> Type application can also be acceptable in simple cases.
2021-10-22 00:07:53 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:08:47 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:09:53 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:10:47 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:11:27 +0200Guest28(~Guest28@93-172-116-38.bb.netvision.net.il) (Ping timeout: 256 seconds)
2021-10-22 00:11:53 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:12:46 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-10-22 00:12:47 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:13:54 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:14:27 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-22 00:14:37 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-10-22 00:14:42 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 00:14:47 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:14:49 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-22 00:15:54 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:16:48 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:17:54 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:18:48 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:19:54 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:20:21 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-10-22 00:20:48 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:21:18 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184) (Remote host closed the connection)
2021-10-22 00:21:23 +0200mestre(~mestre@191.177.175.57)
2021-10-22 00:21:55 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:22:49 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:23:34 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-22 00:23:51 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d)
2021-10-22 00:23:55 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:24:00 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2021-10-22 00:24:49 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:25:55 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:26:17 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184)
2021-10-22 00:26:49 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:27:55 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:28:30 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-10-22 00:28:49 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:28:50 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-10-22 00:29:28 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2021-10-22 00:29:57 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:30:50 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:31:08 +0200Inst(~Inst@2601:6c4:4080:3f80:e12b:5f61:be92:9101)
2021-10-22 00:31:32 +0200 <Inst> oh
2021-10-22 00:31:33 +0200 <Inst> hey guys
2021-10-22 00:31:40 +0200 <Inst> Just want to troll a bit more:
2021-10-22 00:31:50 +0200 <Inst> It turns out I have a friend who's been described as a champion influencer.
2021-10-22 00:31:56 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:32:14 +0200 <Inst> She's a scanlator as a hobby, meaning she scans manga (japanese comics) / manghwa (korean comics)
2021-10-22 00:32:22 +0200 <Inst> translates it, then publishes the illegal pirates
2021-10-22 00:32:30 +0200 <Inst> it turns out that in some game, #1
2021-10-22 00:32:36 +0200 <Inst> she managed to recruit 1000 or more players almost singlehandedly
2021-10-22 00:32:50 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:32:58 +0200 <Inst> #2, in return for scanlated manga, she was able to use the recruited players to generate the real money equivalent of 16,000 USD
2021-10-22 00:33:25 +0200 <Inst> putting this into a haskell context
2021-10-22 00:33:56 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:33:57 +0200 <Inst> I'm thinking, even though HF thinks it's currently a bad idea
2021-10-22 00:34:09 +0200 <Inst> to target non-programmers and other low-level developers
2021-10-22 00:34:13 +0200NinjaTrappeur(~ninja@user/ninjatrappeur) (Ping timeout: 252 seconds)
2021-10-22 00:34:50 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:35:32 +0200 <monochrom> I think HF is OK with targetting non-programmers, if I understand Andrew Boardman's Haskell.Love talk correctly.
2021-10-22 00:35:56 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:36:26 +0200NinjaTrappeur(~ninja@user/ninjatrappeur)
2021-10-22 00:36:37 +0200 <jackdk> I have had good experience teaching Haskell to first-year university students with no prior programming experience
2021-10-22 00:36:50 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:37:57 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:38:50 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:39:43 +0200 <monochrom> Low-level developers is a very different story to be sure. Multiple factors such as low ROI.
2021-10-22 00:39:57 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:40:11 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-10-22 00:40:50 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:41:27 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-10-22 00:41:48 +0200 <jackdk> dsal: these days you could also use explicit type applications if that feels better
2021-10-22 00:41:57 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:42:51 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:43:54 +0200_bo(~bo@217.18.216.247) (Read error: Connection reset by peer)
2021-10-22 00:43:57 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:44:41 +0200cjb(~cjbayliss@user/cjb)
2021-10-22 00:44:51 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:44:54 +0200cjb(~cjbayliss@user/cjb) (Client Quit)
2021-10-22 00:45:58 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:46:06 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2021-10-22 00:46:51 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:47:58 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:48:35 +0200 <Inst> @monochrom: the problem is the instruction, if experienced developers are bad at grokking haskell, what are the odds that non-haskell programmers would get it?
2021-10-22 00:48:35 +0200 <lambdabot> Unknown command, try @list
2021-10-22 00:48:52 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:48:54 +0200 <monochrom> Indeed.
2021-10-22 00:49:01 +0200 <Inst> IMO, there's two issues, #1, the ecosystem (haskell jobs) is not properly developed, but doing a supply side drop (there's tons of coders and they all know haskell)
2021-10-22 00:49:10 +0200 <Inst> might work, although it'd be risky
2021-10-22 00:49:21 +0200 <Inst> #2, the education quality has to be assured beforehand
2021-10-22 00:49:35 +0200 <Inst> if you convert someone to try haskell, and it doesn't stick, you're going to have a much harder time trying to convert them again
2021-10-22 00:49:38 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-10-22 00:49:38 +0200 <Inst> but i'm trying to point out
2021-10-22 00:49:49 +0200 <monochrom> If 90-yos are bad at learning a musical instrument, what chance do 9-yos have? Or do they?
2021-10-22 00:49:58 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:50:02 +0200 <Inst> you can do a supply side drop, although it might not be "avoid success at all costs"
2021-10-22 00:50:45 +0200 <Inst> if you use a guerrilla marketing technique which is Standard Operating Procedure in China
2021-10-22 00:50:50 +0200 <Inst> i.e, use influencers to advertise your language
2021-10-22 00:50:52 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:51:02 +0200 <Inst> it's not "avoid success at all costs" because it'll damage Haskell's reputation
2021-10-22 00:51:18 +0200 <Inst> "that time Haskell became popular because someone dumped an advertising budget into Youtube influencers"
2021-10-22 00:51:26 +0200 <monochrom> BTW what's the connection with the champion influecer and scanlating and making 100k?
2021-10-22 00:51:39 +0200 <Inst> I mean she's a good influencer
2021-10-22 00:51:56 +0200 <Inst> she scanlated Manhwa (Korean comics) to generate the equivalent of 16,000 USD in a MMO
2021-10-22 00:51:57 +0200 <monochrom> Hell, what's the connection between those 3 in the first place hahah
2021-10-22 00:51:58 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:52:06 +0200 <yushyin> /fa Inst
2021-10-22 00:52:07 +0200 <Inst> by using the Manhwa as a lure
2021-10-22 00:52:10 +0200NinjaTrappeur(~ninja@user/ninjatrappeur) (Ping timeout: 260 seconds)
2021-10-22 00:52:14 +0200 <yushyin> oh, sorry
2021-10-22 00:52:36 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-10-22 00:52:47 +0200 <yushyin> damn space key
2021-10-22 00:52:52 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:53:01 +0200 <aegon> i've been working on a project for ~7 months in haskell now and most of my collegues are low level code enthusiasts from the gaming land (very c++ / lua happy). My experience sharing code and war stories with them about haskell is that they actually really dig it, just don't see a route to using it professionally. I think its more a chicken and egg scenario. IMO a high quality open implementation of
2021-10-22 00:53:07 +0200 <aegon> something that people say "haskell is not good" for would do wonders
2021-10-22 00:53:57 +0200 <Inst> i mean, well, are you saying the supply side is already there?
2021-10-22 00:53:59 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:54:03 +0200meinside(uid24933@helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-22 00:54:04 +0200 <monochrom> Well, IOHK is causing people to think "Haskell is a blockchain language" now.
2021-10-22 00:54:50 +0200 <Inst> by the way
2021-10-22 00:54:52 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:54:55 +0200 <aegon> i think the want to work in it is there, the route to that is unclear. I've gotten the most serious conversations about it from linking articles about low level optimization and what it looks like in haskell
2021-10-22 00:54:57 +0200 <Inst> this is 100% doable in Haskell, right?
2021-10-22 00:54:59 +0200 <Inst> The influencer girl
2021-10-22 00:55:11 +0200 <Inst> One way to sell Haskell to her would be to say, automate her scanlation process
2021-10-22 00:55:23 +0200 <Inst> build a Haskell-based framework that can process JPgs / PNGs
2021-10-22 00:55:32 +0200 <aegon> i think something low level folks really want to know is more what does optimizing look like and how painfull is it, they want simpler and more concise / composable things, they just don't want it at the cost of resources
2021-10-22 00:55:47 +0200 <Inst> run text recognition on existing text
2021-10-22 00:55:52 +0200 <Inst> aegon: but it's always at the cost of resources, no?
2021-10-22 00:55:59 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:56:11 +0200 <monochrom> Oh OK, I see.
2021-10-22 00:56:14 +0200 <Inst> run text recognition on an existing text, rip it off the jpg/png, and input new text
2021-10-22 00:56:29 +0200 <Inst> so she'd have a haskell-based tool for her scanlation hobby
2021-10-22 00:56:34 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-22 00:56:37 +0200 <Inst> and consequently she'd need haskellers to maintain it
2021-10-22 00:56:38 +0200 <aegon> Inst: debatable, it depends on if hte language gives you all the tools ot not cost resources when you don't want to. Like ify ou want to you can hack away at haskells intermediary language and pin memory etc. there are quite a few tools for optimizing haskell out there
2021-10-22 00:56:43 +0200 <monochrom> Does "low-level developer" means they write asm code? Or does it mean they are low in the corporate ladder?
2021-10-22 00:56:51 +0200 <monochrom> Because I thought the latter.
2021-10-22 00:56:52 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:57:00 +0200 <Inst> (very c++ / lua happy)
2021-10-22 00:57:20 +0200 <aegon> monochrom: i mean they work on game engines and such all day, trying to sqeeze perf out of consoles with bare bones hardware
2021-10-22 00:57:44 +0200wroathe(~wroathe@173-160-115-161-Minnesota.hfc.comcastbusiness.net)
2021-10-22 00:57:44 +0200wroathe(~wroathe@173-160-115-161-Minnesota.hfc.comcastbusiness.net) (Changing host)
2021-10-22 00:57:44 +0200wroathe(~wroathe@user/wroathe)
2021-10-22 00:57:47 +0200 <monochrom> I guess in the game dev industry the two are equivalent >:)
2021-10-22 00:57:52 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds)
2021-10-22 00:57:59 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 00:58:21 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-22 00:58:29 +0200 <aegon> lol
2021-10-22 00:58:53 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 00:58:53 +0200 <Inst> i also sort of wish Android / iOS supported Haskell as compiled code ;_;
2021-10-22 00:59:03 +0200 <Inst> or at least as intermediary code for their VMs
2021-10-22 00:59:09 +0200 <Axman6> Inst: to be perfectly honest, that sounds like an incredibly boring project
2021-10-22 00:59:09 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-22 00:59:32 +0200 <Inst> Axman6: you mean the autmoating scanlation thing?
2021-10-22 00:59:37 +0200 <Inst> It's boring if you're not the end-user.
2021-10-22 00:59:39 +0200 <aegon> haskell on mobile is scary to me because i don't know how to reason about the rts's garbage collector and power usage
2021-10-22 00:59:53 +0200 <monochrom> I am pessimistic about pitching to game engine tweakers.
2021-10-22 00:59:57 +0200 <aegon> if that were an option i would be concerned about power usage
2021-10-22 00:59:59 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:00:03 +0200 <Axman6> it sounds like a couple of days od work in bash, no need for haskell
2021-10-22 01:00:09 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-10-22 01:00:11 +0200 <monochrom> I now how to explain Haskell code optimization, both by hand and what GHC does.
2021-10-22 01:00:28 +0200 <monochrom> I'm also pretty sure that after I'm done, the conclusion is "carry on".
2021-10-22 01:00:38 +0200 <monochrom> s/now/know/
2021-10-22 01:00:53 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:00:57 +0200 <aegon> monochrom: heh, what makes you say that. What aspect of the perf stuff.
2021-10-22 01:01:20 +0200 <Inst> I mean there's a reason I'm going initially for a C++ / Haskell combo
2021-10-22 01:01:59 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:02:14 +0200 <monochrom> Haskell code optimization involves very advanced techniques.
2021-10-22 01:02:32 +0200 <Axman6> I don;t actually think writing well performing Haskell code is that difficult, optimisation is very _different_ to other languages, but people put in a shitload of effort to learn to optimise code in other languages. I don't understand why people think that you shouldn't also spend some time learning how optimisations in haskell work
2021-10-22 01:02:37 +0200 <monochrom> and knowledge
2021-10-22 01:02:40 +0200pmk(~user@2a02:587:9414:7d03:fb87:7810:40ab:edc0) (Ping timeout: 260 seconds)
2021-10-22 01:02:48 +0200 <Inst> iirc is it valid to dumb it down to "Haskell, as a functional language, is going to have intrinsic performance losses compared to an imperative language"?
2021-10-22 01:02:53 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:03:07 +0200 <awpr> no. bash is an imperative language
2021-10-22 01:03:15 +0200 <monochrom> And don't seem to worth learning if one isn't forced to use Haskell.
2021-10-22 01:03:16 +0200 <aegon> i woudl like to read up on more. Yeah these are people who spend hours reading up on lvalue / rvalue semantics in new langauge standards to save a couple cycles
2021-10-22 01:03:21 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 01:03:31 +0200 <aegon> i'd think they'd be up to the task
2021-10-22 01:03:35 +0200 <Axman6> the C++ / Haskell combo is working well for Facebook...
2021-10-22 01:03:40 +0200 <Inst> but assembly is imperative
2021-10-22 01:03:57 +0200 <Inst> you're being sardonic, right?
2021-10-22 01:04:00 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:04:03 +0200 <Inst> given their recent massive service outage
2021-10-22 01:04:16 +0200 <Axman6> Inst: no, that's not a fair description of Haskell's performance
2021-10-22 01:04:33 +0200 <Axman6> No, it was a comment about their Sigma system
2021-10-22 01:04:53 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:04:56 +0200 <monochrom> In this case, the sunk cost policy applies.
2021-10-22 01:04:58 +0200 <Inst> ah
2021-10-22 01:05:30 +0200 <Axman6> aegon: yeah exactly, and IMO optimisations in imperative languages are just kind of boring
2021-10-22 01:05:31 +0200NinjaTrappeur(~ninja@user/ninjatrappeur)
2021-10-22 01:05:45 +0200 <monochrom> Hypothetically if you are starting to write a game engine from scratch now, Haskell and C++ are equally painful, just in different ways.
2021-10-22 01:06:00 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:06:01 +0200 <Inst> who writes game engines from scratch now?
2021-10-22 01:06:10 +0200 <monochrom> But who actually starts to write a game engine from scratch now?
2021-10-22 01:06:13 +0200 <Axman6> like, I love me some low level code, I keep a copy of Hacker's Delight on hand for a reason, because I like writing that sort of code, but real optimisation comes from a higher level
2021-10-22 01:06:20 +0200 <Inst> iirc they just license an engine and call it a day
2021-10-22 01:06:29 +0200kong4ndrew(~kong4ndre@199.247.111.247)
2021-10-22 01:06:31 +0200 <monochrom> All the existing game engine tweakers have already finished learning C++ optimizations.
2021-10-22 01:06:53 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:07:07 +0200 <Inst> have you seen, like, Astral Chain?
2021-10-22 01:07:08 +0200 <geekosaur> doesn't Cale's company have a Haskell game engine? then again who's going to license it much less learn how to tweak it
2021-10-22 01:07:19 +0200 <monochrom> "carry on" carries no extra cost, that cost is already sunk. "switch to Haskell" carries huge extra costs, this is important even though it's <= C++ sunk cost.
2021-10-22 01:07:55 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-10-22 01:07:57 +0200 <Inst> it's amazing since Astral Chain was originally intended to be multiplatform, but it ended up being a Nintendo Switch exclusive
2021-10-22 01:08:00 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:08:10 +0200 <Inst> and the Switch is running on mobile hardware
2021-10-22 01:08:19 +0200 <Inst> but it looks incredible
2021-10-22 01:08:54 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:08:57 +0200 <Inst> just saying ,the optimizers have gotten really good
2021-10-22 01:09:43 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Quit: The Lounge - https://thelounge.chat)
2021-10-22 01:10:00 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:10:16 +0200 <aegon> yeah, a lot of that is that the graphics apis have gotten really flexible, and ify ou know the exact hardware your running on you can do silly things like optimize thread timing and pin threads / spread them out optimally across the given cores
2021-10-22 01:10:44 +0200 <Axman6> Inst: I have to ask, do you have a point to any of this? I feel like you're saying a lot of stuff while not saying very much at all, and "Just want to troll a bit more" is feeling more and more true by the minute.
2021-10-22 01:10:54 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:10:56 +0200 <aegon> a lot of work in pushing consoles is staring at cor usages and tweaking
2021-10-22 01:12:01 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:12:54 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:13:11 +0200 <aegon> monochrom: aye, ultimately all of them were more open to it as a langauge that could be used but happy with c++. I want to some day play around with a game engine in hask but the recent findings about run time library loading on windows are a downer. If you have refernce on haskell optimization i'd love to grab em and read through it. I'm workign off of what i've been able to find on the wiki and some blog
2021-10-22 01:13:17 +0200 <aegon> posts
2021-10-22 01:13:36 +0200kong4ndrew(~kong4ndre@199.247.111.247) (Remote host closed the connection)
2021-10-22 01:13:56 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
2021-10-22 01:14:01 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:14:04 +0200 <aegon> also apparently up untill GHC 9 the concurrency loop was using an incorrect api from the kernel and messing with the scheduler / greedy looping?
2021-10-22 01:14:19 +0200 <Inst> i mean the point re astral chain is that it's a heavily optimized game that uses certain tweaks to be able to run on mobile hardware, but taking a 10-20% penalty in haskell might make it inoperable
2021-10-22 01:14:21 +0200 <aegon> i forget the talk but i think it was sometime recent
2021-10-22 01:14:55 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:15:03 +0200 <aegon> Inst: i'm not sure haskell woudl incur a 10 - 20% penalty given what i've read and how much of that is actually just shipping things off to the gpu / apu
2021-10-22 01:15:14 +0200 <Inst> it already has framerate drops on existing hardware, although it's also an example insofar as switch devs typically make stylistic choices in order to avoid taxing the tegra x1
2021-10-22 01:15:32 +0200 <Axman6> I've never considered making games in Haskell, it doesn't seem like a niche it would be well suited to, making other real world apps makes much more sense.
2021-10-22 01:16:01 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:16:18 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-22 01:16:38 +0200 <sm> lots of people have though, #haskell-game:matrix.org / #haskell-game:libera.chat is where they hang out
2021-10-22 01:16:50 +0200 <Axman6> the gaming world has found their local minima with C++ (and really, pushing everything to the GPU). I can't see what advantages there would be persuing that given the amount of money invested in the games world already
2021-10-22 01:16:55 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:17:05 +0200 <aegon> Inst: a lot of times frame hiccups are caused by memory allocation /deallocation or reading from disk more so than cpu throughput, i'm not sure haskell would be better or worse w.r.t.
2021-10-22 01:17:39 +0200 <Axman6> yeah absolutely, not saying it can't be done, but the fact that Haskell isn't (currently) well suited to that domain doesn't make it not a good choice of language for gettingh real work done. It'd been paying my bills doing that for like 7 years, so something's working out
2021-10-22 01:18:02 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:18:37 +0200 <Inst> also given that virtually everyone's already running off an engine, and everything else is just a mod to an engine, would haskell actually be useful since development and testing times wouldn't necessarily be that big a part of total development?
2021-10-22 01:18:49 +0200 <Inst> they spend a lot of time and resources on graphical assets, music, plots, etc
2021-10-22 01:18:55 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:19:09 +0200 <aegon> i'm just a haskell enthusiast from the gaming world, I want to try pushing it into that niche for fun. c++20 concepts might change my mind but i'm tired of pushing things in that world from a c++ perspective, its like infinate boiler plate thats inflexible no matter what you do
2021-10-22 01:19:09 +0200 <Inst> total development -> add resource expenditures
2021-10-22 01:19:10 +0200 <Cale> geekosaur: It's not really in a state where it would be licenseable at the moment... and it's full of arrow-y FRP, which we'd probably want to rewrite to use Reflex if we were resuscitating it today.
2021-10-22 01:20:02 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:20:15 +0200 <Axman6> Can someone do something about Guest372?
2021-10-22 01:20:36 +0200 <Axman6> just realised every second line of my log is them joining or parting
2021-10-22 01:20:40 +0200 <Inst> aegon: maybe if someone needs a completely different engine, there might be a chance to get haskell in there
2021-10-22 01:20:53 +0200 <aegon> Axman6: lol, connection woes?
2021-10-22 01:20:55 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:21:09 +0200 <sm> I think Zig is more likely the next big thing for games, https://news.ycombinator.com/item?id=28897469
2021-10-22 01:21:17 +0200hendursaga(~weechat@user/hendursaga)
2021-10-22 01:21:21 +0200 <Inst> alternate possibility: they're on mobile internet
2021-10-22 01:21:40 +0200 <Inst> and they're driving in and out of a tunnel, say, in Italy or something
2021-10-22 01:21:59 +0200 <Inst> oh, cool
2021-10-22 01:22:02 +0200 <Inst> i just checked the IP out
2021-10-22 01:22:03 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:22:47 +0200peterhil(~peterhil@dsl-hkibng32-54fb56-2.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-22 01:22:56 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:23:08 +0200peterhil(~peterhil@dsl-hkibng32-54fb56-2.dhcp.inet.fi)
2021-10-22 01:23:12 +0200 <sm> so here's a piece of haskell-related trivia: if you're using Show/Read to serialise/deserialise, you can use pretty-show to make a more human readable format, and still read by just stripping the newlines
2021-10-22 01:23:42 +0200 <Inst> is it considered rude to point out guest372's ip?
2021-10-22 01:24:02 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:24:04 +0200 <sm> usually a bit invasive and off topic Inst, yes
2021-10-22 01:24:19 +0200 <Axman6> and we can all see it if we want to
2021-10-22 01:24:20 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-10-22 01:24:24 +0200 <aegon> also its not hidden in irc, i get a message with it everytime they leave or go
2021-10-22 01:24:27 +0200 <Inst> no, but where the IP resolves to
2021-10-22 01:24:29 +0200 <davean> Inst: probably considered generally passive agressive to do it indirectly.
2021-10-22 01:24:39 +0200 <Inst> fine, it's an alibaba ip
2021-10-22 01:24:56 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:25:08 +0200 <Inst> then again, alibaba has cloud services so it might have nothing to do with the actual firm
2021-10-22 01:25:31 +0200 <aegon> yeah I'd feel uncomfortable if someone started discussing my geolocation even though its out there by default
2021-10-22 01:25:45 +0200 <davean> Especially being so weird about it
2021-10-22 01:25:50 +0200 <davean> instead of just saying what they want to get at
2021-10-22 01:26:02 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:26:04 +0200 <davean> like clearly Inst is uncomfortable with what they're thinking, which is super suspicious
2021-10-22 01:26:07 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184) (Remote host closed the connection)
2021-10-22 01:26:10 +0200 <sm> so can we talk about Haskell again
2021-10-22 01:26:15 +0200 <davean> Please
2021-10-22 01:26:20 +0200 <Axman6> yeah
2021-10-22 01:26:55 +0200 <Inst> davean: it's cloud, but I just thought it would have been cool if Alibaba programmers were expressing an interest in Haskell
2021-10-22 01:26:56 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:27:02 +0200 <sm> Can Haskell Be Marketed To Beginners As A Better Python
2021-10-22 01:27:03 +0200 <Axman6> hey anyone want to review a PR on my package amazonka-s3-streaming? it's been mostly rewritten because it was honestly absolutely awful initally https://github.com/axman6/amazonka-s3-streaming/pull/25
2021-10-22 01:27:44 +0200 <sm> also, when GHC 9.2!
2021-10-22 01:27:53 +0200 <davean> sm: Oh man
2021-10-22 01:27:55 +0200 <davean> sm: uh about that
2021-10-22 01:28:03 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:28:04 +0200 <Axman6> sm: yes! https://www.youtube.com/watch?v=BvECNQRrjCY
2021-10-22 01:28:06 +0200 <davean> WTF knows
2021-10-22 01:28:21 +0200 <Axman6> GHC 9.2????
2021-10-22 01:28:25 +0200 <aegon> sm: pythoners don't know what types are
2021-10-22 01:28:34 +0200aegonlet my bias out
2021-10-22 01:28:47 +0200 <aegon> i worked in it for 6 years in the web world and its maddening
2021-10-22 01:28:47 +0200 <davean> Axman6: Yah, its a bit cursed with fixes ATM
2021-10-22 01:28:57 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:29:08 +0200 <aegon> loose dicts everywhere
2021-10-22 01:29:27 +0200 <Axman6> I've been translating a python project into HAskell, they've gone all in on using the python typing stuff, makes the job a hell of a lot easier
2021-10-22 01:29:42 +0200 <sm> nice
2021-10-22 01:29:59 +0200 <Axman6> (it's code from Microsoft that's pretty academic so I'm not too surprised)
2021-10-22 01:30:03 +0200 <aegon> thats rare imo, i have yet to see a python project at a company attempt types
2021-10-22 01:30:03 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:30:11 +0200 <Axman6> loose dicts sink ships
2021-10-22 01:30:23 +0200 <Inst> lol ax, sorry, i'll stop annoying you guys
2021-10-22 01:30:34 +0200 <Inst> nice video
2021-10-22 01:30:48 +0200 <Axman6> I think this has been using types from the outset, and it feels fairly haskellish a lot of the time. deciding when something should be a typeclass is a bit of a pain
2021-10-22 01:30:57 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:30:59 +0200 <davean> aegon: Do the python programmers you know not write type systems?
2021-10-22 01:31:21 +0200 <monochrom> "Inside every Haskell discussion is a Python discussion that tries to get out" >:)
2021-10-22 01:31:24 +0200 <davean> aegon: you know types are required for some of the accelerated python stuff?
2021-10-22 01:31:36 +0200 <davean> aegon: several companies I know use the python-to-machine-code compilation stuff
2021-10-22 01:31:49 +0200 <aegon> davean: heallll no. its funcs that take dicts all the way down.
2021-10-22 01:32:03 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:32:13 +0200 <davean> I mean thats the language semantics sure - but that deosn't mean the dicts aren't nominal structures
2021-10-22 01:32:22 +0200 <aegon> but i jumped from web land to game / graphics land ~4-ish years ago and have only ever gone back to python to play with machine learning so I'm probably out of date there
2021-10-22 01:32:37 +0200 <davean> aegon: yah I'm talking web python here
2021-10-22 01:32:40 +0200 <aegon> and most the companies i interact with are now using node / typescript for web stuff
2021-10-22 01:32:48 +0200 <Axman6> I feel like every haskeller who comes up against criticism from pythonisters should have that video on speed dial
2021-10-22 01:32:57 +0200 <davean> aegon: honestly its the web where I've seen python need the performance to get compiled with types
2021-10-22 01:32:57 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:33:32 +0200 <davean> Things like science and machine learning and data analysis are all on like numpy and scipy that have C backends already
2021-10-22 01:33:45 +0200 <davean> its the business logic stuff thats slow and needs direct perforamnce improvements
2021-10-22 01:34:04 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:34:10 +0200 <davean> anyway, still not Haskell, but at least closer :)
2021-10-22 01:34:57 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:35:54 +0200 <aegon> roger. I hope i don't hav to python again but it wouldn't be the end of the world. the type system last time i used it felt about on par with typescripts stuff. I didn't know they were using it to inform compilation anywhere
2021-10-22 01:36:04 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:36:54 +0200 <aegon> i've been eager to try my hand at optimizing some haskell after reading up on it but haven't come across any place where its needed yet. monochrom do have a good toy project idea that will put in c-- land? :D or other resources on optimization
2021-10-22 01:36:57 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:37:15 +0200 <aegon> i guess i should say optimizing GHC
2021-10-22 01:37:18 +0200 <davean> aegon: oh optimizing Haskell is fun!
2021-10-22 01:37:28 +0200 <monochrom> I don't.
2021-10-22 01:37:39 +0200 <davean> I did a talk on that almost a year ago now
2021-10-22 01:38:04 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:38:06 +0200 <monochrom> But look for "fusion" papers and SPJ's "core" talks.
2021-10-22 01:38:33 +0200 <monochrom> "core" referring to the intermediate language in GHC.
2021-10-22 01:38:58 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:39:32 +0200 <monochrom> SPJ's "core" talks don't just teach you it, they also show you an optimization pass that interested SPJ at the time of the talk.
2021-10-22 01:40:04 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:40:21 +0200 <davean> aegon: what sort of optimizations are you interested in doing?
2021-10-22 01:40:58 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:41:18 +0200 <davean> Are you interested in optizing Haskell libraries, programs, GHC specificly, or the code GHC produces in general (Or something I've missed as an option)
2021-10-22 01:41:38 +0200 <aegon> monochrom: awesome, collecting links based on those criteria
2021-10-22 01:42:05 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:42:58 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:43:36 +0200 <aegon> davean: i want to have more experience optimizing memory usage and the code ghc produces. Get a better feel for reasoning about how nested recursion or iterating over a list is going ot actually play out in core land and if it doesen't remove the complexity i expect it to, where to poke or look for in the source
2021-10-22 01:43:38 +0200natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-10-22 01:44:05 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-10-22 01:44:06 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:44:11 +0200 <davean> Ok so specific programs (or maybe libraries)
2021-10-22 01:44:13 +0200jgeerds(~jgeerds@55d4da80.access.ecotel.net) (Ping timeout: 258 seconds)
2021-10-22 01:44:26 +0200 <aegon> i'm writing haskell right now as if its going to take everything up into lambda calculus land and distill it into the best iterative set of instructions possible but i know thats a pretty brittle / bad assumption
2021-10-22 01:44:59 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:45:20 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-22 01:45:27 +0200 <aegon> I've read up on fusion, inlining pragmas, the stages of compilation but just have no reasonable experince with hacking at any of it. The stuff i've written so far performs well enough which means GHC is great :D because i'm not being particularly careful
2021-10-22 01:46:05 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:46:14 +0200 <davean> yah usually GHC compiles Haskell code well, even though it doesn't even try that hard
2021-10-22 01:46:54 +0200 <aegon> but I'm also mainly processing lazy bytestrings for the "work" of the application. I should probably be forming everything as pipes or with conduit but when i started those were super scary libraries
2021-10-22 01:46:54 +0200 <sm> Axman6: I have now watched your video and understand, that's great :)
2021-10-22 01:46:59 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:47:11 +0200 <sm> this new language looks a bit verbose, but powerful
2021-10-22 01:47:13 +0200 <davean> aegon: oh but machines is so much more fun :)
2021-10-22 01:47:45 +0200 <Axman6> verbosity gives the ~compiler~ interpreter more options for optimisation
2021-10-22 01:48:01 +0200 <awpr> lazy bytestrings get a lot of undeserved hate because they get conflated with lazy IO returning lazy bytestrings
2021-10-22 01:48:05 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:48:13 +0200 <monochrom> I like the machines package too.
2021-10-22 01:48:19 +0200 <monochrom> My only complain is:
2021-10-22 01:48:23 +0200akspecs__(~akspecs@user/akspecs) (Ping timeout: 264 seconds)
2021-10-22 01:48:26 +0200 <monochrom> Data.Machine and Control.Lens
2021-10-22 01:48:39 +0200 <monochrom> Does anyone see the oxymorons I see?
2021-10-22 01:48:50 +0200 <monochrom> Why is it not Control.Machine and Data.Lens?
2021-10-22 01:48:50 +0200 <geekosaur> that ship sank years ago :(
2021-10-22 01:48:56 +0200 <davean> monochrom: Oh I see it, but I just read them as different jokes
2021-10-22 01:48:57 +0200 <awpr> at this point `Data.` is basically the `.com` of Haskell module names
2021-10-22 01:48:59 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:49:18 +0200 <davean> I really just need to figure out my selector transformer semantics
2021-10-22 01:49:21 +0200renzhi(~xp@2607:fa49:6500:b100::6e7f) (Quit: WeeChat 2.3)
2021-10-22 01:49:21 +0200 <monochrom> Both Data. and Control. are .com
2021-10-22 01:49:24 +0200 <davean> So I can publish that package :(
2021-10-22 01:49:33 +0200 <davean> instead of just having a bunch of non-composible transformers
2021-10-22 01:49:39 +0200 <monochrom> Hell, even better:
2021-10-22 01:50:02 +0200 <awpr> `Com.Kmett.Lens` go full Java style
2021-10-22 01:50:05 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:50:08 +0200 <davean> I'm actually sad "Control.Lens" wasn't just "Lens"
2021-10-22 01:50:13 +0200 <geekosaur> Control is a misnomer because your data *is* control structures
2021-10-22 01:50:25 +0200 <monochrom> (|Data> + |Control>)/sqrt2 = (|.com> + |.org|)/sqrt2
2021-10-22 01:50:59 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:51:39 +0200 <geekosaur> and of course everything is data, so we reach ==davean
2021-10-22 01:52:03 +0200 <geekosaur> well, or codata
2021-10-22 01:52:06 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:53:00 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:53:27 +0200 <aegon> Axman6: python 5 looks dope
2021-10-22 01:54:06 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:55:00 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:56:06 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:56:56 +0200acidjnk_new(~acidjnk@p200300d0c703cb932154b917507392a6.dip0.t-ipconnect.de)
2021-10-22 01:57:00 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:58:06 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 01:59:00 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 01:59:39 +0200 <dolio> They're on 5 now? I thought 3 was still controversial.
2021-10-22 02:00:02 +0200 <awpr> just wait until Python 6 lands with `-XDependentHaskell`
2021-10-22 02:00:07 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:00:29 +0200 <aegon> i'd never heard of Machines
2021-10-22 02:00:34 +0200acidjnk_new3(~acidjnk@p200300d0c703cb87897f933eeab9e85f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-22 02:00:52 +0200 <aegon> gripe to share that i can't fix and don't think is super unreasonable but a perfect example of the hardest part of haskell to me...
2021-10-22 02:01:00 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:01:05 +0200 <geekosaur> can't be outdone by perl now, can they? }:>
2021-10-22 02:01:23 +0200 <Axman6> dolio: https://www.youtube.com/watch?v=BvECNQRrjCY
2021-10-22 02:01:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 02:01:35 +0200 <aegon> i needed to to matrix math recently and ended up on linear which i was super happy with, until i started using it and realizing everything was mathy. I'm still happy with it but trying to find out how to get an inverse of a quaternion was a journey
2021-10-22 02:02:04 +0200 <dolio> Oh, I see. :þ
2021-10-22 02:02:07 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:02:14 +0200 <geekosaur> you were doing matrix math and expecting it to not be mathy?
2021-10-22 02:03:01 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:04:03 +0200 <aegon> i didn't expect to have to dig into an instance class called RealFrac on quaternion to find that given a unit quaterion i can use recip to get the inverse normally given in math libs
2021-10-22 02:04:04 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-22 02:04:07 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:04:42 +0200 <aegon> like i ended up cross referencing and digging into what Hamiltonian was to find out how to do some basic stuff. which is fair, it is a mathy thing, but i do wish the docs had some practicality / notes
2021-10-22 02:04:54 +0200wrengrwrengr_away
2021-10-22 02:05:01 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:05:02 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-22 02:06:07 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:07:01 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:08:07 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:09:01 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:09:53 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-10-22 02:10:08 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:10:12 +0200 <aegon> i guess i don't know how it could be done better and still use the right classes for the things it does but mapping from the type classes to normal use cases was a journey. Hopefully in a month or so on theo ther end of this i'll remember to try a pr with a overview doc or something
2021-10-22 02:11:02 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:11:03 +0200 <aegon> but it feels like that happens a lot in hask land compared to other langauges where theres this awesome library that does something really slick and well but good luck using it if you aren't the author and know what some very high level concepts mean
2021-10-22 02:12:08 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:13:02 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:13:13 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 252 seconds)
2021-10-22 02:13:40 +0200 <aegon> imo learning them and digging into it is a better path to understanding what your working with but since we were talkign about haskells marketablility. Seemed relevant. Scotty / Spock are awesome, but it took me like 3 days to understand how to use either
2021-10-22 02:14:08 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:14:34 +0200 <dsal> jackdk: I'm doing a type application to type the proxy, but I'm not sure how to name a function that uses a type internally, but doesn't have any parameters that reference the type.
2021-10-22 02:14:56 +0200jaitoon(~Jaitoon@2a02:c7f:a5f:1d00:3901:d03b:2d77:c4b6) (Quit: Leaving)
2021-10-22 02:15:02 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:15:28 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-10-22 02:15:59 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
2021-10-22 02:16:09 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:16:45 +0200Lord_of_Life_Lord_of_Life
2021-10-22 02:17:03 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:17:18 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 02:18:09 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:19:00 +0200 <aegon> geekosaur: yeah, keep math out of my math libs, and don't start talking about science and facts please :P
2021-10-22 02:19:03 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:19:27 +0200 <jackdk> dsal: Here is an example. You need `-XTypeApplications` to select the type to `fromEnum`, `-XScopedTypeVariables` to be able to reference the type var `a` inside the body, and `-XAllowAmbiguousTypes` to defer the ambiguity check to the use site. https://www.irccloud.com/pastebin/SJhDUCgy/EnumIndices.hs
2021-10-22 02:20:09 +0200 <jackdk> dsal: you then call it like `enumIndices @Bool`, which evaluates to `[0, 1]`
2021-10-22 02:20:09 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:20:29 +0200 <monochrom> Heh I wrote a similar example. whee = fromEnum (minBound :: a) == 1
2021-10-22 02:20:41 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b5c0:69fb:2ebc:745e) (Remote host closed the connection)
2021-10-22 02:21:03 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:21:42 +0200 <jackdk> oh yeah right you don't need to use a type application enumIndices; a type annotation suffices there
2021-10-22 02:22:02 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-10-22 02:22:09 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:22:10 +0200acidjnk_new(~acidjnk@p200300d0c703cb932154b917507392a6.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-22 02:23:03 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:23:23 +0200 <aegon> its a dumb criticism to bring up, obvously if your using haskell you should be comfortable navigating all that stuff as part of the language. And i certainly oculdn't write a linear library to match linear. But on top of the functional part being rough for newcomers navigating the libraries is also often rough until you grok it.
2021-10-22 02:24:00 +0200 <monochrom> I still like the proxy approach though.
2021-10-22 02:24:10 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:24:37 +0200aegongoes back to working on this 14000 line pile of hask with little to no comments and 3 letter vars all over the place. <_< >_>
2021-10-22 02:25:04 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:25:09 +0200 <monochrom> You can ellide all 3 extensions, especially when you also use "whee p = ... (minBound `asProxyTypeOf` p) ..."
2021-10-22 02:26:10 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:27:04 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:28:10 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:29:04 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:29:54 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b5c0:69fb:2ebc:745e)
2021-10-22 02:30:11 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:30:24 +0200 <Inst> bingo
2021-10-22 02:30:27 +0200 <Inst> let's see how it goes
2021-10-22 02:30:34 +0200 <Inst> i talked my champion influencer friend into learning haskell
2021-10-22 02:31:04 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:31:11 +0200mestre(~mestre@191.177.175.57) (Quit: Lost terminal)
2021-10-22 02:31:29 +0200 <Inst> only a matter of time before i talk her into trying to bribe randumbs into learning haskell so they can get a hold of korean comics before they're officially released stateside
2021-10-22 02:32:11 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:32:50 +0200 <aegon> Inst: i'm very curous how this scheme plays out. Its very hustler-ey
2021-10-22 02:33:05 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:33:34 +0200 <Inst> well, main thing is that she's a bit ADHD-ish
2021-10-22 02:33:38 +0200 <Inst> she's studying to be an accountant
2021-10-22 02:33:44 +0200 <Inst> any way I can keep her away from Python, she's at CUNY
2021-10-22 02:33:45 +0200 <Inst> ?
2021-10-22 02:34:11 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:35:05 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:36:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-22 02:36:01 +0200Guest87(~Guest87@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-10-22 02:36:12 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:36:14 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-22 02:36:16 +0200 <Guest87> can I have a -fno-warn-incomplete-patterns for exactly one case of
2021-10-22 02:36:27 +0200 <dsal> jackdk: Thanks. I'm not sure which version I like more. The one without the proxy is slightly easier on the user, I guess.
2021-10-22 02:36:33 +0200 <Guest87> without disabling the warning in all of the file
2021-10-22 02:36:46 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk)
2021-10-22 02:36:55 +0200 <aegon> Guest87: not that I know of, why not complete the patterns?
2021-10-22 02:37:05 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:37:25 +0200 <Inst> ah crap, this sucks
2021-10-22 02:37:30 +0200 <Inst> CUNY -> City University of New York
2021-10-22 02:37:31 +0200 <monochrom> Yeah, easier to write the one single missing pattern.
2021-10-22 02:37:37 +0200 <Inst> they have like 20 different colleges spread throughout the city
2021-10-22 02:37:44 +0200 <Guest87> because it doesn't make sense in my case, I have a oneOf parser and if I don't get the value I expect the parser failed anyway
2021-10-22 02:37:55 +0200 <Inst> google it: not a single college offers a haskell-based intro course, the only Haskell course I see is graduate level
2021-10-22 02:38:10 +0200 <Guest87> well I'll just use some "default" value and call it a day
2021-10-22 02:38:12 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:38:30 +0200 <monochrom> a oneOf parser doesn't need incomplete patterns.
2021-10-22 02:38:40 +0200 <dsal> Guest87: You can define your own error or let the compiler make one up that you may or may not recognize.
2021-10-22 02:38:53 +0200 <aegon> Guest87: but without the rest of the patterns it will fail in a way you cant control, if it can fail shouldn't you handle the error case instead of undefined behavior land
2021-10-22 02:39:06 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:39:35 +0200 <aegon> you wont care about it till that case happens and you don't know why the program crashes
2021-10-22 02:39:35 +0200 <Guest87> monochrom: then how do I match against its result ?
2021-10-22 02:40:12 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:40:46 +0200 <Guest87> aegon: yeah but *in theory" it should never crash because I matched against all the inputs in oneOf
2021-10-22 02:40:55 +0200 <monochrom> oneOf s = anyChar >>= \c -> if c `elem` s then pure c else empty --- where is the incomplete pattern?
2021-10-22 02:41:06 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:41:11 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-10-22 02:41:15 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 260 seconds)
2021-10-22 02:41:43 +0200 <monochrom> And anyChar doesn't need incomplete pattern either, if that's what you mean.
2021-10-22 02:42:12 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:42:35 +0200 <Guest87> monochrom: I apparently wasn't clear, I'm something like `s <- oneOf "abc"` and then `case s of 'a' -> ...`
2021-10-22 02:42:56 +0200 <Guest87> s,something,doing something
2021-10-22 02:43:06 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:43:17 +0200 <monochrom> Then it is not a lot of work to add: _ -> error "doesn't happen"
2021-10-22 02:43:28 +0200 <awpr> `choice [char 'a' *> ..., char 'b' *> ..., char 'c' *> ...]`
2021-10-22 02:44:09 +0200 <awpr> (or just add the error and mention "impossible" in the message)
2021-10-22 02:44:13 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:44:31 +0200 <monochrom> I mean, suppose in the file there are like 20 places where you have to do that, sure, that's annoying.
2021-10-22 02:44:37 +0200 <monochrom> But you said just one place.
2021-10-22 02:44:46 +0200 <aegon> awpr: neat
2021-10-22 02:44:53 +0200 <monochrom> In fact, if there are 20 places, I turn off the warning altogether.
2021-10-22 02:45:03 +0200 <monochrom> In fact, I turn off the warning altogether, always.
2021-10-22 02:45:06 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:45:30 +0200 <Guest87> thank you very much, both solutions are perfect
2021-10-22 02:46:13 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:47:07 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:47:14 +0200ArtVandelayer(~ArtVandel@ip174-68-147-20.lv.lv.cox.net) (Ping timeout: 260 seconds)
2021-10-22 02:48:13 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:48:18 +0200 <aegon> :t *>
2021-10-22 02:48:19 +0200 <lambdabot> error: parse error on input ‘*>’
2021-10-22 02:48:24 +0200 <aegon> :t (*>)
2021-10-22 02:48:25 +0200 <lambdabot> Applicative f => f a -> f b -> f b
2021-10-22 02:49:07 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:50:15 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:51:07 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:52:14 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:52:46 +0200 <dsal> I don't appreciate the judgment of warnings.
2021-10-22 02:53:08 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:54:15 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:55:08 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:55:52 +0200skreli(~skreli@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 02:56:05 +0200 <skreli> ?src ($)
2021-10-22 02:56:06 +0200 <lambdabot> f $ x = f x
2021-10-22 02:56:15 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:57:08 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:57:25 +0200 <aegon> ?src (&)
2021-10-22 02:57:25 +0200 <lambdabot> Source not found. My pet ferret can type better than you!
2021-10-22 02:57:32 +0200 <geekosaur> pity @src tells half the story there
2021-10-22 02:57:33 +0200 <aegon> rude
2021-10-22 02:57:35 +0200 <aegon> lol
2021-10-22 02:58:15 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 02:58:41 +0200 <dsal> Yeah, there's kind of an important feature missing from that src thing.
2021-10-22 02:59:08 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 02:59:15 +0200 <geekosaur> hm, intended to say less than half
2021-10-22 02:59:27 +0200 <geekosaur> since the fixity's the whole point of it
2021-10-22 02:59:49 +0200 <dsal> Oh. Is there another important piece missing?
2021-10-22 03:00:16 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:00:20 +0200 <geekosaur> I was thinking of its response to ($)
2021-10-22 03:00:35 +0200 <geekosaur> where the whole point is `infixr 9`
2021-10-22 03:00:46 +0200 <geekosaur> sorry, 0
2021-10-22 03:00:53 +0200 <geekosaur> kee reversing the fixity levels
2021-10-22 03:01:09 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:02:07 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2021-10-22 03:02:15 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:02:49 +0200 <skreli> True, but you can get that half in ghci
2021-10-22 03:02:50 +0200 <dsal> % :i (&)
2021-10-22 03:02:50 +0200 <yahb> dsal: (&) :: a -> (a -> b) -> b -- Defined in `Data.Function'; infixl 1 &
2021-10-22 03:03:01 +0200 <skreli> :i ($)
2021-10-22 03:03:09 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:03:17 +0200 <skreli> % :i ($)
2021-10-22 03:03:17 +0200 <yahb> skreli: ($) :: (a -> b) -> a -> b -- Defined in `GHC.Base'; infixr 0 $
2021-10-22 03:04:15 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:04:19 +0200 <geekosaur> yes, but it'd be nice if @src reported it since what it does report is kinda useless
2021-10-22 03:05:07 +0200 <dsal> Where does @src come from?
2021-10-22 03:05:09 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:05:29 +0200mmhat(~mmh@55d45d75.access.ecotel.net) (Ping timeout: 258 seconds)
2021-10-22 03:06:08 +0200 <geekosaur> hardcoded database in the lambdabot repo
2021-10-22 03:06:17 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:07:10 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:07:57 +0200skreli(~skreli@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (WeeChat 3.3)
2021-10-22 03:08:11 +0200skreli(~skreli@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 03:08:16 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:09:10 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:10:17 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:10:57 +0200 <aegon> is there a way to turn on warnings for shadowing vars?
2021-10-22 03:11:10 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:11:52 +0200skreliClark
2021-10-22 03:12:14 +0200 <geekosaur> -Wname-shadowing ?
2021-10-22 03:12:16 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:13:10 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:14:11 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 264 seconds)
2021-10-22 03:14:17 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:14:36 +0200ClarkHayek
2021-10-22 03:15:11 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:15:46 +0200Inst(~Inst@2601:6c4:4080:3f80:e12b:5f61:be92:9101) (Remote host closed the connection)
2021-10-22 03:16:02 +0200 <aegon> geekosaur: thanks
2021-10-22 03:16:03 +0200Inst(~Inst@2601:6c4:4080:3f80:e12b:5f61:be92:9101)
2021-10-22 03:16:17 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:17:11 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:18:17 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:19:11 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-10-22 03:19:11 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:19:18 +0200mmhat(~mmh@55d456b5.access.ecotel.net)
2021-10-22 03:19:45 +0200neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 260 seconds)
2021-10-22 03:20:17 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:21:11 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:22:18 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:23:12 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:23:20 +0200Hayek(~skreli@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (WeeChat 3.3)
2021-10-22 03:24:18 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:24:55 +0200 <dsal> :t (>=>)
2021-10-22 03:24:56 +0200 <lambdabot> Monad m => (a -> m b) -> (b -> m c) -> a -> m c
2021-10-22 03:25:12 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:25:16 +0200 <dsal> It's only ever occurred to me that I should use that once. But I've used it more than once. I should probably understand it at some point.
2021-10-22 03:25:35 +0200 <dsal> I guess it reads pretty clearly.
2021-10-22 03:26:18 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:27:12 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:27:46 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-10-22 03:28:19 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:28:30 +0200mud(~mud@user/kadoban)
2021-10-22 03:28:57 +0200hendursaga(~weechat@user/hendursaga)
2021-10-22 03:29:12 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:30:19 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:31:12 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:32:19 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:33:13 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:34:20 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:35:13 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:36:20 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:37:13 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:38:20 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:38:25 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2021-10-22 03:39:01 +0200jespada(~jespada@2803:9800:9842:7a62:9560:3718:bb2f:f5ee) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-10-22 03:39:14 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:39:54 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 265 seconds)
2021-10-22 03:40:20 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:40:57 +0200mvk(~mvk@2607:fea8:5cc1:300::4b63)
2021-10-22 03:41:14 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:41:27 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2021-10-22 03:42:20 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:43:14 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:43:19 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Read error: Connection reset by peer)
2021-10-22 03:44:20 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:44:55 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2021-10-22 03:45:14 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:46:21 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:47:14 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:48:21 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:49:15 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:50:21 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:51:15 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:52:21 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:52:46 +0200xff0x(~xff0x@2001:1a81:524c:400:5205:21d5:64e1:92) (Ping timeout: 252 seconds)
2021-10-22 03:53:15 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:53:49 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-10-22 03:53:54 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2021-10-22 03:54:21 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:54:25 +0200xff0x(~xff0x@2001:1a81:5287:aa00:5b1b:a88f:ea9:b216)
2021-10-22 03:54:46 +0200guydb89(~guy@98.40.140.117)
2021-10-22 03:55:15 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:56:22 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:57:15 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 03:58:22 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 03:59:16 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:00:22 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:01:16 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:02:23 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:02:36 +0200mmhat(~mmh@55d456b5.access.ecotel.net) (Ping timeout: 258 seconds)
2021-10-22 04:03:16 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:04:23 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:05:17 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:06:23 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:07:17 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:07:17 +0200Hayek(~skreli@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 04:08:23 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:09:05 +0200Hayek(~skreli@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) ()
2021-10-22 04:09:17 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:09:19 +0200Hayek(~skreli@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 04:09:35 +0200Hayek(~skreli@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) ()
2021-10-22 04:09:38 +0200Hayek(~skreli@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 04:10:01 +0200Guest87(~Guest87@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds)
2021-10-22 04:10:24 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:10:24 +0200Hayek(~skreli@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Client Quit)
2021-10-22 04:10:41 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 04:11:17 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:12:24 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:12:25 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-22 04:13:18 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:13:18 +0200MQ-17J(~MQ-17J@8.21.10.17)
2021-10-22 04:14:09 +0200 <sm> how do I make an IOException, so I can throwIO it ?
2021-10-22 04:14:24 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:15:18 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:16:22 +0200 <sm> call ioError or userError msg, I guess - IOError seems to be a synonym
2021-10-22 04:16:25 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:16:27 +0200ente1(~ente@p200300dc5f17790014214a4427ad1af6.dip0.t-ipconnect.de)
2021-10-22 04:16:40 +0200mmhat(~mmh@55d497bf.access.ecotel.net)
2021-10-22 04:16:57 +0200 <ente1> what would you use for wring a json rest api in haskell?
2021-10-22 04:17:02 +0200ente1ente_
2021-10-22 04:17:04 +0200 <monochrom> Yeah, ioError (userError msg)
2021-10-22 04:17:18 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:18:25 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:19:19 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:19:21 +0200 <monochrom> or s/ioError/throwIO/ if you like. Doesn't matter which.
2021-10-22 04:19:49 +0200 <aegon> ente_: Scotty
2021-10-22 04:19:50 +0200 <Hayek> ?src zipWith
2021-10-22 04:19:50 +0200 <lambdabot> zipWith f (a:as) (b:bs) = f a b : zipWith f as bs
2021-10-22 04:19:50 +0200 <lambdabot> zipWith _ _ _ = []
2021-10-22 04:20:18 +0200 <aegon> ente_: Scotty + Aeson
2021-10-22 04:20:25 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:21:13 +0200 <aegon> theres a real world scotty example app but its kinda over the top in class seperation imo
2021-10-22 04:21:19 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:22:23 +0200 <aegon> ente_: what kind of storage are you communicating with
2021-10-22 04:22:25 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:23:19 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:24:27 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:25:19 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:26:01 +0200 <ente_> aegon: do you mean database? I honestly have no idea; before I just always used postgres (in conjunction with Go)
2021-10-22 04:26:26 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:26:30 +0200 <shapr> I wrote a scotty app if you want to see something that works.
2021-10-22 04:26:50 +0200mrianbloom(sid350277@id-350277.ilkley.irccloud.com) (Ping timeout: 260 seconds)
2021-10-22 04:26:50 +0200mcfilib(sid302703@user/mcfilib) (Ping timeout: 260 seconds)
2021-10-22 04:26:50 +0200teehemkay(sid14792@id-14792.lymington.irccloud.com) (Ping timeout: 260 seconds)
2021-10-22 04:26:50 +0200td_(~td@94.134.91.188) (Ping timeout: 260 seconds)
2021-10-22 04:26:52 +0200kristjansson_(sid126207@id-126207.tinside.irccloud.com) (Ping timeout: 252 seconds)
2021-10-22 04:26:52 +0200hubvu(sid495858@user/hubvu) (Ping timeout: 252 seconds)
2021-10-22 04:26:53 +0200 <aegon> ente_: depending on how comfy you are with haskell persistent then postgresql-simple and resource-pool are good
2021-10-22 04:27:03 +0200td_(~td@94.134.91.188)
2021-10-22 04:27:08 +0200grfn(sid449115@id-449115.helmsley.irccloud.com) (Ping timeout: 258 seconds)
2021-10-22 04:27:10 +0200 <aegon> persistent is more black boxey than postgresql-simple
2021-10-22 04:27:19 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:27:25 +0200gaze___(sid387101@id-387101.helmsley.irccloud.com) (Ping timeout: 260 seconds)
2021-10-22 04:27:27 +0200 <ente_> aegon: I have never used anything
2021-10-22 04:27:44 +0200 <ente_> aegon: but postgresql-simple sounds ... simple
2021-10-22 04:28:00 +0200rune(sid21167@id-21167.ilkley.irccloud.com) (Ping timeout: 260 seconds)
2021-10-22 04:28:00 +0200sclv(sid39734@haskell/developer/sclv) (Ping timeout: 260 seconds)
2021-10-22 04:28:26 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:28:31 +0200econo(uid147250@user/econo) (Ping timeout: 252 seconds)
2021-10-22 04:28:31 +0200sa(sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 252 seconds)
2021-10-22 04:28:35 +0200hook54321(sid149355@user/hook54321) (Ping timeout: 260 seconds)
2021-10-22 04:28:35 +0200Adeon(sid418992@id-418992.lymington.irccloud.com) (Ping timeout: 260 seconds)
2021-10-22 04:28:35 +0200whez(sid470288@id-470288.lymington.irccloud.com) (Ping timeout: 260 seconds)
2021-10-22 04:28:40 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Ping timeout: 258 seconds)
2021-10-22 04:28:56 +0200 <ente_> aegon: bruh https://imgur.com/a/kj0TE7p
2021-10-22 04:28:59 +0200gaze___(sid387101@helmsley.irccloud.com)
2021-10-22 04:29:03 +0200whez(sid470288@lymington.irccloud.com)
2021-10-22 04:29:03 +0200 <aegon> it is, i used it and was happy, now that i'm more familiar with haskell stuff though I wish i'd gone with persistent for all the magic it provides.
2021-10-22 04:29:04 +0200mcfilib(sid302703@user/mcfilib)
2021-10-22 04:29:04 +0200bitmapper(uid464869@lymington.irccloud.com)
2021-10-22 04:29:05 +0200teehemkay(sid14792@lymington.irccloud.com)
2021-10-22 04:29:06 +0200grfn(sid449115@helmsley.irccloud.com)
2021-10-22 04:29:20 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:29:21 +0200 <ente_> aegon: hmm... I'll have a look at both ig
2021-10-22 04:29:21 +0200rune(sid21167@ilkley.irccloud.com)
2021-10-22 04:29:24 +0200mrianbloom(sid350277@ilkley.irccloud.com)
2021-10-22 04:29:30 +0200hubvu(sid495858@user/hubvu)
2021-10-22 04:29:36 +0200econo(uid147250@user/econo)
2021-10-22 04:29:42 +0200sa(sid1055@tinside.irccloud.com)
2021-10-22 04:29:45 +0200 <aegon> if shapr has code thats public that'd be a huge time saver, i ended up with something like this https://github.com/scotty-web/scotty/blob/master/examples/reader.hs in the reader i threw a resource-pool of postgresql-simple connections
2021-10-22 04:29:47 +0200kristjansson_(sid126207@tinside.irccloud.com)
2021-10-22 04:30:04 +0200 <ente_> btw - how do you install libraries in haskell
2021-10-22 04:30:09 +0200sclv(sid39734@haskell/developer/sclv)
2021-10-22 04:30:19 +0200 <aegon> and took some of the monad transformer / effect composition stuff from this https://github.com/eckyputrady/haskell-scotty-realworld-example-app
2021-10-22 04:30:22 +0200 <ente_> I have seen stack and ghc-pkg but am still a bit coonfused
2021-10-22 04:30:26 +0200Guest372(~xxx@47.245.54.240)
2021-10-22 04:30:29 +0200hook54321(sid149355@user/hook54321)
2021-10-22 04:30:38 +0200 <ente_> (sorry if that's a *very* noob question)
2021-10-22 04:31:20 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-10-22 04:31:50 +0200Adeon(sid418992@lymington.irccloud.com)
2021-10-22 04:31:53 +0200 <aegon> ente_: stack or cabal i think but i'm old and don't do nix stuff. imo if your new stack is the easiest way to get rollin but i think an equal number would say cabal has caught up in features
2021-10-22 04:32:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 04:34:10 +0200 <shapr> Yeah, either one is fine.
2021-10-22 04:35:20 +0200 <c_wraith> Is there any fancy number theory trick to efficiently distinguish a prime from the square of a prime?
2021-10-22 04:36:15 +0200 <shapr> here's something I wrote three years ago that uses spock: https://github.com/shapr/sporkle/blob/master/app/Main.hs
2021-10-22 04:36:19 +0200 <shapr> it was a demo for teaching others.
2021-10-22 04:36:59 +0200 <shapr> here's a different thing I wrote using Scotty: https://github.com/shapr/fermatslastmargin
2021-10-22 04:39:16 +0200 <byorgey> c_wraith: I don't know of any way to do better than e.g. testing if the number is a square (by computing the square of its integer square root) or testing for primality.
2021-10-22 04:40:12 +0200 <aegon> ente_: and heres the bits i can share of the scotty thing i did https://paste.tomsmeding.com/SOgubUXf
2021-10-22 04:40:26 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 04:40:38 +0200td_(~td@94.134.91.188) (Ping timeout: 260 seconds)
2021-10-22 04:41:28 +0200 <byorgey> c_wraith: hmm, I guess you can get a tiny bit of mileage out of the fact that odd squares in base 10 must end in 1, 5, or 9
2021-10-22 04:42:17 +0200 <byorgey> and maybe you can quickly rule out some other cases by considering the remainder modulo some other divisors
2021-10-22 04:42:24 +0200td_(~td@94.134.91.189)
2021-10-22 04:42:57 +0200 <Inst> yeah, here's the problem with getting drunk and BS-ing, no one will answer your haskell questions
2021-10-22 04:43:03 +0200 <Inst> okay, I have something weird
2021-10-22 04:43:15 +0200 <Inst> or maybe not
2021-10-22 04:43:54 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds)
2021-10-22 04:43:59 +0200 <Inst> yup, debugged it, it's weird
2021-10-22 04:44:42 +0200 <Inst> i tried a simple recursive function, it's probably a syntax error on VSCode GHCi somewhere
2021-10-22 04:44:55 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-10-22 04:45:35 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-10-22 04:47:17 +0200 <c_wraith> byorgey: hmm. all odd squares have remainder 1 mod 8. That's probably good enough of a first pass that testing the integer square root is ok as the next pass.
2021-10-22 04:48:13 +0200 <byorgey> c_wraith: ah, nice
2021-10-22 04:48:49 +0200 <byorgey> and you don't even have to do any division, just look at the last 3 bits
2021-10-22 04:48:53 +0200 <c_wraith> yeah
2021-10-22 04:49:08 +0200 <byorgey> also, how big are these numbers?
2021-10-22 04:49:32 +0200 <c_wraith> in all honesty, probably small enough that just doing a floating point square root would work. But I don't want to count on it
2021-10-22 04:50:04 +0200 <byorgey> fair enough
2021-10-22 04:51:07 +0200mmhat(~mmh@55d497bf.access.ecotel.net) (Quit: WeeChat 3.3)
2021-10-22 04:54:55 +0200infinity0(~infinity0@occupy.ecodis.net) (Remote host closed the connection)
2021-10-22 04:55:02 +0200 <aegon> ente_: if this is like your first whack at haskell monad transformers were super scary for me and every web framework has em at the base, this is long but good https://www.fpcomplete.com/haskell/tutorial/monad-transformers/
2021-10-22 04:55:25 +0200MQ-17J(~MQ-17J@8.21.10.17) (Ping timeout: 260 seconds)
2021-10-22 04:56:24 +0200 <dsal> I'm fairly anti-persistent after having gone through that debate recently.
2021-10-22 04:56:33 +0200 <aegon> ente_: and i think the thing that really tripped me up is that the runReaderT etc create the context
2021-10-22 04:56:53 +0200 <dsal> It's probably cool if you don't care about databases, but there were too many things I couldn't figure out how to do in persistent even before I got to the stuff it wouldn't do at all.
2021-10-22 04:57:08 +0200 <aegon> dsal: yeah i had to ad postGIS types to postgresql-simple and i don't think i would have been able to figure out how to do that with all the complexitiy of persistent
2021-10-22 04:57:15 +0200 <aegon> *add
2021-10-22 04:57:16 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-10-22 04:57:28 +0200 <dsal> Right. enums and postgis both look nightmarish.
2021-10-22 04:58:12 +0200 <dsal> PG enums are why I was asking about proxies/type applications earlier. I realized I've never actually looked at how type applications worked, just sort of cargo culted them around. Made life easier.
2021-10-22 04:58:36 +0200 <dsal> Now I have a test thing that's like `pgEnumsMatch @HaskellType "postgres_type"` and it does all the fancy tests.
2021-10-22 04:59:07 +0200infinity0(~infinity0@occupy.ecodis.net)
2021-10-22 05:00:14 +0200 <aegon> dsal: did any blog post or docs get you to an aha moment? I used type applications in HaskTorch's gradually typed stuff and thought I knew them, then went to use em in a new project and chased my tail around for a day before reforming the problem to not need them
2021-10-22 05:01:01 +0200 <aegon> (type applications that is)
2021-10-22 05:01:22 +0200 <dsal> I just read this: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/type_applications.html
2021-10-22 05:01:34 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-22 05:02:37 +0200 <dsal> I usually don't need them, but my problem here was basically the above. I want to test that of this haskell type occupants are the same as the postgres enum values. I'm going to have a few of these, so I just wanted to do the thing once.
2021-10-22 05:05:22 +0200InstX1(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 260 seconds)
2021-10-22 05:06:15 +0200meinside(uid24933@id-24933.helmsley.irccloud.com)
2021-10-22 05:06:37 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-10-22 05:06:47 +0200 <dsal> Turns out reading documentation can really shave some time off of understanding things. I also hadn't looked up AllowAmbiguousTypes. That sounds scary, but it's for exactly this type of thing.
2021-10-22 05:07:30 +0200 <awpr> yeah, a lot of GHC extensions suffer from people being needlessly scared of them
2021-10-22 05:07:47 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-22 05:07:47 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-22 05:07:47 +0200wroathe(~wroathe@user/wroathe)
2021-10-22 05:08:26 +0200 <dsal> It's kind of a scary sounding name.
2021-10-22 05:08:57 +0200 <aegon> for whatever reason it seems impossible for me to find the ghc users guide when i want it. I'll get tons of monday morning haskell / fp complete posts but never a link to the actual docs. need to up my google / duckduckgo game
2021-10-22 05:09:15 +0200 <awpr> exactly, that's what I mean. `UndecidableInstances` is also really scary sounding, but it just means to turn off the guard rails that stop you from writing infinite loops in your types
2021-10-22 05:10:29 +0200 <dsal> Heh, I just went off to read about UndecidableInstances and came back and you were talking about it.
2021-10-22 05:11:23 +0200 <aegon> i thought there was a vote around default enabling some extensions
2021-10-22 05:11:39 +0200kupi(uid212005@id-212005.hampstead.irccloud.com)
2021-10-22 05:11:42 +0200 <dsal> It's really helpful to read these things, but I like to wait until I'm maximally dumb. I remember reading about `FunctionalDependencies` and kind of glazed over a bit and couldn't imagine a case where I needed that. A couple of days later…
2021-10-22 05:14:40 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 258 seconds)
2021-10-22 05:15:58 +0200mbuf(~Shakthi@136.185.83.238)
2021-10-22 05:18:54 +0200guydb89(~guy@98.40.140.117) (Ping timeout: 260 seconds)
2021-10-22 05:18:59 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 264 seconds)
2021-10-22 05:19:16 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 258 seconds)
2021-10-22 05:19:24 +0200cheater(~Username@user/cheater)
2021-10-22 05:24:25 +0200 <davean> aegon: How about IncoherentInstances?
2021-10-22 05:35:37 +0200dut(~dut@user/dut)
2021-10-22 05:37:16 +0200 <Axman6> @djinn (b -> c) -> (d -> e -> b) -> d -> e -> c
2021-10-22 05:37:16 +0200 <lambdabot> f a b c d = a (b c d)
2021-10-22 05:42:36 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 05:44:17 +0200dut(~dut@user/dut) (Quit: Leaving)
2021-10-22 05:45:06 +0200 <aegon> davean: not familiar with it, it seems Incoherent
2021-10-22 05:50:47 +0200 <davean> aegon: you'll take the instance we give you, and don't expect us to be consistent about it!
2021-10-22 05:51:23 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 264 seconds)
2021-10-22 05:54:54 +0200 <davean> aegon: never wanted to instances of Ord for one type?
2021-10-22 05:56:27 +0200coot(~coot@37.30.49.107.nat.umts.dynamic.t-mobile.pl)
2021-10-22 05:59:35 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 06:00:42 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-10-22 06:04:48 +0200fawful(~guy@c-76-104-217-93.hsd1.wa.comcast.net)
2021-10-22 06:04:56 +0200 <aegon> how would it choose? that sounds like a recipe for disaster
2021-10-22 06:06:47 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-10-22 06:07:57 +0200fawful(~guy@c-76-104-217-93.hsd1.wa.comcast.net) (Client Quit)
2021-10-22 06:08:57 +0200fawful(~guy@c-76-104-217-93.hsd1.wa.comcast.net)
2021-10-22 06:09:08 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-10-22 06:15:24 +0200 <davean> aegon: It would choose whichever it wanted at any given moment of course
2021-10-22 06:16:10 +0200fawful(~guy@c-76-104-217-93.hsd1.wa.comcast.net) (Quit: WeeChat 3.2)
2021-10-22 06:17:10 +0200 <davean> Look, we promise you'll only be given one of them in a given case - isn't that good enough for you?
2021-10-22 06:20:02 +0200 <aegon> well, the compiler knows best, i'll run with it
2021-10-22 06:27:39 +0200 <davean> aegon: its the scariest language extension I think a sane programemr will have to use at some point
2021-10-22 06:28:07 +0200 <davean> or put another way, that its the scariest langauge extension that there might not be a better way to do it
2021-10-22 06:29:30 +0200bitmapper(uid464869@lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-22 06:34:20 +0200reumeth(~reumeth@user/reumeth)
2021-10-22 06:36:34 +0200mikoto-chan(~mikoto-ch@185.237.102.125)
2021-10-22 06:39:23 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 258 seconds)
2021-10-22 06:40:31 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 252 seconds)
2021-10-22 06:41:05 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-10-22 06:41:29 +0200 <aegon> davean: looks like it was changed to OverlappingInstances
2021-10-22 06:46:52 +0200ArtVandelayer(~ArtVandel@ip174-68-147-20.lv.lv.cox.net)
2021-10-22 06:48:42 +0200ArtVandelayer(~ArtVandel@ip174-68-147-20.lv.lv.cox.net) (Read error: Connection reset by peer)
2021-10-22 06:48:55 +0200ArtVandelayer(~ArtVandel@ip174-68-147-20.lv.lv.cox.net)
2021-10-22 06:51:12 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-10-22 06:53:10 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-10-22 06:53:11 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-10-22 06:56:19 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-10-22 06:59:01 +0200 <davean> aegon: no - there was a change but it was to make it specific to a given instance istead of a general language extension
2021-10-22 07:00:59 +0200mvk(~mvk@2607:fea8:5cc1:300::4b63) (Ping timeout: 264 seconds)
2021-10-22 07:02:24 +0200schuelermine(~anselmsch@user/schuelermine)
2021-10-22 07:02:25 +0200 <davean> aegon: and incoherent is far worse than overlapping
2021-10-22 07:02:38 +0200 <schuelermine> what even is the use for -XIncoherentInstances?!
2021-10-22 07:02:42 +0200 <davean> See https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/instances.html#overlapping-instances
2021-10-22 07:02:44 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 07:03:36 +0200 <davean> schuelermine: If you have to ask, I don't want to put ideas into your head ...
2021-10-22 07:04:39 +0200 <schuelermine> I feel like the advantages of coherence could be done by simply allowing types to carry instances, i.e. a dumbed down dependent typing system, then type classes could be handled as ?implicit parameters
2021-10-22 07:04:52 +0200 <aegon> overlapping sounds like sfinae
2021-10-22 07:04:56 +0200 <schuelermine> I guess ‘simply’ is a big word here
2021-10-22 07:05:06 +0200 <schuelermine> aegon: what the hell do you mean by that?
2021-10-22 07:05:07 +0200 <dsal> -XSurpriseInstances
2021-10-22 07:05:56 +0200 <aegon> whoa, that was a strong reaction :P I mean in template substitution where in c++ it will choose the most specific match
2021-10-22 07:06:04 +0200 <aegon> https://en.cppreference.com/w/cpp/language/sfinae
2021-10-22 07:06:11 +0200 <schuelermine> aegon: the reaction was not meant negatively, I was merely confused
2021-10-22 07:06:19 +0200 <schuelermine> sorry if that came accross the wrong way
2021-10-22 07:06:19 +0200 <davean> aegon: most specific match is what overlapping instances does
2021-10-22 07:06:42 +0200 <aegon> oh sorry i mistook it, i wasn't offended just poking fun
2021-10-22 07:07:08 +0200 <c_wraith> however... sometimes the most specific match can become... hidden.
2021-10-22 07:07:13 +0200 <aegon> and most specific isn't really related to sfinae, :X i just heard it in the same video from cpp weekly where he was going over function resolution
2021-10-22 07:07:28 +0200 <davean> c_wraith: yah, I mean it doesn't work in a sane manner
2021-10-22 07:07:35 +0200 <davean> there can be ... incoherence
2021-10-22 07:07:44 +0200 <schuelermine> I guess people find “what the hell” strong? idk, but I think I’ve had one other instance of people reacting negatively to that…
2021-10-22 07:07:46 +0200 <davean> but its not the same as incoherent instances
2021-10-22 07:07:53 +0200 <aegon> c_wraith: so ghc could stop searching for a "most specific" in some cases?
2021-10-22 07:08:11 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-10-22 07:08:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-22 07:09:14 +0200 <c_wraith> aegon: it sometimes can't see that there's something more specific due to calling patterns. I don't actually know how to trigger the behavior, I just know I've seen it before.
2021-10-22 07:09:23 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 264 seconds)
2021-10-22 07:09:53 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-22 07:09:53 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-22 07:09:53 +0200wroathe(~wroathe@user/wroathe)
2021-10-22 07:09:56 +0200 <c_wraith> aegon: like when working in a polymorphic context, sometimes the instance selection gets deferred to a location that no longer has the necessary information
2021-10-22 07:10:54 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-22 07:12:51 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-22 07:13:40 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184)
2021-10-22 07:14:03 +0200 <davean> aegon: out of curiosity what made you think incoherent instances was replaced by overlapping?
2021-10-22 07:14:10 +0200 <davean> That might be a documentation weakness somewhere?
2021-10-22 07:14:38 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-10-22 07:14:47 +0200emf_(~emf@2620:10d:c090:400::5:70ff) (Ping timeout: 264 seconds)
2021-10-22 07:14:51 +0200 <aegon> no its a bad reading by me, I read the section title as Overlapping Instances then processed taht IncoherentInstances was a "deprecated extension" so i assumed it was replaced
2021-10-22 07:15:06 +0200 <aegon> reading the whole section clarifies though, they both exist but they are more specific now / tied to an instance
2021-10-22 07:15:18 +0200 <aegon> i'm still digging into it, it does sound scary
2021-10-22 07:15:26 +0200 <aegon> i cant think of a time I'd want the Incoherent behavior
2021-10-22 07:17:42 +0200 <davean> Its not the behavior you'd want
2021-10-22 07:17:51 +0200 <davean> Its that its the only way you could encode what you *did* want in Haskell
2021-10-22 07:17:57 +0200 <davean> Its the removal of the restriction
2021-10-22 07:20:40 +0200schuelermine(~anselmsch@user/schuelermine) (Ping timeout: 252 seconds)
2021-10-22 07:21:24 +0200kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-22 07:27:21 +0200 <aegon> i see, hmm, well, maybe not. I don't see what you'd have to encode this way. It seems to add more flexibility for instance resolution, i've used FlexibleContexts before but I don't see what would *require* Incoherent instances, is it a side effect of the intermidiate stage thats needed by the compiler before it determines the overlapping resolution?
2021-10-22 07:29:26 +0200 <c_wraith> Incoherent instances are for when you have overlapping instances where options are tied in specificity
2021-10-22 07:29:37 +0200 <c_wraith> That is in no way required by FlexibleContexts
2021-10-22 07:30:21 +0200 <c_wraith> The only way incoherent instances would get involved is if you have *multiple* instances that differ only on constraints, or something like that
2021-10-22 07:33:41 +0200 <aegon> is there a sane example of where you need that? I'm trying to contrive up something and coming up blank
2021-10-22 07:34:15 +0200 <aegon> if i'm understanding correctly your talking aobut something like instanse Show (Int, b) and instance Show (b, Int)
2021-10-22 07:35:07 +0200Guest27(~Guest27@2601:281:d480:2ce0:28de:914f:fac6:10b7)
2021-10-22 07:35:25 +0200 <c_wraith> that's an example, yes
2021-10-22 07:35:37 +0200 <c_wraith> there's no most-specific option to match (Int, Int)
2021-10-22 07:36:44 +0200 <aegon> but like, why would a lib dev want such a thing :?
2021-10-22 07:37:30 +0200 <aegon> or i guess need to be able to allow for such a thing
2021-10-22 07:37:30 +0200mei(~mei@user/mei)
2021-10-22 07:37:35 +0200zmt00(~zmt00@user/zmt00) (Ping timeout: 264 seconds)
2021-10-22 07:38:36 +0200 <c_wraith> The cases I've seen where it actually is *helpful* is when you happen to know that for whatever reason, every instance it might select is equivalent
2021-10-22 07:39:08 +0200 <c_wraith> And you have other requirements that prevent expressing it as a single constraint
2021-10-22 07:39:27 +0200 <c_wraith> It's not a common thing. Most people never need it.
2021-10-22 07:45:30 +0200mikoto-chan(~mikoto-ch@185.237.102.125) (Quit: mikoto-chan)
2021-10-22 07:45:57 +0200 <aegon> theres some cool info in the users guide i glossed over. this stuf is neat. I've kinda just accepted FlexibleInstances, FlexibleContexts etc as hand wavy things some libs need in order to be used
2021-10-22 07:49:54 +0200Guest27(~Guest27@2601:281:d480:2ce0:28de:914f:fac6:10b7) (Ping timeout: 256 seconds)
2021-10-22 07:58:18 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-10-22 08:05:00 +0200segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 260 seconds)
2021-10-22 08:05:23 +0200 <davean> aegon: more people should RTFM
2021-10-22 08:06:30 +0200 <davean> aegon: Honestly it wouldn't take that long to get a basic idea of every extension by reading the manual - if you're bored some day ...
2021-10-22 08:06:57 +0200 <aegon> i'll definitely do it, for some reason i read all of real world haskell and learn you a haskell then skimped on the manual
2021-10-22 08:07:00 +0200 <aegon> derp
2021-10-22 08:07:16 +0200 <aegon> i gotta read the inside of my eye lids for a couple hours though :)
2021-10-22 08:07:44 +0200aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-10-22 08:14:05 +0200benin(~benin@183.82.207.116)
2021-10-22 08:15:36 +0200chele(~chele@user/chele)
2021-10-22 08:18:42 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 08:21:02 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:70bb:31e2:9b65:43)
2021-10-22 08:22:27 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-10-22 08:23:05 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-10-22 08:27:35 +0200jakalx(~jakalx@base.jakalx.net)
2021-10-22 08:30:38 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-10-22 08:31:01 +0200ArctVaulMarsHMPJ(~pjetcetal@128-71-225-36.broadband.corbina.ru)
2021-10-22 08:31:22 +0200ArctVaulMarsHMPJ(~pjetcetal@128-71-225-36.broadband.corbina.ru) (Read error: Connection reset by peer)
2021-10-22 08:33:12 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-10-22 08:34:02 +0200connrs(~connrs@conners.plus.com) (Read error: Connection reset by peer)
2021-10-22 08:34:20 +0200connrs(~connrs@conners.plus.com)
2021-10-22 08:34:35 +0200timCF(~timCF@m91-129-111-87.cust.tele2.ee) (Ping timeout: 264 seconds)
2021-10-22 08:42:06 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 08:44:47 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 264 seconds)
2021-10-22 08:45:11 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd) (Quit: Reconnecting)
2021-10-22 08:45:34 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd)
2021-10-22 08:46:35 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-10-22 08:48:22 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-10-22 08:49:01 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184) (Remote host closed the connection)
2021-10-22 08:52:21 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-10-22 08:53:04 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 252 seconds)
2021-10-22 08:54:00 +0200pfurla(~pfurla@216.151.180.27)
2021-10-22 09:00:50 +0200hueso_(~root@user/hueso) (Ping timeout: 246 seconds)
2021-10-22 09:01:26 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-10-22 09:06:39 +0200Guest27(~Guest27@2601:281:d480:2ce0:28de:914f:fac6:10b7)
2021-10-22 09:07:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 09:08:11 +0200Inst(~Inst@2601:6c4:4080:3f80:e12b:5f61:be92:9101) (Ping timeout: 264 seconds)
2021-10-22 09:08:16 +0200michalz(~michalz@185.246.204.41)
2021-10-22 09:11:41 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 09:12:07 +0200ubert(~Thunderbi@178.165.203.151.wireless.dyn.drei.com)
2021-10-22 09:13:37 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d) (Quit: Leaving)
2021-10-22 09:14:29 +0200vpan(~0@212.117.1.172)
2021-10-22 09:15:52 +0200hueso(~root@user/hueso)
2021-10-22 09:16:10 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 258 seconds)
2021-10-22 09:19:08 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-10-22 09:20:26 +0200Guest27(~Guest27@2601:281:d480:2ce0:28de:914f:fac6:10b7) (Quit: Client closed)
2021-10-22 09:20:50 +0200xff0x(~xff0x@2001:1a81:5287:aa00:5b1b:a88f:ea9:b216) (Ping timeout: 260 seconds)
2021-10-22 09:22:20 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-10-22 09:24:40 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
2021-10-22 09:25:03 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-10-22 09:25:03 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-10-22 09:27:28 +0200mc47(~mc47@xmonad/TheMC47)
2021-10-22 09:31:17 +0200alx741(~alx741@186.178.108.23) (Quit: alx741)
2021-10-22 09:33:07 +0200xff0x(~xff0x@2001:1a81:5287:aa00:5b1b:a88f:ea9:b216)
2021-10-22 09:34:43 +0200 <dminuoso> 08:54:08 davean | [06:05:23] aegon: more people should RTFM
2021-10-22 09:34:46 +0200 <dminuoso> This channel would be so quiet.
2021-10-22 09:34:49 +0200 <dminuoso> :>
2021-10-22 09:35:17 +0200 <dminuoso> Something like half questions in here are covered in GHC or cabal manuals..
2021-10-22 09:37:25 +0200 <Profpatsch> Just because it’s written down doesn’t mean it’s discoverable
2021-10-22 09:37:52 +0200 <davean> Profpatsch: I mean its basicly the definition of discoverable to be in the manual
2021-10-22 09:38:06 +0200 <davean> If you haven't read the manual for tools you use, are you even trying to understand?
2021-10-22 09:39:53 +0200 <tomsmeding> TBH the ghc user's guide amounts to a huge amount of pages. Now actually the user's guide is actually structured quite well (and indexed in search engines) so you can actually find what you want, but in general "it's in the manual = discoverable" is untrue: "it's in a 300 page scanned PDF" is _not_ discoverable.
2021-10-22 09:40:27 +0200 <davean> the GHC manual was never in a PDF during the time I've been in Haskell which is over a decade
2021-10-22 09:40:42 +0200 <davean> but even then - don't you read the manuals of your tools when you start using them?
2021-10-22 09:40:50 +0200 <tomsmeding> not if they're hundreds of pages long, no
2021-10-22 09:41:03 +0200 <Rembane_> Knowing what to google to find the right thing in the manual is a skill in itself, a skill many here have, but probably not the people who ask the RTM-worthy questions.
2021-10-22 09:41:05 +0200 <tomsmeding> but I agree the GHC manual has discoverable materual :)
2021-10-22 09:41:08 +0200 <tomsmeding> *material
2021-10-22 09:41:09 +0200 <davean> The GHC manual was a tiny fraction of what I read getting started with Haskell
2021-10-22 09:41:12 +0200 <tomsmeding> Was just responding to the general remark
2021-10-22 09:41:51 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-10-22 09:42:00 +0200 <tomsmeding> maybe I'm one of those stupid young people that can't bother to spend days reading a manual before getting started, but no, I don't :p
2021-10-22 09:42:20 +0200son0p(~ff@181.136.122.143) (Read error: Connection reset by peer)
2021-10-22 09:42:23 +0200 <davean> tomsmeding: Saved me a lot more than the day it took to read - and it was an interesting day
2021-10-22 09:42:28 +0200 <davean> a day worth it all on its own
2021-10-22 09:43:01 +0200 <davean> Honestly a large portion of the problems I've had with GHC were not keeping up
2021-10-22 09:43:13 +0200 <Profpatsch> davean: are you saying you have read the manual of every tool you use?
2021-10-22 09:43:18 +0200 <Profpatsch> *doubt*
2021-10-22 09:43:22 +0200cfricke(~cfricke@user/cfricke)
2021-10-22 09:43:25 +0200 <[exa]> #haskell the best hackage indexing service
2021-10-22 09:43:30 +0200 <davean> Profpatsch: I read the manual for every tool thats a major part of what I do
2021-10-22 09:43:43 +0200 <davean> I mean the gcc one was pretty bad
2021-10-22 09:43:59 +0200 <Profpatsch> I mean, good on you
2021-10-22 09:44:15 +0200 <dminuoso> tomsmeding: Honestly I think over the past decades, the velocity of things have trained people to refuse consulting or reading long documents.
2021-10-22 09:44:21 +0200 <Profpatsch> But like, can’t expect everybody to do that (esp if neurodivergent)
2021-10-22 09:44:22 +0200 <dminuoso> Webpages like stackoverflow did great damage in that regard.
2021-10-22 09:44:35 +0200 <Profpatsch> It’s called lazy evaluation
2021-10-22 09:44:45 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-10-22 09:44:57 +0200 <Profpatsch> Plus, UX research has somewhat progressed
2021-10-22 09:45:10 +0200 <davean> Profpatsch: UX has nothing to do with understanding
2021-10-22 09:45:14 +0200 <davean> UX can't think for you
2021-10-22 09:45:18 +0200 <Profpatsch> (although a single greppable html page is somehow still the pinnacle of discoverability …)
2021-10-22 09:45:47 +0200 <davean> You need a library of knowlege to build on
2021-10-22 09:46:00 +0200 <Rembane_> davean: Have you ever considered making a podcast where you review manuals?
2021-10-22 09:46:01 +0200 <davean> if you don't have the basic ideas you can't think the thoughts
2021-10-22 09:46:23 +0200 <Profpatsch> davean: I have the library of all possible books, and I tend to lazily recurse into what seems useful at the time
2021-10-22 09:46:31 +0200 <davean> Rembane_: People would get bored on episode 30 of "I wonder why people wanted this" about the emacs manual
2021-10-22 09:46:36 +0200 <Profpatsch> https://libgen.is/
2021-10-22 09:46:55 +0200 <Rembane_> davean: I would listen! So you would have an audience of > 0 :D
2021-10-22 09:47:32 +0200 <davean> (actually the emacs manual wasn't that long, its just cut up into tiny pieces)
2021-10-22 09:47:41 +0200 <davean> (Theres a lot of non-manual stuff)
2021-10-22 09:47:47 +0200 <Profpatsch> imho the change in how people consume information hasn’t so much to do with stackoverflow
2021-10-22 09:47:51 +0200 <Profpatsch> as it has with the hyperlink
2021-10-22 09:48:06 +0200 <Profpatsch> You don’t *have* to study Tomes front-to-back, so people tend not to
2021-10-22 09:48:06 +0200 <davean> BTW Profpatsch I use to act like you do
2021-10-22 09:48:28 +0200 <davean> But it was after a decade of slowly realizing it had caused a rotten foundation and I was fundimentally worse at the things I did for it that I changed
2021-10-22 09:48:38 +0200 <davean> it was a very slow change
2021-10-22 09:48:59 +0200 <davean> Of realizing having expediently answered a question didn't teach me the principals behind it
2021-10-22 09:51:17 +0200 <davean> Well sorta. I mean thats more broad
2021-10-22 09:51:44 +0200 <davean> eh, the details and nuance are a long discussion and I want to go to bed
2021-10-22 09:52:04 +0200 <tomsmeding> just getting started with the day :)
2021-10-22 09:53:11 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection)
2021-10-22 09:53:26 +0200 <maerwald> the best thing is writing tutorials for others, because then you see all the things you can't explain
2021-10-22 09:53:31 +0200 <Profpatsch> davean: I feel like it’s a complementary approach
2021-10-22 09:53:48 +0200 <Profpatsch> e.g. having to study the whole manual before writing your first line of code is not a good approach
2021-10-22 09:54:16 +0200 <Profpatsch> cause you usually want to evaluate quickly in the beginning before you invest a bunch of time
2021-10-22 09:54:46 +0200 <Profpatsch> but once you decide it’s the way to go and have some initial experience, it makes sense to sit your ass down and actually study the manual
2021-10-22 09:54:46 +0200 <maerwald> depends on the person
2021-10-22 09:54:49 +0200 <davean> more than slightly but less than significantly agree
2021-10-22 09:55:12 +0200 <tomsmeding> ("sort of"?)
2021-10-22 09:55:35 +0200 <Profpatsch> with nix I agree it would have been best to just study the manual
2021-10-22 09:55:52 +0200 <maerwald> there's no right way to learn nix, because it's not a structured ecosystem
2021-10-22 09:55:59 +0200 <Profpatsch> Would have saved me a lot of wtf and being annoyed at how arbitrary it all seemed
2021-10-22 09:56:10 +0200 <maerwald> well, it is arbitrary, that's the point...
2021-10-22 09:56:18 +0200 <maerwald> it grew into all directions
2021-10-22 09:56:21 +0200 <Profpatsch> maerwald: the manuals are rather good, but also poorly structured so it’s hard to see why you want to read them and in what order
2021-10-22 09:56:23 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-10-22 09:56:32 +0200 <davean> maerwald: I think its the truth, and I try not to accept its the point
2021-10-22 09:56:34 +0200 <Profpatsch> But that’s a UX thing again
2021-10-22 09:56:40 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-10-22 09:56:49 +0200 <Profpatsch> GHC also has a User manual and the Haskell standard, and multiple other things
2021-10-22 09:57:11 +0200 <Profpatsch> e.g. knowing the GHC runtime flags is not super useful when you are learning how to HAskell
2021-10-22 09:57:23 +0200 <Profpatsch> esp since you are going to forget them as soon as yo uread them
2021-10-22 09:57:43 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-10-22 09:58:54 +0200 <davean> I'd thought I forgot them
2021-10-22 09:59:02 +0200jumper149(~jumper149@80.240.31.34)
2021-10-22 09:59:03 +0200 <davean> until years later I had a problem and had an idea how to fix it
2021-10-22 09:59:51 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 10:00:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 10:00:57 +0200 <davean> anyway this would be a fun seriously long off topic discussion
2021-10-22 10:01:03 +0200 <davean> but not now and not in #haskell
2021-10-22 10:03:28 +0200 <maerwald> you only need remember one: -fspecialise-aggressively
2021-10-22 10:03:30 +0200 <maerwald> :D
2021-10-22 10:03:39 +0200 <davean> maerwald: :<
2021-10-22 10:04:35 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-10-22 10:04:40 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
2021-10-22 10:05:00 +0200dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-10-22 10:07:22 +0200 <davean> maerwald: So I take it your code doesn't have a lot of loops?
2021-10-22 10:07:35 +0200 <davean> (specificly that reuse class methods in multiple points in the loop)
2021-10-22 10:07:58 +0200 <maerwald> it safed my ass yesterday, optimizing streamly code
2021-10-22 10:08:24 +0200 <davean> Interesting - why wasn't the relivent functions marked INLINABLE?
2021-10-22 10:08:34 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-22 10:09:27 +0200xff0x(~xff0x@2001:1a81:5287:aa00:5b1b:a88f:ea9:b216) (Ping timeout: 258 seconds)
2021-10-22 10:10:18 +0200xff0x(~xff0x@2001:1a81:5287:aa00:b3ce:25bf:d052:b94e)
2021-10-22 10:14:04 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-22 10:16:29 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-10-22 10:16:55 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
2021-10-22 10:17:54 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-22 10:18:35 +0200MoC(~moc@user/moc)
2021-10-22 10:25:46 +0200 <dminuoso> Im using servant to accept a multi-form request, my wai application has a simple logger middleware around it. When I do simple `curl https://url -XPOST -F "data=@./sample.csv"` the logger middleware properly logs some `Content-Disposition: form-data; name="data"; filename="sample.csv"` followed by the blob of that file
2021-10-22 10:25:57 +0200acidjnk_new(~acidjnk@p200300d0c703cb932154b917507392a6.dip0.t-ipconnect.de)
2021-10-22 10:26:14 +0200 <dminuoso> However, when our client sends a request to that same endpoint, the servant multiform part works properly, but the logger middleware acts as if this was no multiform post without any content disposition.
2021-10-22 10:26:50 +0200 <dminuoso> The request happens too rarely that I can simply sniff it the next time
2021-10-22 10:26:59 +0200 <maerwald> davean: there's INLINE everywhere, but if I remove this flag, performance drops from 7.5s to 8.5
2021-10-22 10:27:52 +0200 <dminuoso> Sorry I should have elaborated, servant expects `MultipartForm Mem (MultipartData Mem)`
2021-10-22 10:27:56 +0200 <c_wraith> dminuoso: the middleware would need to read the body to see that info. If something else has already read it, it would only see an empty body
2021-10-22 10:28:05 +0200 <c_wraith> mutability!
2021-10-22 10:29:32 +0200ub(~Thunderbi@178.165.203.151.wireless.dyn.drei.com)
2021-10-22 10:29:53 +0200 <dminuoso> c_wraith: Sure, but that would apply to my request as well as theirs.
2021-10-22 10:29:55 +0200 <dminuoso> It's the same server
2021-10-22 10:30:10 +0200 <dminuoso> Thing Im wondering is, are there multiple styles of multipart form-data that I dont know about?
2021-10-22 10:30:38 +0200 <c_wraith> oh, I missed that. I see.
2021-10-22 10:31:05 +0200 <dminuoso> The confusing thing is, to the logger this is just http and headers.
2021-10-22 10:31:16 +0200jgeerds(~jgeerds@55d40de2.access.ecotel.net)
2021-10-22 10:31:31 +0200xff0x(~xff0x@2001:1a81:5287:aa00:b3ce:25bf:d052:b94e) (Ping timeout: 252 seconds)
2021-10-22 10:31:32 +0200 <c_wraith> is it logging request size?
2021-10-22 10:32:31 +0200xff0x(~xff0x@2001:1a81:5287:aa00:fcfc:7af3:e2b:ab16)
2021-10-22 10:32:51 +0200 <dminuoso> Ohhh hold on.
2021-10-22 10:33:05 +0200 <dminuoso> c_wraith: I think you gave me an idea.
2021-10-22 10:34:23 +0200 <dminuoso> c_wraith: Perfect thanks! The logger middleware in wai-extras seems to only log request bodies if they are smaller than 2KiB.
2021-10-22 10:34:42 +0200 <c_wraith> huh. that makes sense, but I wouldn't have thought of it. Nice find.
2021-10-22 10:34:50 +0200 <tomsmeding> that's really obscure
2021-10-22 10:35:06 +0200Inst(~Inst@2601:6c4:4080:3f80:709e:32b8:8140:3ed0)
2021-10-22 10:35:12 +0200 <tomsmeding> oh _smaller_. I guess that makes sense in a way
2021-10-22 10:35:27 +0200 <c_wraith> it definitely makes sense. it has to buffer anything it reads
2021-10-22 10:35:30 +0200 <dminuoso> It should be configurable.
2021-10-22 10:35:40 +0200 <dminuoso> I dont mind it defaulting to that limit, but I should be able to say "log everything"
2021-10-22 10:35:45 +0200 <c_wraith> and there's no limit on upload size.
2021-10-22 10:35:51 +0200 <dminuoso> Mmm
2021-10-22 10:35:59 +0200 <dminuoso> Well, at least I wanna be able to raise the threshold to something reasonable.
2021-10-22 10:36:00 +0200 <c_wraith> You really don't want someone to be able to make your server buffer multi-gigabyte files
2021-10-22 10:36:17 +0200 <dminuoso> c_wraith: You have to authenticate to that API anyway
2021-10-22 10:36:17 +0200 <c_wraith> yeah, even 100k wouldn't be an issue
2021-10-22 10:36:37 +0200 <dminuoso> I think this is a small fix to wai-extras
2021-10-22 10:36:42 +0200 <c_wraith> I'm less worried about attacks and more worried about bugs. :)
2021-10-22 10:36:44 +0200 <dminuoso> For now Ill simply log the data in the servant handler instead.
2021-10-22 10:37:12 +0200 <dminuoso> c_wraith: This is an API for just a single customer. If they DoS is it, it's their service that is degraded.
2021-10-22 10:37:20 +0200 <dminuoso> It's very simple for us to point fingers then.
2021-10-22 10:37:31 +0200 <c_wraith> heh. With a single user, ok. Once you get a second user....
2021-10-22 10:37:37 +0200 <dminuoso> We wont
2021-10-22 10:37:42 +0200 <dminuoso> This is a dedicated API that only this customer will ever see.
2021-10-22 10:37:53 +0200 <c_wraith> But in any case, you can certainly make it bigger than 2k without risk
2021-10-22 10:38:25 +0200 <dminuoso> Yeah, I can safely just add another field to https://hackage.haskell.org/package/wai-extra-3.1.7/docs/Network-Wai-Middleware-RequestLogger.html…
2021-10-22 10:38:40 +0200 <dminuoso> Some `Maybe Int` should be fine
2021-10-22 10:40:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b5c0:69fb:2ebc:745e) (Remote host closed the connection)
2021-10-22 10:41:36 +0200desantra(~skykanin@user/skykanin)
2021-10-22 10:42:25 +0200coot(~coot@37.30.49.107.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-10-22 10:42:41 +0200desantra(~skykanin@user/skykanin) (Client Quit)
2021-10-22 10:45:44 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 10:46:06 +0200acidjnk_new3(~acidjnk@p200300d0c703cb93c8c758eae23fe552.dip0.t-ipconnect.de)
2021-10-22 10:47:10 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
2021-10-22 10:48:02 +0200gehmehgeh(~user@user/gehmehgeh)
2021-10-22 10:49:31 +0200nehsou^(~nehsou@wsip-68-227-92-38.mc.at.cox.net)
2021-10-22 10:49:42 +0200acidjnk_new(~acidjnk@p200300d0c703cb932154b917507392a6.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-22 10:52:35 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 264 seconds)
2021-10-22 10:57:42 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 260 seconds)
2021-10-22 11:04:58 +0200coot(~coot@37.30.49.107.nat.umts.dynamic.t-mobile.pl)
2021-10-22 11:05:03 +0200alzgh(~alzgh@user/alzgh)
2021-10-22 11:07:23 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2021-10-22 11:08:12 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-10-22 11:16:28 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-10-22 11:19:38 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-22 11:22:58 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 11:27:25 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-10-22 11:30:49 +0200acidjnk_new(~acidjnk@p200300d0c703cb93c8c758eae23fe552.dip0.t-ipconnect.de)
2021-10-22 11:34:10 +0200acidjnk_new3(~acidjnk@p200300d0c703cb93c8c758eae23fe552.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-22 11:41:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f)
2021-10-22 11:45:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f) (Ping timeout: 252 seconds)
2021-10-22 11:55:11 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-10-22 11:56:55 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2021-10-22 11:57:45 +0200michalz(~michalz@185.246.204.41) (Ping timeout: 260 seconds)
2021-10-22 12:03:17 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving)
2021-10-22 12:07:36 +0200 <Profpatsch> Word64 please :)
2021-10-22 12:15:29 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8)
2021-10-22 12:27:45 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 12:30:15 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-10-22 12:30:15 +0200 <dminuoso> Sounds reasonable actually
2021-10-22 12:31:58 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 252 seconds)
2021-10-22 12:43:13 +0200fendor(~fendor@91.141.35.79.wireless.dyn.drei.com)
2021-10-22 12:43:54 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 12:48:29 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-10-22 12:49:08 +0200neurocyte0132889(~neurocyte@213.188.113.91)
2021-10-22 12:49:08 +0200neurocyte0132889(~neurocyte@213.188.113.91) (Changing host)
2021-10-22 12:49:08 +0200neurocyte0132889(~neurocyte@user/neurocyte)
2021-10-22 12:55:30 +0200fusion86(~fusion@2a02-a44c-e6e5-1-309e-d6f5-67ba-dda3.fixed6.kpn.net)
2021-10-22 12:57:17 +0200michalz(~michalz@185.246.204.41)
2021-10-22 12:57:42 +0200mmhat(~mmh@55d497bf.access.ecotel.net)
2021-10-22 13:00:52 +0200alx741(~alx741@186.178.108.23)
2021-10-22 13:03:34 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2021-10-22 13:06:58 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 260 seconds)
2021-10-22 13:15:56 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-22 13:16:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 13:16:29 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2021-10-22 13:19:07 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 13:19:17 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-10-22 13:20:58 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-10-22 13:23:47 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 264 seconds)
2021-10-22 13:24:22 +0200 <fusion86> Hey all. I have a small question about the record syntax and pattern matching. Pattern matching on your record usually results in less code to do the same thing, but when having nested records it can get clusterfucky. In the first snippet the code is small enough so that it doesn't really matter, but for the second snippet it really makes a difference. Which solution would be better? https://paste.tomsmeding.com/ohEg
2021-10-22 13:24:22 +0200 <fusion86> shI4
2021-10-22 13:24:47 +0200 <fusion86> Unfortunate max text size, link -> https://paste.tomsmeding.com/ohEgshI4
2021-10-22 13:25:37 +0200 <Rembane_> fusion86: I'm quite fond of composing the accessor functions, as in the second example
2021-10-22 13:26:13 +0200 <Cajun> this seems like something lens and optics are meant to solve, right?
2021-10-22 13:27:28 +0200 <Rembane_> They do, but they also might be absolutely overwhelming depending on the developer
2021-10-22 13:28:12 +0200 <fusion86> Yeah I am trying to keep it a bit simple because it's also a group project
2021-10-22 13:28:38 +0200 <Rembane_> That seems like a good approach
2021-10-22 13:28:46 +0200 <fusion86> I've already caused enough feature creep :) Though I'll make a mental note to look at those two sometimes later.
2021-10-22 13:28:53 +0200 <Rembane_> :D
2021-10-22 13:28:54 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2021-10-22 13:29:02 +0200 <dminuoso> fusion86: lens/optics provide a language to do this pattern matching.
2021-10-22 13:29:25 +0200 <dminuoso> They are designed precisely for operating on deeply nested data structures.
2021-10-22 13:30:09 +0200 <dminuoso> I dont know the surrounding code, but perhaps they might be worth a lok into
2021-10-22 13:39:40 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-10-22 13:43:18 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f)
2021-10-22 13:46:00 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-10-22 13:47:43 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2021-10-22 13:47:47 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f) (Ping timeout: 264 seconds)
2021-10-22 13:48:48 +0200 <Profpatsch> fusion86: For records I’m quite fond of (&) a f = f a
2021-10-22 13:49:02 +0200 <Profpatsch> foo & barfield & bazfield
2021-10-22 13:49:30 +0200 <Profpatsch> Which is fine as long as you don’t need to update nested records a lot, in that case (micro)lens is a good solution
2021-10-22 13:49:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-22 13:49:32 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd)
2021-10-22 13:50:57 +0200dminuosothinks `optics` should always be mentioned alongside lens.
2021-10-22 13:51:42 +0200 <dminuoso> Their problem domain would already include Prisms, so microlens is not even an option
2021-10-22 13:52:53 +0200 <Cajun> optics (at least the library with the name) is a lot more friendly, good errors and very good documentation
2021-10-22 13:53:08 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2021-10-22 13:53:09 +0200 <Cajun> though isnt it possible to just make your own lenses with zero dependencies by just following the format?
2021-10-22 13:53:10 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-10-22 13:55:25 +0200 <dminuoso> sure, and optics can consume VL style optics too
2021-10-22 13:55:36 +0200 <dminuoso> There's helpers to build the profunctor representation for all (?) of them
2021-10-22 13:57:23 +0200 <Inst> [exa]
2021-10-22 13:57:26 +0200Guest4208(~neo3@cpe-292712.ip.primehome.com)
2021-10-22 13:57:33 +0200 <Inst> I have a friend, she's apparently a champion influencer and she's at CUNY
2021-10-22 13:57:50 +0200 <Inst> I'm selling her Haskell as her first language, with some lies about how Haskell is so incredibly remunerated when it's hard to get a job in Haskell
2021-10-22 13:57:51 +0200 <Franciman> Columbia University of New Yowk?
2021-10-22 13:57:57 +0200 <Inst> City University of New York
2021-10-22 13:58:29 +0200 <Inst> It used to be like UC system, then CUNY had some mandate to accept everyone and they jumped the shark
2021-10-22 13:58:37 +0200 <dminuoso> What is a champion influencer?
2021-10-22 13:58:49 +0200 <Franciman> somebody with a lot of instagram followers?
2021-10-22 13:58:58 +0200 <maerwald> is this still about evangelizing haskell?
2021-10-22 13:59:01 +0200Guest4208neo
2021-10-22 13:59:03 +0200 <Inst> dminuoso: on social media she can get people to listen to what she says, she's notorious for recruiting 1000 people to some webgame
2021-10-22 13:59:06 +0200neoGuest9859
2021-10-22 13:59:12 +0200Guest9859neo3
2021-10-22 13:59:15 +0200 <unit73e> what's the haskell religion called?
2021-10-22 13:59:21 +0200 <unit73e> haskellism?
2021-10-22 13:59:44 +0200 <Inst> I'm wondering if you know anyone at CUNY, who might be able to guide her through independent study, although CUNY is so bad they have Haskell in graduate courses
2021-10-22 13:59:46 +0200 <dminuoso> Inst: Oh so champion is just a qualifier?
2021-10-22 13:59:53 +0200 <Inst> yeah
2021-10-22 13:59:55 +0200 <dminuoso> Inst: For a moment I wasnt sure whether that was a reference to some platform.
2021-10-22 13:59:56 +0200 <Hecate> unit73e: there is a sect called the Church of 𝛈-reduction
2021-10-22 14:00:03 +0200 <maerwald> coding is awful, I always tell people to pick a different career
2021-10-22 14:00:18 +0200 <Inst> it's money
2021-10-22 14:00:19 +0200 <unit73e> Hecate, lol there's always a religion about something
2021-10-22 14:00:28 +0200 <Hecate> unit73e: it's not a real one :P
2021-10-22 14:00:29 +0200 <Inst> alternatives might be to work 72 hours a day at minimum or near minimum wage for 40k a year incomes
2021-10-22 14:00:33 +0200 <dminuoso> maerwald: You generally sound very frustrated. Have you considered carpentry? :>
2021-10-22 14:00:44 +0200 <maerwald> dminuoso: I am an actual brick layer.
2021-10-22 14:00:49 +0200 <unit73e> wait, cuny? seriously?
2021-10-22 14:00:54 +0200 <Inst> also, in theory, if people are fine with adding to the list of people looking and waiting for Haskell jobs
2021-10-22 14:01:01 +0200 <dminuoso> maerwald: By actual, do you mean trained?
2021-10-22 14:01:04 +0200 <maerwald> yes
2021-10-22 14:01:07 +0200 <Inst> we could just deploy her to drag people into an online course
2021-10-22 14:01:09 +0200 <Inst> for haskell
2021-10-22 14:01:13 +0200 <Inst> as a first language / intro level, etc
2021-10-22 14:01:21 +0200 <dminuoso> maerwald: Interesting, how do go from masonry to software development?
2021-10-22 14:01:22 +0200 <Inst> might be able to get 100 students if you're interested in such
2021-10-22 14:01:30 +0200 <maerwald> dminuoso: it felt like the natural thing to do... LOL
2021-10-22 14:01:31 +0200 <unit73e> that's an unfortunate short name for a university
2021-10-22 14:01:40 +0200 <Inst> why?
2021-10-22 14:01:47 +0200 <Inst> I'm an ex-New Yorker. CUNY is perfectly natural.
2021-10-22 14:01:58 +0200 <maerwald> dminuoso: building crap and cheating your customers... it's kinda the same
2021-10-22 14:02:07 +0200 <unit73e> Inst, because cunny also means another thing
2021-10-22 14:02:09 +0200 <Inst> Oh, I think in American slang CUNY -> female genitalia is not a natural association.
2021-10-22 14:02:20 +0200 <dminuoso> maerwald: Except its not. Software development is better because there's absolutely no liability ever.
2021-10-22 14:02:24 +0200 <dminuoso> ;)
2021-10-22 14:02:26 +0200 <maerwald> true
2021-10-22 14:02:38 +0200 <Inst> Female genitalia is a common profanity in British slang, far less so in American English.
2021-10-22 14:02:42 +0200 <maerwald> for mixing concrete wrong you can get into prison in certain circumstances
2021-10-22 14:02:43 +0200 <unit73e> I laught at companies losing millions
2021-10-22 14:02:50 +0200 <unit73e> it's funny
2021-10-22 14:03:07 +0200 <Inst> CUNY happens to be a massive system, though, it's NYC
2021-10-22 14:03:17 +0200 <dminuoso> maerwald: Yeah I bet you can. There's tons of regulations on construction from what I hear.
2021-10-22 14:03:50 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-10-22 14:03:58 +0200 <unit73e> tbf if you cared about bugs involving lots of money you wouldn't sleep at night
2021-10-22 14:04:03 +0200 <dminuoso> Apparently you cant even use cement when its over an hour old?
2021-10-22 14:04:12 +0200 <dminuoso> *concrete
2021-10-22 14:04:45 +0200 <maerwald> "this function was written 4 years ago, can we still use it"
2021-10-22 14:04:46 +0200 <maerwald> xD
2021-10-22 14:04:46 +0200 <unit73e> huh yeah because it will dry
2021-10-22 14:05:03 +0200 <unit73e> that's not common knowledge?
2021-10-22 14:05:06 +0200 <maerwald> I only use frest functions
2021-10-22 14:05:09 +0200 <maerwald> *fresh
2021-10-22 14:05:19 +0200 <dminuoso> unit73e: No it's mostly just arbitrary regulation. After an hour it will not be dried out.
2021-10-22 14:05:31 +0200 <dminuoso> And it's a very conservative threshold
2021-10-22 14:05:36 +0200 <maerwald> dminuoso: there's concrete that hardens in 15 minutes
2021-10-22 14:05:42 +0200 <maerwald> with lots of chemicals
2021-10-22 14:05:45 +0200 <Profpatsch> maerwald: funny thing but I think “this JS framework was written 4 years ago can we still use it”
2021-10-22 14:05:56 +0200 <Profpatsch> is being said thousands if not millions of times per day
2021-10-22 14:06:00 +0200 <dminuoso> maerwald: Interesting, Im guessing there's little to no water involved?
2021-10-22 14:06:09 +0200 <maerwald> it's fun to get those chemicals on your skin
2021-10-22 14:06:13 +0200 <maerwald> (not)
2021-10-22 14:06:21 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 258 seconds)
2021-10-22 14:06:47 +0200 <maerwald> at least while coding I can chill inside without getting burned by chemicals, crushed by cranes and stones etc
2021-10-22 14:06:52 +0200 <dminuoso> Profpatsch: Even in Haskell we started developing these common transitive dependencies that have been unmaintained for a long while.
2021-10-22 14:07:06 +0200 <dminuoso> Some of them are well written to the point it doesnt really matter, but others.. *shrugs*
2021-10-22 14:07:22 +0200 <maerwald> dminuoso: some statistics suggest the likelihood of dying is higher when working in construction compared to going to war
2021-10-22 14:07:44 +0200 <dminuoso> maerwald: and apparently agriculture has one of the highest injury rates ever.
2021-10-22 14:07:53 +0200 <maerwald> in software, it's more about suicide (it's amongst the top 10 suicidal jobs)
2021-10-22 14:07:59 +0200 <dminuoso> But that makes a lot of sense considering that farmers have to handle very large and dangerous equipment on their own every day..
2021-10-22 14:08:12 +0200 <zincy> maerwald: Where is the source for that stat?
2021-10-22 14:08:23 +0200 <maerwald> I read it on the internet lol
2021-10-22 14:08:28 +0200 <zincy> 4chan?
2021-10-22 14:08:34 +0200 <maerwald> not sure if it's a study
2021-10-22 14:09:30 +0200 <zincy> Suicidal jobs sounds like a curious way of raising the unemployment rate
2021-10-22 14:10:06 +0200 <dminuoso> *lowering you mean
2021-10-22 14:10:12 +0200 <dminuoso> people keep freeing up those jobs.
2021-10-22 14:10:35 +0200 <zincy> Suicidal jobs I read as the "job" is suicidal
2021-10-22 14:10:37 +0200 <maerwald> if you must code, avoid fintech and you'll be fine
2021-10-22 14:10:48 +0200 <zincy> Why avoid fintech?
2021-10-22 14:10:58 +0200 <unit73e> dminuoso, it has to be a paste or it will end up being clumps. I do get it that it's convervative
2021-10-22 14:11:04 +0200 <maerwald> I've never been in a more stressful environment than fintech in my entire life
2021-10-22 14:11:12 +0200 <zincy> Really? Tell more
2021-10-22 14:11:34 +0200 <maerwald> well, try it
2021-10-22 14:11:36 +0200 <maerwald> :D
2021-10-22 14:11:39 +0200 <dminuoso> I guess fintech has that extreme wall street mentality of "giving 170% on 22 hours a day"?
2021-10-22 14:11:40 +0200 <zincy> I am :D
2021-10-22 14:11:45 +0200 <dminuoso> With extreme pressure?
2021-10-22 14:11:55 +0200peterhil(~peterhil@dsl-hkibng32-54fb56-2.dhcp.inet.fi) (Ping timeout: 260 seconds)
2021-10-22 14:12:20 +0200 <zincy> Yeah I can imagina some fintechs try and emulate goldman sachs culture
2021-10-22 14:12:45 +0200 <zincy> Most good coders have the luxury of just witching jobs no?
2021-10-22 14:12:49 +0200 <zincy> *switching
2021-10-22 14:12:51 +0200 <unit73e> maerwald, according to urban dictionary "Wall Street will be replaced by fintech some day in the near future."
2021-10-22 14:13:42 +0200 <maerwald> do it when you're young
2021-10-22 14:13:47 +0200 <maerwald> :D
2021-10-22 14:13:55 +0200 <dminuoso> zincy: Yes, no, perhaps.
2021-10-22 14:14:10 +0200 <dminuoso> It depends on your flexibility and what you want.
2021-10-22 14:14:11 +0200 <maerwald> sadly, Haskell is much more prominent in fintech
2021-10-22 14:14:22 +0200 <zincy> Something Something Cardano
2021-10-22 14:14:25 +0200 <dminuoso> I could probably switch a job in a pinch if I dont give a damn about what language or environment I'd work in.
2021-10-22 14:14:50 +0200 <zincy> dminuoso: Yes finding a good job is really hard
2021-10-22 14:14:52 +0200 <dminuoso> Got a couple outstanding offers that Im simply not interested in for one reason or another.
2021-10-22 14:14:57 +0200 <maerwald> zincy: well, Cardano at least has extremly high engineering standards
2021-10-22 14:15:02 +0200 <zincy> If you want to choose the language / culture/ good colleagues
2021-10-22 14:15:17 +0200 <maerwald> I much rather have quality than time pressure
2021-10-22 14:15:23 +0200 <unit73e> usually you don't get perfect everything
2021-10-22 14:15:23 +0200 <zincy> But do they?
2021-10-22 14:15:29 +0200 <maerwald> zincy: yes
2021-10-22 14:15:56 +0200 <zincy> Ok Ill take your word for it
2021-10-22 14:16:05 +0200coot(~coot@37.30.49.107.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-10-22 14:16:21 +0200 <zincy> Have you read Stephen Diehl's blog
2021-10-22 14:16:23 +0200 <unit73e> in my anedoctal experience if you prioritize language in your job you end up having zellot nerds as colleagues
2021-10-22 14:16:35 +0200 <zincy> hahaha ^
2021-10-22 14:16:36 +0200 <maerwald> zincy: pff... I sold my sould to the devil long ago
2021-10-22 14:17:01 +0200 <dminuoso> unit73e: Or more likely, you wont find a job that is close by nearby or has the payment you want.
2021-10-22 14:17:11 +0200 <dminuoso> Or the flexibility you need.
2021-10-22 14:17:31 +0200 <unit73e> that's true as well
2021-10-22 14:17:45 +0200 <dminuoso> I wouldn't want a full presence vacation, for instance. Right now I work 5 days a week from home with a fully flexible time schedule.
2021-10-22 14:17:49 +0200 <zincy> Yeah, hence why I am looking at typescript jobs - bigger pool
2021-10-22 14:17:50 +0200 <dminuoso> To me this is very valuable.
2021-10-22 14:17:53 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 14:18:09 +0200 <maerwald> zincy: I know a haskeller who switched to typescript and never looked back
2021-10-22 14:18:12 +0200 <maerwald> a good haskeller
2021-10-22 14:18:33 +0200 <unit73e> I have mostly worked with Java. It's not a great language but at least you have a lot of offer.
2021-10-22 14:18:36 +0200 <zincy> Tons of jobs in Typescript and you can use some of your knowledge from Haskell. :)
2021-10-22 14:18:40 +0200 <maerwald> yes
2021-10-22 14:18:43 +0200 <maerwald> it's a good choice
2021-10-22 14:18:59 +0200 <maerwald> and it's quite pragmatic
2021-10-22 14:19:10 +0200 <maerwald> you won't be staring at Generics code for 3 hours
2021-10-22 14:19:26 +0200 <maerwald> until you realize you have no idea what's going on
2021-10-22 14:19:51 +0200 <unit73e> clients love typescript programmers because you actually see the results. I work mostly backend so the client is never impressed.
2021-10-22 14:20:14 +0200 <unit73e> except when I spit some 5min frontend code, then the client is impressed :\
2021-10-22 14:20:23 +0200 <janus> unit73e: so clients are super impressed by purescript?
2021-10-22 14:20:28 +0200 <dminuoso> unit73e: So we offload some our tasks to another shop, they do mostly just invisible backend stuff. Im generally impressed with their results.
2021-10-22 14:20:40 +0200 <maerwald> unit73e: managers kinda understand frontend development these days. But they don't understand that you can't apply the same mindset/workflow/practices to backend.
2021-10-22 14:20:40 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2021-10-22 14:20:51 +0200 <dminuoso> But then again, their work is submitted as a PR that I approve... :)
2021-10-22 14:20:57 +0200 <unit73e> janus, if the end result is pretty yes lol
2021-10-22 14:21:38 +0200 <maerwald> deploy often, iterate quickly: yes, for frontend. For backend, I'll go with the opposite: deploy only if you absolutely must, iterate slowly, wait before you understand the data.
2021-10-22 14:22:35 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 264 seconds)
2021-10-22 14:23:37 +0200 <maerwald> but hey, frontend is more stress
2021-10-22 14:23:48 +0200 <maerwald> talking to actual users etc.? Oh god.
2021-10-22 14:24:17 +0200 <maerwald> "do you like this?"
2021-10-22 14:24:24 +0200 <maerwald> "can we make the button green?"
2021-10-22 14:25:09 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
2021-10-22 14:25:11 +0200 <maerwald> or make it perpendicular
2021-10-22 14:25:45 +0200 <zincy> The good thing about backend is your project manager probably doesn't have an opinion on cache invalidation
2021-10-22 14:26:23 +0200 <maerwald> having a project manager being tech-savy is usually worse... you'll have to explain every single decision and everything becomes an argument
2021-10-22 14:27:14 +0200 <zincy> That sounds awful
2021-10-22 14:28:02 +0200 <maerwald> there are only two options: 1. a team with natural synergy or 2. a team with clear hierarchy
2021-10-22 14:28:32 +0200 <maerwald> and 3. open source anarchy
2021-10-22 14:28:32 +0200 <dminuoso> maerwald: tech savvy managing can work perfectly as long as they understand that they are no longer in the process of making technical decisions.
2021-10-22 14:29:06 +0200 <maerwald> dminuoso: right
2021-10-22 14:29:29 +0200 <maerwald> that's the same with parenting
2021-10-22 14:29:33 +0200trainlag1602(~saroa@user/trainlag1602)
2021-10-22 14:29:51 +0200 <dminuoso> In what way?
2021-10-22 14:29:52 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-10-22 14:29:54 +0200 <maerwald> tends to work with a delay of 2 decades
2021-10-22 14:29:58 +0200alzgh(~alzgh@user/alzgh) (Ping timeout: 256 seconds)
2021-10-22 14:30:30 +0200 <dminuoso> Oh yes, as a parent you make pedagogical decisions, irrespective of having a childhood experience your own.
2021-10-22 14:30:38 +0200 <dminuoso> Well some do.
2021-10-22 14:30:50 +0200mei6(~mei@user/mei)
2021-10-22 14:30:54 +0200 <maerwald> tech is about emotions
2021-10-22 14:31:05 +0200 <dminuoso> My current emotion is extremely negative.
2021-10-22 14:31:09 +0200 <maerwald> although we pretend we're all scientist nerds
2021-10-22 14:31:10 +0200mei(~mei@user/mei) (Ping timeout: 260 seconds)
2021-10-22 14:31:11 +0200mei6mei
2021-10-22 14:31:14 +0200 <dminuoso> Something-something-django-something-something
2021-10-22 14:31:25 +0200 <zincy> Pythonic!
2021-10-22 14:31:52 +0200 <maerwald> dminuoso: I actually picked python over haskell for a microservice :D
2021-10-22 14:31:56 +0200 <zincy> Duplication is better than abstraction
2021-10-22 14:32:46 +0200 <maerwald> like, the input data was absolute trash... I needed something that's good with xml and that I can code up in 4 hours
2021-10-22 14:32:47 +0200neo3(~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 264 seconds)
2021-10-22 14:32:48 +0200 <maerwald> -> python
2021-10-22 14:33:13 +0200 <maerwald> no point in desinging anything when the input is trash
2021-10-22 14:34:20 +0200 <maerwald> Also, I think django swallows every 200 requests or so
2021-10-22 14:34:37 +0200 <maerwald> sometimes a request just fails and the next one works
2021-10-22 14:34:51 +0200 <maerwald> close enough, lets ship
2021-10-22 14:34:57 +0200 <dminuoso> maerwald: Ive not been impressed with the django ecosystem. The websockets stuff is horrendously bad.
2021-10-22 14:35:17 +0200 <zincy> Concurrency in python is so odd
2021-10-22 14:35:25 +0200 <maerwald> I found it lovely... my test suited ended up 5 times as big as the actual implementatiooon
2021-10-22 14:35:30 +0200 <dminuoso> Perhaps
2021-10-22 14:35:56 +0200 <maerwald> but if it's low-maintenance, I don't see a point for Haskell
2021-10-22 14:36:02 +0200 <maerwald> where I OCD over details
2021-10-22 14:36:15 +0200 <dminuoso> maerwald: Right now Ive been spending 2 hours on some "oh there's an N+1 query. add prefetch_related..." and that worsened the N+1 by 2 orders of magnitude.
2021-10-22 14:36:26 +0200 <dminuoso> So yeah..
2021-10-22 14:36:31 +0200 <dminuoso> This is very high maintenance. :P
2021-10-22 14:36:38 +0200 <dminuoso> But then again, the entire project is of non-trivial size
2021-10-22 14:37:02 +0200 <maerwald> another good reason to pick python over haskell: selenium
2021-10-22 14:37:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 14:37:27 +0200 <dminuoso> maerwald: honestly you can also simply do a mixing of both.
2021-10-22 14:37:48 +0200 <dminuoso> But for web development things are not particularly pretty in haskell yeah
2021-10-22 14:37:56 +0200 <dminuoso> Yesod hasnt convinced me, and there's nothing else
2021-10-22 14:38:03 +0200 <maerwald> 1. relying on undermaintained haskell bindings, why? 2. why would I need strong types for a procedural/imperative test configuration
2021-10-22 14:38:11 +0200 <dminuoso> For APIs you can get away with some basic libraries just fine
2021-10-22 14:38:37 +0200 <zincy> dimunoso: Why are web programs in Haskell not pretty?
2021-10-22 14:38:37 +0200 <maerwald> I have the same opinion about propellor... there even is a Debian type
2021-10-22 14:38:50 +0200 <maerwald> and I never figured out why I need types for that sort of configuration
2021-10-22 14:38:54 +0200 <maerwald> it never prevented real bugs
2021-10-22 14:39:39 +0200 <maerwald> if then else combined with ++ can give you real bugs :)
2021-10-22 14:40:06 +0200 <zincy> Haskell is great for web dev because most of it is concurency and de/serialisation
2021-10-22 14:40:16 +0200 <zincy> But it isnt "pretty" haskell
2021-10-22 14:40:35 +0200 <zincy> In the same way a compiler for lambda calculus is pretty
2021-10-22 14:41:05 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 14:41:37 +0200 <maerwald> > if False then [1] else [2] ++ [4]
2021-10-22 14:41:39 +0200 <lambdabot> [2,4]
2021-10-22 14:41:45 +0200 <maerwald> now imagine the ++ is on the next line
2021-10-22 14:41:51 +0200 <maerwald> carefully aligned
2021-10-22 14:41:52 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-22 14:41:54 +0200 <maerwald> will you realise it?
2021-10-22 14:42:33 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-22 14:42:54 +0200 <dminuoso> 14:38:37 zincy | dimunoso: Why are web programs in Haskell not pretty?
2021-10-22 14:43:06 +0200 <dminuoso> There's only yesod, and that's all very opinionated.
2021-10-22 14:43:14 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi)
2021-10-22 14:43:25 +0200 <dminuoso> If you dont like shakespear, I dont know whether there are any reasonable alternatives
2021-10-22 14:43:27 +0200 <maerwald> this is where a linter would actually help... not these nonsensical hlint rules, but here telling me "do you understand the precedence here? Do you really mean that?"
2021-10-22 14:43:37 +0200 <zincy> dminuoso: Servant?
2021-10-22 14:43:54 +0200 <dminuoso> servant is okayish for APIs
2021-10-22 14:43:58 +0200alzgh(~alzgh@user/alzgh)
2021-10-22 14:44:05 +0200 <dminuoso> But it doesnt have much else for web development
2021-10-22 14:44:15 +0200 <zincy> Yeah barebones
2021-10-22 14:44:25 +0200 <dminuoso> And in fact if you treat HTTP seriously, servant is very cumbersome because its very poor on the semantic side
2021-10-22 14:44:28 +0200 <dminuoso> like cache control
2021-10-22 14:44:29 +0200 <zincy> So you mean Haskell lacks a killer web framework
2021-10-22 14:44:46 +0200 <dminuoso> I dont think a "killer <anything> framework" really exists in any language
2021-10-22 14:44:48 +0200 <zincy> As in Elixir has Phoenix (which seems very good)
2021-10-22 14:45:05 +0200 <dminuoso> I actually wrote some elixir stuff in phoenix, incidentally that was my gateway drug to Haskell
2021-10-22 14:45:30 +0200 <dminuoso> At the end I got so annoyed by the lack of any static analysis (dialyzr has awful gibberish output)...
2021-10-22 14:45:37 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-10-22 14:45:50 +0200 <zincy> Yeah
2021-10-22 14:46:01 +0200 <dminuoso> Combined with very magical things like |> being implemented as a macro, which means it "magically" doesnt work in all the places you'd expect it to, and generate awful diagnostics when it doesnt...
2021-10-22 14:46:13 +0200 <dminuoso> To me it caused a lot of frustrationg
2021-10-22 14:46:18 +0200 <dminuoso> But I can see how people might enjoy elixir
2021-10-22 14:46:27 +0200 <dminuoso> It just wasn't the right fit for me
2021-10-22 14:46:42 +0200 <zincy> Yeah the dynamic typing is annoying
2021-10-22 14:46:47 +0200 <vaibhavsagar[m]> what do you mean about servant being poor on the semantic side?
2021-10-22 14:46:52 +0200 <zincy> But seems like they have a ton of well maintained libaries for web
2021-10-22 14:46:55 +0200 <dminuoso> zincy: also, much of phoenix - in particular ecto - is just tons of tons of macros piled ontop of each other.
2021-10-22 14:46:57 +0200 <vaibhavsagar[m]> it's a DSL for APIs
2021-10-22 14:47:01 +0200trainlag1602(~saroa@user/trainlag1602) ()
2021-10-22 14:47:05 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-10-22 14:47:06 +0200 <dminuoso> zincy: which generally makes for a horrible user experience
2021-10-22 14:47:21 +0200 <dminuoso> vaibhavsagar[m]: HTTP is a deeply semantic protocol.
2021-10-22 14:47:37 +0200 <maerwald> vaibhavsagar[m]: it's also an actual server
2021-10-22 14:47:49 +0200 <maerwald> and uses wai under the hood
2021-10-22 14:47:59 +0200 <vaibhavsagar[m]> yes, I know that
2021-10-22 14:48:01 +0200 <jumper149> vaibhavsagar[m]: Some parts of the HTTP protocol don't translate nicely to a servant API. For example returning a different status like 400, can't be represented in the API.
2021-10-22 14:48:01 +0200 <zincy> dminuoso: I was wondering about when is the right time to create a DSL, seems like coders like to implement them a lot just because they are fun)
2021-10-22 14:48:04 +0200 <dminuoso> vaibhavsagar[m]: So say if you have a servant client, and the server sets a cache control header, do you imagine the servant client will respect that? :-)
2021-10-22 14:48:07 +0200trainlag1602(~saroa@user/trainlag1602)
2021-10-22 14:48:08 +0200 <maerwald> so it's NOT just a DSL
2021-10-22 14:48:18 +0200 <jumper149> Not trivially at least.
2021-10-22 14:48:46 +0200 <dminuoso> vaibhavsagar[m]: Mind you, I use servant heavily in some of our projects. I like what its good at, but I can definitely see its problems.
2021-10-22 14:49:14 +0200 <vaibhavsagar[m]> sure, I'm not trying to defend Servant, I haven't used it at all in a while
2021-10-22 14:49:17 +0200 <zincy> dminuoso: What is your favourite alternative to servant?
2021-10-22 14:49:21 +0200 <vaibhavsagar[m]> but I was curious about what you meant
2021-10-22 14:49:31 +0200 <dminuoso> zincy: the swagger ecosystem is mostly similar
2021-10-22 14:49:51 +0200 <dminuoso> And you get more guaranteed interop from it
2021-10-22 14:50:06 +0200 <zincy> Sorry similar to ... ?
2021-10-22 14:50:08 +0200 <dminuoso> Since swagger generators/tools are available for a plethora of langauges
2021-10-22 14:50:12 +0200 <dminuoso> zincy: to servant.
2021-10-22 14:50:17 +0200 <maerwald> jumper149: but there's UVerb now
2021-10-22 14:50:23 +0200 <zincy> Oh yeah
2021-10-22 14:50:28 +0200 <dminuoso> You can think of servant as simply being code generics
2021-10-22 14:50:37 +0200 <dminuoso> It just generates some boilerplate code around some API
2021-10-22 14:50:56 +0200 <maerwald> jumper149: https://github.com/haskell-servant/servant/pull/1314
2021-10-22 14:51:19 +0200 <dminuoso> vaibhavsagar[m]: I think HTTP being a semantic protocol is part in why I dislike it being used for APIs so much
2021-10-22 14:51:28 +0200 <dminuoso> It's a wild abuse for the purpose of re-using tooling and authentication
2021-10-22 14:51:33 +0200 <maerwald> https://github.com/haskell-servant/servant/blob/master/doc/cookbook/uverb/UVerb.lhs
2021-10-22 14:51:46 +0200bartavelle(~bartavell@2001:41d0:1:744c::1)
2021-10-22 14:51:58 +0200 <vaibhavsagar[m]> yeah, that's fair
2021-10-22 14:52:06 +0200 <vaibhavsagar[m]> I've used servant a bit at previous jobs
2021-10-22 14:52:23 +0200 <vaibhavsagar[m]> it seemed like it choked when I wanted a JSON body in a non-200 response
2021-10-22 14:52:42 +0200 <vaibhavsagar[m]> which AFAICT is definitely possible according to HTTP semantics
2021-10-22 14:53:04 +0200 <vaibhavsagar[m]> but you had to contort servant into a pretzel to get it to do that
2021-10-22 14:53:16 +0200 <jumper149> maerwald: Nice, that's pretty cool!
2021-10-22 14:53:54 +0200 <zincy> I remember auth headers being a pain in Servant
2021-10-22 14:54:06 +0200 <zincy> When trying to generate swagger docs
2021-10-22 14:54:18 +0200bartavelle(~bartavell@2001:41d0:1:744c::1) ()
2021-10-22 14:54:34 +0200reumeth(~reumeth@user/reumeth)
2021-10-22 14:55:05 +0200 <zincy> Are there any good articles about the design space of building a web framework?
2021-10-22 14:55:13 +0200 <zincy> As in what tradeoffs are at play
2021-10-22 14:55:48 +0200jgeerds(~jgeerds@55d40de2.access.ecotel.net) (Ping timeout: 258 seconds)
2021-10-22 14:56:12 +0200 <maerwald> yes
2021-10-22 14:57:12 +0200 <maerwald> https://haskell-servant.github.io/posts/2018-07-12-servant-dsl-typelevel.html
2021-10-22 14:57:32 +0200 <maerwald> the alternative would have been TH
2021-10-22 14:57:46 +0200 <maerwald> the motivation was to *generate* clients
2021-10-22 14:58:02 +0200 <maerwald> something many people forget when they pick servant, thinking it's the only choice
2021-10-22 14:58:30 +0200 <maerwald> if you don't generate clients or do other stuff like auto-generating swagger from the types
2021-10-22 14:58:34 +0200 <maerwald> what's the point even
2021-10-22 14:59:03 +0200 <maerwald> I think for internal API, this matters very little
2021-10-22 14:59:16 +0200 <maerwald> the types are an interface for tools
2021-10-22 14:59:55 +0200acidjnk_new(~acidjnk@p200300d0c703cb93c8c758eae23fe552.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-22 15:00:40 +0200python476(~user@88.160.31.174)
2021-10-22 15:01:24 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-10-22 15:01:44 +0200coot(~coot@37.30.49.107.nat.umts.dynamic.t-mobile.pl)
2021-10-22 15:02:36 +0200hendursaga(~weechat@user/hendursaga)
2021-10-22 15:02:47 +0200 <adamCS> Anyone using emacs with hls and the autocomplete suggestion list thing gets very (very) slow? Is there a way to turn it off or somehow shorten the list of suggestions (if that's the issue)?
2021-10-22 15:03:41 +0200python476agumonkey
2021-10-22 15:07:07 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-10-22 15:08:03 +0200 <Profpatsch> I’m in the camp of generating source from swagger/openapi definitions in a typed language, and using that in your client code.
2021-10-22 15:08:23 +0200 <jumper149> maerwald: I just looked at UVerb. One could argue that is glued on top of servant and isn't nicely integrated (yet?). Also I'm not saying that servant can't be extended to someday represent all of the HTTP protocol nicely on the type level.
2021-10-22 15:10:21 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 15:10:31 +0200 <zincy> maerwald: I found the generation to be a bit lacking for reasonml at least.
2021-10-22 15:11:57 +0200burakcank(burakcank@has.arrived.and.is.ready-to.party)
2021-10-22 15:13:21 +0200jespada(~jespada@2803:9800:9842:7a62:c904:aff:1e1a:fc0a)
2021-10-22 15:14:46 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 252 seconds)
2021-10-22 15:16:00 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-22 15:16:36 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 15:17:43 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2021-10-22 15:21:11 +0200 <Franciman> is there any material about using LinearTypes extension?
2021-10-22 15:24:16 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-10-22 15:24:49 +0200delipickle(~delipickl@097-086-022-157.res.spectrum.com)
2021-10-22 15:25:22 +0200 <xerox> this is a start I guess https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0111-linear-types.rst
2021-10-22 15:25:55 +0200 <Franciman> I want to understand if lineartypes can allow me to stop using the garbage collector
2021-10-22 15:25:57 +0200 <Franciman> thanks xerox
2021-10-22 15:26:53 +0200 <adamCS> Another Pipes question: is there a way to do "joinProducer :: m (Producer a m ()) -> Producer a m ()"?
2021-10-22 15:27:43 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-22 15:27:55 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 15:27:56 +0200vpan(~0@212.117.1.172) (Quit: Leaving.)
2021-10-22 15:28:34 +0200__monty__(~toonn@user/toonn)
2021-10-22 15:28:35 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 264 seconds)
2021-10-22 15:29:39 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2021-10-22 15:29:39 +0200lavaman(~lavaman@98.38.249.169) (Read error: Connection reset by peer)
2021-10-22 15:30:01 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 15:30:32 +0200 <vaibhavsagar[m]> Franciman: they can't, AFAICT linear types haven't been integrated with the garbage collector at all
2021-10-22 15:30:48 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2021-10-22 15:30:52 +0200 <Franciman> thanks vaibhavsagar[m]
2021-10-22 15:31:00 +0200 <Franciman> this makes me relieved
2021-10-22 15:31:22 +0200 <Franciman> I was afraid there was something cool I could not achieve
2021-10-22 15:31:26 +0200 <Franciman> but now I know I just need to wait
2021-10-22 15:32:32 +0200max22-(~maxime@2a01cb0883359800a17b4351977e7c2e.ipv6.abo.wanadoo.fr)
2021-10-22 15:35:47 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Ping timeout: 264 seconds)
2021-10-22 15:36:47 +0200 <vaibhavsagar[m]> AFAIK the current status is "look at this cool thing we can make the type system do" instead of "here's how you can actually use this to manage resources"
2021-10-22 15:37:14 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi) (Ping timeout: 260 seconds)
2021-10-22 15:37:18 +0200 <Franciman> getting the same vibe, tbf
2021-10-22 15:37:58 +0200fusion86(~fusion@2a02-a44c-e6e5-1-309e-d6f5-67ba-dda3.fixed6.kpn.net) (Quit: Leaving)
2021-10-22 15:38:12 +0200CiaoSen(~Jura@p200300c95730dd002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-10-22 15:38:53 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
2021-10-22 15:42:43 +0200Inst_(~Inst@2601:6c4:4080:3f80:e9cf:d82f:5daa:fcc1)
2021-10-22 15:44:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f)
2021-10-22 15:47:11 +0200Inst(~Inst@2601:6c4:4080:3f80:709e:32b8:8140:3ed0) (Ping timeout: 264 seconds)
2021-10-22 15:47:42 +0200 <maerwald> are you saying it's all marketing for a company? :p
2021-10-22 15:48:20 +0200 <Franciman> V lang made us learn a lot of things
2021-10-22 15:48:56 +0200Sgeo(~Sgeo@user/sgeo)
2021-10-22 15:49:20 +0200 <vaibhavsagar[m]> society if V lang actually delivered even 50% of what it promised
2021-10-22 15:49:35 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f) (Ping timeout: 264 seconds)
2021-10-22 15:50:03 +0200 <Hecate> vaibhavsagar[m]: hahahahaha
2021-10-22 15:50:07 +0200 <Hecate> clearly
2021-10-22 15:50:14 +0200 <Franciman> ahahahahah
2021-10-22 15:50:47 +0200 <Hecate> https://joannakarpowicz.pl/ I love the Anubis
2021-10-22 15:51:55 +0200 <vaibhavsagar[m]> does anyone else remember how they sold it as "fully statically linked" and when it was revealed they had a dependency on glibc the project owner said "well i meant statically linked except for system libraries"
2021-10-22 15:52:12 +0200 <vaibhavsagar[m]> yeah, nice work, that's totally what those words mean
2021-10-22 15:52:46 +0200 <vaibhavsagar[m]> i would be less annoyed if they hadn't called it V lang, since I go by V in most places
2021-10-22 15:52:54 +0200 <maerwald> vaibhavsagar[m]: he meant you can go through hoops and link with musl. Clearly
2021-10-22 15:52:56 +0200 <merijn> I don't blame him, who the fuck wants to fight with linking glibc statically :p
2021-10-22 15:53:47 +0200 <gehmehgeh> V lang?
2021-10-22 15:53:49 +0200 <maerwald> technically not a lie
2021-10-22 15:53:56 +0200 <vaibhavsagar[m]> > compiles to native binaries without any dependencies
2021-10-22 15:53:56 +0200 <vaibhavsagar[m]> https://vlang.io/
2021-10-22 15:53:58 +0200 <lambdabot> error:
2021-10-22 15:53:58 +0200 <lambdabot> Variable not in scope:
2021-10-22 15:53:58 +0200 <lambdabot> compiles
2021-10-22 15:54:01 +0200 <vaibhavsagar[m]> nonsense
2021-10-22 15:54:37 +0200 <merijn> Just blame your decision to support OpenBSD if you need an excuse to not link libc dynamically >.>
2021-10-22 15:54:58 +0200 <Franciman> oh i love the new v webpage
2021-10-22 15:55:11 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-10-22 15:55:45 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi)
2021-10-22 15:55:49 +0200 <merijn> I mean, if your website looks that sleek, you're spending to much time on the marketing and not enough on the implementation ;)
2021-10-22 15:56:02 +0200 <vaibhavsagar[m]> > This tool already supports C and will soon support the latest standard of notoriously complex C++. It does full automatic conversion to human readable code.
2021-10-22 15:56:16 +0200 <merijn> lol
2021-10-22 15:56:21 +0200 <vaibhavsagar[m]> this is literally impossible
2021-10-22 15:56:27 +0200 <maerwald> looks like it was meant as competition to C++
2021-10-22 15:56:31 +0200 <merijn> Tell me you don't know C++, without telling me you don't know C++
2021-10-22 15:56:39 +0200 <vaibhavsagar[m]> I guess on a long enough timescale everything is "soon"
2021-10-22 15:57:15 +0200 <vaibhavsagar[m]> or maybe what they mean by "human readable code" is assembly, which is technically human readable I guess
2021-10-22 15:57:18 +0200 <Franciman> so now I want to add a -XVmode extension to haskell
2021-10-22 15:57:24 +0200 <Franciman> with all the features coming SOON
2021-10-22 15:57:38 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 15:58:11 +0200 <vaibhavsagar[m]> Nim, Zig, and Rust are all players in that space
2021-10-22 15:58:18 +0200 <vaibhavsagar[m]> and none of the devs involved there make grandiose promises they can't keep
2021-10-22 15:58:26 +0200 <maerwald> I like Jai language better (from Jonathan Blow), which is ONLY marketing. None of the code is published xD
2021-10-22 15:58:39 +0200 <vaibhavsagar[m]> call it -XLinearDependentTypes
2021-10-22 15:58:50 +0200 <maerwald> Supposedly, he's been working on Jai since 2014
2021-10-22 15:58:59 +0200 <maerwald> held several talks about it over the years
2021-10-22 15:59:03 +0200 <maerwald> but there's no *CODE*
2021-10-22 15:59:23 +0200 <lortabac> ahah roc is a good competitor too, zero published code, plenty of conferences with amazing benchmarks
2021-10-22 15:59:41 +0200 <merijn> I mean, Jonathan Blow isn't an engineer, he's an "artiste", why would you expect a serious general language from him?
2021-10-22 15:59:44 +0200 <vaibhavsagar[m]> hah fair, Roc is pretty new though
2021-10-22 16:00:21 +0200 <lortabac> I'm always amazed by the marketing skills of these people
2021-10-22 16:00:21 +0200Guest22(~Guest22@wificampus-098210.grenet.fr)
2021-10-22 16:00:59 +0200 <merijn> lortabac: Well, they have time, 'cause not programming :p
2021-10-22 16:01:38 +0200 <lortabac> in the case of Roc it seems the product is for real, we'll see in a couple of years
2021-10-22 16:02:01 +0200 <vaibhavsagar[m]> all you have to do is convince one foolish CS grad student that your ideas contain at least one PhD
2021-10-22 16:02:11 +0200 <vaibhavsagar[m]> and they'll do the implementation for you
2021-10-22 16:02:11 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 264 seconds)
2021-10-22 16:02:17 +0200bontaq`(~user@ool-45779fe5.dyn.optonline.net)
2021-10-22 16:02:17 +0200 <merijn> I mean, anyone doing a phd is foolish by definition...
2021-10-22 16:02:29 +0200 <Franciman> phoolish doctor
2021-10-22 16:02:33 +0200 <vaibhavsagar[m]> good point
2021-10-22 16:02:37 +0200 <Guest22> if I have a parser p in Parsec/Megaparsec, is there a helper function to simply do something like `Text -> Parser a -> Bool` telling me if the parser matches the given string? without having the pull the full runParser?
2021-10-22 16:03:10 +0200 <Franciman> Guest22: I think you want isRight . runParser ?
2021-10-22 16:03:12 +0200 <Guest22> parseTest looks like a good fit but that still involves exceptions
2021-10-22 16:03:21 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-10-22 16:03:54 +0200 <Guest22> but if I get a Left I will still have an exception to handle
2021-10-22 16:04:10 +0200 <merijn> how so?
2021-10-22 16:04:19 +0200 <merijn> :t either (const False) (const True)
2021-10-22 16:04:20 +0200 <lambdabot> Either b1 b2 -> Bool
2021-10-22 16:04:22 +0200 <merijn> Solved
2021-10-22 16:04:37 +0200 <Franciman> :t runParser
2021-10-22 16:04:39 +0200 <lambdabot> error: Variable not in scope: runParser
2021-10-22 16:04:40 +0200 <Franciman> sad
2021-10-22 16:04:56 +0200 <vaibhavsagar[m]> isRight . runParser "-"
2021-10-22 16:05:50 +0200 <vaibhavsagar[m]> since runParser takes the name of the source file as its first argument
2021-10-22 16:06:25 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-10-22 16:06:50 +0200ArtVandelayer(~ArtVandel@ip174-68-147-20.lv.lv.cox.net) (Ping timeout: 260 seconds)
2021-10-22 16:07:17 +0200 <Guest22> :t isRight
2021-10-22 16:07:19 +0200 <lambdabot> Either a b -> Bool
2021-10-22 16:07:32 +0200 <Guest22> oh oh nevermind! thanks
2021-10-22 16:07:33 +0200 <vaibhavsagar[m]> oh actually \parser string -> isRight $ runParser parse "-" string
2021-10-22 16:07:35 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-10-22 16:08:37 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-22 16:08:37 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-22 16:08:37 +0200wroathe(~wroathe@user/wroathe)
2021-10-22 16:09:01 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2021-10-22 16:10:31 +0200 <merijn> hah, I think I just Fairbairned isRight. I'm proud of myself :p
2021-10-22 16:11:02 +0200Guest22(~Guest22@wificampus-098210.grenet.fr) (Quit: Client closed)
2021-10-22 16:13:44 +0200 <Franciman> you what
2021-10-22 16:15:11 +0200 <merijn> Franciman: "The Fairbairn threshold is the point at which the effort of looking up or keeping track of the definition is outweighed by the effort of rederiving it or inlining it."
2021-10-22 16:15:21 +0200 <maerwald> merijn: I use `either` and `maybe` much more than fromMaybe etc
2021-10-22 16:15:48 +0200 <Franciman> lolz
2021-10-22 16:15:49 +0200 <Franciman> takk
2021-10-22 16:16:16 +0200 <merijn> maerwald: I use fromMaybe sometimes still, when I don't directly do anything with the result, but probably at least 50/50 for Maybe
2021-10-22 16:16:30 +0200 <maerwald> maybe foo id
2021-10-22 16:16:32 +0200 <merijn> I don't use the fromLeft/fromRight...ever, I think?
2021-10-22 16:16:39 +0200bontaq`bontaq
2021-10-22 16:17:10 +0200 <maerwald> because here the naming is crystal clear
2021-10-22 16:17:16 +0200 <maerwald> `fromMaybe` already confuses me
2021-10-22 16:18:14 +0200 <maerwald> > :t listToMaybe
2021-10-22 16:18:15 +0200xsperry(~xs@user/xsperry) (Ping timeout: 265 seconds)
2021-10-22 16:18:16 +0200 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
2021-10-22 16:18:20 +0200 <maerwald> :t listToMaybe
2021-10-22 16:18:21 +0200 <lambdabot> [a] -> Maybe a
2021-10-22 16:18:22 +0200 <maerwald> even worse
2021-10-22 16:18:43 +0200 <Franciman> natural transformation, i reckon
2021-10-22 16:18:45 +0200xsperry(~xs@user/xsperry)
2021-10-22 16:18:46 +0200 <merijn> Entirely unrelatedly
2021-10-22 16:18:54 +0200 <merijn> Is it two's complement or twos' complement?
2021-10-22 16:19:06 +0200 <Franciman> first
2021-10-22 16:19:40 +0200 <merijn> Franciman: That's my instinct to, but the internet also says my instinct for one's complement is wrong and that it is ones' complement
2021-10-22 16:20:28 +0200 <Franciman> we say
2021-10-22 16:20:35 +0200 <Franciman> complemento a due
2021-10-22 16:20:38 +0200 <Franciman> ah
2021-10-22 16:20:54 +0200 <Franciman> i just recongized the the plural of due is due
2021-10-22 16:21:02 +0200 <Franciman> so no clu anymore :O
2021-10-22 16:24:02 +0200dyeplexer(~dyeplexer@user/dyeplexer)
2021-10-22 16:24:53 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2021-10-22 16:26:06 +0200ubert(~Thunderbi@178.165.203.151.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-22 16:26:06 +0200ububert
2021-10-22 16:26:40 +0200trainlag1602(~saroa@user/trainlag1602) (Ping timeout: 260 seconds)
2021-10-22 16:29:00 +0200zebrag(~chris@user/zebrag)
2021-10-22 16:35:17 +0200 <janus> % :m +Data.Time.Clock Data.Time.Calendar Data.Time
2021-10-22 16:35:18 +0200 <yahb> janus:
2021-10-22 16:35:27 +0200trainlag1602(~saroa@user/trainlag1602)
2021-10-22 16:35:28 +0200 <janus> % toEnum minBound :: Day
2021-10-22 16:35:28 +0200 <yahb> janus: -25252734927764696-04-22
2021-10-22 16:35:57 +0200 <janus> why was it chosen to provide an Enum instance for Day when it can construct invalid values?
2021-10-22 16:36:19 +0200jstolarek(~jstolarek@137.220.120.162)
2021-10-22 16:37:24 +0200 <kritzefitz> Why would that day be invalid?
2021-10-22 16:39:14 +0200 <janus> ooh maybe it isn't. i had assumed that because zero is 1858-11-17. hadn't considered the concept of negative julian dates, this date seems a weird choice if negative values are also allowed. it could just have been 0000-00-00
2021-10-22 16:41:15 +0200 <janus> or Jan 1st :P oh well
2021-10-22 16:41:25 +0200 <janus> ok, good to know it can be negative. thanks!
2021-10-22 16:46:46 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-10-22 16:47:15 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 16:48:44 +0200segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net)
2021-10-22 16:48:48 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi)
2021-10-22 16:49:40 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-22 16:49:56 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 16:50:04 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-22 16:50:30 +0200trainlag1602(~saroa@user/trainlag1602) (Ping timeout: 260 seconds)
2021-10-22 16:50:47 +0200ubert(~Thunderbi@178.165.203.151.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-22 16:51:34 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 252 seconds)
2021-10-22 16:52:39 +0200 <davean> janus: no theres good reason its that date
2021-10-22 16:53:22 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-10-22 17:00:46 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 258 seconds)
2021-10-22 17:07:33 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi) (Ping timeout: 265 seconds)
2021-10-22 17:08:37 +0200mud(~mud@user/kadoban) (Quit: quit)
2021-10-22 17:10:51 +0200trainlag1602(~saroa@user/trainlag1602)
2021-10-22 17:12:49 +0200mud(~mud@user/kadoban)
2021-10-22 17:14:16 +0200trainlag1602(~saroa@user/trainlag1602) (Remote host closed the connection)
2021-10-22 17:20:34 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 17:21:57 +0200delipickle_(~delipickl@gateway/vpn/pia/delipickle)
2021-10-22 17:22:45 +0200delipickle_(~delipickl@gateway/vpn/pia/delipickle) (Client Quit)
2021-10-22 17:24:34 +0200delipickle(~delipickl@097-086-022-157.res.spectrum.com) (Ping timeout: 260 seconds)
2021-10-22 17:25:35 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-10-22 17:25:42 +0200NotIndonesian(znc@Indonesians.are.sick.bnc.HUNTERS.thats.bad.mn) (Remote host closed the connection)
2021-10-22 17:29:13 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-10-22 17:29:38 +0200zmt00(~zmt00@user/zmt00)
2021-10-22 17:32:58 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-10-22 17:33:35 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2021-10-22 17:34:23 +0200 <maerwald> https://github.com/composewell/streamly/blob/master/docs/streamly-vs-async.md
2021-10-22 17:34:29 +0200 <maerwald> hmm, I never tried to use streamly for async
2021-10-22 17:34:52 +0200 <maerwald> apparently it's equipped for that
2021-10-22 17:34:52 +0200Guest81(~Guest81@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-10-22 17:35:13 +0200 <shapr> davean: what is that good reason?
2021-10-22 17:35:23 +0200 <Guest81> what is an idiomatic way to write a one-to-one map using only base?
2021-10-22 17:35:25 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f)
2021-10-22 17:36:08 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 17:36:18 +0200 <Guest81> a function (or whatever really) that can be ran on its inputs as well as its outputs
2021-10-22 17:36:51 +0200 <Rembane_> Guest81: Data.Map twice, and swap keys and values for the second one
2021-10-22 17:36:57 +0200 <Guest81> like an f and f^-1, somehow running my case/of in reverse ... I hope I'm making sense
2021-10-22 17:37:58 +0200 <merijn> Guest81: Sounds like you mean an isomorphism?
2021-10-22 17:38:08 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184)
2021-10-22 17:38:39 +0200 <merijn> Guest81: And isomorphism is a pair of functions 'f' and 'g where "f(g(x)) = x" and "g(f(x)) = x" for all 'x'
2021-10-22 17:38:40 +0200 <Guest81> yes! an isomorphism, objective function you name it. But I really don't want to add unecessary dependencies to my little project
2021-10-22 17:38:56 +0200 <Guest81> bijective*
2021-10-22 17:39:32 +0200 <merijn> I mean, you can just do "newtype Isomorphism a b = Isomorphism (a -> b, b -> a)"?
2021-10-22 17:40:31 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 252 seconds)
2021-10-22 17:40:36 +0200 <Guest81> I totally agree .. except it's overkill for me if I'm only using it for one function
2021-10-22 17:41:03 +0200 <merijn> What's overkill?
2021-10-22 17:41:11 +0200 <Guest81> how would swap keys and values on a Data.Map though? https://hackage.haskell.org/package/containers-0.6.5.1/docs/Data-Map.html
2021-10-22 17:41:25 +0200 <merijn> You don't, and also, that's not in base :p
2021-10-22 17:42:07 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:70bb:31e2:9b65:43) (Quit: WeeChat 2.8)
2021-10-22 17:42:25 +0200 <Guest81> oh so I must've misunderstood what Rembane_ said
2021-10-22 17:42:36 +0200son0p(~ff@181.136.122.143)
2021-10-22 17:43:08 +0200 <merijn> I mean, you can write a bunch of code that converts the Map to a list of tuples, swap the tuples and build a new map
2021-10-22 17:46:55 +0200 <davean> shapr: thats 2400000 days from the Julian Day
2021-10-22 17:47:02 +0200 <davean> er
2021-10-22 17:47:07 +0200 <davean> shapr: thats 2400000.5 days from the Julian Day
2021-10-22 17:47:36 +0200 <davean> It aligns it with the standard UTC day edge, and rescales it to the standard day magnitude
2021-10-22 17:50:11 +0200 <geekosaur> janus, I'd also point out that the year starting on 1 Jan is actually fairly recent. like England used 25 Mar for a long time, and other places used other dates
2021-10-22 17:50:25 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-10-22 17:50:46 +0200 <davean> geekosaur: well the Julian Day is actually Jan 1st
2021-10-22 17:50:57 +0200 <merijn> And in some places it still doesn't start on 1 January :p
2021-10-22 17:51:12 +0200 <geekosaur> the calendar came from rome, I'd not be surprised if 1 Jan did too
2021-10-22 17:51:13 +0200 <merijn> Hell, it doesn't even start on the same gregorian date every year in some places
2021-10-22 17:51:16 +0200 <davean> So the Julian calendar *is* Jan 1st aligned
2021-10-22 17:51:31 +0200 <davean> and we're talking Julian days here
2021-10-22 17:51:34 +0200 <Rembane_> Guest81: It's my fault, I hoped that Data.Map was in base, but it itsn't. :)
2021-10-22 17:51:57 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi)
2021-10-22 17:52:57 +0200 <janus> % addUTCTime (-1) (UTCTime (toEnum minBound) 0)
2021-10-22 17:52:57 +0200 <yahb> janus: -25252734927764696-04-21 23:59:59 UTC
2021-10-22 17:53:55 +0200 <janus> i wonder if that is also valid given that it contains a day that can't be constructed from an enum.. hmm
2021-10-22 17:54:22 +0200 <merijn> I mean the best solution is to just forget Enum exists >.>
2021-10-22 17:54:29 +0200 <merijn> It's a deeply problematic and bad class >.>
2021-10-22 17:54:44 +0200 <merijn> Just, like, never assume that toEnum does anything remotely sensible
2021-10-22 17:54:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f) (Remote host closed the connection)
2021-10-22 17:54:53 +0200 <janus> but what is the better way to construct Day then?
2021-10-22 17:55:08 +0200 <davean> Day?
2021-10-22 17:55:25 +0200 <merijn> For what purpose?
2021-10-22 17:55:44 +0200 <davean> pattern YearDay :: Year -> DayOfYear -> Day
2021-10-22 17:56:03 +0200 <merijn> There's a number of function for constructing Days, yeah
2021-10-22 17:56:27 +0200 <janus> how is YearDay used? not too familiar with patterns
2021-10-22 17:56:47 +0200 <merijn> janus: Pattern synonyms are basically "fake" constructors
2021-10-22 17:56:54 +0200econo(uid147250@user/econo)
2021-10-22 17:56:56 +0200 <janus> % :t YearDay
2021-10-22 17:56:57 +0200 <yahb> janus: ; <interactive>:1:1: error: Data constructor not in scope: YearDay
2021-10-22 17:57:01 +0200 <merijn> Allowing you to expose custom patterns you can match on
2021-10-22 17:57:10 +0200 <merijn> janus: So you use it like a constructor
2021-10-22 17:57:32 +0200 <merijn> "foo (YearDay year day) = .." "foo :: Day -> ..."
2021-10-22 17:57:45 +0200 <merijn> Of "YearDay 2021 156"
2021-10-22 17:58:09 +0200 <janus> but then that's deconstructing? why can't yahb see it?
2021-10-22 17:58:52 +0200 <janus> davean: seems to me like the Day constructor isn't exposed. if that is what you suggested when you said "Day?"
2021-10-22 17:59:07 +0200 <davean> janus: it is exposed via the pattern I offered
2021-10-22 17:59:18 +0200 <davean> yahb is dumb?
2021-10-22 18:00:22 +0200 <janus> ok, let's assume i have a local ghci session (much smarter than yahb, right? ;). how do i make a Day using YearDay?
2021-10-22 18:00:51 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 18:01:33 +0200 <merijn> "YearDay 2021 156" done
2021-10-22 18:02:13 +0200 <merijn> % import Data.Time.Calendar.OrdinalDate
2021-10-22 18:02:13 +0200 <yahb> merijn:
2021-10-22 18:02:20 +0200 <merijn> % YearDay 2021 156
2021-10-22 18:02:20 +0200 <yahb> merijn: ; <interactive>:74:1: error: Data constructor not in scope: YearDay :: t0 -> t1 -> t
2021-10-22 18:02:30 +0200 <merijn> Ah, I guess it doesn't work for constructing
2021-10-22 18:02:33 +0200pavonia(~user@user/siracusa)
2021-10-22 18:02:49 +0200 <merijn> I mean, there's also just:
2021-10-22 18:03:00 +0200 <merijn> % fromOrdinalDate 2021 156
2021-10-22 18:03:00 +0200 <yahb> merijn: 2021-06-05
2021-10-22 18:03:17 +0200 <janus> but it says "bidirectional abstract consturctor". so i thought bidirectionality means construction/destruction
2021-10-22 18:03:32 +0200 <merijn> janus: I mean, yahb might just have an old version of time
2021-10-22 18:03:58 +0200lbseale(~lbseale@user/ep1ctetus)
2021-10-22 18:04:18 +0200 <Hecate> hi lbseale :)
2021-10-22 18:04:24 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 258 seconds)
2021-10-22 18:05:15 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-10-22 18:06:38 +0200 <merijn> Once I become a millionair I'll just pay someone to document my code so I don't have to do it myself >.>
2021-10-22 18:06:47 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f)
2021-10-22 18:07:01 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-22 18:07:13 +0200 <janus> ooh ok. this works: cabal repl -b time==1.11; :m +Data.Time.Calendar.OrdinalDate; :t case undefined of YearDay a b -> a
2021-10-22 18:07:49 +0200 <lbseale> Hecate: salut
2021-10-22 18:07:50 +0200 <janus> and 1.11 is from October 2020, so pretty new
2021-10-22 18:08:18 +0200 <janus> i had somehow assumed that the feature would be available with the stock time on GHC 9, but that is not the case
2021-10-22 18:08:36 +0200 <davean> ... a year old is new?
2021-10-22 18:08:44 +0200 <merijn> davean: I mean, sure
2021-10-22 18:09:12 +0200 <janus> if we call GHC 9 new, we must also call time 1.11 new ;)
2021-10-22 18:09:15 +0200 <davean> But yes, YearDay is bidirectional
2021-10-22 18:09:21 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 18:09:21 +0200 <davean> I wouldn't call GHC 9 new
2021-10-22 18:09:25 +0200 <merijn> I would
2021-10-22 18:09:35 +0200 <merijn> I'm not using it yet :p
2021-10-22 18:09:38 +0200 <dolio> I'm still using 8. :þ
2021-10-22 18:09:39 +0200 <davean> I'm working on moving to 9.2
2021-10-22 18:10:01 +0200 <merijn> dolio: Nothing wrong with 8.10 :p
2021-10-22 18:11:50 +0200 <davean> If you haven't updated to 9.0 at this point, I'd think you'd just skip it
2021-10-22 18:11:56 +0200max22-(~maxime@2a01cb0883359800a17b4351977e7c2e.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-10-22 18:11:59 +0200 <merijn> davean: I probably will
2021-10-22 18:12:11 +0200 <dolio> I have it installed. I just don't think I've used it.
2021-10-22 18:12:17 +0200 <davean> GHC 9 wasn't a glorious release IMO
2021-10-22 18:12:47 +0200 <merijn> I haven't installed it yet, because I haven't had time to update my personal projects yet (still need to migrate most of them away from Travis CI >.>)
2021-10-22 18:12:52 +0200 <dolio> Skipping X.0 versions isn't such a bad idea in general. :)
2021-10-22 18:13:16 +0200 <davean> dolio: I agree and 9.0 is quite skippable
2021-10-22 18:13:17 +0200 <merijn> And the only "work" project I have will probably never get 9.x support, tbh
2021-10-22 18:13:29 +0200 <merijn> Unless it happens to "Just Work (TM)" with minor bounds fiddling
2021-10-22 18:13:57 +0200 <davean> EOL?
2021-10-22 18:14:59 +0200 <merijn> davean: Well, assuming minimal procrastination from me tonight/this weekend, the thesis goes to the committee on Tuesday and seeing as no one's paying my, I've running a severe "fucks" deficit :p
2021-10-22 18:15:21 +0200 <davean> so yes, EOL :-p
2021-10-22 18:15:33 +0200 <merijn> Arguably it's been EOL since it started :p
2021-10-22 18:16:46 +0200 <davean> There was still stuff to prove with it then
2021-10-22 18:18:46 +0200 <lbseale> I have a ByteString that I am trying to pipe to a little shell program that takes input on stdin, and puts its output to stdout. When I call it with `createProcess`, it hangs and never finishes. How do I get it to finish?
2021-10-22 18:18:48 +0200 <davean> merijn: what is the thesis?
2021-10-22 18:18:51 +0200 <merijn> Actually, it's only fairly recently reached the point I can *start* proving stuff ;)
2021-10-22 18:19:03 +0200 <merijn> davean: But in classic phd fashion, that happened after money ran out
2021-10-22 18:19:21 +0200wonko(~wjc@62.115.229.50)
2021-10-22 18:19:21 +0200 <lbseale> I don't understand unix pipes well enough to know what is going on with it
2021-10-22 18:19:46 +0200 <geekosaur> lbseals, do you ever close the pipe handle?
2021-10-22 18:19:47 +0200 <merijn> davean: Ostensibly graph processing on GPUs, in practice it's more about "jesus, everyone in empirical computer science is shite at science, so let me figure out how to do that first" :p
2021-10-22 18:19:55 +0200 <geekosaur> lbseale ^^
2021-10-22 18:20:18 +0200 <merijn> geekosaur: 10 dollar says you're right ;)
2021-10-22 18:20:38 +0200 <geekosaur> programs fed through pipes buffer their output so it's just waiting for more data, probably
2021-10-22 18:20:38 +0200 <lbseale> geekosaur: I have tried that, but it seems like it never gets past the line where it's reading from stdOut
2021-10-22 18:21:10 +0200 <lbseale> I'm not sure which ByteString function to use to read it
2021-10-22 18:21:11 +0200 <merijn> lbseale: code?
2021-10-22 18:21:25 +0200mei(~mei@user/mei) (Read error: Connection reset by peer)
2021-10-22 18:21:33 +0200 <geekosaur> oh, you're trying to do open3-type stuff. you need either the writer or the reader in a thread if either the input or the output is larger than the system pipe buffer, because it'll hang otherwise
2021-10-22 18:21:47 +0200 <geekosaur> you need to read and write at the same time to avoid deadlock
2021-10-22 18:22:13 +0200 <lbseale> https://paste.tomsmeding.com/0Ko5iJuT
2021-10-22 18:22:23 +0200 <lbseale> this represents every hack I tried at the end of the day yesterday
2021-10-22 18:22:57 +0200 <lbseale> I can't remember what I did, but I also got it to do something where it ran out of memory
2021-10-22 18:23:04 +0200 <merijn> And the shell script?
2021-10-22 18:23:46 +0200 <merijn> I mean, if the output is huge, it might be blocked on writing output
2021-10-22 18:23:47 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2021-10-22 18:23:52 +0200 <lbseale> it's this thing: https://metacpan.org/dist/JSON-PP/view/bin/json_pp
2021-10-22 18:24:11 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd)
2021-10-22 18:24:31 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 252 seconds)
2021-10-22 18:24:44 +0200 <merijn> oh
2021-10-22 18:24:45 +0200 <lbseale> I know that I could probably use aeson-pretty but it will be a hassle for me to get it installed and I'm curious to figure this out now
2021-10-22 18:24:53 +0200 <merijn> You should close stdIn before reading from stdOut
2021-10-22 18:24:59 +0200 <lbseale> aha!
2021-10-22 18:25:04 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-22 18:25:07 +0200 <merijn> Fat chance the process won't produce output until it finishes reading
2021-10-22 18:25:20 +0200 <merijn> If you're blocked reading the process blocks indefinitely for more input
2021-10-22 18:25:37 +0200 <merijn> So, effectively, you're not close stdin :p
2021-10-22 18:25:42 +0200 <merijn> *closing
2021-10-22 18:25:44 +0200 <lbseale> makes sense
2021-10-22 18:26:44 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-22 18:27:37 +0200 <lbseale> heyyy that worked! Thanks merijn !
2021-10-22 18:31:16 +0200 <lbseale> merijn: do I need to close stdOut after? Or do some other cleanup action?
2021-10-22 18:31:35 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-10-22 18:32:23 +0200 <Guest81> I'm not too sure how class instances work but can I override them?
2021-10-22 18:32:33 +0200 <Guest81> something like Pretty here:
2021-10-22 18:32:33 +0200 <geekosaur> Guest81, no
2021-10-22 18:32:34 +0200 <Guest81> https://hackage.haskell.org/package/prettyprinter-1.7.1/docs/Prettyprinter.html
2021-10-22 18:32:41 +0200 <merijn> Guest81: You can't
2021-10-22 18:33:22 +0200 <Guest81> So if pretty Bool is already defined, how could I "customize" it for my formatter?
2021-10-22 18:33:35 +0200 <Guest81> suppose I want pretty True == "true"
2021-10-22 18:33:48 +0200 <Guest81> I may be missing something
2021-10-22 18:35:30 +0200 <merijn> Use a newtype of write your own function to serialise it that doesn't use the Pretty instance
2021-10-22 18:35:56 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-10-22 18:36:08 +0200 <Guest81> but how do I lift whatever I end up with into Doc ann ?
2021-10-22 18:36:15 +0200 <merijn> Like, you don't *have* to use the Pretty instance, you can also do 'case myBool of True -> "true"; False -> "false"'
2021-10-22 18:36:16 +0200alzgh(~alzgh@user/alzgh)
2021-10-22 18:36:57 +0200 <merijn> Doc has an OverloadedStrings instance
2021-10-22 18:38:02 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-10-22 18:38:38 +0200 <Guest81> that works, could I also use viaShow? As that uses Strings, I think it would hurt prettyprinter as it was made to only use Text
2021-10-22 18:39:12 +0200 <merijn> But viaShow will to the same thing as just "pretty" for Bool?
2021-10-22 18:39:17 +0200 <merijn> > show True
2021-10-22 18:39:20 +0200 <lambdabot> "True"
2021-10-22 18:39:40 +0200 <Guest81> oh .. I can't override Show for Bool either, yikes!
2021-10-22 18:40:34 +0200 <Guest81> um using OverloadedStrings only works if I write literals, is that right?
2021-10-22 18:41:06 +0200zer0bitz(~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi)
2021-10-22 18:41:07 +0200 <Guest81> I can't just convert a Text to Doc ...
2021-10-22 18:41:29 +0200 <merijn> I mean, you can just do "pretty" on Text
2021-10-22 18:41:40 +0200 <merijn> Which will just take it "as-is"
2021-10-22 18:43:20 +0200 <Guest81> so I could just do `case boolean of True -> pretty "true" ...`
2021-10-22 18:43:27 +0200 <merijn> yeah
2021-10-22 18:43:46 +0200 <Guest81> that's enough flexibility for me :^)
2021-10-22 18:44:29 +0200 <Guest81> I can finally scrap my crappy Show instances
2021-10-22 18:45:25 +0200CiaoSen(~Jura@p200300c95730dd002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-10-22 18:45:59 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 264 seconds)
2021-10-22 18:47:04 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-22 18:48:49 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-22 18:49:44 +0200emf(~emf@2620:10d:c090:400::5:bb17)
2021-10-22 18:50:45 +0200aa(~douglasco@200.146.85.128.static.gvt.net.br) (Quit: Leaving)
2021-10-22 18:53:26 +0200ArtVandelayer(~ArtVandel@ip174-68-147-20.lv.lv.cox.net)
2021-10-22 18:53:46 +0200 <janus> Guest81: you can also make newtypes and then make your instances on them
2021-10-22 18:53:59 +0200 <janus> ah right, merijn said that at 18:35
2021-10-22 18:54:00 +0200mbuf(~Shakthi@136.185.83.238) (Quit: Leaving)
2021-10-22 18:54:29 +0200 <Guest81> janus: oh I haven't thought of that, and I guess I didn't understand what merijn meant by it
2021-10-22 18:54:34 +0200 <Guest81> very sneaky
2021-10-22 18:55:10 +0200 <janus> Guest81: consider why there are Sum and Product newtypes
2021-10-22 18:55:21 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi)
2021-10-22 18:56:53 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-10-22 18:57:11 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 19:04:22 +0200 <shapr> Does anyone have a good way to handle haddock errors for an automated hoogle rebuild?
2021-10-22 19:06:08 +0200jkaye(~jkaye@2601:281:8300:7530:8275:c2bd:871b:678c)
2021-10-22 19:06:57 +0200 <c_wraith> another day, another wish b -> (a -> [a] -> b) -> [a] -> b was in base
2021-10-22 19:10:56 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 245 seconds)
2021-10-22 19:17:47 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-10-22 19:18:58 +0200spopooi(~spopooi@2804:431:cfea:8190:1e39:18d9:9d9e:69d4)
2021-10-22 19:24:09 +0200pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-10-22 19:24:37 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 19:26:45 +0200turlando(~turlando@user/turlando) (Ping timeout: 265 seconds)
2021-10-22 19:26:55 +0200pfurla(~pfurla@216.151.180.27) (Ping timeout: 260 seconds)
2021-10-22 19:26:57 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-10-22 19:26:57 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-10-22 19:26:57 +0200turlando(~turlando@user/turlando)
2021-10-22 19:27:13 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds)
2021-10-22 19:27:55 +0200 <dsal> Is there an easy way to see what all amazing things I'm missing in ghc by being on an older version?
2021-10-22 19:28:43 +0200 <dsal> I generally dislike smaller numbers but I feel like quantifying that might be good. :)
2021-10-22 19:29:03 +0200turlando(~turlando@user/turlando) (Read error: Connection reset by peer)
2021-10-22 19:29:07 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-10-22 19:29:34 +0200heath1heath
2021-10-22 19:30:37 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-10-22 19:30:37 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-10-22 19:30:37 +0200turlando(~turlando@user/turlando)
2021-10-22 19:31:20 +0200 <jkaye> What version are you using?
2021-10-22 19:31:24 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi)
2021-10-22 19:33:22 +0200 <dsal> 8.4.4
2021-10-22 19:33:37 +0200 <dsal> Some older nix snapshot
2021-10-22 19:36:05 +0200piele_piele
2021-10-22 19:37:49 +0200 <jkaye> Lots of changes from there to current, but the biggest will be in the release note highlights for 9.0.1, which you can find here: https://downloads.haskell.org/ghc/9.0.1-rc1/docs/html/users_guide/9.0.1-notes.html
2021-10-22 19:40:03 +0200 <c_wraith> and I'd recommend not using 9.0.1. 8.10.7 is in better shape. 9.0 has a lot of bugs that we're apparently just waiting on 9.2 to get fixed
2021-10-22 19:40:31 +0200coot(~coot@37.30.49.107.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-10-22 19:41:18 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-22 19:41:58 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-22 19:44:06 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-22 19:45:35 +0200Psybur(~Psybur@mobile-166-170-29-82.mycingular.net)
2021-10-22 19:46:11 +0200 <geekosaur> 9.2.1 currently has a codegen bug on ARM, but as keeps happening to it, it's raised even bigger issues
2021-10-22 19:46:44 +0200 <geekosaur> they're currently worried that they will have to scrap and redo all the sub-word codegen
2021-10-22 19:48:56 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-22 19:49:53 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f) (Remote host closed the connection)
2021-10-22 19:52:09 +0200 <c_wraith> ah, so that's what's holding up 9.2
2021-10-22 19:52:44 +0200hololeap(~hololeap@user/hololeap)
2021-10-22 19:53:54 +0200 <geekosaur> sub-word support is a huge change to ghc, it's always been word-based
2021-10-22 19:54:23 +0200 <geekosaur> but m1 native codegen needs proper sub-word support
2021-10-22 19:54:25 +0200 <c_wraith> is this like sub-word field sizes in data?
2021-10-22 19:54:50 +0200 <geekosaur> yeh
2021-10-22 19:55:04 +0200 <c_wraith> uh-oh, maybe field order important!
2021-10-22 19:55:05 +0200 <geekosaur> affects all FFI etc.
2021-10-22 19:55:08 +0200 <c_wraith> *making
2021-10-22 19:55:11 +0200 <hololeap> extractKnown t = case extract t of
2021-10-22 19:56:05 +0200 <hololeap> how can I use LambdaCase here to avoid naming `t`?
2021-10-22 19:56:30 +0200 <monochrom> Can't. Consider pattern guards or view patterns.
2021-10-22 19:56:44 +0200 <c_wraith> you'd need to put the entire case in parens to be like (\case .....) . extract
2021-10-22 19:56:57 +0200 <geekosaur> yeh, I was thinking becheaty with a vuiew pattern to do the extract and then you can lambdacase
2021-10-22 19:57:05 +0200 <geekosaur> or that
2021-10-22 19:57:52 +0200 <c_wraith> putting the whole thing in parens is the worst option available. :P
2021-10-22 19:58:30 +0200fusion86(~fusion@2a02-a44c-e6e5-1-2ff7-7242-c0bf-93e9.fixed6.kpn.net)
2021-10-22 19:59:51 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-10-22 19:59:56 +0200 <c_wraith> I used a view pattern today. It felt weird, but it's part of the standard now. I should get over it.
2021-10-22 20:00:05 +0200 <c_wraith> err. pattern guard.
2021-10-22 20:00:08 +0200 <c_wraith> not view pattern
2021-10-22 20:00:21 +0200 <dsal> Every time I've used a view pattern, it didn't seem to make anything really better.
2021-10-22 20:00:32 +0200 <c_wraith> view patterns are clearly awesome
2021-10-22 20:00:39 +0200 <c_wraith> pattern guards are the sketchy ones
2021-10-22 20:01:01 +0200 <dsal> I use pattern guards a lot. :)
2021-10-22 20:01:03 +0200 <c_wraith> well... view patterns when combined with pattern synonyms
2021-10-22 20:01:24 +0200 <dsal> Oh. Yeah, just doing them explicitly usually makes things that you could just as easily make without.
2021-10-22 20:01:28 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee)
2021-10-22 20:01:41 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-10-22 20:01:50 +0200 <fusion86> Hey all, I once again come to seek wisdom. Why some something like this not get caught by the compiler/linter? https://paste.tomsmeding.com/JDBcANE1
2021-10-22 20:02:19 +0200 <c_wraith> pattern guards just make me sad because they have weird scoping rules.
2021-10-22 20:03:08 +0200 <fusion86> And is there a way to enforce a function to only accept a 'RecordA' instance, and not a 'RecordB'? Because when you just take a 'Thing' you could get either of those.
2021-10-22 20:03:08 +0200 <c_wraith> fusion86: I'd be all for forbidding record syntax with multiple constructors, but I don't think it's a thing that's ever seriously been considered
2021-10-22 20:04:13 +0200 <fusion86> Because I used that syntax in my game project like this. Would it be better to write it in another way then? https://paste.tomsmeding.com/QfpsgAy9
2021-10-22 20:04:15 +0200 <dsal> https://gitlab.haskell.org/ghc/ghc/-/issues/7169 left me a bit confused.
2021-10-22 20:04:19 +0200 <c_wraith> fusion86: the underlying problem is caused by making RecordA and RecordB the same type
2021-10-22 20:04:57 +0200 <c_wraith> fusion86: separate them into their own types, then have a sum type over that. Sure it adds an extra level of constructor, but it lets you actually express what you mean
2021-10-22 20:05:18 +0200 <dsal> You could also just not name them.
2021-10-22 20:05:24 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-10-22 20:05:52 +0200hololeap(~hololeap@user/hololeap)
2021-10-22 20:05:58 +0200 <c_wraith> dsal: that doesn't help with the follow-up asking how to say something should only accept a RecordA
2021-10-22 20:06:30 +0200 <dsal> Oh, right. You limit what types things can accept by making them different types. :)
2021-10-22 20:07:07 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184) (Remote host closed the connection)
2021-10-22 20:07:08 +0200 <dsal> The partial record thing is a bit of an annoyance.
2021-10-22 20:08:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-10-22 20:08:50 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2021-10-22 20:08:56 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-22 20:09:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 20:09:49 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2021-10-22 20:10:27 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184)
2021-10-22 20:10:39 +0200 <monochrom> Do you really have functions, at the design level (so, not at the detailed coding level), that really says it doesn't want RecordB.
2021-10-22 20:11:41 +0200 <monochrom> Because at this point I don't trust that this is not the XY problem of "the only reason I'm asking is because I want to use a field name as a function and I want it total".
2021-10-22 20:12:20 +0200 <monochrom> which is an artifact of a flawed way of coding, not a consequence of the design.
2021-10-22 20:13:46 +0200 <monochrom> If your have two cases and they have fundamentally disjoint field names, such as in Scene...
2021-10-22 20:14:23 +0200 <monochrom> I can respect the field names serving a self-documentation purpose. I mean "data T = C1 Int Int Int | C2 Int Int Int Int Int Int" is very unhelpful.
2021-10-22 20:15:05 +0200 <monochrom> But then I can't understand in what sense "field names are function names" is meaningful.
2021-10-22 20:15:08 +0200 <fusion86> Not really I think. I was writing a renderPlayer function which takes both a 'World' and a 'Player' type. But the 'Gameplay' world has a player inside it, so I started thinking what would happen if I used the record accessor function on 'World' type which does not have a player.
2021-10-22 20:15:22 +0200peterhil(~peterhil@mobile-access-2e846e-36.dhcp.inet.fi) (Ping timeout: 260 seconds)
2021-10-22 20:15:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-22 20:15:52 +0200 <fusion86> At the bottom of this link https://medium.com/@willkurt/why-sum-types-matter-in-haskell-ba2c1ab4e372 is that the sum types you were talking about?
2021-10-22 20:15:53 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 258 seconds)
2021-10-22 20:16:12 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 20:16:36 +0200 <fusion86> Honestly most of my field names are there for self-documentation purposes though, is that a bad thing?
2021-10-22 20:16:47 +0200 <hololeap> > I was thinking be cheaty with a view pattern to do the extract and then you can lambdacase -- geekosaur, can you show me an example of this?
2021-10-22 20:17:05 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2021-10-22 20:17:25 +0200tfeb(~tfb@88.98.95.237)
2021-10-22 20:18:01 +0200 <merijn> fusion86: Sounds like you want -XNoFieldSelectors which should be in 9.2, I think?
2021-10-22 20:18:29 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f)
2021-10-22 20:18:34 +0200 <merijn> fusion86: Then you can reuse fieldnames without clashes, because it eliminates the implicit functions
2021-10-22 20:18:59 +0200 <merijn> -XNoFieldSelectors is one of the few extensions I'm actually excited about, unlike stuff like LinearHaskell :p
2021-10-22 20:19:45 +0200 <fusion86> And in the rare case where I would want to have such a function I just implement it myself? Or is there some magic for that too?
2021-10-22 20:19:45 +0200 <hololeap> this actually works, although it may trigger nerd rage in some individuals: http://sprunge.us/42nMnn
2021-10-22 20:20:12 +0200 <merijn> fusion86: You just implement it yourself, yeah
2021-10-22 20:20:21 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184) (Remote host closed the connection)
2021-10-22 20:20:34 +0200 <dsal> hololeap: I'm not sure that introduces clarity. :)
2021-10-22 20:20:41 +0200 <geekosaur> extractKnown (extract t -> t') = \case ... -- guess it's not actuallyt an improvement :(
2021-10-22 20:20:56 +0200 <merijn> You could rewrite that to just use regular case of and it'd be infinitely easier
2021-10-22 20:21:19 +0200 <monochrom> geekosaur: "this is getting out of hand. now there are two of them!"
2021-10-22 20:21:51 +0200 <dsal> Isn't it just `extractKnown (extract -> t) = ...` ?
2021-10-22 20:22:02 +0200 <dsal> You still have `t`, but you no longer have to call `extract` on it.
2021-10-22 20:22:05 +0200 <geekosaur> maybe?
2021-10-22 20:22:09 +0200 <merijn> monochrom: We should replace more educational material with memes :p
2021-10-22 20:22:12 +0200 <monochrom> failing to eliminate t, now we have t' too, and Star Wars episode I
2021-10-22 20:22:31 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184)
2021-10-22 20:22:47 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 240 seconds)
2021-10-22 20:24:07 +0200Guest81(~Guest81@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds)
2021-10-22 20:24:45 +0200 <shapr> Is there a recipe for building haddock + hoogle in Jenkins (or other CI) and then emitting the results onto a server where I can run the hoogle server?
2021-10-22 20:25:03 +0200 <agumonkey> anybody knows about naperian functors ?
2021-10-22 20:25:33 +0200 <merijn> I'm gonna go with "yes"
2021-10-22 20:25:51 +0200 <hololeap> also, just want to give a shout-out to the hasklig font. cool stuff :)
2021-10-22 20:26:30 +0200tfeb(~tfb@88.98.95.237) (Quit: died)
2021-10-22 20:26:49 +0200 <agumonkey> merijn: I've been trying to read about them but couldn't find "easy" enough material
2021-10-22 20:27:00 +0200 <agumonkey> if you know some, feel free to slap me with it like a large truit
2021-10-22 20:27:22 +0200 <merijn> Oh, I've never heard about them, but I just assume someone knows about those ;)
2021-10-22 20:27:22 +0200 <dolio> They're probably another word someone invented for representable functors.
2021-10-22 20:27:51 +0200 <c_wraith> yes, they're the same as representable functors
2021-10-22 20:27:56 +0200 <agumonkey> yeah one blog mentioned they were derived from repr
2021-10-22 20:28:07 +0200 <agumonkey> merijn: I found about it on a book by gibbons and hinze IIRC
2021-10-22 20:28:18 +0200 <hololeap> @hackage naperian
2021-10-22 20:28:18 +0200 <lambdabot> https://hackage.haskell.org/package/naperian
2021-10-22 20:28:26 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 260 seconds)
2021-10-22 20:28:26 +0200 <hololeap> "Efficient representable functors"
2021-10-22 20:28:38 +0200 <agumonkey> so i'm not on a quest for repr functors
2021-10-22 20:28:40 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-10-22 20:29:10 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-10-22 20:31:10 +0200 <agumonkey> man functors are fascinating
2021-10-22 20:31:19 +0200 <agumonkey> i get barely nothing but I like adjoint functors
2021-10-22 20:31:28 +0200MQ-17J(~MQ-17J@2607:fb90:47:70f6:3994:460d:fb23:b675)
2021-10-22 20:31:31 +0200notzmv(~zmv@user/notzmv)
2021-10-22 20:33:21 +0200dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-10-22 20:37:53 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d)
2021-10-22 20:39:43 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 20:44:30 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-10-22 20:44:59 +0200neo3(~neo3@cpe-292712.ip.primehome.com)
2021-10-22 20:45:36 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-10-22 20:46:35 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 264 seconds)
2021-10-22 20:50:27 +0200 <fusion86> Is it possible to use GHC 9.2 with stack? The latest stackage snapshot only goes up to 9.0.1
2021-10-22 20:50:47 +0200 <merijn> No clue
2021-10-22 20:50:56 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-22 20:51:40 +0200timCF(~timCF@m91-129-111-87.cust.tele2.ee)
2021-10-22 20:52:20 +0200 <jkaye> Looks like even nightly is on 9.0.1, so not that I am aware of
2021-10-22 20:52:37 +0200 <geekosaur> there are ways to force stack to use 9.2 prerelease. it would then be on you to constrain versions to get a functioning "resolver"
2021-10-22 20:52:59 +0200 <jkaye> geekosaur: how would you do something like that? Mostly just interested
2021-10-22 20:53:14 +0200 <geekosaur> I would assume fpcomplete is waiting for a working 9.2.1 release
2021-10-22 20:53:34 +0200 <geekosaur> since currently there are only prereleases and various of those have problems
2021-10-22 20:55:07 +0200 <geekosaur> I'm not a stack user so I can't give details off the top of my head but there's a command line option and corresponding stack.yaml entry to specify a compiler which in this case would be 9.2.0.<date>
2021-10-22 20:55:30 +0200 <geekosaur> I don't recall how you constrain versions to get packages that willl work with that compiler
2021-10-22 20:57:09 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-10-22 20:57:29 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 20:58:45 +0200aegon(~mike@174.127.249.180)
2021-10-22 20:59:37 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-22 21:00:18 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-10-22 21:01:33 +0200 <fusion86> In case anyone is interested, I used this config to get it 'working' https://raw.githubusercontent.com/DanBurton/stack-setup-info-gen/master/output/stack-ghc-9.2.1-rc1…
2021-10-22 21:01:47 +0200 <fusion86> And with 'working' in mean that GHC works but all my dependencies are rip
2021-10-22 21:02:05 +0200 <fusion86> But that's a problem for future me. Anyway, thanks for all the help with all my questions :)
2021-10-22 21:03:02 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-10-22 21:04:41 +0200fusion86(~fusion@2a02-a44c-e6e5-1-2ff7-7242-c0bf-93e9.fixed6.kpn.net) (Quit: Leaving)
2021-10-22 21:06:09 +0200spopooi(~spopooi@2804:431:cfea:8190:1e39:18d9:9d9e:69d4) (Remote host closed the connection)
2021-10-22 21:08:00 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-10-22 21:09:16 +0200lavaman(~lavaman@98.38.249.169)
2021-10-22 21:09:35 +0200max22-(~maxime@2a01cb088335980063b7aac9e60f4864.ipv6.abo.wanadoo.fr)
2021-10-22 21:14:31 +0200tomboy64(~tomboy64@user/tomboy64) (Remote host closed the connection)
2021-10-22 21:14:43 +0200benin3(~benin@183.82.207.116)
2021-10-22 21:15:14 +0200Null_A(~null_a@2601:645:8700:2290:a891:322d:b92c:f184) (Remote host closed the connection)
2021-10-22 21:15:49 +0200Null_A(~null_a@2601:645:8700:2290:6cb0:bf84:22bf:3285)
2021-10-22 21:16:55 +0200tomboy64(~tomboy64@user/tomboy64)
2021-10-22 21:17:10 +0200benin(~benin@183.82.207.116) (Ping timeout: 260 seconds)
2021-10-22 21:17:10 +0200benin3benin
2021-10-22 21:18:18 +0200 <awpr> crowdsourcing time again: with type-level naturals, it's natural (...) to do induction on them as if they were Peano numbers. does anyone know of a meaningful use for type-level _integers_? would they be the subject of some useful form of induction? if so, what form?
2021-10-22 21:21:56 +0200 <ski> agumonkey : perhaps the "What is a Naperian container?" by Peter G. Hancock in 2005-06-19 and "The universal property of logarithms" by Neil Ghani (via Hancock) in 2005-08-02 posts, both accessible at "Container Types" (blag) <http://sneezy.cs.nott.ac.uk/containers/blog/>, could be of some interest ?
2021-10-22 21:22:56 +0200 <ski> agumonkey : er, sorry. the link should be <https://web.archive.org/web/20161104231529/http://sneezy.cs.nott.ac.uk/containers/blog/>
2021-10-22 21:23:43 +0200 <awpr> e.g. would there be cases where you'd want to look at the sign and count towards a base case of zero? would there be cases where you'd always want to recurse on the successor (resp. predecessor) regardless of the relation to zero? count down to a negated power of two and terminate there? or is there just no important form of induction on integers?
2021-10-22 21:24:19 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2021-10-22 21:25:27 +0200 <ski> awpr : not sure what the difference between the "look at the sign and count towards a base case of zero" and "recurse on the successor (resp. predecessor) regardless of the relation to zero" was ?
2021-10-22 21:25:52 +0200 <awpr> count towards zero is either the predecessor or successor depending on sign
2021-10-22 21:26:13 +0200 <awpr> always the successor counts towards +infinity, and always the predecessor counts towards -infinity
2021-10-22 21:27:01 +0200 <awpr> (the latter two are weird, because they don't terminate)
2021-10-22 21:28:29 +0200 <ski> integers are "normally" defined as a quotient (grothendieck group) -- iow, you keep a pair of a credit/"positive" and a debit/"negative" part, and identify two pairs when "they cancel to the same"
2021-10-22 21:28:56 +0200 <awpr> indeed. it's a bit clunky to use that in Haskell though, especially at the type level
2021-10-22 21:29:18 +0200 <ski> oic
2021-10-22 21:29:43 +0200 <awpr> gotta normalize by performing subtraction before you can ask anything meaningful about the values, and it's harder to make things abstract at type level
2021-10-22 21:29:52 +0200burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Ping timeout: 258 seconds)
2021-10-22 21:30:08 +0200 <ski> you can do computations without normalizing all the time. e.g. (order) comparision
2021-10-22 21:31:43 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d) (Quit: Leaving)
2021-10-22 21:31:45 +0200 <awpr> so `compare (x - y) (z - w) = compare @Nat (x + w) (z + y)`?
2021-10-22 21:31:54 +0200 <ski> yes
2021-10-22 21:32:16 +0200 <awpr> ok, that representation might be more usable than I thought
2021-10-22 21:32:25 +0200 <ski> (also negation, addition, subtraction, multiplication, &c.)
2021-10-22 21:32:30 +0200 <awpr> it's still a bit awkward that `x == y` doesn't imply `x ~ y`
2021-10-22 21:32:42 +0200 <awpr> right, arithmetic is easily done without normalizing
2021-10-22 21:33:14 +0200 <awpr> the question still remains of what the use-case might be; what would one actually use them for after all the arithmetic is done?
2021-10-22 21:33:48 +0200 <ski> hm, oh, i missed that part of your question
2021-10-22 21:33:49 +0200 <awpr> like, with naturals, you can make fixed vectors, complete binary trees, finite set types, etc.
2021-10-22 21:34:07 +0200 <ski> repetitions of an invertable transformation ?
2021-10-22 21:34:19 +0200 <awpr> oh nice
2021-10-22 21:34:35 +0200 <awpr> hmm, but that seems equally well served by value-level integers
2021-10-22 21:34:56 +0200rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-10-22 21:35:02 +0200 <awpr> I guess if you have an invertable type-level transformation somehow, but I've never seen such a thing
2021-10-22 21:35:12 +0200 <ski> i guess you could do free abelian group on some generators, by associating an integer with each generator
2021-10-22 21:35:21 +0200arkeet(arkeet@moriya.ca) (Quit: ZNC 1.8.2 - https://znc.in)
2021-10-22 21:35:49 +0200 <ski> yea, i'm not sure where it'd reasonably come up, on the type level
2021-10-22 21:36:34 +0200arkeet(arkeet@moriya.ca)
2021-10-22 21:37:01 +0200 <awpr> maybe one of the reasons this seems weird is: most of the ways you'd use naturals is to make products or natural powers of things, but negative numbers would lead that into quotients or negative powers, and Haskell doesn't really have those in its type vocabulary
2021-10-22 21:40:50 +0200agumonkey(~user@88.160.31.174) (Remote host closed the connection)
2021-10-22 21:45:45 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 260 seconds)
2021-10-22 21:45:46 +0200cods(~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 252 seconds)
2021-10-22 21:47:28 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-10-22 21:47:37 +0200cods(~fred@82-65-232-44.subs.proxad.net)
2021-10-22 21:48:42 +0200 <awpr> context: I've got https://github.com/awpr/dependent-literals/tree/gamma_kinds, and I sort of just cargo-culted in the idea that it should support negative integers, but I'm realizing a) the current representation is unwieldy, b) the negative numbers are especially unwieldy and make naturals more complicated, c) I've never really used them, and d) I can't even figure out how to contrive a use for them
2021-10-22 21:49:49 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius)
2021-10-22 21:49:49 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Remote host closed the connection)
2021-10-22 21:50:07 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius)
2021-10-22 21:51:30 +0200 <awpr> and e) lazy binary naturals seem to work pretty well (so far), but generalizing it to integers by adding a constructor for negatives is awkward: addition can't be lazy because the top-level sign constructor depends on the entire operands. negabinary seems promising, but then the question is... why? should I bother?
2021-10-22 21:53:48 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-10-22 21:55:13 +0200MQ-17J(~MQ-17J@2607:fb90:47:70f6:3994:460d:fb23:b675) (Read error: Connection reset by peer)
2021-10-22 21:56:00 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-22 21:59:26 +0200jgeerds(~jgeerds@55d40de2.access.ecotel.net)
2021-10-22 22:01:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-22 22:02:20 +0200 <dminuoso> merijn: Re statically linking glibc. I absolutely loathe the part that if you rely on nss or iconv, you need to dynamically link against glibc still, and it better be the same version..
2021-10-22 22:02:40 +0200 <koz> Does anyone know which of the GHC plugin interfaces (as documented here: https://downloads.haskell.org/~ghc/9.0.1/docs/html/users_guide/extending_ghc.html#compiler-plugins) the record-dot-preprocessor plugin uses?
2021-10-22 22:03:20 +0200 <ski> awpr : hmm .. i suppose maybe one might want slices of such vectors, keeping the index subrange .. and then, perhaps also want to generalize and support index ranges including negatives ?
2021-10-22 22:03:47 +0200kupi(uid212005@id-212005.hampstead.irccloud.com)
2021-10-22 22:04:52 +0200 <dminuoso> And neither is necessarily easy to control, especially since NSS is likely used if anything of it uses getaddrinfo, which is more than likely.
2021-10-22 22:05:31 +0200juhp(~juhp@128.106.188.220) (Ping timeout: 258 seconds)
2021-10-22 22:05:59 +0200evocatus(~evocatus@84.51.113.13)
2021-10-22 22:06:47 +0200 <geekosaur> also looking up users and groups, which is done by more than just network programs
2021-10-22 22:07:02 +0200 <awpr> ski: interesting, like the Python notion of negative indices counting back from the end?
2021-10-22 22:07:12 +0200juhp(~juhp@128.106.188.220)
2021-10-22 22:08:24 +0200 <awpr> is there a reason to want a slice 2..4 to be a different type from a slice 3..5? or even more questionable, 2..4 of a 4-vector vs. -2..0 of a 4-vector?
2021-10-22 22:10:14 +0200acidjnk_new(~acidjnk@p200300d0c703cb93c8c758eae23fe552.dip0.t-ipconnect.de)
2021-10-22 22:10:41 +0200 <ski> awpr : i was just thinking of stuff like `listArray (-4,4) [i^3 | i <- range (-4,4)]'
2021-10-22 22:11:21 +0200 <awpr> oh, interesting, a generalized vector with indices being a subset of some numeric type
2021-10-22 22:12:14 +0200 <ski> awpr : not sure. one could perhaps imagine an operation on a sequence with indices `a .. b-1' together with one with `b .. c - 1', combining them into one with `a .. c-1'
2021-10-22 22:12:36 +0200 <ski> well, a contiguous subset, for the slice idea
2021-10-22 22:12:53 +0200 <ski> (one could perhaps also imagine higher dimensional stuff ..)
2021-10-22 22:13:43 +0200 <awpr> yeah, I guess this generalizes to: when you start getting into implementing refinement types, then integers start to make sense at the type level whenever the value level involves integers
2021-10-22 22:14:04 +0200 <ski> (or perhaps one could allow other strides, hmm ..)
2021-10-22 22:14:07 +0200ski. o O ( "Multi-dimensional array views for systems programmers" by pervognsen (Per Vognsen) in 2019-01-20(?) - 2019-04-30 at <https://gist.github.com/pervognsen/0e1be3b683d62b16fd81381c909bf67e> )
2021-10-22 22:14:22 +0200 <awpr> ooh time to name-drop https://hackage.haskell.org/package/orthotope
2021-10-22 22:14:56 +0200 <awpr> in that, though, strides are only ever value-level, it's only the bounds that are (sometimes) type-level
2021-10-22 22:16:02 +0200 <awpr> this seems like good enough justification that I shouldn't paint things into a corner where signed numbers are ruled out, but maybe it's fine to leave them as "TODO"
2021-10-22 22:17:45 +0200 <awpr> it might be profitable to have the main class be `HasNaturalLiterals a`, and then (optionally) have `class HasNaturalLiterals a => HasIntegerLiterals a`. then the integers don't interfere with naturals behaving nicely
2021-10-22 22:18:26 +0200ski. o O ( <https://en.wikipedia.org/wiki/SAC_programming_language> )
2021-10-22 22:18:31 +0200Pickchea(~private@user/pickchea)
2021-10-22 22:19:11 +0200 <ski> mhm
2021-10-22 22:19:36 +0200awprkeeps this open in a tab. might want to harvest ideas/techniques for my actual job
2021-10-22 22:21:22 +0200arkeet(arkeet@moriya.ca) (Quit: ZNC 1.8.2 - https://znc.in)
2021-10-22 22:24:55 +0200 <awpr> koz: looks like it's a source plugin pre-type-checking, `parsedResultAction`
2021-10-22 22:26:51 +0200 <koz> awpr: Ah, OK. So it basically modifies the parsed AST or something?
2021-10-22 22:29:04 +0200 <awpr> looks that way. if it let the `(.)` operators make it to type-checking, they'd basically always be type errors, right?
2021-10-22 22:29:48 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f) (Remote host closed the connection)
2021-10-22 22:29:51 +0200 <koz> Yeah, that makes sense.
2021-10-22 22:30:21 +0200 <koz> Does said parsed AST contain module annotations?
2021-10-22 22:30:25 +0200 <koz> (assuming there are any)
2021-10-22 22:31:15 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-10-22 22:32:17 +0200 <awpr> hmm, that's a good question. I'd assume so, but maybe not in a form that's ready to use yet
2021-10-22 22:33:30 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 258 seconds)
2021-10-22 22:33:33 +0200 <koz> awpr: Ah, so it _can_ tell me 'annot is here', but not 'its type is X'?
2021-10-22 22:33:50 +0200 <awpr> I found them in this form: https://hackage.haskell.org/package/ghc-8.10.2/docs/GHC-Hs-Decls.html#t:AnnDecl
2021-10-22 22:34:23 +0200 <awpr> yeah, so that contains a pre-type-checker expression for the annotation value
2021-10-22 22:34:42 +0200 <koz> Ah, so just its stringy name.
2021-10-22 22:34:52 +0200 <koz> Or rather, stringly _value_.
2021-10-22 22:35:02 +0200 <awpr> last field is `HsExpr`
2021-10-22 22:35:17 +0200 <awpr> it's just not been type-inferenced or reduced to a value yet
2021-10-22 22:35:20 +0200 <koz> Oh, even better.
2021-10-22 22:35:29 +0200 <koz> Thanks awpr, that's very helpful, and you are uncommonly attractive.
2021-10-22 22:35:37 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-10-22 22:35:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-22 22:35:48 +0200ArtVandelayer(~ArtVandel@ip174-68-147-20.lv.lv.cox.net) (Ping timeout: 258 seconds)
2021-10-22 22:37:13 +0200 <awpr> lol, np and thanks, I guess?
2021-10-22 22:38:39 +0200 <koz> LOL
2021-10-22 22:39:38 +0200mestre(~mestre@191.177.175.57)
2021-10-22 22:40:44 +0200Null_A(~null_a@2601:645:8700:2290:6cb0:bf84:22bf:3285) (Remote host closed the connection)
2021-10-22 22:41:50 +0200timCF(~timCF@m91-129-111-87.cust.tele2.ee) (Quit: leaving)
2021-10-22 22:44:36 +0200Hayek(~xxx@2603-8000-b401-6099-7541-8f40-8f83-6bcb.res6.spectrum.com)
2021-10-22 22:44:44 +0200mzan(~quassel@mail.asterisell.com) (https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-10-22 22:48:27 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 258 seconds)
2021-10-22 22:49:27 +0200arkeet(arkeet@moriya.ca)
2021-10-22 22:50:43 +0200nehsou^(~nehsou@wsip-68-227-92-38.mc.at.cox.net) (Ping timeout: 265 seconds)
2021-10-22 22:51:49 +0200jkaye(~jkaye@2601:281:8300:7530:8275:c2bd:871b:678c) (Ping timeout: 252 seconds)
2021-10-22 22:51:55 +0200ArtVandelayer(~ArtVandel@ip174-68-147-20.lv.lv.cox.net)
2021-10-22 22:53:30 +0200fendor(~fendor@91.141.35.79.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-22 22:55:22 +0200rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
2021-10-22 22:58:00 +0200connrs(~connrs@conners.plus.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-10-22 22:58:07 +0200zer0bitz(~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-22 22:58:20 +0200connrs(~connrs@user/connrs)
2021-10-22 23:00:00 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4852:7354:5eb5:641f)
2021-10-22 23:07:33 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-22 23:07:43 +0200evocatus(~evocatus@84.51.113.13) (Quit: Leaving)
2021-10-22 23:10:35 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-10-22 23:13:34 +0200benin(~benin@183.82.207.116) (Quit: The Lounge - https://thelounge.chat)
2021-10-22 23:19:17 +0200f-a(f2a@f2a.jujube.ircnow.org)
2021-10-22 23:21:23 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2021-10-22 23:22:58 +0200zebrag(~chris@user/zebrag) (Ping timeout: 260 seconds)
2021-10-22 23:24:09 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-10-22 23:26:31 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2021-10-22 23:27:15 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 260 seconds)
2021-10-22 23:31:26 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (*.net *.split)
2021-10-22 23:31:26 +0200nitrix(~nitrix@user/nitrix) (*.net *.split)
2021-10-22 23:31:26 +0200eruditass(uid248673@uxbridge.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200agander_m(sid407952@tinside.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200cbarrett(sid192934@helmsley.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200NemesisD(sid24071@lymington.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200cln(sid336875@ilkley.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200angerman(sid209936@ilkley.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200gmc(sid58314@ilkley.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200vito(sid1962@user/vito) (*.net *.split)
2021-10-22 23:31:26 +0200scav(sid309693@helmsley.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200JSharp(sid4580@lymington.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200bjs(sid190364@user/bjs) (*.net *.split)
2021-10-22 23:31:26 +0200NiKaN(sid385034@helmsley.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200nrr_(sid20938@lymington.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200dibblego(~dibblego@haskell/developer/dibblego) (*.net *.split)
2021-10-22 23:31:26 +0200jinsun(~quassel@user/jinsun) (*.net *.split)
2021-10-22 23:31:26 +0200srk(~sorki@user/srk) (*.net *.split)
2021-10-22 23:31:26 +0200Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (*.net *.split)
2021-10-22 23:31:26 +0200fluxit(~fluxit@techsmix.net) (*.net *.split)
2021-10-22 23:31:26 +0200Ram-Z(~Ram-Z@li1814-254.members.linode.com) (*.net *.split)
2021-10-22 23:31:26 +0200qwedfg(~qwedfg@user/qwedfg) (*.net *.split)
2021-10-22 23:31:26 +0200yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp) (*.net *.split)
2021-10-22 23:31:26 +0200ByronJohnson(~bairyn@mail.digitalkingdom.org) (*.net *.split)
2021-10-22 23:31:26 +0200asm(~alexander@user/asm) (*.net *.split)
2021-10-22 23:31:26 +0200ellie(~ellie@user/ellie) (*.net *.split)
2021-10-22 23:31:26 +0200tv(~tv@user/tv) (*.net *.split)
2021-10-22 23:31:26 +0200mrkajetanp(~mrkajetan@88.98.245.28) (*.net *.split)
2021-10-22 23:31:26 +0200jackhill(~jackhill@kalessin.dragonsnail.net) (*.net *.split)
2021-10-22 23:31:26 +0200dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (*.net *.split)
2021-10-22 23:31:26 +0200drewolson(~drewolson@user/drewolson) (*.net *.split)
2021-10-22 23:31:26 +0200Hecate(~mariposa@user/hecate) (*.net *.split)
2021-10-22 23:31:26 +0200aarchi(sid486183@uxbridge.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200hendi(sid489601@lymington.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200gonz___(sid304396@lymington.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200sm2n(~sm2n@user/sm2n) (*.net *.split)
2021-10-22 23:31:26 +0200cls(~cls@chalk.lubutu.com) (*.net *.split)
2021-10-22 23:31:26 +0200T_S_(sid501726@uxbridge.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200lambdabot(~lambdabot@haskell/bot/lambdabot) (*.net *.split)
2021-10-22 23:31:26 +0200slep(~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) (*.net *.split)
2021-10-22 23:31:26 +0200dpratt_(sid193493@helmsley.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200aria(sid380617@lymington.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200bradparker(sid262931@uxbridge.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200tapas(sid467876@ilkley.irccloud.com) (*.net *.split)
2021-10-22 23:31:26 +0200nisstyre(~wes@user/nisstyre) (*.net *.split)
2021-10-22 23:31:26 +0200sqrt2(~ben@80-108-18-7.cable.dynamic.surfer.at) (*.net *.split)
2021-10-22 23:31:26 +0200jrm(~jrm@156.34.187.65) (*.net *.split)
2021-10-22 23:31:27 +0200tdammers(~tdammers@77.109.72.177.res.static.edpnet.net) (*.net *.split)
2021-10-22 23:31:27 +0200w1gz(~do@159.89.11.133) (*.net *.split)
2021-10-22 23:31:27 +0200gnyeki(~gnyeki@user/gnyeki) (*.net *.split)
2021-10-22 23:31:27 +0200mmarusea1ph2(~mihai@198.199.100.72) (*.net *.split)
2021-10-22 23:31:27 +0200CannabisIndica(~herb@user/mesaboogie) (*.net *.split)
2021-10-22 23:31:27 +0200erisco(~erisco@d24-57-249-233.home.cgocable.net) (*.net *.split)
2021-10-22 23:31:27 +0200m5zs7k(aquares@web10.mydevil.net) (*.net *.split)
2021-10-22 23:31:27 +0200tureba(~tureba@tureba.org) (*.net *.split)
2021-10-22 23:31:27 +0200sshine(~simon@hubris.eta.solutions) (*.net *.split)
2021-10-22 23:31:27 +0200samebchase(~thelounge@51.15.68.182) (*.net *.split)
2021-10-22 23:31:33 +0200slep(~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net)
2021-10-22 23:31:33 +0200jackhill(~jackhill@kalessin.dragonsnail.net)
2021-10-22 23:31:33 +0200gnyeki(~gnyeki@li578-216.members.linode.com)
2021-10-22 23:31:36 +0200ByronJohnson(~bairyn@mail.digitalkingdom.org)
2021-10-22 23:31:37 +0200sqrt2(~ben@80-108-18-7.cable.dynamic.surfer.at)
2021-10-22 23:31:37 +0200Hecate(~mariposa@163.172.211.189)
2021-10-22 23:31:37 +0200lambdabot(~lambdabot@silicon.int-e.eu)
2021-10-22 23:31:38 +0200tapas(sid467876@id-467876.ilkley.irccloud.com)
2021-10-22 23:31:38 +0200cls(~cls@chalk.lubutu.com)
2021-10-22 23:31:40 +0200dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2021-10-22 23:31:41 +0200gmc(sid58314@id-58314.ilkley.irccloud.com)
2021-10-22 23:31:41 +0200NemesisD(sid24071@id-24071.lymington.irccloud.com)
2021-10-22 23:31:41 +0200agander_m(sid407952@id-407952.tinside.irccloud.com)
2021-10-22 23:31:41 +0200angerman(sid209936@id-209936.ilkley.irccloud.com)
2021-10-22 23:31:41 +0200samebchase(~thelounge@51.15.68.182)
2021-10-22 23:31:41 +0200cln(sid336875@id-336875.ilkley.irccloud.com)
2021-10-22 23:31:41 +0200cbarrett(sid192934@id-192934.helmsley.irccloud.com)
2021-10-22 23:31:42 +0200yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp)
2021-10-22 23:31:48 +0200asm(~alexander@burner.asm89.io)
2021-10-22 23:31:51 +0200drewolson(~drewolson@user/drewolson)
2021-10-22 23:31:51 +0200tdammers(~tdammers@77.109.72.177.res.static.edpnet.net)
2021-10-22 23:31:53 +0200scav(sid309693@id-309693.helmsley.irccloud.com)
2021-10-22 23:31:55 +0200gonz___(sid304396@id-304396.lymington.irccloud.com)
2021-10-22 23:31:57 +0200nisstyre(~wes@li798-187.members.linode.com)
2021-10-22 23:31:57 +0200mmaruseacph2(~mihai@198.199.100.72)
2021-10-22 23:31:57 +0200dpratt_(sid193493@id-193493.helmsley.irccloud.com)
2021-10-22 23:32:11 +0200jackhillKM4MBG
2021-10-22 23:32:11 +0200ellie(~ellie@user/ellie)
2021-10-22 23:32:14 +0200lambdabot(~lambdabot@silicon.int-e.eu) (Changing host)
2021-10-22 23:32:14 +0200lambdabot(~lambdabot@haskell/bot/lambdabot)
2021-10-22 23:32:21 +0200bradparker(sid262931@id-262931.uxbridge.irccloud.com)
2021-10-22 23:32:22 +0200T_S_(sid501726@id-501726.uxbridge.irccloud.com)
2021-10-22 23:32:23 +0200dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2021-10-22 23:32:23 +0200dibblego(~dibblego@haskell/developer/dibblego)
2021-10-22 23:32:25 +0200aria(sid380617@id-380617.lymington.irccloud.com)
2021-10-22 23:32:28 +0200KM4MBGjackhill
2021-10-22 23:32:32 +0200vito(sid1962@id-1962.uxbridge.irccloud.com)
2021-10-22 23:32:33 +0200bjs(sid190364@id-190364.helmsley.irccloud.com)
2021-10-22 23:32:34 +0200nisstyre(~wes@li798-187.members.linode.com) (Signing in (nisstyre))
2021-10-22 23:32:34 +0200nisstyre(~wes@user/nisstyre)
2021-10-22 23:32:42 +0200bjs(sid190364@id-190364.helmsley.irccloud.com) (Changing host)
2021-10-22 23:32:42 +0200bjs(sid190364@user/bjs)
2021-10-22 23:32:46 +0200nrr_(sid20938@id-20938.lymington.irccloud.com)
2021-10-22 23:32:47 +0200vito(sid1962@id-1962.uxbridge.irccloud.com) (Changing host)
2021-10-22 23:32:47 +0200vito(sid1962@user/vito)
2021-10-22 23:32:51 +0200aarchi(sid486183@id-486183.uxbridge.irccloud.com)
2021-10-22 23:32:52 +0200hendi(sid489601@id-489601.lymington.irccloud.com)
2021-10-22 23:32:56 +0200JSharp(sid4580@id-4580.lymington.irccloud.com)
2021-10-22 23:32:57 +0200eruditass(uid248673@id-248673.uxbridge.irccloud.com)
2021-10-22 23:33:10 +0200NiKaN(sid385034@id-385034.helmsley.irccloud.com)
2021-10-22 23:33:11 +0200srk(~sorki@user/srk)
2021-10-22 23:33:19 +0200erisco(~erisco@d24-57-249-233.home.cgocable.net)
2021-10-22 23:33:20 +0200CnnibisIndica(~herb@user/mesaboogie)
2021-10-22 23:33:25 +0200w1gz(~do@159.89.11.133)
2021-10-22 23:33:27 +0200jrm(~jrm@156.34.187.65)
2021-10-22 23:33:27 +0200jinsun(~quassel@user/jinsun)
2021-10-22 23:33:28 +0200nitrix(~nitrix@user/nitrix)
2021-10-22 23:33:30 +0200mrkajetanp(~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88)
2021-10-22 23:33:31 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-10-22 23:33:32 +0200m5zs7k(aquares@web10.mydevil.net)
2021-10-22 23:33:33 +0200Ram-Z(~Ram-Z@li1814-254.members.linode.com)
2021-10-22 23:33:34 +0200sm2n(~sm2n@user/sm2n)
2021-10-22 23:33:37 +0200tv(~tv@user/tv)
2021-10-22 23:33:38 +0200fluxit(~fluxit@techsmix.net)
2021-10-22 23:33:39 +0200sshine(~simon@hubris.eta.solutions)
2021-10-22 23:33:52 +0200qwedfg(~qwedfg@user/qwedfg)
2021-10-22 23:35:44 +0200dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net)
2021-10-22 23:36:42 +0200tureba(~tureba@tureba.org)
2021-10-22 23:39:29 +0200michalz(~michalz@185.246.204.41) (Remote host closed the connection)
2021-10-22 23:39:58 +0200max22-(~maxime@2a01cb088335980063b7aac9e60f4864.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-10-22 23:41:18 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee)
2021-10-22 23:43:33 +0200 <teddyc> TIL: the backslash in anonymous functions is supposed to resemble lambda(λ). makes sense now
2021-10-22 23:44:00 +0200 <geekosaur> it's as close as you get in ASCII, yeh
2021-10-22 23:46:18 +0200 <monochrom> :)
2021-10-22 23:48:43 +0200 <pavonia> ,\
2021-10-22 23:49:57 +0200 <Rembane_> You need to be slightly careful otherwise you'll fall down the J rabbit hole.
2021-10-22 23:51:23 +0200 <hpc> (.) is also meant to resemble the middot thing that math uses for function composition
2021-10-22 23:51:59 +0200 <teddyc> Rembane_: and APL from what I've seen from code_report on youtube.
2021-10-22 23:52:03 +0200 <monochrom> Hrm! I didn't notice that cabal-install 3.4.1.0 exists.
2021-10-22 23:52:37 +0200 <teddyc> hpc: ah, thats true. it always bothered me that i forgot the way it composes, but that sort of helps
2021-10-22 23:52:44 +0200 <Rembane_> teddyc: Yes! :)
2021-10-22 23:55:50 +0200segfaultfizzbuzz(~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 260 seconds)
2021-10-22 23:57:28 +0200zebrag(~chris@user/zebrag)