Home freenode/#haskell: Logs Calendar

Logs on 2020-11-23 (freenode/#haskell)

00:00:10 christo joins (~chris@81.96.113.213)
00:00:15 × atk quits (~Arch-TK@ircpuzzles/staff/Arch-TK) (Quit: Well this is unexpected.)
00:00:37 × m0rphism quits (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 246 seconds)
00:01:08 conal joins (~conal@66.115.157.141)
00:01:39 atk joins (~Arch-TK@ircpuzzles/staff/Arch-TK)
00:05:37 <hekkaidekapus> dminuoso: I read the page you linked. The main point there is a need of Benefactor Dictator For Life. Let’s say that I am a bit skeptic. ;)
00:06:04 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 2.8)
00:06:44 <dminuoso> And funding.
00:06:46 <dolio> I don't understand the argument. First off, it's inappropriate for a language standard to specify things down to an intermediate language level. That means every compiler has to make a ton of decisions exactly like GHC down to a very low level. If you just want documentation of what GHC does, there's already a bunch of papers and wikis and users guides that actually describe GHC already.
00:07:36 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
00:08:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
00:08:35 <hekkaidekapus> dolio: If you check the backlog, you will see that I expressed a few hours ago that I am not fond of rigourous standards.
00:09:21 <hekkaidekapus> My argument here is that taking over Haskell98 and Haskell2010 by a backdoor is a sneaky way of handling matters.
00:12:33 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
00:12:48 <hekkaidekapus> As to why very detailed standard are not my cup of coffee, things end up set in stone, drastic changes practically impossible.
00:13:41 weilzach joins (~weilzach@pool-72-66-93-213.washdc.fios.verizon.net)
00:13:48 <dminuoso> Unrelatedly, is there some cool trick to traverse over a data structure and fail if it has more than one target?
00:13:59 × Lycurgus quits (~niemand@98.4.114.74) (Quit: Exeunt)
00:14:09 <dminuoso> Beyond the very obvious toList and pattern matching on its length
00:14:09 × weilzach quits (~weilzach@pool-72-66-93-213.washdc.fios.verizon.net) (Client Quit)
00:14:11 <dolio> Also, if you want an active standard process, you need to make new viable Haskell implementations. The standard process is useful as a way of codifying the commonalities of multiple implementations. That's how it originated. The standards process being useless is a symptom of GHC being the only viable choice.
00:15:29 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:6c06:c056:20b8:f8ee:6530)
00:15:31 weilzach joins (~weilzach@pool-72-66-93-213.washdc.fios.verizon.net)
00:15:43 <dminuoso> dolio: Perhaps, it could arguably also help in that regard. If we had a new vision of what "standard haskell" in the current state of haskell could be, it would reduce the willingness to flip on extensions and stick to "standard haskell" - perhaps opening up doors for newer implementations
00:15:50 <dminuoso> Right now hackage is extension wild west.
00:16:30 <dolio> You mean, like specifying a bunch of standard GHC extensions that are considered good enough to be mainstream?
00:16:35 <dolio> The 'sneaky' thing?
00:16:40 <hekkaidekapus> heh
00:16:57 <dminuoso> Not necessarily just that. But at least part of it, yes.
00:17:07 × Fractalis quits (~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7) (Ping timeout: 260 seconds)
00:17:27 × weilzach quits (~weilzach@pool-72-66-93-213.washdc.fios.verizon.net) (Read error: Connection reset by peer)
00:17:27 <dminuoso> Haskell has resulted from academics doing research and trying out ideas. GHCs extensions are just that process.
00:17:43 <dminuoso> I dont see anything fundamentally wrong as GHC extensions as precursors of haskell report features.
00:18:33 weilzach joins (~weilzach@pool-72-66-93-213.washdc.fios.verizon.net)
00:18:37 <Axman6> unpopular opinion: extensions are just language feature flags #facebookdev
00:19:10 <hpc> how else would you develop new language features, anyway?
00:19:29 <Axman6> laborious committee process like C++
00:19:43 × jb55 quits (~jb55@gateway/tor-sasl/jb55) (Ping timeout: 240 seconds)
00:19:52 <hpc> even then you have an implementation of it somewhere before it gets standardized
00:20:20 <hekkaidekapus> hpc: Let’s do that then.
00:20:45 <hpc> and then make that implementation optional
00:20:48 × vhs quits (~vhs@41.44.147.255) (Remote host closed the connection)
00:20:56 <hpc> and then to make it easy to use, make it enabled with a comment at the top of the file
00:20:59 <hpc> :P
00:21:07 vhs joins (~vhs@41.44.147.255)
00:21:35 <hekkaidekapus> How many compilers are Report2010-compliants?
00:22:28 <Axman6> probably up to one
00:22:39 <hekkaidekapus> That’s a bummer.
00:22:53 × alp quits (~alp@2a01:e0a:58b:4920:2d01:9668:71aa:c2be) (Ping timeout: 272 seconds)
00:23:00 <hekkaidekapus> No standard process possible with a singleton.
00:23:03 phaul joins (~phaul@ruby/staff/phaul)
00:25:56 <hekkaidekapus> stu002: I am not aware of such a Haddock feature.
00:26:39 <hekkaidekapus> You can distribute the README by setting the `extra-files` in .cabal.
00:26:45 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
00:27:37 <hekkaidekapus> Some programmers make Haskell modules containing only documentation. Therein, the full extent of the Haddock syntax is available.
00:28:00 <dolio> Anyhow, my point is, don't think about this in a backwards way. Forcing people to demand the release of another 'official standard' before they can type less garbage in their files isn't going to create more Haskell implementations. Because the implementations created the standard, not the other way around.
00:29:16 <dminuoso> One prohibiting factor for new implementations to arise, is that without supporting most extensions, you couldn't use much of hackage. Transitively you quickly depend on a lot of extensions.
00:29:48 <hekkaidekapus> dolio: Point taken.
00:30:19 arahael joins (~arahael@124-150-64-50.tpgi.com.au)
00:30:38 <hekkaidekapus> stu002: For instance, this module has not a single Haskell identifier: <https://hackage.haskell.org/package/dhall-1.36.0/docs/Dhall-Tutorial.html>
00:30:43 <dminuoso> And part of why so packages so freely depend on extensions without caring about interoperability, is because there's not even some principle Haskell2020 that you could even adhere to
00:30:58 <dminuoso> The best we have is Haskell2010, and that's very limiting
00:31:10 <dolio> Even if there was, there would be no reason to not use GHC's extensions beyond 2020.
00:31:25 <dolio> Because there is no other compiler to use.
00:31:32 fendor_ joins (~fendor@91.141.2.69.wireless.dyn.drei.com)
00:31:51 <dminuoso> I guess it's a vicious circle.
00:32:49 jb55 joins (~jb55@gateway/tor-sasl/jb55)
00:33:29 × siwica quits (~user@p200300f6171ea70026a3ceac3db524b2.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
00:33:45 <monochrom> At this point, you can compare (another Haskell compiler competing with GHC) with (a new manufacturer of photocopiers competing with existing brands)
00:33:52 × fendor__ quits (~fendor@77.119.131.102.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
00:33:58 <dminuoso> But I stand by my opinion that with a modern Haskell 202x standard, it would be easier to get people away from just using off-standard GHC extensions.
00:34:11 <dminuoso> Without a standard you can't even try
00:35:06 <monochrom> Users now have so much expectations of a Haskell compiler or a photocopier (now called "office document centre") that only GHC and only the existing very experienced manufacturers can live up to those expectations.
00:35:14 christo joins (~chris@81.96.113.213)
00:35:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:35:52 × jb55 quits (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
00:36:07 <monochrom> Indeed look at the feature creeps into GHC that bring it further and further away from very simple Haskell, and the feature creeps that turned simple photocopiers to monstrous know-it-alls.
00:36:13 jb55 joins (~jb55@gateway/tor-sasl/jb55)
00:36:41 <dolio> I don't think you need to compile hackage to be a useful Haskell compiler, incidentally. There's probably like 0.1% of hackage or less that matters.
00:36:56 <dolio> Maybe less.
00:37:34 <dminuoso> Ability to compile a notable portion of hackage is what a new implementation would require for good adoption.
00:37:52 <dminuoso> Unless this was an industry implementation for some special use
00:38:03 <dolio> PureScript compiles 0% of hackage, I expect.
00:38:11 <dminuoso> PureScript is not Haskell though.
00:38:22 <dolio> And yet people use it.
00:38:43 <monochrom> But purescript compiles 100% of the purescript library repository :)
00:39:11 <hekkaidekapus> dminuoso: That’s a tall order. Look at head.hackage and all the cycles going there to test new GHC features against a few Hackage packages.
00:39:21 <dminuoso> If you tell me "this is a haskell compiler", and yet it cant compile most packages dubbed as "haskell package", then why should I buy your implementation?
00:39:37 <dolio> monochrom: That's probably wrong, too.
00:39:40 × Tops2 quits (~Tobias@dyndsl-095-033-027-066.ewe-ip-backbone.de) (Read error: Connection reset by peer)
00:39:46 <dolio> They keep making major language changes.
00:39:53 <dolio> Or at least, did in the past.
00:40:03 <monochrom> There is the expectattion that if you called your compiler "purescript compiler" people don't expect it to be compatible with any of Hackage, whereas if you call it "Haskell compiler" people suddenly do.
00:40:26 <monochrom> Ah OK, oh well.
00:40:55 <dolio> dminuoso: Why would anyone buy it, period. The problem is, there's nothing that isn't GHC that has a tangible reason for people to use it. The tangible reason to not use GHC comes first.
00:41:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
00:41:37 <dminuoso> That's a fair point.
00:41:39 <hekkaidekapus> dolio: You seem to be okay with monocultures.
00:41:53 <dminuoso> I don't think dolio suggested he's *okay* with the situation.
00:42:26 <hekkaidekapus> I got the point about implementations preceding standardisation.
00:42:28 <dolio> I'm describing what the reality is, yes.
00:42:51 <dolio> If you don't like it, you need to change the reality.
00:43:10 <stu002> @hekkaidekapus thanks for that
00:43:10 <lambdabot> Unknown command, try @list
00:43:28 <hekkaidekapus> stu002: yw
00:43:59 <dminuoso> Perhaps its actually projects like Frege that could drive alternate implementations.
00:44:21 × weilzach quits (~weilzach@pool-72-66-93-213.washdc.fios.verizon.net) ()
00:44:35 <dminuoso> A reason not to use GHC is because you might want more free interop with the JVM if inline-java is not enough.
00:44:44 <monochrom> I suddenly have a feeling that the Haskell Report died because Paul Hudak died.
00:44:47 <dminuoso> At the very least that's a large industry.
00:45:03 <dolio> If there were a real alternative to GHC that did something way better, but didn't implement all of GHC's stuff, there'd be people saying, "hey, can you make stuff compatible with this other thing? Maybe we should standardize it."
00:45:37 <dminuoso> dolio: Yeah. Frege fits that description exactly I guess.
00:45:57 <dolio> But making the alternative is the significant work, and just asking people to behave as if that other thing existed won't make the work happen, and eventually people will notice that you're asking them to do a lot of work conforming to your morality for no real benefit.
00:46:36 cosimone joins (~cosimone@5.171.24.24)
00:46:56 <monochrom> Yeah, hell, when I write in C I code to folklore x86-64 C, not the C standard.
00:47:32 <dminuoso> Heh, barely anyone ever adheres to the C standard
00:47:36 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds)
00:47:57 <monochrom> When I teach Haskell to students I shamelessly say "lazy evaluation" not what the Haskell Report tries to avoid to say.
00:48:16 <monochrom> (BTW IMO the Haskell Report also fails in its attempt to shy away from lazy evaluation.)
00:48:22 <dminuoso> Most of C appears to be not even folklore C but "whatever I imagine"-C
00:48:29 <hekkaidekapus> Standards are for compiler implementors anyway.
00:48:42 <monochrom> (For example explain to me why else "seq" is called "seq" not merely "strict" or "strictify")
00:48:45 <dminuoso> hekkaidekapus: That's a pretty inadequate bar, honestly.
00:48:52 <hekkaidekapus> heh
00:49:00 <dminuoso> If only language implementors can read it, how should a language user understand your language?
00:49:45 × cosimone quits (~cosimone@5.171.24.24) (Client Quit)
00:50:11 <dminuoso> If you take this to the extreme you end with something like C++ where not even the C++ committee understands what some of their standard means.
00:50:22 cosimone joins (~user@5.171.24.24)
00:50:35 × cosimone quits (~user@5.171.24.24) (Remote host closed the connection)
00:50:56 × conal quits (~conal@66.115.157.141) (Quit: Computer has gone to sleep.)
00:51:09 <dminuoso> [13] is a great source for inconclusive debates
00:51:32 <hekkaidekapus> I bet LLVM and GCC coders have a great grasp of the standard (those not on the C++ committee).
00:51:42 cosimone joins (~user@5.171.24.24)
00:51:45 hekkaidekapus is just hyperboling at this point.
00:52:02 <int-e> monochrom: you like puns, how would you like an independent Haskell implementation without type literals and type-in-type shenanigans? :)
00:52:25 <monochrom> Hrm, why is pun involved in that?
00:52:34 × cosimone quits (~user@5.171.24.24) (Remote host closed the connection)
00:52:50 <monochrom> Oh hahahahaha
00:52:59 <int-e> (More seriously though, without another relevant Haskell implementation, the point of a standard is rather moon.)
00:53:06 <int-e> moot.
00:53:26 <hekkaidekapus> Define: relevant.
00:53:40 <hekkaidekapus> Implementing the previous standard?
00:53:50 <int-e> No, actually in use.
00:54:07 <monochrom> I have a weak reason for wishing for a standard even though there is only one implementation. Much more precise, reliable documentation of what the hell the implementation does.
00:54:13 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 264 seconds)
00:54:17 conal joins (~conal@66.115.157.141)
00:54:36 <dolio> Weren't you the one that said GHC is better documented than the actual standard? :þ
00:54:41 <dminuoso> int-e: okay it took me a minute to get the pub. quite cute
00:55:26 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
00:55:54 <monochrom> I think I didn't say quite that quite directly. What I really think though is GHC is less worse than the Haskell Report.
00:56:34 <monochrom> And GHC's is somewhat better than "less worse" (but not a lot better) if you also include the papers it cites.
00:57:19 <monochrom> For example if you're looking for the typing rules of GHC 9's RankNTypes, you'd better read that bidirectional inference paper.
00:57:37 <dolio> Yeah.
00:57:39 <monochrom> rules that should have been in a standardized document.
00:58:18 Jonkimi727406120 joins (~Jonkimi@113.87.161.66)
00:58:18 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
00:58:33 <dolio> It'd be nice if their wiki gave a compilation of how it works, since you never know what all from the past is relevant.
00:58:34 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
00:58:36 cosimone joins (~user@5.171.24.24)
00:59:15 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
00:59:29 <Axman6> The top story on lobste.rs has the title "Booting from a vinyl record" and I was sad to see it wasn't haskell related
00:59:51 <monochrom> heh
01:00:55 × cosimone quits (~user@5.171.24.24) (Client Quit)
01:02:36 <monochrom> err, the bidirectional inference paper for pre-9 RankNTypes; the quick-look paper for post-9 RankNTypes and impredicativity.
01:03:04 <monochrom> but the latter tells you that they assume you have read the former, so you're still toasted.
01:04:39 <monochrom> What I fear is that if a comittee were formed to add these to Haskell Report, a very vocal, counterproductive minority would argue "cannot go with these rules verbatim, we need to allow different compilers to make different trade-offs"
01:04:59 × LKoen quits (~LKoen@169.244.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
01:05:14 <monochrom> And that will land you with: either no change to the Haskell Report, or the C standard.
01:07:03 <dolio> Yeah, that would probably be useless.
01:07:18 × tv- quits (~tv@unaffiliated/tv-) (Quit: WeeChat 2.8)
01:08:08 <dolio> Although what would the situation be if it were standardized? GHC keeps changing what you're allowed to do.
01:08:15 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
01:08:20 <dolio> Would the standard keep shifting?
01:10:59 vicfred joins (~vicfred@unaffiliated/vicfred)
01:11:09 <monochrom> That's a tough one. My preference is GHC changes quickly, the standard changes slowly to summarize the sweet spots GHC has found.
01:11:14 <dolio> I think a lot of the development has been allowing it to infer strictly more cases, but sometimes it has switched trade-offs.
01:11:47 × whataday quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:54 whataday joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:13:30 <dolio> Oh, and of course, keeping multiple, distinct checking algorithms around in a single implementation wouldn't be very nice. :)
01:13:41 <dolio> So that wouldn't be a solution.
01:14:01 × vhs quits (~vhs@41.44.147.255) (Quit: Leaving)
01:14:07 guest1123 joins (~user@49.5.6.87)
01:14:30 × conal quits (~conal@66.115.157.141) (Quit: Computer has gone to sleep.)
01:15:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:16:31 <monochrom> Windows 95 managed to have two kernels inside it haha
01:18:14 <monochrom> to be sure, you would be fair to point out "that exactly shows what wrong with it"
01:18:46 × Feuermagier quits (~Feuermagi@213.178.26.41) (Remote host closed the connection)
01:19:02 Feuermagier joins (~Feuermagi@213.178.26.41)
01:19:39 conal joins (~conal@66.115.157.141)
01:19:39 × conal quits (~conal@66.115.157.141) (Remote host closed the connection)
01:20:35 Fractalis joins (~Fractalis@2601:987:280:8d40:389d:748e:cbb9:62)
01:21:08 <dolio> Lots more workers, too.
01:23:26 JWS joins (8d54455c@141.84.69.92)
01:25:13 incertia joins (~incertia@d4-50-26-103.nap.wideopenwest.com)
01:27:05 × mirrorbird quits (~psutcliff@89.45.7.148) (Ping timeout: 240 seconds)
01:29:27 × Fractalis quits (~Fractalis@2601:987:280:8d40:389d:748e:cbb9:62) (Ping timeout: 260 seconds)
01:31:40 jedws joins (~jedws@101.184.150.93)
01:35:12 Lord_of_Life joins (~Lord@46.217.221.12)
01:35:37 × Lord_of_Life_ quits (~Lord@46.217.221.152) (Ping timeout: 264 seconds)
01:36:31 × JWS quits (8d54455c@141.84.69.92) (Remote host closed the connection)
01:45:28 × incertia quits (~incertia@d4-50-26-103.nap.wideopenwest.com) (Quit: ZNC 1.7.5 - https://znc.in)
01:45:47 incertia joins (~incertia@d4-50-26-103.nap.wideopenwest.com)
01:46:15 phaul joins (~phaul@ruby/staff/phaul)
01:46:30 × dftxbs3e quits (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
01:46:48 dftxbs3e joins (~dftxbs3e@unaffiliated/dftxbs3e)
01:48:26 × stu002 quits (77120261@119-18-2-97.771202.syd.nbn.aussiebb.net) (Remote host closed the connection)
01:50:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
01:53:37 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 264 seconds)
01:54:36 sdrodge joins (~sdrodge@unaffiliated/sdrodge)
01:57:36 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 265 seconds)
01:58:34 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
01:58:57 × incertia quits (~incertia@d4-50-26-103.nap.wideopenwest.com) (Quit: ZNC 1.7.5 - https://znc.in)
02:00:19 × Entertainment quits (~entertain@104.246.132.210) (Ping timeout: 246 seconds)
02:01:03 incertia joins (~incertia@d4-50-26-103.nap.wideopenwest.com)
02:02:08 cosimone joins (~user@5.171.24.24)
02:03:22 × cosimone quits (~user@5.171.24.24) (Client Quit)
02:05:24 cosimone joins (~user@5.171.24.24)
02:06:30 incertia_ joins (~incertia@d4-50-26-103.nap.wideopenwest.com)
02:06:37 × cosimone quits (~user@5.171.24.24) (Remote host closed the connection)
02:06:42 tv- joins (~tv@unaffiliated/tv-)
02:07:00 × dftxbs3e quits (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
02:07:18 dftxbs3e joins (~dftxbs3e@unaffiliated/dftxbs3e)
02:08:01 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
02:08:22 × incertia quits (~incertia@d4-50-26-103.nap.wideopenwest.com) (Ping timeout: 260 seconds)
02:09:40 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
02:11:39 × jb55 quits (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
02:11:58 jb55 joins (~jb55@gateway/tor-sasl/jb55)
02:13:15 christo joins (~chris@81.96.113.213)
02:14:40 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 246 seconds)
02:17:05 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
02:18:27 × renzhi quits (~renzhi@2607:fa49:655f:e600::28da) (Ping timeout: 260 seconds)
02:19:10 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:20:17 Sarma joins (~Amras@unaffiliated/amras0000)
02:24:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
02:28:55 boxscape joins (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
02:29:02 <boxscape> :o are there no operator sections on the type level?
02:29:26 <boxscape> % :kind (+ 4) 6
02:29:26 <yahb> boxscape: ; <interactive>:1:2: error: Operator applied to too few arguments: +
02:30:03 <boxscape> I can see why it's not a thing for type families (since we don't have unsaturated ones yet) but it seems like it should work for type constructors at least
02:30:16 <boxscape> but it's syntax error from what I can tell :(
02:32:54 <monochrom> There is no type-level lambda, therefore no type operator sections.
02:33:00 hackage sr-extra 1.85 - Module limbo https://hackage.haskell.org/package/sr-extra-1.85 (DavidFox)
02:34:22 <monochrom> OK, one of them is OK, (Int :+:) is just (:+:) Int, uncontroversial. I guess no one got around to implement it.
02:34:29 × jedws quits (~jedws@101.184.150.93) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:35:07 <boxscape> hm, maybe I'll look into it once we have unsaturated type families, which I think might make it worth it
02:35:15 × xff0x quits (~fox@2001:1a81:53fc:6700:2ab6:9c1b:8ed5:c7e5) (Ping timeout: 272 seconds)
02:35:19 × solonarv quits (~solonarv@astrasbourg-653-1-156-4.w90-6.abo.wanadoo.fr) (Ping timeout: 246 seconds)
02:36:04 sleblanc joins (~sleblanc@unaffiliated/sebleblanc)
02:36:34 xff0x joins (~fox@2001:1a81:5237:b800:d8c8:bfa0:43f3:b736)
02:36:55 <sleblanc> I like XMonad's approach to configuration, where it "recompiles" itself when you update your configuration file. How does XMonad do it?
02:40:16 × Iceland_jack quits (~user@31.124.48.169) (Ping timeout: 240 seconds)
02:40:25 jedws joins (~jedws@101.184.150.93)
02:41:11 toorevitimirp joins (~tooreviti@117.182.183.18)
02:41:16 × jedws quits (~jedws@101.184.150.93) (Client Quit)
02:43:36 × mozzarella quits (~sam@unaffiliated/sam113101) (Ping timeout: 272 seconds)
02:46:01 mozzarella joins (~sam@unaffiliated/sam113101)
02:47:36 × dftxbs3e quits (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
02:48:30 justan0theruser joins (~justanoth@unaffiliated/justanotheruser)
02:49:56 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 272 seconds)
02:50:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:50:55 <sim590> I have this code: https://paste.debian.net/1173920/ which makes use of lenses. It is a multi constructor data type. One of which doesn't have private key, hence using (view privateKey) asks me to put the Monoid constraint on my function. How can I solve that?
02:51:05 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
02:51:24 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
02:51:32 dftxbs3e joins (~dftxbs3e@unaffiliated/dftxbs3e)
02:52:28 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 272 seconds)
02:52:56 <sim590> Is there a way to call some Lens magic functions that would return (Maybe v) instead of the plain (view privateKey) ?
02:53:26 × kupi quits (uid212005@gateway/web/irccloud.com/x-fgjaulxwhgglmlzx) (Quit: Connection closed for inactivity)
02:53:26 Cthalupa joins (~cthulhu@47.186.47.75)
02:55:55 <dibblego> you'd use a Traversal
02:58:02 LostCanvas parts (~iharper@75-108-155-188.chstcmtk01.res.dyn.suddenlink.net) ("Leaving")
02:58:53 <sim590> dibblego: hmmmmmm. OK.
02:59:00 <sim590> I'm a bit new to lenses.
02:59:43 acidjnk_new joins (~acidjnk@p200300d0c719ff94358934eb0dfd70c0.dip0.t-ipconnect.de)
02:59:53 <dibblego> _StartUpRemoteUser :: Prism' (UserInfo v b) (v, b)
03:00:03 <dibblego> _StartUpRemoteUser_privateKey :: Traversal' (UserInfo v b) v
03:03:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
03:04:19 <sim590> OK. I didn't understand the types you wrote... I'm sorry. However, I found that I can use (^?) instead of view. I really need to a good course on lenses.
03:04:24 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
03:04:29 <sim590> I've watched and read already, but not enough.
03:05:20 Fractalis joins (~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7)
03:06:02 <dibblego> or use preview
03:06:08 christo joins (~chris@81.96.113.213)
03:08:07 jedws joins (~jedws@101.184.150.93)
03:08:10 × Lowl3v3l quits (~Lowl3v3l@dslb-090-186-186-201.090.186.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
03:09:49 <dibblego> https://gist.github.com/tonymorris/1bbc3aff874a97722d78cb9a9154c494
03:10:35 × christo quits (~chris@81.96.113.213) (Ping timeout: 265 seconds)
03:12:37 <sim590> So that's what makePrisms and makeLenses expand to (partly)?
03:13:46 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
03:15:26 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
03:16:28 × clynamen quits (~clynamen@net-2-35-88-16.cust.vodafonedsl.it) (Read error: Connection reset by peer)
03:16:30 <dibblego> yes
03:16:42 <dibblego> makePrisms makes that prism among other things
03:16:51 justsomeguy joins (~justsomeg@216.186.218.241)
03:16:51 × justsomeguy quits (~justsomeg@216.186.218.241) (Changing host)
03:16:51 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
03:19:04 × noteness quits (noteness@unaffiliated/nessessary129) (Quit: I'LL BE BACK)
03:19:23 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:20:04 clynamen joins (~clynamen@37.183.22.31)
03:21:14 shatriff joins (~vitaliish@176.52.219.10)
03:22:39 Lowl3v3l joins (~Lowl3v3l@dslb-088-072-167-013.088.072.pools.vodafone-ip.de)
03:24:50 dftxbs3e_ joins (~dftxbs3e@unaffiliated/dftxbs3e)
03:24:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
03:27:49 × dftxbs3e quits (~dftxbs3e@unaffiliated/dftxbs3e) (Ping timeout: 264 seconds)
03:28:03 × dftxbs3e_ quits (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
03:29:43 × Sarma quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
03:31:15 × koala_man quits (~vidar@unaffiliated/koala-man/x-2491903) (Remote host closed the connection)
03:35:55 Stanley00 joins (~stanley00@unaffiliated/stanley00)
03:39:06 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 265 seconds)
03:40:27 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
03:42:25 lagothrix is now known as Guest16478
03:42:25 × Guest16478 quits (~lagothrix@unaffiliated/lagothrix) (Killed (orwell.freenode.net (Nickname regained by services)))
03:42:31 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
03:43:03 drbean joins (~drbean@TC210-63-209-85.static.apol.com.tw)
03:48:06 × theDon quits (~td@muedsl-82-207-238-007.citykom.de) (Ping timeout: 256 seconds)
03:48:59 whatisRT joins (~whatisRT@2002:5b41:6a33:0:d589:f18c:8211:e758)
03:49:56 × jlamothe quits (~jlamothe@198.251.55.207) (Ping timeout: 240 seconds)
03:50:00 theDon joins (~td@94.134.91.120)
03:55:36 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:58:54 <ezzieyguywuf> in hledger do I have to use $ for dollars, or can I use "USD" like in beancount?
04:00:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
04:00:49 z0 joins (~z0@188.251.79.4)
04:01:28 × z0 quits (~z0@188.251.79.4) (Client Quit)
04:01:52 <jle`> ezzieyguywuf: there are no built-in currencies i believe, either are valid currency labels
04:02:01 <ezzieyguywuf> jle`: 👍️
04:02:01 <jle`> so there is no special-casing for dollars
04:02:05 <ezzieyguywuf> gotcha
04:02:15 <ezzieyguywuf> I'm used to the USD now, so I think I'll just go with that
04:02:37 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
04:03:08 hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
04:06:46 <MarcelineVQ> there's a #hledger channel too that's quite helpful
04:06:58 <MarcelineVQ> in particular due to sm[m]
04:15:28 <texasmynsted> Where may I find more information about how to best unit test modules. Specifically if you use something like hunit, how do you test code in a module that is not exported?
04:15:46 × boxscape quits (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Ping timeout: 246 seconds)
04:17:45 × Jonkimi727406120 quits (~Jonkimi@113.87.161.66) (Ping timeout: 240 seconds)
04:19:05 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
04:19:38 Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
04:20:07 keep_learning joins (~keep_lear@43.231.26.152)
04:22:07 <hololeap> is hledger really more useful than a spreadsheet?
04:22:46 <MarcelineVQ> idk but it's pretty nice
04:23:14 <sleblanc> hololeap, for one, hledger supports currencies and ad-hoc commodities
04:23:15 cosimone joins (~cosimone@5.171.24.44)
04:23:35 <hololeap> i took a look at it once and didn't understand what was so good about it. i'm sure i didn't give it enough of a chance.
04:24:00 <sleblanc> hololeap, I hope no one is trying to sell it to you
04:24:34 <hololeap> no, i was just looking for a ledger program, and i like haskell. seemed like a natural choice to check it out.
04:25:58 <hololeap> it seems popular enough, though
04:26:07 <MarcelineVQ> I find it really convenient to edit plaintext files rather than work in a spreadsheet, especially to add more-specific/sub accounts on the fly
04:28:09 jlamothe joins (~jlamothe@198.251.55.207)
04:29:36 <jle`> hololeap: for me i sort of juts treat it like spreadsheet with built in command line tools for querying and stuff
04:30:08 <jle`> so i don't have to implement it all myself
04:30:49 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 264 seconds)
04:30:57 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:32:06 <jle`> it makes it more simple to do double-entry accounting too
04:37:38 <dsal> texasmynsted: You don't test stuff that's not exported. You can't import it to test it. What kind of testing are you doing? hunit style is usually my second choice.
04:39:30 × awk quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Remote host closed the connection)
04:43:38 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
04:43:48 × keep_learning quits (~keep_lear@43.231.26.152) (Quit: Leaving)
04:43:50 <sm[m]> hail hololeap! It's a good question, I think each is good at certain things
04:44:53 <texasmynsted> Have some routines to read TSV files for redirects and things. I only export the data and the functions needed. I wanted to add and test some validation. I have a redirect so two URLs per record.
04:45:32 <texasmynsted> I want to validate that the first URL is relative, not absolute and does not start with /. I would not export this validation function but I would like to test it.
04:46:38 × cosimone quits (~cosimone@5.171.24.44) (Quit: cosimone)
04:46:46 falafel joins (~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4)
04:46:52 <texasmynsted> How would you handle this?
04:47:15 SanchayanMaity joins (~Sanchayan@106.200.254.25)
04:51:51 Jonkimi727406120 joins (~Jonkimi@113.87.161.66)
04:52:08 <texasmynsted> It seems like if it is exported it is a bit more like an integration test than a unit test.
04:52:24 <texasmynsted> I do not care what it is called though
04:55:47 × MrSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
04:56:19 fxg joins (~fxg@unaffiliated/fxg)
04:58:22 <dsal> My first choice is usually property tests. Define what a kinds of things make up a valid relative URL. Verify you parse it as such.
05:00:48 <dsal> You can get a massive amount of test coverage (usually including things you didn't think of) this way. I assume you've got a RelativeURL type. You just need an Arbitrary instance and a way to serialize it to a string in the format the parser wants. Then you just ask if there's any valid RelativeURL that can't be parsed as a RelativeURL.
05:02:01 × ddellacosta quits (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
05:05:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
05:07:22 × Jonkimi727406120 quits (~Jonkimi@113.87.161.66) (Ping timeout: 272 seconds)
05:07:52 × whatisRT quits (~whatisRT@2002:5b41:6a33:0:d589:f18c:8211:e758) (Quit: ZNC 1.7.5 - https://znc.in)
05:08:17 <dsal> Your test could be something like this:
05:08:18 <dsal> @check read . show >>= (===)
05:08:20 <lambdabot> +++ OK, passed 100 tests.
05:09:14 <dsal> I use that kind of thing when I hand-write read or show (or do some other kind of parser/serialize thing).
05:16:07 ggole joins (~ggole@2001:8003:8119:7200:1c3c:45be:a6d:c507)
05:19:03 <texasmynsted> :-)
05:19:25 <texasmynsted> nice
05:19:27 <texasmynsted> thank you
05:20:26 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
05:21:31 hackage time 1.11.1 - A time library https://hackage.haskell.org/package/time-1.11.1 (AshleyYakeley)
05:28:02 × Fractalis quits (~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7) (Ping timeout: 260 seconds)
05:31:31 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
05:32:01 × texasmynsted quits (~texasmyns@212.102.45.121) (Remote host closed the connection)
05:32:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:32:52 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
05:35:56 × redmp quits (~redmp@mobile-166-137-178-144.mycingular.net) (Ping timeout: 240 seconds)
05:37:55 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
05:38:24 christo joins (~chris@81.96.113.213)
05:49:26 DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
05:52:30 × DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
05:52:49 DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
05:55:39 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
05:55:39 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Changing host)
05:55:39 koala_man joins (~vidar@unaffiliated/koala-man/x-2491903)
05:59:41 knupfer joins (~Thunderbi@i59F7FFC3.versanet.de)
06:03:14 xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar)
06:08:02 guest112` joins (~user@49.5.6.87)
06:08:16 Jonkimi727406120 joins (~Jonkimi@113.87.161.66)
06:09:16 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:12:15 × guest1123 quits (~user@49.5.6.87) (Ping timeout: 256 seconds)
06:12:36 × knupfer quits (~Thunderbi@i59F7FFC3.versanet.de) (Ping timeout: 256 seconds)
06:12:48 × Jonkimi727406120 quits (~Jonkimi@113.87.161.66) (Ping timeout: 265 seconds)
06:14:12 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
06:23:14 Jonkimi727406120 joins (~Jonkimi@113.87.161.66)
06:24:13 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
06:28:18 cur8or joins (~cur8or@2c0f:fbe1:3:17:d58e:e362:b2fa:46da)
06:29:15 × dennisb quits (~dennisb@89-160-106-195.cust.bredband2.com) (Ping timeout: 256 seconds)
06:32:58 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:35:21 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
06:36:05 maksio joins (~user@185.246.204.42)
06:39:59 × Jonkimi727406120 quits (~Jonkimi@113.87.161.66) (Ping timeout: 260 seconds)
06:42:13 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
06:43:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
06:43:54 × Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
06:44:05 Jonkimi727406120 joins (~Jonkimi@113.87.161.66)
06:44:33 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
06:45:02 × falafel quits (~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4) (Ping timeout: 260 seconds)
06:46:19 coot joins (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
06:51:15 Sarma joins (~Amras@unaffiliated/amras0000)
06:53:03 dansho joins (~dansho@ip68-108-167-185.lv.lv.cox.net)
06:57:45 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
07:04:03 rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
07:08:23 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
07:08:23 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
07:08:42 × rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 256 seconds)
07:10:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:10:53 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
07:11:13 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
07:11:33 × ironmarx quits (~ironmarx@185.163.110.116) (Remote host closed the connection)
07:13:18 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
07:15:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
07:15:51 phaul joins (~phaul@ruby/staff/phaul)
07:18:07 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:18:36 × elliott__ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
07:25:04 × sfvm quits (~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine)
07:26:18 chaosmasttter joins (~chaosmast@p200300c4a72cf80165f6d709b523305b.dip0.t-ipconnect.de)
07:27:29 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
07:32:06 JohnONolan joins (~JohnONola@217.146.82.202)
07:32:24 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
07:33:02 × jlamothe quits (~jlamothe@198.251.55.207) (Quit: leaving)
07:34:49 × cur8or quits (~cur8or@2c0f:fbe1:3:17:d58e:e362:b2fa:46da) (Ping timeout: 272 seconds)
07:36:24 Ariakenom joins (~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se)
07:37:32 × maksio quits (~user@185.246.204.42) (Ping timeout: 260 seconds)
07:38:46 × acidjnk_new quits (~acidjnk@p200300d0c719ff94358934eb0dfd70c0.dip0.t-ipconnect.de) (Remote host closed the connection)
07:39:17 acidjnk_new joins (~acidjnk@p200300d0c719ff94358934eb0dfd70c0.dip0.t-ipconnect.de)
07:39:18 × darjeeling_ quits (~darjeelin@122.245.219.209) (Ping timeout: 256 seconds)
07:39:29 Franciman joins (~francesco@host-82-51-90-98.retail.telecomitalia.it)
07:41:05 chele joins (~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
07:41:16 × acidjnk_new quits (~acidjnk@p200300d0c719ff94358934eb0dfd70c0.dip0.t-ipconnect.de) (Remote host closed the connection)
07:41:36 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
07:41:41 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
07:42:23 cur8or joins (~cur8or@2c0f:fbe1:3:17:d58e:e362:b2fa:46da)
07:43:40 dhouthoo joins (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
07:44:20 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
07:45:14 Aquazi joins (uid312403@gateway/web/irccloud.com/x-kgipcwwyhxxkjxhq)
07:46:37 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
07:47:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:48:32 francesco_ joins (~francesco@host-82-54-193-143.retail.telecomitalia.it)
07:48:37 × Franciman quits (~francesco@host-82-51-90-98.retail.telecomitalia.it) (Ping timeout: 260 seconds)
07:49:30 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
07:50:16 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
07:51:06 jlamothe joins (~jlamothe@198.251.55.207)
07:53:07 cfricke joins (~cfricke@unaffiliated/cfricke)
07:54:49 × SanchayanMaity quits (~Sanchayan@106.200.254.25) (Quit: SanchayanMaity)
07:55:13 SanchayanMaity joins (~Sanchayan@106.200.254.25)
07:58:03 darjeeling_ joins (~darjeelin@122.245.219.209)
08:00:36 invaser joins (~Thunderbi@31.148.23.125)
08:00:45 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
08:01:05 bitmagie joins (~Thunderbi@200116b806ed110085bc8dfe3e60bb59.dip.versatel-1u1.de)
08:02:24 francesco_ is now known as Franciman
08:04:14 invaser1 joins (~Thunderbi@178-133-218-247.mobile.vf-ua.net)
08:04:14 × taurux quits (~taurux@net-188-152-78-21.cust.dsl.teletu.it) (Ping timeout: 256 seconds)
08:04:16 × invaser1 quits (~Thunderbi@178-133-218-247.mobile.vf-ua.net) (Client Quit)
08:04:27 Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk)
08:04:40 jespada joins (~jespada@90.254.245.49)
08:04:50 × bitmagie quits (~Thunderbi@200116b806ed110085bc8dfe3e60bb59.dip.versatel-1u1.de) (Client Quit)
08:06:51 oish joins (~charlie@228.25.169.217.in-addr.arpa)
08:07:06 Fractalis joins (~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7)
08:07:38 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds)
08:07:51 × kish` quits (~oracle@unaffiliated/oracle) (Ping timeout: 256 seconds)
08:11:15 m0rphism joins (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
08:11:16 × toorevitimirp quits (~tooreviti@117.182.183.18) (Remote host closed the connection)
08:12:01 × oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 246 seconds)
08:12:22 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
08:13:05 × andos quits (~dan@69-165-210-185.cable.teksavvy.com) (Ping timeout: 240 seconds)
08:14:43 toorevitimirp joins (~tooreviti@117.182.183.18)
08:14:51 Varis joins (~Tadas@unaffiliated/varis)
08:17:15 Lycurgus joins (~niemand@98.4.114.74)
08:18:27 oish joins (~charlie@228.25.169.217.in-addr.arpa)
08:19:55 alp joins (~alp@2a01:e0a:58b:4920:21cf:ab8e:85fd:bb5c)
08:20:56 × toorevitimirp quits (~tooreviti@117.182.183.18) (Remote host closed the connection)
08:22:05 × Jonkimi727406120 quits (~Jonkimi@113.87.161.66) (Ping timeout: 240 seconds)
08:22:39 toorevitimirp joins (~tooreviti@117.182.183.18)
08:22:42 × cur8or quits (~cur8or@2c0f:fbe1:3:17:d58e:e362:b2fa:46da) (Ping timeout: 260 seconds)
08:22:46 Jonkimi727406120 joins (~Jonkimi@113.87.161.66)
08:22:47 _linker_ joins (~linker@2a02:a31a:a041:9a80:1550:ab25:bf6f:9a3a)
08:26:00 hackage mu-protobuf 0.4.0.3 - Protocol Buffers serialization and gRPC schema import for Mu microservices https://hackage.haskell.org/package/mu-protobuf-0.4.0.3 (AlejandroSerrano)
08:27:27 <Xnuk> What are the benefits of the Monad concept in other language, if you have to explain?
08:27:34 cur8or joins (~cur8or@2c0f:fbe1:3:17:d58e:e362:b2fa:46da)
08:28:38 × toorevitimirp quits (~tooreviti@117.182.183.18) (Remote host closed the connection)
08:28:56 × drbean quits (~drbean@TC210-63-209-85.static.apol.com.tw) (Ping timeout: 240 seconds)
08:30:32 toorevitimirp joins (~tooreviti@117.182.183.18)
08:30:47 <merijn> almost none, since most other languages don't have typeclasses nor type inference
08:31:25 <Xnuk> Lots of people say "Monad is good and important concept", but I still think Monad is just one of typeclasses satisfying `(>>=)` and `return`.
08:32:25 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
08:32:43 <Xnuk> merijn: I completely agree
08:34:00 hackage typesafe-precure 0.7.10.1 - Type-safe transformations and purifications of PreCures (Japanese Battle Heroine) https://hackage.haskell.org/package/typesafe-precure-0.7.10.1 (igrep)
08:34:35 <dminuoso> 09:31:25 Xnuk | Lots of people say "Monad is good and important concept", but I still think Monad is just one of typeclasses satisfying `(>>=)` and `return`.
08:34:39 <dminuoso> You're thinking just right. :)
08:34:56 <dminuoso> The usefulness of monad comes from not using it, but writing code polymorphically over it.
08:35:43 × Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds)
08:36:25 × fxg quits (~fxg@unaffiliated/fxg) (Ping timeout: 240 seconds)
08:36:33 <dminuoso> Well and not having to remember different names for functions that all follow the same shape, the same reason we have say `<>` and `mempty`
08:36:47 wonko7 joins (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
08:37:00 hackage hlint 3.2.3 - Source code suggestions https://hackage.haskell.org/package/hlint-3.2.3 (NeilMitchell)
08:37:30 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
08:37:43 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
08:37:43 × xelxebar quits (~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds)
08:37:49 <Xnuk> dminuoso: "The usefulness of monad comes from not using it" Can I steal your words
08:37:52 <[exa]> Xnuk: 'first-class overloaded code sequencing with assignment' is the main feature the other languages should be after, imo
08:38:03 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
08:38:04 xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar)
08:38:09 <dminuoso> Xnuk: Oh haha sorry. That was supposed to read "not from using it"
08:38:32 Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer)
08:38:42 sord937 joins (~sord937@gateway/tor-sasl/sord937)
08:38:50 <tomsmeding> 23:16:42 maerwald | hmm, we need latex support on tomsmeding paste
08:38:55 <tomsmeding> I await your case maerwald
08:39:06 <dminuoso> tomsmeding: I think it was cheek-in-tongue..
08:39:12 <tomsmeding> :p I think so too
08:39:13 <dminuoso> Considering the surrounding discussion. :p
08:39:23 gxt joins (~gxt@gateway/tor-sasl/gxt)
08:39:24 <dminuoso> Oh haha. tongue-in-cheek
08:39:34 <dminuoso> Doing it the other way is anatomically difficult
08:39:46 <tomsmeding> kind of
08:42:11 kritzefitz joins (~kritzefit@fw-front.credativ.com)
08:43:43 stu002 joins (77120261@119-18-2-97.771202.syd.nbn.aussiebb.net)
08:44:54 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:46:27 raichoo joins (~raichoo@dslb-178-001-144-018.178.001.pools.vodafone-ip.de)
08:49:38 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
08:51:35 × oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 260 seconds)
08:51:50 danvet_ joins (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453)
08:52:00 solonarv joins (~solonarv@astrasbourg-653-1-156-4.w90-6.abo.wanadoo.fr)
08:54:01 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
08:55:03 × denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 240 seconds)
08:55:17 f-a joins (~f-a@151.68.193.237)
08:55:57 SanchayanM joins (~Sanchayan@171.76.82.54)
08:57:34 × SanchayanMaity quits (~Sanchayan@106.200.254.25) (Ping timeout: 256 seconds)
09:00:00 hackage servant-openapi3 2.0.1.1 - Generate a Swagger/OpenAPI/OAS 3.0 specification for your servant API. https://hackage.haskell.org/package/servant-openapi3-2.0.1.1 (maksbotan)
09:00:07 × sureyeaah quits (shauryab98@gateway/shell/matrix.org/x-mqricolhiyievodh) (Quit: Idle for 30+ days)
09:00:48 × ph88^ quits (~ph88@2a02:8109:9e00:7e5c:31ca:eef6:b3d5:eefb) (Quit: Leaving)
09:01:45 plutoniix joins (~q@ppp-27-55-84-13.revip3.asianet.co.th)
09:01:48 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
09:02:48 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
09:03:58 Yumasi joins (~guillaume@2a01cb09b06b29ea1c5ab82b3b485150.ipv6.abo.wanadoo.fr)
09:07:06 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-ndxrdxmbozimfblk) (Quit: Connection closed for inactivity)
09:07:08 × Foritus quits (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) (Ping timeout: 256 seconds)
09:08:23 tinwood_ is now known as tinwood
09:08:35 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
09:09:05 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
09:11:16 × Lord_of_Life quits (~Lord@46.217.221.12) (Changing host)
09:11:16 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
09:12:10 × plutoniix quits (~q@ppp-27-55-84-13.revip3.asianet.co.th) (Quit: Leaving)
09:13:50 <dminuoso> For associated tyfams, would you rather write `f :: n ~ TyF t => Proxy t -> n -> ...` or `t :: Proxy t -> TyF t -> ...`?
09:15:29 Foritus joins (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net)
09:15:58 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
09:16:48 kuribas joins (~user@ptr-25vy0i8kkf9triykmnn.18120a2.ip6.access.telenet.be)
09:18:07 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
09:18:35 <kuribas> I don't understand how you can make effects independent of the order.
09:18:56 <kuribas> For example ExceptT and StateT, at one point you have to decide which one takes precedence right?
09:19:20 <kuribas> like, is state passed when throwing an exception?
09:19:30 supercoven joins (~Supercove@dsl-hkibng31-54fae3-133.dhcp.inet.fi)
09:19:58 <kuribas> both are valid IMO
09:21:46 borne joins (~fritjof@200116b864880200394a967dc8ef4e61.dip.versatel-1u1.de)
09:22:16 × danvet_ quits (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Quit: Leaving)
09:22:25 × hololeap quits (~hololeap@unaffiliated/hololeap) (Ping timeout: 240 seconds)
09:23:16 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
09:24:09 × supercoven quits (~Supercove@dsl-hkibng31-54fae3-133.dhcp.inet.fi) (Max SendQ exceeded)
09:24:23 supercoven joins (~Supercove@dsl-hkibng31-54fae3-133.dhcp.inet.fi)
09:24:23 × supercoven quits (~Supercove@dsl-hkibng31-54fae3-133.dhcp.inet.fi) (Max SendQ exceeded)
09:24:38 supercoven joins (~Supercove@dsl-hkibng31-54fae3-133.dhcp.inet.fi)
09:24:38 × supercoven quits (~Supercove@dsl-hkibng31-54fae3-133.dhcp.inet.fi) (Max SendQ exceeded)
09:24:53 supercoven joins (~Supercove@dsl-hkibng31-54fae3-133.dhcp.inet.fi)
09:24:53 × supercoven quits (~Supercove@dsl-hkibng31-54fae3-133.dhcp.inet.fi) (Max SendQ exceeded)
09:25:08 supercoven joins (~Supercove@dsl-hkibng31-54fae3-133.dhcp.inet.fi)
09:25:08 × supercoven quits (~Supercove@dsl-hkibng31-54fae3-133.dhcp.inet.fi) (Max SendQ exceeded)
09:31:10 × jbox quits (~atlas@unaffiliated/jbox) (Quit: WeeChat 2.9)
09:34:14 travis_scott joins (~prateekpr@37.231.243.133)
09:34:22 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
09:34:33 phaul joins (~phaul@ruby/staff/phaul)
09:34:46 × travis_scott quits (~prateekpr@37.231.243.133) (Quit: leaving)
09:38:02 × Lycurgus quits (~niemand@98.4.114.74) (Quit: Exeunt)
09:40:22 <merijn> kuribas: Hence why the typeclassy mtl approach doesn't work so well
09:41:26 × cur8or quits (~cur8or@2c0f:fbe1:3:17:d58e:e362:b2fa:46da) (Ping timeout: 264 seconds)
09:41:27 <kuribas> merijn: you mean the typeclasses don't show the order?
09:41:45 <merijn> yeah
09:41:52 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Quit: WeeChat 3.0)
09:42:46 <kuribas> That's why I never write functions that have mtl typeclass constraints.
09:42:58 <kuribas> I just use them as convenience inside my own transformer stacks.
09:43:56 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
09:43:58 <kuribas> where I already *know* the order, so it doesn't matter.
09:44:53 × stu002 quits (77120261@119-18-2-97.771202.syd.nbn.aussiebb.net) (Remote host closed the connection)
09:44:53 cur8or joins (~cur8or@72canterbury.cybersmart.co.za)
09:45:41 cads joins (~cads@ip-64-72-99-232.lasvegas.net)
09:46:23 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
09:46:56 <cads> does ghc have installation directions hidden somewhere in the manual? I may be missing it https://downloads.haskell.org/ghc/latest/docs/html/users_guide/
09:47:15 <cads> the 6.2 instructions had it as chapter 2 https://downloads.haskell.org/~ghc/6.2/docs/html/users_guide/users-guide.html
09:48:47 <Uniaika> cads: https://www.haskell.org/ghcup/
09:50:21 larou joins (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
09:51:13 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
09:51:52 <cads> thanks Uniaika
09:52:04 <Uniaika> you're welcome
09:52:26 cads likes that there are clear wsl instructions
09:53:05 <cads> so the idea is that haskell platform takes care of install, so GHC docs don't need to have an install chapter?
09:53:56 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
09:55:11 <merijn> cads: tbh, the install instructions on *nix of GHC itself are basically just "./configure --prefix=path/to/install && make install" and in the README, so that doesn't really warrant a user guide thing. And the windows story is still a bit of a mess
09:55:45 <cads> g h c u p - a slightly perverse claim :D
09:58:48 <merijn> rats...I just realised I need to refactor my code to handle connections to multiple databases, that's gonna suck >.>
09:59:16 <cads> merijn, I did see that, but of course I managed to encounter a totally inexcplicable make issue, and wished I had something more to sanity check that I had not missed some dependency or important config parameter
09:59:36 <merijn> cads: Which platform? Linux?
09:59:41 <cads> WSL
09:59:53 <cads> so yes/no
09:59:55 <merijn> ah, yeah, that's probably rather untested ;)
10:00:35 <cads> well I will give credit to gh-ketchup, because the WSL solution /worked/ https://www.haskell.org/ghcup/
10:01:26 <cads> and it's right there under my unobservant nose. It felt really good as a user experience to finally see something that I had some reason to believe will work <3
10:01:26 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
10:01:46 <maerwald> gh-ketchup?
10:01:53 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
10:02:14 rsoeldner joins (c3916504@195.145.101.4)
10:02:24 <cads> for some reason I see ghcup and my brain turns it into gh-ketchup
10:02:40 oish joins (~charlie@228.25.169.217.in-addr.arpa)
10:02:41 cads shrugs
10:03:13 <Uniaika> cads: fantastic hahaha
10:03:18 <cads> usually if I'm making a wierd mnemonic or nick-name that's a sign that I like it and will remember it
10:03:39 × rsoeldner quits (c3916504@195.145.101.4) (Remote host closed the connection)
10:03:51 <cads> Uniaika, whoever put that wsl line there has my specific thanks and admiration!
10:03:55 <Uniaika> < merijn> rats...I just realised I need to refactor my code to handle connections to multiple databases, that's gonna suck >.> // RIP 💀
10:04:08 <Uniaika> cads: héhé, you may ask for maerwald I think?
10:04:22 <guest112`> is ghc available on linux distro on arm?
10:04:34 <merijn> guest112`: Yes *
10:04:44 <merijn> * - some masochism maybe required
10:04:46 <Uniaika> *conditions may apply
10:04:50 <guest112`> merijn: I tried archlinuxarm, there's no ghc yet
10:04:57 <maerwald> https://downloads.haskell.org/~ghc/8.10.2/ghc-8.10.2-armv7-deb10-linux.tar.xz
10:05:02 <Uniaika> guest112`: which ARM arch?
10:05:22 <guest112`> Uniaika: arm v8
10:05:24 <Uniaika> if it's armv7 there is a bindist, as maerwald showed
10:05:25 <Uniaika> ah
10:05:34 <guest112`> aha
10:05:48 <maerwald> I think angerman is currently the only one doing ARM love?
10:05:52 <merijn> guest112`: arm is a tier2 architecture, so it requires some amount of DIY involved, depending on exactly which architecture, etc.
10:06:14 <guest112`> maerwald: it's debian only?
10:06:51 <Uniaika> hmm I think it's for debian derivatives too, guest112`
10:06:53 <maerwald> well, who cares... just have to fix your dynamic libs
10:06:55 <guest112`> merijn: is it in debian's repo? could I use apt to install
10:07:19 <angerman> PSA: Do not use arm for anything critical right now. The rts is seriously broken wrt correctness.
10:07:35 <guest112`> dynamic libs on arm, I think that's a lot
10:07:50 <angerman> Head with the llvm backend is ok, it you don’t use perf.
10:08:42 f-a parts (~f-a@151.68.193.237) ()
10:08:51 <angerman> If you must use older GHCs. Ensure you use single threaded only.
10:09:43 <cads> merijn, do you think WSL will become the primary path for haskell on windows?
10:09:52 <angerman> Patched 8.6.5 that’s somewhat usable https://github.com/input-output-hk/ghc/tree/release/8.6.5-iohk
10:10:24 <angerman> Ghc 9.2 will likely be pretty good on arm.
10:11:46 × guest112` quits (~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
10:12:22 <arahael> angerman: Sweet. :)
10:12:51 <cads> Uniaika, this is the commit that adds the line - thanks Julian Ospald / ! https://gitlab.haskell.org/haskell/ghcup-hs/-/commit/8c4cde3d14ca79e8dac95cc3fd63581be2cda4b2
10:13:19 <cads> though I am not 100% on the attribution - could be a that Julian applied a patch
10:14:53 <maerwald> lol
10:15:17 <cads> lol, was it really you, maerwald ?
10:15:57 × sphalerite quits (~sphalerit@NixOS/user/lheckemann) (Quit: reboot time!)
10:16:16 <maerwald> gitlab shows nickname if you hover over the real name
10:19:05 <aplainzetakind> So I can't handle encoding: https://gist.github.com/aplainzetakind/155843dab732f0aeffb5bb0e3b679021
10:19:24 <aplainzetakind> When I try this out I gen invalid utf8 bytes.
10:19:34 <aplainzetakind> s/gen/get
10:19:44 <dminuoso> Of course, not every byte sequence is valid UTF8.
10:20:01 <dminuoso> With md5 in the pipeline, you're essentially generating pseudo random bytes
10:20:07 sphalerite joins (~sphalerit@NixOS/user/lheckemann)
10:20:31 tomsmeding expects you want to encode the bytes as hexadecimal
10:20:47 <aplainzetakind> That makes sense.
10:21:09 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
10:21:38 <dminuoso> aplainzetakind: Check out base16-bytestring
10:21:47 <dminuoso> (Or base64-bytestring)
10:23:21 <aplainzetakind> How do I get from String to those?
10:24:13 × Jonkimi727406120 quits (~Jonkimi@113.87.161.66) (Ping timeout: 264 seconds)
10:24:19 <aplainzetakind> Ah I need this only to decode?
10:24:26 <aplainzetakind> No encode.
10:24:34 <merijn> You probably just wanna show the resulting Digest
10:24:34 hidedagger joins (~nate@unaffiliated/hidedagger)
10:25:06 <dminuoso> https://hackage.haskell.org/package/cryptonite-0.27/docs/src/Crypto.Hash.Types.html#line-86
10:25:12 <merijn> That's what works for cryptonite
10:25:12 <dminuoso> That seems to run it through base16-bytestring already indeed.
10:25:19 <aplainzetakind> merijn: Argh, it has Show. OK.
10:25:24 <merijn> And this seems to use the same API
10:25:34 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
10:26:21 fendor_ is now known as fendor
10:26:35 <aplainzetakind> Yes using show in place of T.unpack . T.decodeUtf8 . md5DigestBytes just works.
10:26:37 <aplainzetakind> Thanks.
10:28:34 × hidedagger quits (~nate@unaffiliated/hidedagger) (Client Quit)
10:30:36 × oish quits (~charlie@228.25.169.217.in-addr.arpa) (Quit: leaving)
10:32:20 <cads> maerwald, thank you thank thank you for caring about wsl users!
10:32:57 <maerwald> I think native ghcup on windows could be a thing too, but I haven't had anyone knowledgable about msys2 speak up on how to do it.
10:33:23 <maerwald> And handling that right basically determines most of the user experience.
10:33:45 <cads> imo anything that does linux on windows and uses mingw/msys rather than wsl is now a smell
10:34:04 <cads> but I don't REALLY know what I am talking about, lmao
10:34:14 <cads> just using that internally
10:34:18 × kadoban quits (kadobanmat@gateway/shell/matrix.org/x-kttvbwikdhecuywx) (Quit: Bridge terminating on SIGTERM)
10:34:18 × jeffcasavant[m] quits (jeffcasava@gateway/shell/matrix.org/x-uqeetjdjsxvnlnzz) (Quit: Bridge terminating on SIGTERM)
10:34:18 × Ericson2314 quits (ericson231@gateway/shell/matrix.org/x-hlgbkoswcxilbeqd) (Quit: Bridge terminating on SIGTERM)
10:34:19 × dominicusin[m] quits (dominicusi@gateway/shell/matrix.org/x-qrkglxioyiapvbuy) (Quit: Bridge terminating on SIGTERM)
10:34:19 × drozdziak1 quits (drozdziak1@gateway/shell/matrix.org/x-xyfuxdepxamenewg) (Quit: Bridge terminating on SIGTERM)
10:34:19 × PotatoHatsue quits (berbermanp@gateway/shell/matrix.org/x-cjitwcshsbuodjyn) (Quit: Bridge terminating on SIGTERM)
10:34:19 × fgaz quits (fgazmatrix@gateway/shell/matrix.org/x-nhvyoqyawfdgtgqa) (Quit: Bridge terminating on SIGTERM)
10:34:20 × themsay[m] quits (themsaymat@gateway/shell/matrix.org/x-ioynzpwjpjzmejjh) (Quit: Bridge terminating on SIGTERM)
10:34:20 × unclechu quits (unclechuma@gateway/shell/matrix.org/x-guiiopktxpzvwhvz) (Quit: Bridge terminating on SIGTERM)
10:34:20 × lambdaclan quits (lambdaclan@gateway/shell/matrix.org/x-hhpdgpqllhwmhgtm) (Quit: Bridge terminating on SIGTERM)
10:34:21 × hsiktas[m] quits (hsiktasmat@gateway/shell/matrix.org/x-jpmuglwgcakxllmq) (Quit: Bridge terminating on SIGTERM)
10:34:21 × betrion[m] quits (betrionmat@gateway/shell/matrix.org/x-xwiqijmgzeynpvoj) (Quit: Bridge terminating on SIGTERM)
10:34:23 × wanaks[m] quits (wanaksmatr@gateway/shell/matrix.org/x-hwcfdrwbfomwajud) (Quit: Bridge terminating on SIGTERM)
10:34:26 × falling-edge[m] quits (falling-ed@gateway/shell/matrix.org/x-gqfvjootjpkyvsru) (Quit: Bridge terminating on SIGTERM)
10:34:27 × dyniec[m] quits (dyniecmatr@gateway/shell/matrix.org/x-zwmchqxypgwrfvvf) (Quit: Bridge terminating on SIGTERM)
10:34:27 × elpfen[m] quits (elpfenmatr@gateway/shell/matrix.org/x-drqtnjthyplttipt) (Quit: Bridge terminating on SIGTERM)
10:34:28 × ComaGrayce[m] quits (commagrays@gateway/shell/matrix.org/x-dqibnbgwhohubrkt) (Quit: Bridge terminating on SIGTERM)
10:34:28 × domenkozar[m] quits (domenkozar@NixOS/user/domenkozar) (Quit: Bridge terminating on SIGTERM)
10:34:28 × ttc quits (tomtauma1@gateway/shell/matrix.org/x-ipfwgcjvwwdcokds) (Quit: Bridge terminating on SIGTERM)
10:34:28 × Hanma[m] quits (hanmamatri@gateway/shell/matrix.org/x-okkoowimutlrlfkb) (Quit: Bridge terminating on SIGTERM)
10:34:28 × sm[m] quits (simonmicma@gateway/shell/matrix.org/x-vlvwwxdsuamzwmii) (Quit: Bridge terminating on SIGTERM)
10:34:29 × jkaye[m] quits (jkayematri@gateway/shell/matrix.org/x-rgucqpzlqszwinfz) (Quit: Bridge terminating on SIGTERM)
10:34:29 × rednaZ[m] quits (r3dnazmatr@gateway/shell/matrix.org/x-uudppykggjqnwgdt) (Quit: Bridge terminating on SIGTERM)
10:34:29 × srid quits (sridmatrix@gateway/shell/matrix.org/x-wcquiejsxgjdmcxb) (Quit: Bridge terminating on SIGTERM)
10:34:29 × pqwy[m] quits (pqwymatrix@gateway/shell/matrix.org/x-ywgcsarxvhxyblcm) (Quit: Bridge terminating on SIGTERM)
10:34:29 × johnnyboy[m] quits (gifumatrix@gateway/shell/matrix.org/x-djygzhrhshoknqyz) (Quit: Bridge terminating on SIGTERM)
10:34:30 × iinuwa quits (iinuwamatr@gateway/shell/matrix.org/x-cburarlywoxtjfrp) (Quit: Bridge terminating on SIGTERM)
10:34:30 × zerstroyer[m] quits (zerstroyer@gateway/shell/matrix.org/x-thvxsfmerzqegbym) (Quit: Bridge terminating on SIGTERM)
10:34:30 × Noughtmare[m] quits (naughtmare@gateway/shell/matrix.org/x-srizjjooaoqrlgvr) (Quit: Bridge terminating on SIGTERM)
10:34:30 × jesser[m] quits (jessermatr@gateway/shell/matrix.org/x-fnrjbdbcxycnmdhs) (Quit: Bridge terminating on SIGTERM)
10:34:30 × ThaEwat quits (thaewraptm@gateway/shell/matrix.org/x-dfjdlbdjkbnyawpv) (Quit: Bridge terminating on SIGTERM)
10:34:30 × siraben quits (sirabenmat@gateway/shell/matrix.org/x-moaedtsqvaqtshxu) (Quit: Bridge terminating on SIGTERM)
10:34:30 × camlriot42 quits (camlriotma@gateway/shell/matrix.org/x-iyuyyccohcedziwd) (Quit: Bridge terminating on SIGTERM)
10:34:30 × mikr[m] quits (mikrdavral@gateway/shell/matrix.org/x-xaesttypbsiulkoz) (Quit: Bridge terminating on SIGTERM)
10:34:30 × wi[m] quits (w1gzmatrix@gateway/shell/matrix.org/x-xtlrgyxrbktyedto) (Quit: Bridge terminating on SIGTERM)
10:34:30 × andreabedini[m] quits (andreabedi@gateway/shell/matrix.org/x-mbuhwpnbmozobgqs) (Quit: Bridge terminating on SIGTERM)
10:34:30 × patier[m] quits (patiermatr@gateway/shell/matrix.org/x-defohognfbqcqriu) (Quit: Bridge terminating on SIGTERM)
10:34:31 × maralorn quits (maralornma@gateway/shell/matrix.org/x-qdyphvplrxcjzfoq) (Quit: Bridge terminating on SIGTERM)
10:34:31 × tersetears[m] quits (tersetears@gateway/shell/matrix.org/x-sudqunulnrivtufh) (Quit: Bridge terminating on SIGTERM)
10:34:32 × tsrt^ quits (tsrt@ip98-184-89-2.mc.at.cox.net) (Max SendQ exceeded)
10:34:33 × psydruid quits (psydruidma@gateway/shell/matrix.org/x-tkomzubgcyrydslv) (Quit: Bridge terminating on SIGTERM)
10:34:33 × rab24ack[m] quits (rab24ackma@gateway/shell/matrix.org/x-psmufgypmrylcnyv) (Quit: Bridge terminating on SIGTERM)
10:34:35 × theduke quits (thedukem1@gateway/shell/matrix.org/x-gnkymjnxqweoqcmt) (Quit: Bridge terminating on SIGTERM)
10:34:36 × lnxw37d4 quits (lnxw37d4ma@gateway/shell/matrix.org/x-gplzcqsrpqncxxzx) (Quit: Bridge terminating on SIGTERM)
10:34:36 × alexfmpe quits (alexfmpema@gateway/shell/matrix.org/x-rqudkbffvwwbtfrf) (Quit: Bridge terminating on SIGTERM)
10:34:36 × michaelpj quits (michaelpjm@gateway/shell/matrix.org/x-xcnlzlahcxbogqup) (Quit: Bridge terminating on SIGTERM)
10:34:36 × jtojnar quits (jtojnarmat@gateway/shell/matrix.org/x-xtyqemcpdpeklcda) (Quit: Bridge terminating on SIGTERM)
10:34:36 × TekShifter[m] quits (tekshifter@gateway/shell/matrix.org/x-xtsbzpbdrwjrjwbu) (Quit: Bridge terminating on SIGTERM)
10:34:36 × boistordu1 quits (boistordum@gateway/shell/matrix.org/x-zpdpvjbuxlhmobsh) (Quit: Bridge terminating on SIGTERM)
10:34:36 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds)
10:34:47 × chreekat[m] quits (chreekatma@gateway/shell/matrix.org/x-hzsdhguuchtmbexg) (Quit: Bridge terminating on SIGTERM)
10:34:48 × jlv quits (jlvjustinl@gateway/shell/matrix.org/x-gfijbqrqwhvwkgqs) (Quit: Bridge terminating on SIGTERM)
10:34:48 × loprakoa[m] quits (loprakoama@gateway/shell/matrix.org/x-uehnwgnrwlslrkww) (Quit: Bridge terminating on SIGTERM)
10:34:48 × miseenplace[m] quits (miseenplac@gateway/shell/matrix.org/x-ywbimksbsmmywabw) (Quit: Bridge terminating on SIGTERM)
10:34:49 × CRTified[m] quits (schnecfkru@gateway/shell/matrix.org/x-qudvjaxqzetifqrv) (Quit: Bridge terminating on SIGTERM)
10:34:49 × berberman[T] quits (berberma4@gateway/shell/matrix.org/x-jhiqdhcukfrwwucl) (Quit: Bridge terminating on SIGTERM)
10:34:49 × alephu5[m] quits (alephu5mat@gateway/shell/matrix.org/x-ldzorvnirgjegsey) (Quit: Bridge terminating on SIGTERM)
10:34:50 <cads> but it makes sense from the perspective of how much msft is investing in it, and how much more comfortable it is
10:35:22 × Codaraxis quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Remote host closed the connection)
10:35:29 tsrt^ joins (tsrt@ip98-184-89-2.mc.at.cox.net)
10:35:42 <cads> does ghcup compete with stack? Or can I see it as part of?
10:36:46 <maerwald> cads: not really. I personally use stack and ghcup together in some docker images to build static executables (because ghcup provides alpine bindists that stack doesn't)
10:37:06 <maerwald> you can tell stack to use system GHCs and then use ghcup to manage them
10:37:12 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
10:37:16 × jedws quits (~jedws@101.184.150.93) (Ping timeout: 246 seconds)
10:37:54 <maerwald> but stack doesn't help you much when you want to use cabal with multiple GHCs
10:38:34 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
10:38:36 <maerwald> so you could say cabal + ghcup is kind of a substitute for stack for some use cases
10:38:40 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 246 seconds)
10:38:41 <cads> and how much user share can we estimate it pulls? Is it well enough accepted for Darcs installation instructions to mention it? Currently they mention stack, and cabal. IMO these aren't the beginning of the story in windows, but ghcup is.
10:39:02 <cads> https://darcsbook.acmelabs.space/chapter02.html#installing-darcs
10:39:44 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
10:40:51 jedws joins (~jedws@101.184.150.93)
10:41:41 theduke joins (thedukem1@gateway/shell/matrix.org/x-fkzkadqaqklwkoxx)
10:42:50 tomsmeding is a happy user of ghcup, please spread
10:43:12 <maerwald> I'm not sure, the last haskell survey result had a data bug, but it's probably somewhere between 9-20%
10:43:51 <cads> oo, we have a survey?
10:43:55 <maerwald> https://taylor.fausak.me/2019/11/16/haskell-survey-results/#s2q1
10:44:03 <maerwald> https://taylor.fausak.me/2020/11/22/haskell-survey-results/#s2q1
10:44:12 <cads> and up to 1/5th is really something
10:47:06 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
10:48:27 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
10:49:05 <cads> Hmm, I notice that the haskell call to action calls users to type a haskell expression, but now download a haskell installer or binary package
10:50:42 <cads> If we look at go-lang.org - it has a code tester plus download button. Rust-lang.org has a download button, and then a notably accessible download page with a) Large flat download buttons in attention catching colors b) a curl line for deploying rustup.
10:51:01 <cads> this is what windows user see https://imgur.com/a/ZI4UsBT
10:51:24 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
10:51:45 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
10:52:40 <maerwald> cads: you may want to comment on https://gitlab.haskell.org/ghc/ghc/-/issues/18104
10:53:00 <cads> could we borrow this "flat buttons mean actions" motif, and give haskel.org a awesome, rounded, regal purple button saying "Download Haskell" or "Get Started", and make similar updates for the download page?
10:53:23 <maerwald> And https://github.com/haskell-infra/www.haskell.org/issues/12
10:53:49 zerstroyer[m] joins (zerstroyer@gateway/shell/matrix.org/x-gegiretuusxprcab)
10:53:50 CRTified[m] joins (schnecfkru@gateway/shell/matrix.org/x-eenugdcfqkikhazz)
10:53:50 iinuwa joins (iinuwamatr@gateway/shell/matrix.org/x-nirgmkkuiglbzdym)
10:53:50 berberman[T] joins (berberma4@gateway/shell/matrix.org/x-gbdkkegajrsrxxkg)
10:53:50 themsay[m] joins (themsaymat@gateway/shell/matrix.org/x-ijyhmdsdchceasci)
10:53:50 ComaGrayce[m] joins (commagrays@gateway/shell/matrix.org/x-hgvgmfuatspyagpw)
10:53:50 Ericson2314 joins (ericson231@gateway/shell/matrix.org/x-tegudoxxgcuckrrp)
10:53:50 sm[m] joins (simonmicma@gateway/shell/matrix.org/x-kwpeizyjcphohngd)
10:53:50 PotatoHatsue joins (berbermanp@gateway/shell/matrix.org/x-libkhcmbrdqpqido)
10:53:51 ttc joins (tomtauma1@gateway/shell/matrix.org/x-lgjugwvkytxobgef)
10:53:51 Noughtmare[m] joins (naughtmare@gateway/shell/matrix.org/x-qinronskgvjuesgd)
10:53:51 siraben joins (sirabenmat@gateway/shell/matrix.org/x-kbzgfwlklcotpjnz)
10:53:51 domenkozar[m] joins (domenkozar@NixOS/user/domenkozar)
10:53:51 psydruid joins (psydruidma@gateway/shell/matrix.org/x-mpmiqxkbrlzaygik)
10:53:51 lambdaclan joins (lambdaclan@gateway/shell/matrix.org/x-cunxvrjdwttunvim)
10:53:51 sureyeaah joins (shauryab98@gateway/shell/matrix.org/x-xujaibeehyrzrqgr)
10:53:51 ThaEwat joins (thaewraptm@gateway/shell/matrix.org/x-eowhntdvamvdarxm)
10:53:51 hnOsmium0001[m] joins (hnosmium00@gateway/shell/matrix.org/x-cujgdqencyyvcwtx)
10:53:51 fgaz joins (fgazmatrix@gateway/shell/matrix.org/x-ckdeidekxaxmbkrv)
10:53:51 SlackIntegration joins (slackbotma@gateway/shell/matrix.org/x-jwlsctxhtztxaioq)
10:53:51 lnxw37d4 joins (lnxw37d4ma@gateway/shell/matrix.org/x-gyetbkvikjbbsrrd)
10:53:51 tersetears[m] joins (tersetears@gateway/shell/matrix.org/x-yuvadosdugsnqrxf)
10:53:51 boistordu joins (boistordum@gateway/shell/matrix.org/x-mdyiyodwbwwmjcwq)
10:53:51 hsiktas[m] joins (hsiktasmat@gateway/shell/matrix.org/x-diupvlqwumdpqenf)
10:53:51 chreekat[m] joins (chreekatma@gateway/shell/matrix.org/x-qrurbafjmusxfuce)
10:53:52 rednaZ[m] joins (r3dnazmatr@gateway/shell/matrix.org/x-ozioktnmvrvopylv)
10:53:52 pqwy[m] joins (pqwymatrix@gateway/shell/matrix.org/x-qkyseftxctvdhmhh)
10:53:52 maralorn joins (maralornma@gateway/shell/matrix.org/x-opsadexttgzjqxrr)
10:53:52 micahsovereign[m joins (micahsover@gateway/shell/matrix.org/x-frusjvfqlxbbwchl)
10:53:52 unclechu joins (unclechuma@gateway/shell/matrix.org/x-fmibtulmvlcrrtyt)
10:53:52 michaelpj joins (michaelpjm@gateway/shell/matrix.org/x-bpqwjlstbvbemkvx)
10:53:52 jtojnar joins (jtojnarmat@gateway/shell/matrix.org/x-ygesxqztjkwljyzz)
10:53:52 dominicusin[m] joins (dominicusi@gateway/shell/matrix.org/x-qzmdyqsqeazfuaho)
10:53:52 drozdziak1 joins (drozdziak1@gateway/shell/matrix.org/x-vthisqiohgxugfqd)
10:53:53 srid joins (sridmatrix@gateway/shell/matrix.org/x-ddfumpcsdmsgnklz)
10:53:53 kadoban joins (kadobanmat@gateway/shell/matrix.org/x-ufwuzjufmgpbpvll)
10:53:53 PotatoHatsue|T joins (berbermanm@gateway/shell/matrix.org/x-ofrgdpmkybpiprzw)
10:53:53 jeffcasavant[m] joins (jeffcasava@gateway/shell/matrix.org/x-javvwevsrvfabsjm)
10:53:53 johnnyboy[m] joins (gifumatrix@gateway/shell/matrix.org/x-grtayloopdscsgus)
10:53:53 camlriot42 joins (camlriotma@gateway/shell/matrix.org/x-iykqiffyqrfswvid)
10:53:53 kaychaks_riot joins (kaychaksma@gateway/shell/matrix.org/x-wzfqmwqobnsimpzc)
10:53:55 jkaye[m] joins (jkayematri@gateway/shell/matrix.org/x-xgtxrdifoozwqxqt)
10:53:56 loprakoa[m] joins (loprakoama@gateway/shell/matrix.org/x-jggrqgksdtnpxwbo)
10:53:56 TekShifter[m] joins (tekshifter@gateway/shell/matrix.org/x-cfzrvymgkwpsjlwz)
10:53:56 betrion[m] joins (betrionmat@gateway/shell/matrix.org/x-lhecpqwtjkkiglwb)
10:53:56 miseenplace[m] joins (miseenplac@gateway/shell/matrix.org/x-wnnpqyuemudervxu)
10:53:56 wi[m] joins (w1gzmatrix@gateway/shell/matrix.org/x-ywaugiascvhtlbjk)
10:53:57 mikr[m] joins (mikrdavral@gateway/shell/matrix.org/x-wijhaydyfjgkrnqd)
10:53:57 falling-edge[m] joins (falling-ed@gateway/shell/matrix.org/x-ingloazughuslvcy)
10:53:57 alexfmpe joins (alexfmpema@gateway/shell/matrix.org/x-uqlbdbsmgeiylcyi)
10:53:58 dyniec[m] joins (dyniecmatr@gateway/shell/matrix.org/x-rvvlgbaxbtmzugej)
10:53:58 patier[m] joins (patiermatr@gateway/shell/matrix.org/x-yjfgmheqbsrvyvho)
10:53:58 jesser[m] joins (jessermatr@gateway/shell/matrix.org/x-qvghulfnrarmvzsf)
10:53:58 andreabedini[m] joins (andreabedi@gateway/shell/matrix.org/x-qitqfbtrbfnzbcmu)
10:53:58 wanaks[m] joins (wanaksmatr@gateway/shell/matrix.org/x-evkorzdwtetbvvid)
10:53:58 alephu5[m] joins (alephu5mat@gateway/shell/matrix.org/x-iqqwqpszzorkjviq)
10:53:58 jlv joins (jlvjustinl@gateway/shell/matrix.org/x-pkbhavgbkzlvwwnm)
10:53:59 Hanma[m] joins (hanmamatri@gateway/shell/matrix.org/x-fchldacgfrgiwucu)
10:53:59 rab24ack[m] joins (rab24ackma@gateway/shell/matrix.org/x-djastgiuyzrwwale)
10:54:02 elpfen[m] joins (elpfenmatr@gateway/shell/matrix.org/x-aisvdtstqpsxnxki)
10:54:07 × Fractalis quits (~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7) (Ping timeout: 260 seconds)
10:54:41 <cads> lol @ issue 12
10:54:53 <cads> sounds like I need to make a proposal, is all
10:55:00 <cads> thanks!
10:56:48 boxscape joins (86ab2d68@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.45.104)
10:58:17 <merijn> cads: People can't agree on what installer should be used :p
10:58:25 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 256 seconds)
11:01:14 <maerwald> everyone has an opinion, but no one has time :p
11:01:40 <cads> makes it very very easy for anyone with the time
11:05:20 <cads> unless the other folks think they still get an opinion ;)
11:06:45 <cads> like, sorry, but this the new download button, lmao https://imgur.com/a/tVkTeak ;)
11:07:02 cads is partially kidding of course
11:09:45 × jedws quits (~jedws@101.184.150.93) (Read error: Connection reset by peer)
11:11:37 <tomsmeding> oh, can I order the Hask category? that would be neat
11:12:27 cads thinks the hask category is the first category they ever heard of
11:13:06 <tomsmeding> I believe it's not a particular interesting one, but don't ask me about category theory lol
11:14:40 <cads> maerwald, I'm very interested in your docker workers - was trying to set that up earlier today when I thought that the installer story was broken for WSL
11:15:17 christo joins (~chris@81.96.113.213)
11:15:25 <cads> I was going to have a ghc docker machine that I send builds to
11:15:40 × dansho quits (~dansho@ip68-108-167-185.lv.lv.cox.net) (Quit: Leaving)
11:16:18 × daGrevis quits (~daGrevis@unaffiliated/dagrevis) (Remote host closed the connection)
11:16:44 daGrevis joins (~daGrevis@unaffiliated/dagrevis)
11:17:41 <cads> maerwald, also at this juncture I'm thinking about adding buttons, not forcing a choice on the installers. Although adding buttons kind of foregrounds the issue that we don't really have buttons for windows, I'm not against making buttons point to what we've got
11:18:14 <cads> ie, that design can even remain in draft status till we figure out what the buttons are
11:20:16 × rprije quits (~rprije@124.148.131.132) (Ping timeout: 240 seconds)
11:22:05 <maerwald> cads: here's an example https://git.io/Jk6OS
11:26:03 <cads> I'm currently building design references from: https://go-lang.org, https://rust-lang.org, https://typescriptlang.org, https://quarkus.io - these are four examples of programming platforms, whose web pages visually eliminate uncertainty and reduce the stress of getting started.. Other examples are welcome!
11:26:21 DavidEichmann joins (~david@62.110.198.146.dyn.plus.net)
11:27:04 × wonko7 quits (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 240 seconds)
11:27:20 <cads> maerwald, thanks! I did not know that I could fork a gist. But I do now, and I'm not ashamed :)
11:28:18 LKoen joins (~LKoen@169.244.88.92.rev.sfr.net)
11:28:51 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 260 seconds)
11:29:44 Tops2 joins (~Tobias@dyndsl-095-033-021-036.ewe-ip-backbone.de)
11:33:59 × Martinsos quits (~user@cpe-188-129-116-164.dynamic.amis.hr) (Remote host closed the connection)
11:36:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:38:00 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:38:32 thc202 joins (~thc202@unaffiliated/thc202)
11:41:21 phaul joins (~phaul@ruby/staff/phaul)
11:46:12 × oleks quits (~oleks@188.166.34.97) (Remote host closed the connection)
11:46:13 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
11:46:28 × Guest42 quits (56ca6780@gateway/web/cgi-irc/kiwiirc.com/ip.86.202.103.128) (Quit: Connection closed)
11:47:00 klixto joins (~klixto@49.188.65.219)
11:47:43 enoq joins (~textual@194-208-146-143.lampert.tv)
11:47:55 × SanchayanM quits (~Sanchayan@171.76.82.54) (Quit: SanchayanM)
11:49:53 cosimone joins (~user@2001:b07:ae5:db26:d849:743b:370b:b3cd)
11:51:14 SanchayanMaity joins (~Sanchayan@171.76.82.54)
11:52:43 _ht joins (~huub@82-169-194-8.biz.kpn.net)
11:53:01 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 264 seconds)
11:53:09 × klixto quits (~klixto@49.188.65.219) (Quit: WeeChat 2.9)
11:53:32 × SanchayanMaity quits (~Sanchayan@171.76.82.54) (Client Quit)
11:53:37 × _ht quits (~huub@82-169-194-8.biz.kpn.net) (Client Quit)
11:57:01 × alp quits (~alp@2a01:e0a:58b:4920:21cf:ab8e:85fd:bb5c) (Ping timeout: 272 seconds)
11:58:58 wonko7 joins (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
12:01:23 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
12:03:13 sord937 joins (~sord937@gateway/tor-sasl/sord937)
12:04:16 boxscape33 joins (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
12:05:26 phaul joins (~phaul@ruby/staff/phaul)
12:07:02 × chaosmasttter quits (~chaosmast@p200300c4a72cf80165f6d709b523305b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
12:07:08 × boxscape quits (86ab2d68@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.45.104) (Ping timeout: 246 seconds)
12:08:20 sondr3 joins (~sondr3@cm-84.211.56.132.getinternet.no)
12:10:41 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
12:10:49 <sondr3> when writing parsers in Haskell where parsing depends on a sequence you parsec earlier on is there a way to avoid using state? The parser has a 'boundary' that is the end of a multiline string that you find in the beginning of parsing
12:11:21 × statusfailed quits (~statusfai@statusfailed.com) (Quit: leaving)
12:13:45 × Stanley00 quits (~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
12:13:53 statusfailed joins (~statusfai@statusfailed.com)
12:14:38 Entertainment joins (~entertain@104.246.132.210)
12:16:09 <tomsmeding> that's what monadic parsing is for, right?
12:16:28 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
12:16:43 <tomsmeding> do { sep <- choice [string "'", string "\""] ; body <- parseMultilineBody sep ; string sep ; return body }
12:16:54 alp joins (~alp@2a01:e0a:58b:4920:e13d:1293:cf10:eb67)
12:17:05 <tomsmeding> of course changed to your particular situation sondr3
12:17:31 <tomsmeding> your state is on the call stack, sort of
12:18:17 <tomsmeding> now, if you'd need to know which separator was used in a completely different part of the thing you're parsing, then you probably need some kind of state
12:19:22 × cosimone quits (~user@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: ERC (IRC client for Emacs 27.1))
12:20:13 <sondr3> Yeah, the separator is shared between many entries when parsing where each entries separator must be an exact match to the first found separator
12:22:43 Iceland_jack joins (~user@31.124.48.169)
12:22:49 <tomsmeding> is that only within the actual multiline string you're parsing? If so, can you not somehow write that parseMultilineBody function?
12:22:57 <tomsmeding> note that it gets the used separator as an argument sondr3
12:24:24 <sondr3> The spec says that the content is "any sequence of characters that neither begins with boundary nor NEWLINE boundary", I've been able to make a parser with state where it works
12:24:39 <sondr3> But it feels kinda icky and I
12:24:57 <sondr3> new keyboard, bear with me x)
12:25:30 oleks joins (~oleks@188.166.34.97)
12:25:30 × oleks quits (~oleks@188.166.34.97) (Client Quit)
12:25:36 <sondr3> *and I can't get hspec-megaparsec to agree with me when using ParsecT and not just Parsec
12:27:20 chaosmasttter joins (~chaosmast@p200300c4a72cf80165f6d709b523305b.dip0.t-ipconnect.de)
12:28:01 × tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
12:30:47 tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
12:31:48 danza joins (~francesco@151.74.104.171)
12:32:57 sheb joins (~Thunderbi@77.244.36.161)
12:33:01 <tomsmeding> sondr3: which spec?
12:33:29 <Iceland_jack> :t curr
12:33:30 <lambdabot> error:
12:33:30 <lambdabot> • Variable not in scope: curr
12:33:30 <lambdabot> • Perhaps you meant ‘curry’ (imported from Data.Tuple)
12:33:31 <Iceland_jack> :t curry
12:33:32 <lambdabot> ((a, b) -> c) -> a -> b -> c
12:33:43 <Iceland_jack> curry :: ((a, b) -> c)
12:33:43 <Iceland_jack> -> (a -> b -> c)
12:33:57 <tomsmeding> neat, isn't it?
12:34:10 sheb parts (~Thunderbi@77.244.36.161) ()
12:34:15 <sondr3> tomsmeding: https://github.com/google/hrx, looked like a simple and useful thing to use when learning parsing in Haskell, it's just the boundary stuff that's tripping me up
12:35:03 <tomsmeding> sondr3: can't you do this recursively?
12:35:22 × Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Quit: Leaving)
12:35:54 <sondr3> tomsmeding: the thought have struck me, yeah
12:37:42 sheb joins (~Thunderbi@77.244.36.161)
12:37:55 × NieDzejkob quits (~quassel@188.123.215.55) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
12:38:38 <sondr3> I'll try doing it recursively, thanks for being a rubber duck tomsmeding :)
12:38:57 <tomsmeding> or even in a kind of continuation-passing style; parseComponent :: Maybe Boundary -> Parsec HRX ; parseComponent Nothing = parseNewBoundary >>= parseAfterBoundary ; parseComponent (Just bnd) = parseBoundary bnd >> parseAfterBoundary bnd ; parseAfterBoundary :: Boundary -> Parser HRX ; parseAfterBoundary bnd = do { item <- pComment bnd <|> pFile bnd <|> pDirectory bnd ; HRX rest <- parseComponent
12:38:57 <tomsmeding> (Just bnd) ; return HRX (item : rest) }
12:39:00 <tomsmeding> or something like that?
12:39:06 NieDzejkob joins (~quassel@188.123.215.55)
12:39:10 <tomsmeding> s/ ; /\n/g
12:39:20 <tomsmeding> pseudocode though :p
12:39:24 <tomsmeding> that's CPS-like
12:40:19 sheb parts (~Thunderbi@77.244.36.161) ()
12:40:38 boxscape33 is now known as boxscape
12:40:50 <sondr3> Looks like Haskell to me :P thanks!
12:41:08 <boxscape> % type TypeOf :: forall t . forall (a :: t) -> *; type family TypeOf t where TypeOf @t a = t
12:41:08 <yahb> boxscape:
12:41:09 <boxscape> % :kind! TypeOf (Just True)
12:41:09 <yahb> boxscape: *; = Maybe Bool
12:41:12 <boxscape> I like that this works
12:41:28 <boxscape> feels almost like using a dynamically typed language in a way
12:41:44 sheb joins (~Thunderbi@77.244.36.161)
12:43:35 <boxscape> % type TypeOf' :: forall t . t -> *; type family TypeOf' a where TypeOf' @t a = t -- I suppose my kind sig is more complicated than it has to be
12:43:36 <yahb> boxscape:
12:44:16 × danza quits (~francesco@151.74.104.171) (Quit: Leaving)
12:45:31 hackage sr-extra 1.85.1 - Module limbo https://hackage.haskell.org/package/sr-extra-1.85.1 (DavidFox)
12:46:04 <boxscape> % Just True :: TypeOf (Just True) -- :)
12:46:04 <yahb> boxscape: Just True
12:46:23 geekosaur joins (ac3a8b3a@172.58.139.58)
12:48:10 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
12:48:17 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:49:10 × _xor quits (~xor@74.215.46.133) (Quit: WeeChat 3.0)
12:49:28 hseg joins (~gesh@185.120.126.113)
12:49:31 _xor joins (~xor@74.215.46.133)
12:49:42 <hseg> hi. is there some way of dumping all bindings made in ghci?
12:50:12 <hseg> have had a long ghci session, would like to save some of the more useful ones for tomorrow
12:50:34 Lden joins (5fa448e7@95.164.72.231)
12:50:41 <geekosaur> not really
12:50:53 <hseg> pity
12:51:01 <boxscape> % :show bindings
12:51:01 <yahb> boxscape: type Ghci6.Fam :: forall k (a :: k) (b :: k). a :~: b; type family Ghci6.Fam; type Ghci7.Fam :: forall k (a :: k) (b :: k). a :~: b; type family Ghci7.Fam; type Ghci8.Fam :: forall k (a :: k) (b :: k). a :~: b; type family Ghci8.Fam; type Ghci9.Fam :: forall k (a :: k) (b :: k). a :~: b; type family Ghci9.Fam; type Fam :: forall k (a :: k) (b :: k). a :~: b; type family Fam; type Foo :: *; data Foo = ...; foo
12:51:11 <boxscape> hseg does that work?
12:51:45 <boxscape> wait
12:51:47 <boxscape> it doesn't
12:51:58 <boxscape> it doesn't give you the definition, only the type
12:51:59 <boxscape> :(
12:52:21 <hseg> which is enough to ctrl-r back to the definition
12:52:24 <hseg> thanks!
12:52:29 <boxscape> np
12:52:34 <boxscape> glad it help
12:52:35 <boxscape> s
12:52:45 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
12:53:30 <hseg> well, up to a point, but i'll take what i can get
12:53:54 × pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!)
12:54:06 SanchayanMaity joins (~Sanchayan@171.76.82.54)
12:56:07 × carlomagno quits (~cararell@148.87.23.7) (Remote host closed the connection)
12:58:33 Lden parts (5fa448e7@95.164.72.231) ()
12:58:44 Lden joins (5fa448e7@95.164.72.231)
12:58:55 × Lden quits (5fa448e7@95.164.72.231) (Remote host closed the connection)
12:59:18 LDem joins (5fa448e7@95.164.72.231)
13:00:01 × hexfive quits (~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
13:00:43 Tario joins (~Tario@201.192.165.173)
13:01:26 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
13:01:44 urodna joins (~urodna@unaffiliated/urodna)
13:03:02 texasmynsted joins (~texasmyns@212.102.45.103)
13:03:20 <tomsmeding> hseg: try ~/.ghc/ghci_history?
13:03:21 × texasmynsted quits (~texasmyns@212.102.45.103) (Read error: Connection reset by peer)
13:03:44 texasmynsted joins (~texasmyns@212.102.45.103)
13:04:00 <tomsmeding> though it seems it only writes that file upon closing ghci, so that's going to be a scary close :p
13:04:00 × ian-mi quits (~ian_milli@c-67-160-8-14.hsd1.wa.comcast.net) (Ping timeout: 256 seconds)
13:04:06 <hseg> yup
13:04:19 <hseg> and it's of bounded length
13:04:30 <hseg> oh well
13:04:31 <tomsmeding> oh true
13:04:35 <hseg> not too much was lost
13:04:49 <hseg> and needed to rewrite what was lost anyway
13:06:44 <hseg> recommendations for improvement on http://ix.io/2FbY ?
13:06:45 × tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
13:07:18 <hseg> (trying to compute the cycle notation of a permutation s, written out as [s 1, s 2, ..., s n])
13:07:26 <ski> Xnuk : "Escaping Hell with Monads" by Philip Nilsson in 2017-05-08 at <https://philipnilsson.github.io/Badness10k/escaping-hell-with-monads/> might be interesting
13:08:18 tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
13:09:42 lmw joins (866594e0@gateway/web/thelounge/ip.134.101.148.224)
13:09:52 lmw hugs ski
13:10:07 <hseg> ski: neat exposition
13:10:45 × Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 240 seconds)
13:11:15 <ski> dminuoso : "The usefulness of monad comes from not using it" -- actually i think this (the original, unintended, formulation), is partially true, if you interpret it as expressing effects through monads, instead of by having side-effects in the language
13:11:23 <ski> heya lmw :)
13:12:28 Fractalis joins (~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7)
13:13:31 carlomagno joins (~cararell@148.87.23.7)
13:17:22 <sondr3> I like how DuckDuckGo displays a little `Safe Haskell: Trustworthy Language: Haskell2010` beneath some Hackage packages
13:17:54 × SanchayanMaity quits (~Sanchayan@171.76.82.54) (Quit: SanchayanMaity)
13:18:08 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:6c06:c056:20b8:f8ee:6530) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:18:20 <Iceland_jack> :D
13:18:50 <ski> (in other words, part of the usefulness of expressing effects through monads (and idioms / applicative functors), rather than through side-effects, is that this clearly (in both types/interfaces, and in code) delineates and distinguishes where effects can occur, rather than potentially every call having a side-effect, thereby helping/improving refactoring and other reasoning)
13:22:22 <hseg> ie a particular case of "sufficiently well-typed programs can only go limitedly wrong"
13:22:34 × lmw quits (866594e0@gateway/web/thelounge/ip.134.101.148.224) (Quit: The Lounge - https://thelounge.chat)
13:24:14 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:6c06:c056:20b8:f8ee:6530)
13:26:11 <hseg> TIL: import Module as M imports all names from M as well as qualified versions qualified by M -- particularly useful when only a couple of names overlap
13:26:26 × Fractalis quits (~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7) (Ping timeout: 264 seconds)
13:30:07 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 260 seconds)
13:30:27 × JohnONolan quits (~JohnONola@217.146.82.202) (Remote host closed the connection)
13:32:32 × coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
13:32:51 thc202 joins (~thc202@unaffiliated/thc202)
13:33:15 Kaivo joins (~Kaivo@104-200-86-99.mc.derytele.com)
13:33:49 × LDem quits (5fa448e7@95.164.72.231) (Ping timeout: 245 seconds)
13:34:28 Chi1thangoo joins (~Chi1thang@87.112.60.168)
13:36:36 × fendor quits (~fendor@91.141.2.69.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
13:36:46 SanchayanMaity joins (~Sanchayan@171.76.82.54)
13:39:10 ian-mi joins (~ian_milli@2601:600:9c80:322d:fffc:f6e1:b33f:3002)
13:42:31 fendor joins (~fendor@91.141.0.31.wireless.dyn.drei.com)
13:43:05 × solonarv quits (~solonarv@astrasbourg-653-1-156-4.w90-6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
13:45:35 × lxsameer quits (~lxsameer@unaffiliated/lxsameer) (Ping timeout: 260 seconds)
13:47:27 <tomsmeding> I recommend using an unqualified import with an "as" binding very sparingly
13:48:09 <tomsmeding> it suggests that this module exports names that collide with other things (otherwise you wouldn't need the "as"), and thus probably exports names that are fairly generic and hard to trace back to the module
13:48:26 <tomsmeding> which _usually_ makes it hard to understand the code without IDE support
13:48:39 <tomsmeding> but this is a very subjective recommendation, use your own judgement :)
13:49:09 <tomsmeding> in particular 'import Data.Text as T' is very bad IMO
13:49:18 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
13:49:18 × Chi1thangoo quits (~Chi1thang@87.112.60.168) (Read error: Connection reset by peer)
13:53:52 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
13:54:13 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
13:55:07 st8less joins (~st8less@2603:a060:11fd:0:b95c:25ed:47d7:d69f)
13:55:16 × boxscape quits (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Ping timeout: 240 seconds)
13:56:56 PacoV joins (~pcoves@16.194.31.93.rev.sfr.net)
13:56:58 <PacoV> Hi.
13:57:45 <tomsmeding> hseg: a pattern that I (and other people) do use is something like 'import qualified Data.Map.Strict as Map ; import Data.Map.Strict (Map)'
13:58:05 <tomsmeding> re:your IS.IntSet
14:00:15 lxsameer joins (lxsameer@gateway/vpn/protonvpn/lxsameer)
14:00:23 resolve joins (~resolve@178.162.212.214)
14:01:39 <tomsmeding> PacoV: 👋
14:08:08 qwfpmluy joins (2e0505e2@HSI-KBW-046-005-005-226.hsi8.kabel-badenwuerttemberg.de)
14:08:44 hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
14:10:38 boxscape joins (86ab2c1f@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.31)
14:12:25 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
14:17:42 vicfred joins (~vicfred@unaffiliated/vicfred)
14:18:05 Achylles joins (~Achylles@177.45.205.205)
14:18:14 × cur8or quits (~cur8or@72canterbury.cybersmart.co.za) (Ping timeout: 256 seconds)
14:18:55 × Achylles quits (~Achylles@177.45.205.205) (Max SendQ exceeded)
14:19:25 Achylles joins (~Achylles@177.45.205.205)
14:21:57 × Achylles quits (~Achylles@177.45.205.205) (Max SendQ exceeded)
14:22:19 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
14:22:33 son0p joins (~son0p@181.136.122.143)
14:22:36 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
14:23:52 Achylles joins (~Achylles@177.45.205.205)
14:24:58 phaul joins (~phaul@ruby/staff/phaul)
14:26:17 <qwfpmluy> what are the best resources for learning about the different ways of doing `deriving` (deriving via, standalone deriving, ...) in haskell?
14:28:09 <boxscape> I think the User Guide, starting here, is a decent resource https://downloads.haskell.org/ghc/latest/docs/html/users_guide/glasgow_exts.html#generalised-derived-instances-for-newtypes
14:28:39 <boxscape> (actually standalone deriving is a bit further up)
14:31:11 <Uniaika> I wonder if Kowainik didn't make a short guide on that
14:31:31 <lyxia> qwfpmluy: https://kowainik.github.io/posts/deriving
14:31:42 <Uniaika> glorious, thanks lyxia
14:31:55 <lyxia> Uniaika: :P
14:32:08 <Uniaika> :9
14:32:21 <hseg> tomsmeding: fair. i use unqualified imports more frequently in ghci for this reason
14:32:56 <tomsmeding> ghci is playground anyway :)
14:33:56 × cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
14:33:58 <qwfpmluy> boxscape lyxia thanks!
14:34:36 <hseg> exactly
14:34:43 <hseg> any other recs?
14:34:56 <hseg> feel my recursion is a bit ad-hoc
14:36:01 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
14:36:06 cads joins (~cads@ip-64-72-99-232.lasvegas.net)
14:36:56 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
14:37:18 coot joins (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
14:37:24 Fractalis joins (~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7)
14:37:39 mpereira joins (~mpereira@2a02:810d:f40:d96:1ca0:7a83:5454:b1ba)
14:38:00 hackage prolude 0.0.0.10 - ITProTV's custom prelude https://hackage.haskell.org/package/prolude-0.0.0.10 (saramuse)
14:42:53 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
14:44:53 phaul joins (~phaul@ruby/staff/phaul)
14:45:05 falafel joins (~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4)
14:48:25 × sheb quits (~Thunderbi@77.244.36.161) (Ping timeout: 240 seconds)
14:48:34 × geekosaur quits (ac3a8b3a@172.58.139.58) (Remote host closed the connection)
14:49:32 kish` joins (~oracle@unaffiliated/oracle)
14:49:44 sheb joins (~Thunderbi@77.244.36.161)
14:49:53 × larou quits (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
14:51:32 × xff0x quits (~fox@2001:1a81:5237:b800:d8c8:bfa0:43f3:b736) (Ping timeout: 260 seconds)
14:51:58 xff0x joins (~fox@2001:1a81:5237:b800:aac7:5690:7e90:eba4)
14:52:14 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:6c06:c056:20b8:f8ee:6530) (Ping timeout: 264 seconds)
14:52:14 × chaosmasttter quits (~chaosmast@p200300c4a72cf80165f6d709b523305b.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
14:53:06 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:6c06:c056:20b8:f8ee:6530)
14:53:53 <boxscape> hmm, I'm idly wondering if there is some way to take a non-IO value and unsafeCoerce it to print a non-empty string to the terminal
14:54:02 <boxscape> I suppose there has to be
14:54:16 × tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
14:54:54 Sheilong joins (uid293653@gateway/web/irccloud.com/x-lkssxccumhdupnut)
14:57:57 <tomsmeding> hseg: I haven't even tried to compile this, but theoretically this should do the same as yours? https://paste.tomsmeding.com/FbLBhrVM
14:58:23 <tomsmeding> using ! instead of !? I do assume that the permutation is valid, i.e. doesn't contain out of bounds values
14:58:50 × falafel quits (~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4) (Ping timeout: 264 seconds)
14:58:54 tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
15:00:14 <dminuoso> boxscape: Do you mean Debug.Trace.trace ?
15:00:22 <dminuoso> That's not quite unsafeCoerce though.
15:01:20 <boxscape> dminuoso well, basically what I'm looking for (for no particular reason) is something like (unsafeCoerce (23874893274 :: Integer) :: IO ()), which, when bound to main, prints "hello" to the terminal, or whatever
15:01:44 <merijn> boxscape: You are a bad person and you should feel bad >.>
15:01:45 <dminuoso> How is that even remotely related to unsafeCoerce... ?
15:01:52 <boxscape> merijn sorry :(
15:01:53 <merijn> dminuoso: l33t ahx
15:01:58 <merijn> s/ahx/hax
15:02:16 <dminuoso> boxscape: Why should that print "hello" and not "goodbye"?
15:02:19 <merijn> dminuoso: Like those people who write C, but main is a char* whose values happen to be sensible code
15:02:30 <boxscape> dminuoso because the number is carefully chosen
15:02:38 <boxscape> (though my example is random)
15:02:49 <dminuoso> boxscape: Maybe you should elaborate on that "carefully chosen"
15:02:55 <dminuoso> because so far you didn't mentoin this
15:03:11 <dminuoso> All I got was "I want `unsafeCoerce a` to turn it into a printing thing"
15:03:13 × alp quits (~alp@2a01:e0a:58b:4920:e13d:1293:cf10:eb67) (Ping timeout: 272 seconds)
15:03:13 <dminuoso> :p
15:03:15 <merijn> dminuoso: He wants to figure out how to pick a value, such that unsafeCoerce leads toe xecutable code
15:03:29 <boxscape> dminuoso The essence of my wondering is exactly how to find such a value (and I suppose a type that supports it)
15:03:48 <dolio> I think that might not even be possible.
15:03:57 <dminuoso> boxscape: unsafePerformIO does it for you.
15:03:57 <boxscape> hmm what makes you say that?
15:04:06 <dminuoso> Or.. wait no. IO is that thing.
15:04:49 <tomsmeding> boxscape: I think the problem you're going to run into is that a valid valid of type IO a is going to have lots of pointers in it
15:04:51 <dminuoso> boxscape: For starters you have no knowledge of the hepa
15:04:58 <dminuoso> *heap
15:05:01 <dolio> Because there'd be no closure layout for an integer that actually matches an IO thing.
15:05:13 <dolio> Or any other type, really.
15:05:16 <boxscape> hmm okay
15:05:32 <tomsmeding> a ByteArray# could perhaps accidentally match something?
15:05:38 <dminuoso> ByteArray# lives on the heap too.
15:05:46 <tomsmeding> sure, but an IO value does too
15:05:58 <tomsmeding> and embedded pointers will go wrong though
15:06:47 × NieDzejkob quits (~quassel@188.123.215.55) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
15:07:34 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
15:07:53 NieDzejkob joins (~quassel@188.123.215.55)
15:08:08 <dminuoso> My feeling tells me boxscape lied about the "for no particular reason" part.
15:08:13 <hseg> tomsmeding: yeah, that looks great! my code is an object example of tunnel-visioned use of One Trick(TM)
15:08:20 <dminuoso> boxscape: Are you trying to be really sneaky?
15:08:21 <hseg> thanks!
15:08:25 <boxscape> dminuoso your feelings are lying to you :P
15:08:29 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
15:09:03 <boxscape> I was watching a stephanie werich talk about dependent haskell and somehow ended up using unsafeCoerce on a bunch of values with yahb, but I'm not sure how I got there
15:09:29 <boxscape> s/werich/weirich
15:09:49 <hseg> for some reason i have been avoiding let..in expressions in favor of where clauses recently
15:10:01 <dminuoso> boxscape: Can you provide a link to the talk, perhaps indexed at the right time
15:10:07 <merijn> hseg: I've always done that, let..in is hard to format nicely and almost never necessary
15:10:29 <tomsmeding> hseg: you could even replace the otherwise-line of 'peel' with 'uncurry (:) (peel <$> orbit (IS.findMin remaining) IS.empty)', but that's not making it better :p
15:10:32 <boxscape> dminuoso er, I can, but it won't help much because it has nothing to do with unsafeCoerce
15:10:33 <boxscape> https://youtu.be/n-b1PYbRUOY?t=1878
15:10:38 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
15:10:58 <Iceland_jack> qwfpmluy: you can use :instances to list possible instance to derive for -XDerivingVia
15:11:14 <Iceland_jack> newtype LL a = LL [[a]] deriving (Functor, Applicative) via Compose [] []
15:11:28 <Iceland_jack> :instances Compose [] [], lists (possible) instances to derive
15:11:50 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
15:12:01 <Iceland_jack> newtype Age = A Int deriving newtype Num
15:12:01 <Iceland_jack> ={equivalent}
15:12:02 <Iceland_jack> newtype Age = A Int deriving Num via Int
15:12:16 <Iceland_jack> -XDerivingVia generalizes -XGeneralizedNewtypeDeriving
15:13:01 × DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
15:13:12 <Iceland_jack> *generalises??
15:13:20 <Iceland_jack> I must obey UK
15:13:25 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 264 seconds)
15:13:31 <boxscape> then use -XGeneralisedNewtypeDeriving
15:13:32 <hseg> i think this recursion pattern of :: (s -> (a,s)) -> (s -> Bool) -> s -> [a] should generalize, no?
15:13:41 <Iceland_jack> I think GND somewhat recently added -XGeneralisedNewtypeDeriving, UK spelling
15:13:59 <boxscape> yeah
15:14:17 <tomsmeding> :t unfoldr -- hseg
15:14:18 <lambdabot> (b -> Maybe (a, b)) -> b -> [a]
15:14:26 <hseg> merijn: that must be it
15:14:47 <hseg> ok, so peel can be written as an unfoldr
15:15:24 phaul joins (~phaul@ruby/staff/phaul)
15:16:28 <tomsmeding> interesting, you're right
15:17:23 <hseg> also, IntSet is missing lookupMin :: IntSet -> Maybe Key
15:17:32 <ski> @where strategic-deriving
15:17:33 <lambdabot> I know nothing about strategic-deriving.
15:18:39 <ski> @where+ strategic-deriving "Strategic Deriving" by Veronika Romashkina,Dmitrii Kovanikov in 2020-09-21 at <https://kowainik.github.io/posts/deriving>
15:18:39 <lambdabot> Good to know.
15:18:54 <merijn> hseg: That's just "fmap fst . minView" ? :)
15:19:13 zaquest joins (~notzaques@5.128.210.178)
15:19:34 <hseg> sure... it did encourage me to reverse the iteration of my algorithm
15:19:47 <hseg> (i.e. replace "seen" by "to-process")
15:21:18 <hseg> also, considering the rest of containers have lookups, it's an annoying hole
15:21:47 andos joins (~dan@69-165-210-185.cable.teksavvy.com)
15:23:01 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 264 seconds)
15:23:50 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
15:25:22 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
15:25:23 <hseg> tomsmeding: also, orbit's output is flipped from what peel wants
15:25:36 <hseg> it returns (seen, orbit)
15:25:53 <tomsmeding> oh that's too bad, I wrote it that way to make the <$> nice and compact :p
15:26:56 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Ping timeout: 240 seconds)
15:27:01 <hseg> no problem -- just add a flip on the unfoldr
15:28:34 × enoq quits (~textual@194-208-146-143.lampert.tv) (Read error: Connection reset by peer)
15:29:01 <tomsmeding> :t flip flip
15:29:02 <lambdabot> b -> (a -> b -> c) -> a -> c
15:29:22 <hseg> cool!
15:29:30 <dminuoso> flip flip looks cute and useful
15:29:45 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
15:29:47 <dminuoso> Just dont know what for.
15:29:55 phaul joins (~phaul@ruby/staff/phaul)
15:30:02 <hseg> it reverses operators
15:30:16 × toorevitimirp quits (~tooreviti@117.182.183.18) (Remote host closed the connection)
15:30:16 <xerox_> :t flip flip flip
15:30:17 christo joins (~chris@81.96.113.213)
15:30:18 <lambdabot> (a1 -> ((a2 -> b -> c1) -> b -> a2 -> c1) -> c2) -> a1 -> c2
15:30:20 enoq joins (~textual@194-208-146-143.lampert.tv)
15:30:25 <hseg> > flip flip (++) ", world" "hello"
15:30:27 <lambdabot> error:
15:30:27 <lambdabot> • Couldn't match expected type ‘[Char]
15:30:27 <lambdabot> -> ([a0] -> [a0] -> [a0]) -> c’
15:30:28 <maerwald> :t flip . flip . flip
15:30:30 <lambdabot> (a -> b -> c) -> b -> a -> c
15:30:37 <xerox_> that's what I was after
15:30:47 <tomsmeding> you know what's more fun? iterating 'flip' converges https://paste.tomsmeding.com/SefRZrAn
15:30:49 <hseg> > flip flip ", world" (++) "hello"
15:30:52 <lambdabot> "hello, world"
15:31:09 <dminuoso> Also, random occurences of `flip const id` in your code are good to ensure the reader is paying full attention.
15:31:28 × vollenweider_ quits (~vollenwei@4e69b241.skybroadband.com) (Ping timeout: 260 seconds)
15:31:46 <tomsmeding> nah, should replace that 'id' with an arbitrarily complex expression
15:31:46 <hseg> :t flip const id
15:31:48 <lambdabot> c -> c
15:31:56 <hseg> neat
15:32:00 <hseg> :t id id id id id
15:32:01 ski seconds the `where' over `let'-`in'
15:32:01 <lambdabot> a -> a
15:32:16 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
15:32:20 × tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
15:32:29 <dminuoso> ski: Ive started to become quite fond of `let` in pattern guards.
15:32:44 <dminuoso> for small bits, this can create less noise than where
15:32:46 <ski> that's not `let'-`in', though
15:32:58 <dminuoso> sure, just introducing this as a third alternative option
15:33:03 <ski> @type map `flip` "foo"
15:33:05 <lambdabot> (Char -> b) -> [b]
15:33:14 <merijn> dminuoso: What do you need let for in pattern guards?
15:33:14 ski nods
15:33:28 <dminuoso> merijn: foo x | let y = ... = ...
15:33:36 <dminuoso> Same reason you'd use where
15:33:43 <merijn> dminuoso: You can just do "| y <- .."
15:33:50 <boxscape> "merijn: Like those people who write C, but main is a char* whose values happen to be sensible code" I can't help but look into this now :/
15:34:00 <dminuoso> merijn: We had this discussion before. <- has more potential for bugs
15:34:18 <merijn> boxscape: You haven't heard about IOCCC?
15:34:19 tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
15:34:20 <merijn> boxscape: https://www.ioccc.org/
15:34:27 <dminuoso> i.e. `foo x | F x <- ...` vs `foo x | let Foo x = ...`
15:34:29 <dminuoso> err
15:34:35 <dminuoso> `foo x | F x <- ...` vs `foo x | let F x = ...`
15:34:48 <boxscape> merijn I've heard of it but tbh I haven't really looked at any of their programs in detail
15:34:53 <dminuoso> The former will behave differently if we suddenly introduce another contructor to F's type
15:34:59 vollenweider_ joins (~vollenwei@4e69b241.skybroadband.com)
15:35:01 × christo quits (~chris@81.96.113.213) (Ping timeout: 264 seconds)
15:35:39 ski . o O ( `blah | let f x = ..x..,... = ...' )
15:35:56 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
15:36:01 <dminuoso> mm, is that allowed?
15:36:03 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
15:36:11 <dminuoso> % blah | let f x = x^2 = f 10
15:36:11 <yahb> dminuoso:
15:36:16 <dminuoso> Oh cool. TIL
15:36:24 mirrorbird joins (psutcliffe@gateway/vpn/mullvad/psutcliffe)
15:37:11 <ski> @wiki Obfuscation
15:37:11 <lambdabot> https://wiki.haskell.org/Obfuscation
15:37:58 × SanchayanMaity quits (~Sanchayan@171.76.82.54) (Quit: SanchayanMaity)
15:38:50 <ski> % let blah y | let f x = x^2,(f . f -> z) <- y = z in blah 2
15:38:51 <yahb> ski: 16
15:39:40 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
15:40:27 <ski> % let blah (f . f -> z) | let f x = x^2 = z in blah 2
15:40:27 <yahb> ski: ; <interactive>:19:11: error: Variable not in scope: f :: b0 -> c1; <interactive>:19:15: error: Variable not in scope: f :: a -> b0
15:40:30 <ski> too bad
15:41:57 <boxscape> % let {f | let Nothing = Just 4 = True | otherwise = False} in f
15:41:57 <yahb> boxscape: True
15:41:58 <boxscape> % let {f | Nothing <- Just 4 = True | otherwise = False} in f
15:41:58 <yahb> boxscape: False
15:42:00 <boxscape> nice
15:42:41 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
15:42:53 <boxscape> I suppose instead of let guards you could use pattern guards with a lazy pattern
15:43:04 <boxscape> % let {f | ~Nothing <- Just 4 = True | otherwise = False} in f
15:43:04 <yahb> boxscape: True
15:43:07 <ski> yes
15:43:59 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
15:44:05 × haritz quits (~hrtz@unaffiliated/haritz) (Ping timeout: 240 seconds)
15:44:18 cross joins (~cross@spitfire.i.gajendra.net)
15:45:00 <ski> dminuoso : hm, you mean it will suddenly skip to the next alternative, in such case ?
15:45:58 Lycurgus joins (~niemand@98.4.114.74)
15:46:17 <ski> `let' in list comprehensions is occasionally useful, too. but sometimes i find myself using `... <- [...]' (singleton list), instead
15:47:36 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
15:48:16 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Ping timeout: 240 seconds)
15:48:37 phaul joins (~phaul@ruby/staff/phaul)
15:48:45 <dminuoso> ski: Yes.
15:49:15 <dminuoso> It can be what you want, but if not it can cause subtle bugs. With let you get an incomplete pattern match warning, so if the "skip" behavior is what you want you can opt-in still
15:49:36 alp joins (~alp@2a01:e0a:58b:4920:d40a:f511:3b1a:9c8d)
15:49:41 <ski> yes
15:50:40 <dminuoso> <- just saves me a few characters with nothing to gain :)
15:50:46 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:52:53 <ski> i see
15:55:13 elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
15:55:42 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
15:56:43 <hseg> tomsmeding: http://ix.io/2Fde is my latest version
15:56:49 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 246 seconds)
15:57:06 <hseg> still feels like orbit could be improved, and am not too happy about the required plumbing
15:57:13 <hseg> but it's a marked improvement
15:57:19 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
15:57:41 ddellacosta joins (dd@gateway/vpn/mullvad/ddellacosta)
15:57:55 <tomsmeding> hseg: IS.notMember
15:57:58 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
15:58:12 <hseg> d'oh! missed it
15:58:25 haritz joins (~hrtz@62.3.70.206)
15:58:25 × haritz quits (~hrtz@62.3.70.206) (Changing host)
15:58:25 haritz joins (~hrtz@unaffiliated/haritz)
15:59:12 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-ivgwdqliaykucuud)
15:59:50 <tomsmeding> hseg: why not this? orbit x rs = if x `IS.member` rs then (x :) <$> orbit (nextMap ! x) (IS.delete x rs) else (rs, [])
15:59:54 <hseg> seems like the underlying logic for orbit is some takeWhileM :: (a -> m Bool) -> f a -> m [a]. not too certain on f
15:59:56 <Iceland_jack> :t (??)
15:59:56 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds)
15:59:57 <lambdabot> Functor f => f (a -> b) -> a -> f b
15:59:58 <tomsmeding> why look ahead once
16:00:00 <Iceland_jack> :t (??) (??)
16:00:03 <lambdabot> Functor f => a -> f (a -> b) -> f b
16:00:05 × micahsovereign[m quits (micahsover@gateway/shell/matrix.org/x-frusjvfqlxbbwchl) (Quit: Idle for 30+ days)
16:00:05 × sureyeaah quits (shauryab98@gateway/shell/matrix.org/x-xujaibeehyrzrqgr) (Quit: Idle for 30+ days)
16:00:09 × PotatoHatsue|T quits (berbermanm@gateway/shell/matrix.org/x-ofrgdpmkybpiprzw) (Quit: Idle for 30+ days)
16:00:09 × hnOsmium0001[m] quits (hnosmium00@gateway/shell/matrix.org/x-cujgdqencyyvcwtx) (Quit: Idle for 30+ days)
16:00:13 <Iceland_jack> where flip = (??) @((->) _)
16:00:16 × kaychaks_riot quits (kaychaksma@gateway/shell/matrix.org/x-wzfqmwqobnsimpzc) (Quit: Idle for 30+ days)
16:00:26 Rudd0 joins (~Rudd0@185.189.115.103)
16:00:29 × berberman_ quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
16:00:51 berberman joins (~berberman@unaffiliated/berberman)
16:01:46 <hseg> bc it kills the search immediately
16:02:08 <hseg> since the first element has already been deleted by the unfolding
16:02:13 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
16:02:23 <tomsmeding> oh right
16:02:51 <tomsmeding> but then I'd say fix the unfolding :p
16:03:27 × PacoV quits (~pcoves@16.194.31.93.rev.sfr.net) (Remote host closed the connection)
16:03:48 <hseg> ofc
16:04:16 × sondr3 quits (~sondr3@cm-84.211.56.132.getinternet.no) (Ping timeout: 256 seconds)
16:04:31 <ski> Iceland_jack : `flip' used to have that type, in lambdabot. (and `(.)' in lambdabot used to be `fmap')
16:04:33 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
16:04:39 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
16:05:01 phaul joins (~phaul@ruby/staff/phaul)
16:05:48 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:6c06:c056:20b8:f8ee:6530) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:06:28 × mirrorbird quits (psutcliffe@gateway/vpn/mullvad/psutcliffe) (Ping timeout: 256 seconds)
16:06:30 hackage implicit-hie 0.1.2.4 - Auto generate hie-bios cradles & hie.yaml https://hackage.haskell.org/package/implicit-hie-0.1.2.4 (Avi_Dessauer)
16:07:03 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Ping timeout: 260 seconds)
16:07:36 boxscape47 joins (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
16:07:47 <hseg> http://ix.io/2Fdl even more plumbing, but it works now
16:08:14 christo joins (~chris@81.96.113.213)
16:09:08 <hseg> frankly, orbit feels like a unfoldWhileM :: (a -> m Bool) -> (a -> m a) -> m [a]
16:10:36 <hseg> actually, should be :: (a -> Bool) -> m a -> m [a]
16:10:56 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
16:11:07 <ski> @hoogle m (Maybe a) -> m [a]
16:11:08 <lambdabot> Control.Monad.Loops unfoldM :: Monad m => m (Maybe a) -> m [a]
16:11:08 <lambdabot> Data.Typeable gcast1 :: forall c t t' a . (Typeable t, Typeable t') => c (t a) -> Maybe (c (t' a))
16:11:08 <lambdabot> BasePrelude gcast1 :: (Typeable t, Typeable t') => c (t a) -> Maybe (c (t' a))
16:11:08 × boxscape quits (86ab2c1f@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.31) (Ping timeout: 260 seconds)
16:12:22 reallymemorable joins (~quassel@2601:180:8300:8fd0:6c3d:6186:76f:e94b)
16:12:43 <hseg> hrm... no, that's not quite right
16:12:56 phaul joins (~phaul@ruby/staff/phaul)
16:13:20 <hseg> orbit :: State (Int, IntSet) [Int]
16:14:01 <ski> not `orbit :: Int -> State IntSet [Int]', then ?
16:14:25 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
16:14:30 <hseg> you're right
16:14:34 <hseg> thanks
16:14:46 Stanley00 joins (~stanley00@unaffiliated/stanley00)
16:15:00 fxg joins (~fxg@unaffiliated/fxg)
16:15:13 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
16:15:15 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:15:19 <hseg> right, basically want some kind of iterateUntilM :: (a -> a) -> (a -> m Bool) -> a -> m [a]
16:17:05 <hseg> and indeed, given *more* plumbing could just use unfoldM :: (a -> m (Maybe a)) -> a -> m [a]
16:17:36 <ski> @hoogle Monad m => (a -> m (Maybe a)) -> a -> m [a]
16:17:37 <lambdabot> Control.Monad.Extra iterateMaybeM :: Monad m => (a -> m (Maybe a)) -> a -> m [a]
16:19:16 bmurt joins (~bmurt@c-76-99-78-62.hsd1.pa.comcast.net)
16:19:20 × Stanley00 quits (~stanley00@unaffiliated/stanley00) (Ping timeout: 272 seconds)
16:19:33 bmurt parts (~bmurt@c-76-99-78-62.hsd1.pa.comcast.net) ()
16:19:33 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
16:19:44 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
16:24:15 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Ping timeout: 256 seconds)
16:24:38 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
16:25:00 knupfer joins (~Thunderbi@200116b8240c1500d4c0d3fffeca1dc0.dip.versatel-1u1.de)
16:26:02 × knupfer quits (~Thunderbi@200116b8240c1500d4c0d3fffeca1dc0.dip.versatel-1u1.de) (Remote host closed the connection)
16:26:10 knupfer joins (~Thunderbi@200116b8240c1500510f95f5a248f852.dip.versatel-1u1.de)
16:26:19 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
16:29:01 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 246 seconds)
16:29:31 phaul joins (~phaul@ruby/staff/phaul)
16:31:43 <ski> hseg : why the name `cycnot' ?
16:32:16 <hseg> cycle notation
16:32:31 × alp quits (~alp@2a01:e0a:58b:4920:d40a:f511:3b1a:9c8d) (Ping timeout: 272 seconds)
16:32:47 <sm[m]> g'day haskellers
16:34:28 <ski> oh, "notation"
16:34:28 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 260 seconds)
16:34:48 ski was thinking "not" as in negation, and it didn't seem to make sense
16:35:04 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:35:15 <ski> heyo, sm[m]
16:35:32 <hseg> h
16:35:35 <hseg> ah
16:36:00 <ski> ok. so each of the computed permutations are cycles
16:36:12 <hseg> yup
16:36:34 <hseg> basically i'm breaking up the permutation into cycle
16:36:36 <hseg> cycles
16:36:47 <ski> right
16:37:06 ski was just checking it seems to make sense, for the empty permutation
16:38:10 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
16:38:16 × jess quits (jess@freenode/staff/jess) (Remote host closed the connection)
16:38:32 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
16:38:54 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
16:39:01 jess joins (jess@freenode/staff/jess)
16:39:04 <ski> hm .. reminds me i was investigating a sort of arithmetic on permutations. addition, multiplication, power/exponential
16:39:38 <hseg> oh?
16:40:31 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
16:40:53 phaul joins (~phaul@ruby/staff/phaul)
16:42:00 hackage gi-gobject 2.0.25 - GObject bindings https://hackage.haskell.org/package/gi-gobject-2.0.25 (inaki)
16:42:35 __monty__ joins (~toonn@unaffiliated/toonn)
16:43:55 michalz joins (~user@185.246.204.61)
16:45:18 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Ping timeout: 272 seconds)
16:45:35 conal joins (~conal@64.71.133.70)
16:46:53 conal_ joins (~conal@64.71.133.70)
16:48:09 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:50:05 × conal quits (~conal@64.71.133.70) (Ping timeout: 240 seconds)
16:50:44 × elliott__ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
16:51:31 × Sarma quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
16:52:32 <ski> hseg : if ⌜π : A!⌝ and ⌜ϙ : B!⌝, then ⌜π + ϙ : (A + B)!⌝ is defined by ⌜(π + ϙ) (ι₀ x) = ι₀ (π x)⌝ and ⌜(π + ϙ) (ι₁ y) = ι₁ (ϙ y)⌝; ⌜π × ϙ : (A × B)!⌝ is defined by ⌜(π × ϙ) (x₀,x₁) = (π x₀,ϙ x₁)⌝; and ⌜ϙ ^ π : (Bᴬ)!⌝ by ⌜(ϙ ^ π) f = ϙ ∘ f ∘ π⌝
16:53:24 × qwfpmluy quits (2e0505e2@HSI-KBW-046-005-005-226.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 245 seconds)
16:53:46 geekosaur joins (ac3a5347@172.58.83.71)
16:54:24 <hseg> ok, so basically specializing (|||), (***) and promap to the case that the maps are isos?
16:54:31 × Wamanuz2 quits (~wamanuz@78-70-34-81-no84.tbcn.telia.com) (Remote host closed the connection)
16:54:48 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 272 seconds)
16:55:22 × enoq quits (~textual@194-208-146-143.lampert.tv) (Quit: Textual IRC Client: www.textualapp.com)
16:55:25 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
16:56:06 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
16:56:48 <ski> furthermore, you can define ⌜0 : 0!⌝ as the empty permutation, and ⌜1 : 1!⌝ as the identity permutation given by ⌜1 () = ()⌝. then you can for each positive integer ⌜n⌝ define ⌜cₙ : n!⌝ as the cyclic permutation given by ⌜cₙ i = i+1 ⇐ i+1 < n⌝ and ⌜cₙ (i−1) = 0⌝
16:57:51 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
16:59:07 <hseg> yeah -- the unique permutations on the initial and terminal objects. cyclics are more ad-hoc
16:59:21 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
17:01:25 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
17:01:26 <ski> hseg : yes. now the question is how these operations behave, wrt cycle decomposition, e.g. if we work with permutations upto isomorphism on the carrier (so that e.g. ⌜c₂ × c₃ = c₆⌝ but ⌜c₂ × c₄ = c₄ + c₄ = 2 × c₄⌝ (where ⌜2 = 1 + 1⌝))
17:02:11 <hseg> "perms mod carrier iso" = cycle types, no?
17:02:48 <ski> i think so (if my guess of the meaning of "cycle types" is correct)
17:04:25 <hseg> cycle type is basically the multiset of lengths of the cycle decomposition
17:04:59 <hseg> product of cyclics will be cyclic iff lengths coprime
17:05:08 mirrorbird joins (~psutcliff@89.45.7.132)
17:05:23 <hseg> and in general will decompose into gcd*c_lcm
17:05:39 phaul joins (~phaul@ruby/staff/phaul)
17:05:48 × raichoo quits (~raichoo@dslb-178-001-144-018.178.001.pools.vodafone-ip.de) (Quit: Lost terminal)
17:05:50 <ski> multiplication distributes over addition. so, to understand multiplication, in terms of cycles, it suffices to understand how to multiply single cycles with each other. as you saw, we can't cancel even multiplication with non-zero permutation. exponentiation of cycles is even more interesting, it can yield a sum of cycles of different lengths
17:06:05 <ski> hseg : right
17:06:19 × evanm quits (182c6bd4@ool-182c6bd4.dyn.optonline.net) (Ping timeout: 245 seconds)
17:06:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
17:07:55 b7471 joins (~kvirc@139.30.225.215)
17:07:57 <b7471> hi
17:08:01 <ski> e.g. ⌜c₂ ^ c₂ = 2 + c₂⌝
17:08:05 <hseg> well, that's unsurprising -- exponentiation is just composition
17:08:07 <ski> hello b7471
17:08:10 <hseg> yo
17:08:18 <b7471> is this the official channel for the programming language haskell
17:08:21 <b7471> ?
17:08:22 <ski> composition on both sides
17:08:24 <hseg> yes
17:08:26 <ski> yes, b7471
17:08:57 <__monty__> b7471: You just joined in the middle of discrete math 101 or 201, not sure.
17:09:17 <hseg> discrete math coffee talk, more like
17:09:30 <b7471> its okay
17:09:45 <b7471> i am having big trouble with haskell
17:10:18 <ski> mhm ?
17:10:18 × kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
17:11:05 × conal_ quits (~conal@64.71.133.70) (Ping timeout: 240 seconds)
17:12:15 <hseg> ski: no, i meant you can embed m! in n! for m=<n, and in particular have π^σ=π^1∘1^σ where the composition is the usual one in (m^n)!
17:12:52 <hseg> in particular, it is unsurprising that the composite of two cycles has pretty wild structure
17:12:59 Wamanuz joins (~wamanuz@78-70-34-81-no84.tbcn.telia.com)
17:13:07 <b7471> is there any book on how to understand the language
17:13:10 <b7471> _
17:13:11 <b7471> ?
17:13:27 conal joins (~conal@66.115.157.94)
17:15:43 geekosaur6 joins (ac3a5347@172.58.83.71)
17:17:01 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Ping timeout: 264 seconds)
17:17:09 × geekosaur quits (ac3a5347@172.58.83.71) (Ping timeout: 245 seconds)
17:17:24 <ski> hseg : yes, that embedding is basically ⌜π ↦ π + idₘ₋ₙ⌝, right ? hm, your ⌜1⌝ is identity (on any carrier). hmm
17:17:33 <ski> b7471 : there's several books
17:17:47 Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it)
17:18:08 <b7471> more university class ,oriented
17:18:12 <hseg> yup. though s/in particular/also have/
17:18:34 <ski> @where PIH
17:18:34 <lambdabot> "Programming in Haskell" by Graham Hutton in 2007-01-15,2016-09-01 at <http://www.cs.nott.ac.uk/~pszgmh/pih.html>
17:18:49 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
17:18:52 <ski> @where HPFFP
17:18:52 <lambdabot> "Haskell Programming: from first principles - Pure functional programming without fear or frustration" by Chistopher Allen (bitemyapp),Julie Moronuki at <http://haskellbook.com/>,#haskell-beginners
17:18:52 <hseg> b7471: https://www.cis.upenn.edu/~cis194/spring13/ is pretty good as well
17:18:57 <ski> yes
17:20:43 × mrus quits (~mrus@128.199.6.232) (Remote host closed the connection)
17:20:48 <ski> hseg : oh, the embedding you used was from ⌜1⌝ to ⌜π⌝ respectively to ⌜ϙ⌝ ?
17:21:49 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
17:22:22 <hseg> ski: sorry, mixed two unrelated things. firstly you have the enlarging embeddings. but more relevantly, you also can embed n!,m! into n^m! by exponentiation against the identity
17:22:56 <ski> b7471 : fwiw, i learned using "Haskell: The Craft of Functional Programming" by Simon Thompson
17:23:24 <hseg> and these embeddings decompose exponentiation and commute with each other (basically because of associativity)
17:24:44 <ski> @where HTAC
17:24:44 <lambdabot> "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook>
17:24:48 <ski> @where wikibook
17:24:48 <lambdabot> http://en.wikibooks.org/wiki/Haskell
17:27:37 <ski> ϙ ^ π = f ↦ ϙ ∘ f ∘ π = (ϙ ∘) ∘ (∘ π) = (ϙ ^ 1) ∘ (1 ^ π)
17:27:40 <ski> = (∘ π) ∘ (ϙ ∘) = (1 ^ π) ∘ (ϙ ^ 1)
17:27:42 <ski> i see
17:30:15 <ski> b7471 : do you have any particular question, or maybe some code you're struggling with ?
17:30:16 × s00pcan quits (~chris@075-133-056-178.res.spectrum.com) (Ping timeout: 272 seconds)
17:30:44 <b7471> ski yes i dont know where to begin
17:30:52 <b7471> i mean i cant even declare a variable
17:31:00 <b7471> and we have homework to do
17:31:19 <ski> x :: Int
17:31:23 <b7471> i couldnt even install a compiler or interpreter in windows 10 or something like that
17:31:28 <ski> will declare `x' to be a variable of type `Int'
17:31:32 <ski> x = 42
17:31:39 <ski> will define it to be `42'
17:31:49 <b7471> i am using a online interpreter ripl dot it
17:31:51 s00pcan joins (~chris@107.181.165.217)
17:32:05 <Lycurgus> tell the instructor ur skipping the dumb hassell or haskell or whatever and doin a practical lang instead
17:32:29 <b7471> we are expected to create a function , that takes 4 arguments
17:32:54 <b7471> and only if the 4 arguments are the same , the funktion should output: true
17:32:57 <Lycurgus> do it in one of FP php pkgs, that have currying
17:33:08 <ski> b7471 : hm. tried <https://www.haskell.org/platform/#windows> ?
17:33:09 <xerox_> when I try to run the haskell-language-server over ghcup I get this, anybody knows why? I'm stumped https://paste.tomsmeding.com/6zEhhfAi
17:33:45 <b7471> i cant install chocoletey thing on windows
17:33:50 <ski> b7471 : hm, something like
17:33:51 <b7471> there is no setup or something
17:34:00 hackage resourcet-pool 0.1.0.0 - A small library to convert a Pool into an Acquire https://hackage.haskell.org/package/resourcet-pool-0.1.0.0 (brandonchinn178)
17:34:06 <ski> allFourEqual x y z w = ..x..y..z..w..
17:34:23 <b7471> ?
17:34:38 <koz_> b7471: Chocolatey requires you to use PowerShell. Its site has fairly clear instructions on what you gotta do.
17:34:40 <Sose> isn't there a Windows installer for Stack atleast? and you could use stack to download and run GHC?
17:34:57 <Sose> never installed any haskell tools on windows myself tho..
17:34:58 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
17:35:07 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
17:35:10 <Uniaika> I think there is indeed a windows installer for stack
17:35:17 <b7471> Sose you will never be able to
17:35:20 <maerwald> xerox_: is that an error even?
17:35:20 <koz_> Perhaps - I don't really recall.
17:35:21 <b7471> not in this age
17:35:27 <ski> b7471 : that would be the start of a function `allFourEqual' that accepts four inputs (parameters/arguments), named `x',`y',`z',`w'. then, after the `=' sign, you'd have to fill in a `Bool'ean expression for checking whether they're all the same/equal
17:35:34 <koz_> b7471: You're literally talking to a minimum of one person who has.
17:35:38 <koz_> (if not more)
17:36:41 Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
17:36:52 × knupfer quits (~Thunderbi@200116b8240c1500510f95f5a248f852.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
17:38:31 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
17:38:47 × Lycurgus quits (~niemand@98.4.114.74) (Quit: Exeunt)
17:39:28 × conal quits (~conal@66.115.157.94) (Quit: Computer has gone to sleep.)
17:40:32 conal joins (~conal@66.115.157.94)
17:40:35 × conal quits (~conal@66.115.157.94) (Client Quit)
17:40:44 <xerox_> maerwald: it starts back up trying ot compile, over and over, after that message
17:40:49 <b7471> i will first watch the online lecture and the try again
17:40:57 <b7471> to understand all of this
17:41:00 <b7471> i hope
17:41:10 <b7471> i will be able within one year
17:41:15 <b7471> to make sense of all this
17:41:24 <b7471> ist really horrible and bad
17:41:39 mrus joins (~mrus@128.199.8.231)
17:41:59 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:42:29 kritzefitz joins (~kritzefit@212.86.56.80)
17:43:07 <ski> b7471 : you're welcome to ask questions here, if anything is unclear
17:45:02 × Fractalis quits (~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7) (Ping timeout: 264 seconds)
17:45:25 <xerox_> maerwald: coc.nvim helpfully says "the server has crashed 5 times I won't run it again", vscode just goes head on never stopping
17:45:26 <b7471> how to read the variable
17:45:29 <b7471> that i declared
17:45:35 <b7471> the variable x
17:46:07 <b7471> :t x
17:46:08 <lambdabot> Expr
17:46:27 <geekosaur6> if you're in ghci or equivalent, just enter x at the prompt
17:47:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
17:48:22 <maerwald> xerox_: no idea, I don't use HLS on ghcup codebase frequently
17:48:31 Fractalis joins (~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7)
17:48:42 <maerwald> maybe try to write a different hie.yaml
17:48:52 <xerox_> I was looking for some way to figure out where imported stuff is from
17:49:04 <xerox_> not married to it, just what I thought of, is there anything else I could use?
17:50:14 alp joins (~alp@2a01:e0a:58b:4920:ece0:78fb:1f80:8fc7)
17:52:05 × lxsameer quits (lxsameer@gateway/vpn/protonvpn/lxsameer) (Ping timeout: 256 seconds)
17:52:12 × boxscape47 quits (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Quit: Connection closed)
17:52:45 geekosaur joins (ac3a5347@172.58.83.71)
17:54:51 <ski> b7471 : if you have an interactor, where you can enter expressions and get feedback, you should probably be able to just write the variable name `x' in there (assuming `x' is defined globally in your source file)
17:55:21 <b7471> i am using an online interpreter
17:55:24 <ski> it seems <https://repl.it/> requires a login ?
17:55:28 <b7471> called ripl .it
17:55:28 <ski> yes
17:55:29 × geekosaur6 quits (ac3a5347@172.58.83.71) (Ping timeout: 245 seconds)
17:55:40 <b7471> am i logged in
17:56:09 <ski> if you're using <https://repl.it/>, i'd guess so ?
17:56:47 <ski> (when i click on "Start coding", it asks me to sign up)
17:57:06 lucasb joins (uid333435@gateway/web/irccloud.com/x-detutdhidmcqqrwp)
17:57:50 <maerwald> xerox_: let me try
17:57:52 <b7471> i signed up to that
17:58:01 <b7471> now i am experimenting with it a bit
17:58:14 <ski> if you write
17:58:15 <b7471> i declared a few variables as you told me to
17:58:17 <ski> x :: Int
17:58:19 <ski> x = 42
17:58:31 × Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 260 seconds)
17:58:39 <b7471> yes a was successful in adding two variables together
17:58:44 <ski> in the part of the editor where you write programs, that should define `x' as a variable in global scope
17:59:09 <ski> if you write e.g.
17:59:22 <ski> cube :: Int -> Int
17:59:28 <ski> cube x = x * x * x
18:00:04 <b7471> what does this mean: cube :: Int -> Int
18:00:10 <ski> then this should define a function, called `cube'. the `x' here is unrelated to the previous `x'. this `x' here is a local parameter name, local to the `cube' function definition
18:00:21 <xerox_> maerwald: I am getting implicit-hie to see if it creates an entry for 3rdparty/
18:00:28 geekosaur96 joins (ac3a5347@172.58.83.71)
18:00:34 conal joins (~conal@66.115.157.94)
18:00:35 <b7471> ok?
18:00:37 <ski> it means that `cube' is a function that consumes an `Int' as input parameter, and produces an `Int' as output result
18:00:48 <b7471> aha
18:00:52 <b7471> ok
18:00:59 <ski> you could define e.g.
18:01:04 <ski> isEven :: Int -> Bool
18:01:12 <ski> isEven n = n `mod` 2 == 0
18:01:50 <maerwald> xerox_: I don't seem to have this problem
18:01:54 <ski> to define a function (a "predicate"), that given an `Int' as input, gives a `Bool'ean result, being `True' if the input was an even integer, and `False' otherwise (i.e. when it was odd)
18:01:57 <monochrom> xerox_: If you mean "I imported 10 modules, one of them gives me f, I want to find out which", I first try ":info f", usually it's good enough. Bu its can answer can be cryptic. When I feel like a big hammer, I use GHC's -ddump-minimal-imports
18:02:56 <maerwald> xerox_: but I have a cabal.project.local with this content https://paste.tomsmeding.com/Qo3YwsbF
18:02:59 × geekosaur quits (ac3a5347@172.58.83.71) (Ping timeout: 245 seconds)
18:03:02 <b7471> and what would this expression mean: fourEqual :: Int -> Int -> Int -> Int -> Bool
18:03:03 <ski> b7471 : so the type of the input parameter comes before (to the left of) the `->', and the type of output result comes after (to the right of) it, in a type signature of a function
18:03:07 <b7471> thats our homework
18:03:29 <ski> yes, that means that it accepts four inputs, all of type `Int', and gives back a `Bool'ean as output
18:03:32 × incertia_ quits (~incertia@d4-50-26-103.nap.wideopenwest.com) (Quit: ZNC 1.7.5 - https://znc.in)
18:03:55 <maerwald> xerox_: also make sure 8.10.2 is the default ghc symlink... I believe there were issues with hls when the project ghc isn't the default one
18:03:55 <b7471> ok i will try to enter that on ripl
18:04:00 <ski> fourEqual :: Int -> Int -> Int -> Int -> Bool
18:04:04 <ski> fourEqual x y z w = ..x..y..z..w..
18:04:35 <ski> (you'll have to replace `..x..y..z..w..' by some actual code expression that checks when those four inputs are all equal)
18:04:59 <ski> (of course you can choose other parameter names than `x',`y',`z',`w', if you prefer)
18:05:41 <shapr> xerox_: Are the same person who wrote GoA?
18:05:54 <ski> the lines with `::' in them are called "type signatures". then lines with `=' in them are "defining equations" (or simply "definitions")
18:06:11 incertia joins (~incertia@d4-50-26-103.nap.wideopenwest.com)
18:06:28 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
18:06:29 <xerox_> shapr: I am hi buddy (:
18:06:40 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:06:40 <shapr> hi hi hi! I haven't seen you since AngloHaskell!
18:06:45 <xerox_> I know!
18:06:52 <xerox_> that was a good time
18:07:09 <shapr> Yeah, lots of fun. It's been a few years though
18:07:41 <shapr> xerox_: 20th anniversary of #haskell in ~20 weeks!
18:07:41 <xerox_> many years at this point in fact… how time flies
18:07:45 shapr hops cheerfully
18:07:54 <shapr> xerox_: are you writing Haskell for a living these days?
18:07:55 <xerox_> hopefully on a monocycle
18:08:05 <shapr> haha, yes!
18:08:10 <xerox_> nope! for fun, setting it up to do advent of code :D
18:08:19 <shapr> that does sound like fun!
18:08:49 <shapr> xerox_: do you write code for a living?
18:08:50 <xerox_> how about you?
18:09:02 <shapr> I have a Haskell job, it's great fun!
18:09:10 <shapr> I'm working for SimSpace
18:09:37 neiluj joins (~jco@91-167-203-101.subs.proxad.net)
18:09:37 × neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host)
18:09:37 neiluj joins (~jco@unaffiliated/neiluj)
18:09:40 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
18:09:57 <xerox_> looks like serious business
18:10:46 <maerwald> I'm picking rust for a new project, but getting devs doesn't seem any easier than haskellers lol (unless you're a bank)
18:11:00 <maerwald> so there's that
18:11:15 chaosmasttter joins (~chaosmast@p200300c4a72cf80165f6d709b523305b.dip0.t-ipconnect.de)
18:11:26 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
18:11:54 <xerox_> shapr: so yeah I have been programming for a living but I'm not at this very moment in time
18:12:11 <shapr> you saved up enough money to coast for a few years? :-D
18:12:46 geekosaur joins (ac3a5347@172.58.83.71)
18:13:09 <xerox_> thereabouts (:
18:13:13 × alp quits (~alp@2a01:e0a:58b:4920:ece0:78fb:1f80:8fc7) (Ping timeout: 272 seconds)
18:13:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:13:52 <shapr> yeah, writing code pays well
18:14:13 <xerox_> maerwald: gen-hie doesn't see 3rdparty on its own, nor your .local magically saves the day, more digging required...
18:14:14 × geekosaur96 quits (ac3a5347@172.58.83.71) (Ping timeout: 245 seconds)
18:14:29 <maerwald> xerox_: which cabal version?
18:14:30 <maerwald> oooh
18:14:45 <maerwald> you must be running 3.2
18:14:47 × justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
18:14:52 <maerwald> upgrade to 3.4 prerelease
18:15:31 <xerox_> ok!
18:16:04 lambda-11235 joins (~lambda-11@2600:1700:7c70:4600:6511:46eb:c421:ce43)
18:23:45 sand_dull joins (~theuser@c-73-149-95-105.hsd1.ct.comcast.net)
18:28:04 × Yumasi quits (~guillaume@2a01cb09b06b29ea1c5ab82b3b485150.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
18:28:12 jcd joins (~user@2601:282:1300:7cb0::adb4)
18:28:42 <xerox_> maerwald: that helped but the 3rdparty stuff still produces the same errors
18:28:55 <maerwald> but that doesn't matter I think
18:29:54 justan0theruser joins (~justanoth@unaffiliated/justanotheruser)
18:30:01 <xerox_> it keeps going in a loop
18:30:24 shatriff joins (~vitaliish@176.52.219.10)
18:30:38 <maerwald> ignore the loop, does it actually work? :p
18:30:49 gproto23 joins (~gproto23@unaffiliated/gproto23)
18:33:54 solonarv joins (~solonarv@astrasbourg-653-1-156-4.w90-6.abo.wanadoo.fr)
18:34:10 <xerox_> maerwald: nope, both editors hang or give no answers, while running the same neverending output as before in the debug logs
18:34:37 alp joins (~alp@2a01:e0a:58b:4920:99e8:704d:3180:71f2)
18:34:46 <maerwald> :D
18:36:42 <monochrom> At least it's quiescent now. >:)
18:37:07 <monochrom> (The next best thing you can hope for, if you can't prove termination.)
18:37:21 frdg joins (~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
18:38:08 <hseg> ok, a little refactoring later: http://ix.io/2Feg
18:38:48 <xerox_> I will propose as next best thing having dinner instead, yeah
18:40:03 × mpereira quits (~mpereira@2a02:810d:f40:d96:1ca0:7a83:5454:b1ba) (Remote host closed the connection)
18:40:09 lxsameer joins (~lxsameer@unaffiliated/lxsameer)
18:40:45 mpereira joins (~mpereira@2a02:810d:f40:d96:1ca0:7a83:5454:b1ba)
18:41:19 qwfpmluy joins (2e0505e2@HSI-KBW-046-005-005-226.hsi8.kabel-badenwuerttemberg.de)
18:43:22 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
18:46:55 × cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 246 seconds)
18:47:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
18:47:26 <hseg> http://ix.io/2Fek
18:47:55 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
18:48:12 <hseg> http://ix.io/2Fel
18:48:39 christo joins (~chris@81.96.113.213)
18:49:14 <monochrom> dinner and wine are always good
18:50:33 × christo quits (~chris@81.96.113.213) (Read error: No route to host)
18:51:07 christo joins (~chris@81.96.113.213)
18:52:12 Deide joins (~Deide@217.155.19.23)
18:55:25 × cheater quits (~user@unaffiliated/cheater) (Ping timeout: 264 seconds)
18:55:29 × geekosaur quits (ac3a5347@172.58.83.71) (Ping timeout: 245 seconds)
18:57:36 <domenkozar[m]> I'm using async to start two concurrent threads. The first thread is doing stuff and feeding things to a channel. The second one is consuming from channel and doing things based on those message. How could I make the second thread exit once channel is emptied and the first thread is also exited?
18:58:15 cheater joins (~user@unaffiliated/cheater)
18:59:00 knupfer joins (~Thunderbi@200116b8240c1500ace8d9fffee870c4.dip.versatel-1u1.de)
18:59:27 × borne quits (~fritjof@200116b864880200394a967dc8ef4e61.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
18:59:32 × knupfer quits (~Thunderbi@200116b8240c1500ace8d9fffee870c4.dip.versatel-1u1.de) (Remote host closed the connection)
18:59:45 knupfer joins (~Thunderbi@200116b8240c15009967b89ece4ca4cf.dip.versatel-1u1.de)
19:01:28 × jespada quits (~jespada@90.254.245.49) (Ping timeout: 272 seconds)
19:03:26 jespada joins (~jespada@90.254.245.49)
19:03:38 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
19:03:39 berberman_ joins (~berberman@unaffiliated/berberman)
19:03:39 × Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
19:03:49 <__monty__> domenkozar[m]: Can you send an exit message?
19:03:50 <monochrom> The message type has to include a "quit" case. The first thread has to send the "quit" message.
19:03:59 × frdg quits (~nick@pool-71-184-143-249.bstnma.fios.verizon.net) (Quit: Leaving.)
19:04:20 <monochrom> Lest it's the "does quiescent imply termination?" question again.
19:05:12 <dminuoso> domenkozar[m]: Do you want the second thread to terminate as a "nothing more to do" case, or rather immediately if the first one dies?
19:05:32 × revprez_stg quits (~revprez_s@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 256 seconds)
19:05:42 <dminuoso> Also, do not forget to consider the case of the first thread receiving an async exception.
19:05:50 geekosaur joins (ac3a53fb@172.58.83.251)
19:06:16 revprez_stg joins (~revprez_s@pool-108-49-213-40.bstnma.fios.verizon.net)
19:06:31 <monochrom> Ah yeah, I forgot that too. But it's easy to fix: foo `finally` send quit message
19:07:13 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
19:08:07 elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
19:08:22 × Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 256 seconds)
19:08:55 <monochrom> I want to point out that humanity has not thought up any other solution. They have only thought up other packagings of this same solution.
19:10:11 <monochrom> For example Unix and C. The writer process has two commands at its disposable, "write" and "close". The writer has to issue "close" at some point of time. Sometimes this is masked by "if the process dies, the OS calls close for you", but it's there.
19:10:42 <domenkozar[m]> dminuoso: in "nothing to do case"
19:10:46 <monochrom> Well that isn't much different from having two kinds of meessage at your disposal, is it? s/close/send quit message/
19:11:22 <dminuoso> domenkozar[m]: Then the usual technique is to, indeed, decorate the "things" you feed into the channel with some outer signaling layer
19:11:25 <geekosaur> "send quit message" is just "close" at a higher protocol level
19:11:33 <monochrom> And on the reader side, like wise. You have a "read" command, but it has two kinds of outcomes, "normal" message and "EOF".
19:11:40 <dminuoso> data Message = Done | Do Thing
19:11:44 <dminuoso> And then you have a channel of Message.
19:11:46 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
19:12:08 <domenkozar[m]> dminuoso: so that the last message is Done?
19:12:09 × qwfpmluy quits (2e0505e2@HSI-KBW-046-005-005-226.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 245 seconds)
19:12:11 <dminuoso> Yes.
19:12:21 <domenkozar[m]> hmm that's simple and clever :)
19:12:37 <domenkozar[m]> thanks dminuoso !
19:12:56 <dminuoso> To be fair I just rephrased what monochrom, __monty__ and geekosaur also said above.
19:13:34 <domenkozar[m]> ah indeed, thanks monochrom & __monty__ :)
19:14:07 <__monty__> I definitely don't mind my nick being mentioned in the same breath as those other ones : )
19:14:18 × michalz quits (~user@185.246.204.61) (Remote host closed the connection)
19:14:45 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Ping timeout: 240 seconds)
19:14:46 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 272 seconds)
19:15:04 × LKoen quits (~LKoen@169.244.88.92.rev.sfr.net) (Remote host closed the connection)
19:15:10 × darjeeling_ quits (~darjeelin@122.245.219.209) (Ping timeout: 256 seconds)
19:16:07 LKoen joins (~LKoen@169.244.88.92.rev.sfr.net)
19:17:22 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ->)
19:20:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:23:27 <texasmynsted> If you look at the source here --> https://jaspervdj.be/hakyll/reference/src/Hakyll.Web.Redirect.html#createRedirects
19:23:41 <texasmynsted> There is a function "redirectToHtml :: Redirect -> String"
19:24:42 <texasmynsted> I do not like the string being used, but I think I have no way to replace it short of writing all my own Redirect logic. Right? The Writable type class already has an instance defined.
19:24:43 × dqd quits (id@wikipedia/dqd) (Ping timeout: 246 seconds)
19:25:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
19:25:10 veverak is now known as JarJar
19:25:15 JarJar is now known as veverak
19:26:23 veverak is now known as JarJarEatingHawa
19:26:27 JarJarEatingHawa is now known as veverak
19:26:33 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
19:26:51 <hseg> ok, final version http://ix.io/2FeB. pretty happy with it, but would welcome improvements
19:30:41 <jcd> I'm trying to make a String into the type "HTTP String", what's the best way to do this?
19:31:08 × conal quits (~conal@66.115.157.94) (Quit: Computer has gone to sleep.)
19:31:08 <dminuoso> That depends on what HTTP even is..
19:31:11 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
19:31:13 <dminuoso> And what you want it to mean
19:31:26 <geekosaur> depending on where you're doing this, possibly "pure"
19:31:31 <jcd> A user-defined data type.
19:31:39 <dminuoso> jcd: How is the data type defined?
19:31:49 <jcd> data Person = Person
19:31:49 <jcd> { firstName :: String
19:31:49 <jcd> , lastName :: String
19:31:49 <jcd> , age :: Int
19:31:49 <jcd> , hometown :: String
19:31:49 <dminuoso> Did you define it, or does it appear in a library?
19:31:51 <geekosaur> but that depends on what it is and what instances it has
19:32:08 <jcd> Ignore that ^, still learning the emacs keychords
19:32:19 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
19:32:21 <dminuoso> @where paste -- jcd
19:32:21 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
19:33:13 × ystael quits (~ystael@209.6.50.55) (Ping timeout: 264 seconds)
19:34:35 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
19:35:34 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Ping timeout: 256 seconds)
19:35:55 <jcd> https://paste.tomsmeding.com/J6ffGVxv
19:36:05 <jcd> Thank you in advance
19:37:37 christo joins (~chris@81.96.113.213)
19:38:14 <jcd> I want to take input from an arbitrary source, mark it as an HTTP message, and then process the HTTP data structure accordingly.
19:38:15 <geekosaur> that code seems somewhat off
19:38:51 <jcd> tell me about it haha
19:39:24 <geekosaur> readHTTPMessage already does what you want, although it has a pointless "do". I'm not sure what it's supposed to be doing, though
19:40:05 × Varis quits (~Tadas@unaffiliated/varis) (Ping timeout: 240 seconds)
19:40:31 darjeeling_ joins (~darjeelin@122.245.219.209)
19:40:33 Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it)
19:42:23 × christo quits (~chris@81.96.113.213) (Ping timeout: 265 seconds)
19:43:18 <kuribas> what would be a good alternative to bash? Something not heavy, but likely installed on any system?
19:43:25 <kuribas> and not python
19:43:45 <kuribas> wait, wrong channel...
19:43:55 <chreekat[m]> Haha
19:44:35 <chreekat[m]> But since you asked, I don't think there is a good alternative, not for scripting the Unix shell anyway
19:45:06 <geekosaur> zsh, but I'm not sure that's an improvement.
19:45:10 kuribas moving the discussion to #haskell-offtopic
19:45:27 <sm[m]> aw
19:45:27 <geekosaur> and, well, if there were something bettter, there wouldnt be so many bad shell scripts out there
19:45:51 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 260 seconds)
19:46:05 <sm[m]> I think it's bash or python, unless you think writing perl in 2020 is a good idea
19:46:20 <geekosaur> some of us still do
19:46:53 <kuribas> sm[m]: I never found it a good idea :)
19:47:41 <sm[m]> bash + shellcheck
19:47:57 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
19:48:02 <sm[m]> well.. would you consider make to be an option ?
19:48:16 × b7471 quits (~kvirc@139.30.225.215) (Ping timeout: 240 seconds)
19:48:24 <maerwald> kuribas: POSIX shell
19:48:26 <geekosaur> make's going to use bash underneath
19:48:33 <kuribas> I was trying out gauche-scheme, which is nice, but it's sadly not installed on centos...
19:49:09 <sm[m]> o well if you're going to be installing things.. stack scripts can be nice
19:49:12 <kuribas> I'd use haskell, but 2GB isn't exactly lightweight...
19:49:17 <maerwald> other than that, your only option is perl... there's hardly any system out there without it, because gcc toolchain needs it
19:49:24 <kuribas> sm[m]: haskell stack?
19:50:02 <sm[m]> yes
19:50:56 <maerwald> how is that not 2GB?
19:51:47 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
19:52:04 <kuribas> maerwald: it is
19:52:19 <sm[m]> I didn't assert that.. but I think it could be.. use system-packaged stack & ghc & haskell deps, tell stack script to use those
19:52:28 jamm_ joins (~jamm@unaffiliated/jamm)
19:52:55 <maerwald> kuribas: static haskell binary?
19:53:31 <dminuoso> Mmm, I have a mundane task of running some wget commands to scrape a website. What's the least effort to quickly have a thread pool of 5 things to parallelize this a bit?
19:53:52 <kuribas> maerwald: could be, but then it has to be compiled on the same OS.
19:54:13 <maerwald> kuribas: what do you mean?
19:54:30 <kuribas> dminuoso: gnu parallel?
19:54:36 sondr3 joins (~sondr3@cm-84.211.56.132.getinternet.no)
19:55:01 <kuribas> maerwald: I mean linux binaries aren't portable across distros.
19:55:05 <maerwald> they are
19:55:10 <kuribas> because of glibc differences
19:55:11 <maerwald> static binaries
19:55:13 <maerwald> I said
19:55:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:55:25 <kuribas> even static binaries
19:55:27 <maerwald> nope
19:55:29 sm[m] meant "I think it could be economical with space, using less than 2G"
19:55:31 <maerwald> they use musl
19:55:41 <maerwald> how do you think ghcup works across all distros? :p
19:55:43 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
19:56:21 <maerwald> I even have a github workflow you can copy paste
19:56:23 <sm[m]> now we must ask which platforms are to be supported
19:56:25 <kuribas> maerwald: you use musl?
19:56:28 <maerwald> yes
19:56:35 <kuribas> hmm, nice.
19:56:37 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Ping timeout: 264 seconds)
19:56:43 <dsal> jcd: it'd be good to start with type signatures, but in your case `readHTTPMessage = HTTP_Message` so you might as well just use `HTTP_Message` directly.
19:56:44 <kuribas> I should try that...
19:56:53 Codaraxis joins (~Codaraxis@91.193.4.61)
19:57:05 <maerwald> kuribas: https://github.com/hasufell/stack2cabal/blob/master/.github/workflows/release.yaml#L32
19:57:56 N1L5 joins (3ed8ca8d@aftr-62-216-202-141.dynamic.mnet-online.de)
19:58:27 phaul joins (~phaul@ruby/staff/phaul)
19:59:09 howdoi joins (uid224@gateway/web/irccloud.com/x-gbfppsdeuatjrkoa)
20:01:07 <kuribas> maerwald: I don't see musl there?
20:01:15 <maerwald> kuribas: alpine docker image
20:01:17 <maerwald> it uses musl
20:02:07 czwartyeon joins (~czwartyeo@77-45-55-99.sta.asta-net.com.pl)
20:02:26 <maerwald> so you have two options... you try to use static-haskell.nix and configure stuff for over a week, or just spend 5 minutes with alpine installing some deps :p
20:02:26 dqd joins (id@wikipedia/dqd)
20:02:34 × geekosaur quits (ac3a53fb@172.58.83.251) (Ping timeout: 245 seconds)
20:03:03 <dminuoso> With what I know now, static-haskell.nix is very easy to use
20:03:08 <dminuoso> Assuming you're already confident with nix.
20:03:10 <maerwald> I tried, it didn't work
20:03:21 <maerwald> then a month later someone from Russia found the bug
20:03:35 <maerwald> that's basically how nix is every time
20:04:04 <dminuoso> Do you have any link to that?
20:04:34 <maerwald> https://github.com/nh2/static-haskell-nix/issues/85
20:04:42 <kuribas> maerwald: that's how *any tooling* is.
20:04:51 <maerwald> kuribas: nah, nix is particularly bad
20:04:59 Sarma joins (~Amras@unaffiliated/amras0000)
20:05:16 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
20:07:10 <nh2> maerwald dminuoso: "Someone from Russia" is quite the odd desccription for qrilka; Kirill is my colleague and a core stack developer.
20:07:27 <maerwald> that was a meme
20:07:34 <maerwald> I know who he is
20:07:34 geekosaur joins (ac3a53fb@172.58.83.251)
20:07:39 × Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Quit: Leaving)
20:07:47 <nh2> ah sorry, I didn't know that one
20:08:49 <maerwald> If a tool requires me to regularly consult experts, then it's a bad tool :p
20:08:52 <dminuoso> Also, if I look at this bug, it looks like a stack bug.
20:08:57 <dminuoso> Not a nix or static-haskell-nix bug.
20:09:07 Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it)
20:09:45 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
20:10:07 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
20:11:48 <maerwald> I must be cursed then, because whenever I use nix I hit all sorts of bugs and ppl keep telling me those aren't nix bugs :D
20:12:22 rprije joins (~rprije@123-243-139-165.tpgi.com.au)
20:12:31 <nh2> Well, I have to consult Ben and the Simons regularly for my problems but I'd never call GHC a bad tool :)
20:13:00 <maerwald> here's another one https://github.com/input-output-hk/haskell.nix/issues/229
20:13:29 × N1L5 quits (3ed8ca8d@aftr-62-216-202-141.dynamic.mnet-online.de) (Remote host closed the connection)
20:13:44 <dminuoso> maerwald: And that is a very very old GHC issue.
20:13:59 <dminuoso> One that you can just as easily trip into with your favoured alpine containers...
20:14:22 <maerwald> dminuoso: that's weird, because I thought nix is reproducible
20:14:22 × knupfer quits (~Thunderbi@200116b8240c15009967b89ece4ca4cf.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
20:15:11 <dminuoso> maerwald: Nix is not a silver bullet. The software that is executed by nix has access so things like environment variables.
20:15:27 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
20:15:30 <dminuoso> It's why things like flakes is coming
20:15:31 <maerwald> then docker seems like a better abstraction, because it doesn't depend on my local environment
20:15:36 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds)
20:15:39 ni291187 joins (~u931732@bras-vprn-nwmkon8540w-lp130-10-142-112-210-136.dsl.bell.ca)
20:15:47 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
20:15:48 lucasb parts (uid333435@gateway/web/irccloud.com/x-detutdhidmcqqrwp) ()
20:15:49 <dminuoso> Well, Id argue it's a user error because nix can give you pure environments
20:16:05 <ni291187> Hello
20:16:07 boxscape joins (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
20:16:09 <maerwald> following the README instructions surely isn't a user error
20:16:18 × lambda-11235 quits (~lambda-11@2600:1700:7c70:4600:6511:46eb:c421:ce43) (Max SendQ exceeded)
20:16:42 <maerwald> (and I did that for static-haskell-nix as well)
20:16:50 <dminuoso> Well it's still a very old GHC bug
20:16:52 <dminuoso> https://gitlab.haskell.org/ghc/ghc/-/issues/8118
20:17:22 <maerwald> dminuoso: can you guess what the fix is?
20:17:26 Varis joins (~Tadas@unaffiliated/varis)
20:17:32 <nh2> maerwald: In any case, here's a thing I'm currently trying to do with nixpkgs and Alpine: Build static GTK executables. I got the C part working in nixpkgs (screenshots in https://github.com/nh2/static-haskell-nix/issues/50#issuecomment-558569895 and below) but not yet the Haskell part. I'd like to do the same with Alpine so I can use it with plain stack. Do you know if that's possible?
20:17:44 ni291187 is now known as lightwave
20:18:14 <maerwald> I haven't done static gtk yet, would have to try. I have a haskell gtk project I could try it on
20:18:45 lambda-11235 joins (~lambda-11@2600:1700:7c70:4600:6511:46eb:c421:ce43)
20:18:49 <geekosaur> gtk likes loading stuff dynamically though
20:19:00 <maerwald> dminuoso: setting the locale is not the fix btw :p
20:19:03 taurux joins (~taurux@net-188-152-78-21.cust.vodafonedsl.it)
20:19:07 × todda7 quits (~torstein@ppp-2-84-17-53.home.otenet.gr) (Ping timeout: 265 seconds)
20:19:19 <maerwald> geekosaur: you mean it dlopens?
20:19:26 <geekosaur> yes
20:19:31 <maerwald> blergh
20:19:34 <nh2> maerwald: I would try with plain C first as a stepping stone, if you want to give it a shot I made a mini GTK app with 1 button in C here: https://github.com/nh2/static-haskell-nix/tree/c-static-gtk3-apps/meson-tutorial-gtk
20:19:37 <dminuoso> maerwald: For your particular occurence I do not know. But at its very core it's a GHC bug.
20:19:41 <dminuoso> Or "issue" rather
20:19:58 <maerwald> dminuoso: LOCALE_ARCHIVE=/usr/lib/locale/locale-archive nix-script
20:20:25 <lightwave> Newbie here... I’ve tried to learn Haskell many times... but it trailed off everything because I often got distracted into busy projects because I could learn enough to understand even the short hello world program... Is there a good book that focus on learning by example? Most resources out there seem to be theory heavy upfront...
20:20:27 <dminuoso> nix tends to make such problems more apparent because it's more radical
20:20:28 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
20:20:54 <dminuoso> @where cis194 -- lightwave
20:20:55 <lambdabot> https://www.seas.upenn.edu/~cis194/spring13/lectures.html
20:20:56 <sm[m]> @where HTAC , lightwave
20:20:56 <lambdabot> "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook>
20:20:58 <maerwald> dminuoso: apparently not, because I'm the only one hitting that bug
20:21:06 <nh2> geekosaur: Do you know if it always dlopens stuff, or only for specific functionality? Because my basic button example works so far here: https://github.com/nh2/static-haskell-nix/releases/tag/c-static-gtk3-apps-button-example-2020-11-23
20:21:17 <kuribas> lightwave: learn you a haskell
20:21:25 <maerwald> and that's usually when ppl start saying it's a user error, although all I did wat following the instructions :o
20:21:43 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:21:45 <kuribas> lightwave: http://learnyouahaskell.com It's focussing a lot on examples.
20:21:47 <geekosaur> specific functionality. in particular there's a mode where it can load a UI from a file and then iirc it dlopen()s the components iidentified in the file
20:21:48 knupfer joins (~Thunderbi@i59F7FFC3.versanet.de)
20:22:09 <dminuoso> 21:19:58 maerwald | dminuoso: LOCALE_ARCHIVE=/usr/lib/locale/locale-archive nix-script
20:22:13 <geekosaur> since the components may not be linked into the executable
20:22:18 <dminuoso> Id argue the more proper solution is
20:22:23 <dminuoso> LOCALE_ARCHIVE="${pkgs.glibcLocales}/lib/locale/locale-archive"
20:22:27 <lightwave> Thanks!
20:22:32 × gproto23 quits (~gproto23@unaffiliated/gproto23) (Ping timeout: 272 seconds)
20:22:45 <dminuoso> Presumably this happens inside travis ci?
20:22:53 <nh2> geekosaur: Are you referring to e.g. when you make UIs with `glade` (which IIRC saves them to XML files)?
20:23:02 <geekosaur> yes
20:23:07 <maerwald> dminuoso: no, on my computer
20:23:28 <geekosaur> I haven't played with gtk in some years though, something may have changed since I last did it
20:23:29 <maerwald> my project is glade, seems like a perfect test then
20:24:53 <monochrom> "learn by examples" fails for Haskell as soon as you need I/O because Haskell's I/O story requires accepting a tiny little bit of theory upfront.
20:24:55 <nh2> geekosaur: thanks, I've written it down in https://github.com/nh2/static-haskell-nix/issues/50#issuecomment-732405876 and will try it out; I've used glade in the past but only from Python
20:25:06 × lightwave quits (~u931732@bras-vprn-nwmkon8540w-lp130-10-142-112-210-136.dsl.bell.ca) (Remote host closed the connection)
20:25:19 × ggole quits (~ggole@2001:8003:8119:7200:1c3c:45be:a6d:c507) (Quit: Leaving)
20:26:25 <hseg> maerwald: that's why we need a diverse OS/packaging ecosystem. done properly, it serves to fuzz test programs
20:26:43 <monochrom> I say that out of real observations here. There were beginners who tried "learn by examples", it quickly degenerated to cargo culting in vain because the beginners could not grasp the difference between "map putStrLn myListOfString" and "mapM_ putStrLn myListOfStrings" because they didn't learn the prerequisite theory.
20:26:49 <maerwald> hseg: who's doing that properly?
20:27:13 <boxscape> what's the function to see what the class of a particular unicode character is again?
20:27:33 <geekosaur> generalCategory
20:27:33 <hseg> can't think of anyone off the top of my head right now
20:27:42 takuan joins (~takuan@178-116-218-225.access.telenet.be)
20:27:44 <maerwald> I know of maybe two distros where I'd call a subsections of the packaging done properly. And then there's still a huge part around it that's just outright bad
20:28:33 <boxscape> % generalCategory <$> "ꓱ∃"
20:28:33 <yahb> boxscape: [OtherLetter,MathSymbol]
20:28:36 <boxscape> thanks geekosaur
20:29:27 <dminuoso> maerwald: Do you have old packages installed through nix-env?
20:29:36 <maerwald> dminuoso: no, I wiped it out several times
20:30:09 × copypasteque_ quits (~copypaste@2001:41d0:8:b325::1) (Quit: WeeChat 2.8)
20:30:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
20:30:30 <hseg> fair. that's the immediate counterargument -- it's quite possible the fuzzing benefits are outweighed by the costs of disjoint projects trying to interface with each other
20:30:37 <dminuoso> maerwald: Mmm, I dont quite understand the state of affairs.. but the underlying cause is a quite interesting change in glibc: https://sourceware.org/glibc/wiki/Release/2.27#Statically_compiled_applications_using_locales
20:30:57 <maerwald> hseg: it gets worse when distros start breaking other distros (yes, there are ways to achieve that)
20:30:58 <dminuoso> At any rate, the problem shouldn't be apparent anymore. You aren't on an old nix channel, are you?
20:31:32 <maerwald> dminuoso: I have no idea. I'm just running a shell script that does nix stuff
20:31:53 <hseg> wait what?
20:32:07 × kuribas quits (~user@ptr-25vy0i8kkf9triykmnn.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
20:32:34 <hseg> are you referring to socially-leading distros making bad decisions that then get cargo-culted?
20:32:44 <hseg> or distros using each other's patches blindly?
20:33:23 <dminuoso> maerwald: Mmm, yeah. This particular bug is still a sad thing, in part it was ignored because a) there's a workaround (that you have to dig for) and b) it doesn't really apply to nixos users..
20:33:37 <maerwald> hseg: famous instance is skype being broken on gentoo, because debian messed with SONAMEs of a library and the developers built skype on debian. The fix wasn't hard, but yeah.
20:34:01 <hseg> :-o
20:34:28 <maerwald> rockstar attitude of packagers
20:34:43 <maerwald> (debian has a history of that...)
20:34:53 <dminuoso> To be fair, it's not like you're paying for any of it. These are just volunteers..
20:35:08 christo joins (~chris@81.96.113.213)
20:35:11 <maerwald> dminuoso: I know. I did packaging for 5 years.
20:36:21 × alp quits (~alp@2a01:e0a:58b:4920:99e8:704d:3180:71f2) (Ping timeout: 272 seconds)
20:37:01 <maerwald> And there's not much between internal hierarchy fights on the one side and yelling users on the other... such rewarding work :D
20:37:13 alp joins (~alp@88.126.45.36)
20:37:15 × _deepfire quits (~user@80.92.100.69) (Read error: Connection reset by peer)
20:37:38 <dminuoso> Like you just did. :-)
20:37:45 <dminuoso> Well, at least it wasn't directed at them
20:38:35 <maerwald> I don't have any expectations of nix devs
20:38:53 <maerwald> It's when users have expectations and voice them aggressively
20:39:07 <maerwald> I just move on and pick another tool
20:39:34 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
20:39:48 christo joins (~chris@81.96.113.213)
20:40:30 hackage numhask 0.7.0.0 - A numeric class heirarchy. https://hackage.haskell.org/package/numhask-0.7.0.0 (tonyday567)
20:43:08 redmp joins (~redmp@mobile-166-137-178-102.mycingular.net)
20:45:00 <maerwald> nh2: I think we're out of luck. I can't find static library files of gtk+3 in alpine
20:45:16 × solonarv quits (~solonarv@astrasbourg-653-1-156-4.w90-6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
20:45:17 <nh2> maerwald: can we build them?
20:49:19 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
20:49:34 × hseg quits (~gesh@185.120.126.113) (Ping timeout: 265 seconds)
20:50:32 × taurux quits (~taurux@net-188-152-78-21.cust.vodafonedsl.it) (Ping timeout: 265 seconds)
20:50:34 <maerwald> https://mail.gnome.org/archives/gtk-list/2018-January/msg00006.html
20:51:07 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-kgipcwwyhxxkjxhq) (Quit: Connection closed for inactivity)
20:51:31 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
20:53:52 × jcd quits (~user@2601:282:1300:7cb0::adb4) (Remote host closed the connection)
20:54:03 <nh2> maerwald: that's a bit outdated, see https://github.com/nh2/static-haskell-nix/issues/50#issuecomment-554589400 -- the author of that email merged my fixes to GTK accidentally breaking its static build in https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1172
20:55:01 <nh2> (it did also work before in autotools, they probably broke it by accident when moving to meson)
20:55:52 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
20:56:09 × Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Quit: Leaving)
20:56:19 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds)
20:56:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:56:21 <nh2> the backport for gtk3 is https://gitlab.gnome.org/GNOME/gtk/merge_requests/1196 -- should be in gtk3 >= 3.24.13, so the alpine package should have that fix
20:58:08 <hekkaidekapus> nh2, maerwald: <https://gitlab.alpinelinux.org/alpine/aports/blob/master/main/gtk+3.0/APKBUILD>
20:59:44 × czwartyeon quits (~czwartyeo@77-45-55-99.sta.asta-net.com.pl) (Remote host closed the connection)
21:00:46 <nh2> maerwald hekkaidekapus: Yes (thanks!), 3.24.23, so that should have my fix in. So you'd just have to pass the "-Ddefault_library=both" flag to get `.a` files
21:01:10 <Uniaika> hey everyone
21:01:25 <hekkaidekapus> hello
21:01:25 <Uniaika> what can I read in order to better understand fundeps errors in GHC?
21:01:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
21:02:51 <Uniaika> s/in/with/
21:03:05 vicfred_ joins (~vicfred@unaffiliated/vicfred)
21:03:08 taurux joins (~taurux@net-188-152-78-21.cust.vodafonedsl.it)
21:03:49 × vicfred quits (~vicfred@unaffiliated/vicfred) (Ping timeout: 264 seconds)
21:04:16 × vicfred_ quits (~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
21:04:44 vicfred_ joins (~vicfred@unaffiliated/vicfred)
21:05:43 × vicfred_ quits (~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
21:06:15 vicfred_ joins (~vicfred@unaffiliated/vicfred)
21:07:18 wayne_ is now known as wayne
21:07:32 × wayne quits (~wayne@consume.rocks) (Changing host)
21:07:32 wayne joins (~wayne@unaffiliated/wayne)
21:07:41 × fxg quits (~fxg@unaffiliated/fxg) (Quit: Leaving)
21:11:45 <nh2> Uniaika: I don't have a great resource on understanding the error messages, but do you know https://ocharles.org.uk/posts/2014-12-14-functional-dependencies.html | https://www.fpcomplete.com/haskell/tutorial/fundeps/ | https://gvolpe.com/blog/functional-dependencies-and-type-families/ ? They show _some_ fundeps errors and explain those
21:12:31 hackage numhask-space 0.7.0.0 - Numerical spaces. https://hackage.haskell.org/package/numhask-space-0.7.0.0 (tonyday567)
21:13:12 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
21:13:22 <Uniaika> nice
21:13:38 <Uniaika> thanks a lot nh2
21:14:11 dennisb joins (~dennisb@89-160-106-195.cust.bredband2.com)
21:14:54 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
21:15:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:17:00 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
21:17:24 <dminuoso> Uniaika: One thing that helped me is understand how GHC reasons in the presence of fundeps.
21:18:29 <nh2> dminuoso: Would be good to know how you did learn to understand that reasoning though :)
21:19:29 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
21:19:29 <Uniaika> on a related topic, I have this line of code : https://github.com/Kleidukos/Intrigue/blob/main/src/Intrigue/Eval.hs#L52
21:19:36 <Uniaika> that generates this error: https://github.com/Kleidukos/Intrigue/runs/1444428807?check_suite_focus=true#step:5:18
21:21:24 Raman joins (~user@c-24-4-174-65.hsd1.ca.comcast.net)
21:22:08 uninitializedPtr joins (415e3d4d@bras-base-okvlon3013w-grc-13-65-94-61-77.dsl.bell.ca)
21:22:19 <Raman> ?src reverse
21:22:20 <lambdabot> Source not found. Do you think like you type?
21:22:37 <uninitializedPtr> > let main :: IO ()
21:22:39 <lambdabot> <no location info>: error: not an expression: ‘let main :: IO ()’
21:22:47 <uninitializedPtr> > this_main :: IO ()
21:22:49 <Raman> ?src
21:22:49 <lambdabot> src <id>. Display the implementation of a standard function
21:22:49 <lambdabot> error: Variable not in scope: this_main :: IO ()
21:22:55 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
21:23:01 <Raman> ?src map
21:23:01 <lambdabot> Source not found. Abort, Retry, Panic?
21:23:01 <uninitializedPtr> > printStrLn 42
21:23:03 <lambdabot> error:
21:23:03 <lambdabot> • Variable not in scope: printStrLn :: t0 -> t
21:23:03 <lambdabot> • Perhaps you meant one of these:
21:23:14 <geekosaur> @src consults a database which contains lies and is not complete
21:23:14 <lambdabot> Source not found. Have you considered trying to match wits with a rutabaga?
21:23:14 <Uniaika> > print 42
21:23:17 <lambdabot> <IO ()>
21:23:17 <Raman> abort
21:23:19 <uninitializedPtr> ?src src
21:23:19 <lambdabot> Source not found. The more you drive -- the dumber you get.
21:23:21 <uninitializedPtr> ?src src
21:23:21 <lambdabot> Source not found. Are you on drugs?
21:23:21 copypasteque joins (~copypaste@2001:41d0:8:b325::1)
21:23:23 <uninitializedPtr> > ?src src
21:23:26 <lambdabot> error:
21:23:26 <lambdabot> • Variable not in scope: src
21:23:26 <lambdabot> • Perhaps you meant ‘scc’ (imported from Data.Graph)
21:23:33 <Raman> ?src Eq
21:23:33 <lambdabot> class Eq a where
21:23:33 <lambdabot> (==), (/=) :: a -> a -> Bool
21:23:54 <Raman> ?reverse
21:23:54 <lambdabot> Unknown command, try @list
21:24:00 <uninitializedPtr> @list
21:24:00 <lambdabot> What module? Try @listmodules for some ideas.
21:24:08 <Raman> @list
21:24:08 <lambdabot> What module? Try @listmodules for some ideas.
21:24:17 <uninitializedPtr> @list null
21:24:17 <lambdabot> No module "null" loaded
21:24:37 <uninitializedPtr> class Nothing where Nothing
21:24:44 <uninitializedPtr> > class Nothing where Nothing
21:24:49 <dminuoso> Use a private message if you want to experiment.
21:25:23 <Raman> ?src Show
21:25:23 <lambdabot> Source not found. You speak an infinite deal of nothing.
21:25:42 <Uniaika> dminuoso: do you have any idea how I can investigate the error I pasted above?
21:25:51 Raman parts (~user@c-24-4-174-65.hsd1.ca.comcast.net) ()
21:25:56 <nh2> geekosaur: good tip, dynamic loading occurring here: https://github.com/nh2/static-haskell-nix/issues/50#issuecomment-732434989
21:26:20 <dminuoso> Uniaika: Yes
21:26:20 uninitializedPtr parts (415e3d4d@bras-base-okvlon3013w-grc-13-65-94-61-77.dsl.bell.ca) ()
21:26:38 <Uniaika> dminuoso: \o/
21:27:29 <nh2> maerwald: FYI ^
21:29:07 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
21:29:42 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
21:30:28 × geekosaur quits (ac3a53fb@172.58.83.251) (Remote host closed the connection)
21:30:51 <dminuoso> Uniaika: Consider: class Monad m => MonadState s m | m -> s
21:31:32 <Uniaika> yes
21:31:36 Uniaika considers
21:31:51 × taurux quits (~taurux@net-188-152-78-21.cust.vodafonedsl.it) (Quit: ZNC 1.7.5 - https://znc.in)
21:31:52 <dminuoso> Given `instance ‘MonadState (HashMap Text AST) EvalM’` we have `EvalM -> (HashMap Text AST)`
21:32:11 <Uniaika> yep'
21:32:52 <dminuoso> The line that says:
21:32:54 <dminuoso> constraint ‘MonadState (HashMap Text (EvalM AST)) EvalM’
21:33:04 × Khisanth quits (~Khisanth@166.sub-174-197-147.myvzw.com) (Ping timeout: 265 seconds)
21:33:06 <dminuoso> Means GHC is trying to satisfy this constraint
21:33:37 <Uniaika> which is not ‘MonadState (HashMap Text AST) EvalM’
21:33:42 <dminuoso> Right
21:33:44 <Uniaika> but what I don't understand is how I got myself into that
21:33:59 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
21:33:59 <dminuoso> Type inference.
21:34:04 <Uniaika> damnit.
21:34:05 <dminuoso> % :t ask
21:34:05 <yahb> dminuoso: MonadReader r m => m r
21:34:14 <Uniaika> in my case it's
21:34:15 <dminuoso> See how ask is *fully* polymorphic in both m and r?
21:34:17 <Uniaika> % :t get
21:34:17 <yahb> Uniaika: MonadState s m => m s
21:34:21 <dminuoso> Oh. same story
21:34:31 <Uniaika> but yeah I see
21:34:48 <Uniaika> dminuoso: would type applications solve my problem?
21:35:00 <dminuoso> Uniaika: type annotations would help narrow it done
21:35:08 <dminuoso> Right now type inference is way too unbounded
21:35:23 <dminuoso> If you type annotate `n` that might give you a clue
21:35:31 <dminuoso> err wait
21:36:34 <dminuoso> My bet is its: let arguments = eval <$> arguments'
21:36:48 adrew joins (~andrew@97-115-68-44.ptld.qwest.net)
21:36:50 <dminuoso> That's broken
21:36:56 × knupfer quits (~Thunderbi@i59F7FFC3.versanet.de) (Ping timeout: 265 seconds)
21:36:59 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
21:37:00 <Uniaika> ooh
21:37:01 <Uniaika> okay
21:37:10 <Uniaika> thanks for the insight!
21:37:15 EyalSK joins (~EyalSK@bzq-84-109-128-227.cablep.bezeqint.net)
21:37:24 × adrew quits (~andrew@97-115-68-44.ptld.qwest.net) (Quit: adrew)
21:37:36 × EyalSK quits (~EyalSK@bzq-84-109-128-227.cablep.bezeqint.net) (Client Quit)
21:38:02 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
21:38:41 <dminuoso> Ah not quite
21:38:43 <dminuoso> let env = (fromVector $ V.zip parameters arguments) <> env'
21:38:45 <dminuoso> This is the offending line
21:38:57 <dminuoso> Everything else stems from its inferred tpe
21:39:11 <Uniaika> changing fmap for traverse seems to have fixed it
21:39:20 <Uniaika> (as in: the other errors now appear in ghcid)
21:43:27 × alx741 quits (~alx741@186.178.110.117) (Ping timeout: 260 seconds)
21:43:44 × kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection)
21:45:59 Khisanth joins (~Khisanth@56.sub-174-244-145.myvzw.com)
21:46:33 cosimone_ joins (~cosimone@5.170.241.60)
21:46:45 × kish` quits (~oracle@unaffiliated/oracle) (Ping timeout: 240 seconds)
21:48:17 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Ping timeout: 260 seconds)
21:48:18 cosimone_ is now known as cosimone
21:49:18 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 272 seconds)
21:50:07 × boxscape quits (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Quit: Connection closed)
21:50:29 × dhouthoo quits (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
21:51:54 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:52:44 Lycurgus joins (~niemand@98.4.114.74)
21:54:03 × Tops2 quits (~Tobias@dyndsl-095-033-021-036.ewe-ip-backbone.de) (Quit: Leaving.)
21:54:59 stu002 joins (77120261@119-18-2-97.771202.syd.nbn.aussiebb.net)
21:55:30 × DavidEichmann quits (~david@62.110.198.146.dyn.plus.net) (Remote host closed the connection)
21:56:04 alx741 joins (~alx741@181.196.69.178)
21:57:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
21:58:59 conal joins (~conal@66.115.157.94)
21:59:58 × hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 260 seconds)
22:03:06 × coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
22:04:04 <dminuoso> Uniaika: Generally, if GHC has mismatching types and you cant make sense of it, start by adding type ascriptions or annotations.
22:04:18 <Uniaika> dminuoso: got it
22:04:23 <Uniaika> I will try to remember
22:05:11 <dminuoso> Uniaika: In larger code, the error could have easily come from the other case-of branch as well, but only manifested in the other branch. Smaller code and type signatures are your only methods sadly
22:05:19 <dminuoso> Unless we ever get type error slices
22:06:58 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
22:07:29 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
22:07:49 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
22:08:28 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
22:08:28 <dminuoso> (And type error slices would only help much if they were integrated into your editor well, say via hie)
22:09:32 <dminuoso> (Or it would present some really interesting challenges on visualizing them)
22:11:18 phaul joins (~phaul@ruby/staff/phaul)
22:12:02 shatriff joins (~vitaliish@176.52.219.10)
22:16:34 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 246 seconds)
22:18:21 × tylerjl quits (~leothrix@elastic/staff/leothrix) (Quit: ZNC 1.7.5 - https://znc.in)
22:20:51 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
22:20:54 × conal quits (~conal@66.115.157.94) (Quit: Computer has gone to sleep.)
22:23:28 leothrix joins (~leothrix@elastic/staff/leothrix)
22:26:22 superstar64 joins (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net)
22:26:34 falafel_ joins (~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4)
22:27:29 × sand_dull quits (~theuser@c-73-149-95-105.hsd1.ct.comcast.net) (Ping timeout: 256 seconds)
22:31:27 <superstar64> has anyone played with something like this before? `data Term f = Fix (f (Term f) | Variable String | Application (Term f) (Term f) | Abstraction String (Term f)`, basically it's `Data.Fix.Fix` but with extra constructors
22:33:01 × stu002 quits (77120261@119-18-2-97.771202.syd.nbn.aussiebb.net) (Remote host closed the connection)
22:33:45 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
22:36:09 × Ariakenom quits (~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Quit: Leaving)
22:41:35 borne joins (~fritjof@200116b864880200394a967dc8ef4e61.dip.versatel-1u1.de)
22:43:13 hexfive joins (~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
22:43:31 <int-e> superstar64: probably not, because you can build the extra constructors into `f` instead.
22:44:01 × erisco quits (~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 264 seconds)
22:44:51 <int-e> data TermF f x = Variable String | Application x x | Abstraction String x | Extension (f x)
22:45:13 <int-e> type Term f = Fix (TermF f)
22:45:24 <int-e> superstar64: ^^ that should be isomorphic to what you have.
22:45:44 <superstar64> seems much uglier to pattern match on though
22:45:52 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
22:46:32 phaul joins (~phaul@ruby/staff/phaul)
22:48:23 <int-e> superstar64: There are pattern synonyms. What you may gain from the reformulation is a better understanding for how this relates to Fix, what folds look like... just an overall better fit with existing theory.
22:48:58 × alp quits (~alp@88.126.45.36) (Ping timeout: 260 seconds)
22:49:22 <superstar64> welp, i guess i'll rewrite my beta reduction then
22:50:00 hackage numhask-array 0.8.0 - Multi-dimensional array interface for numhask. https://hackage.haskell.org/package/numhask-array-0.8.0 (tonyday567)
22:50:25 <maerwald> on nice, lol https://ppig.org/files/2015-PPIG-26th-Sarkar1.pdf
22:50:31 <int-e> superstar64: I probably wouldn't do that. I would rename the 'Fix' though... as suggested it does feel more like an extension point for the data type to me.
22:50:31 <maerwald> so syntax highlighting does help
22:50:47 <int-e> superstar64: It's okay to have specific ad-hoc types.
22:51:09 × chele quits (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
22:51:36 Kaeipi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
22:51:38 <int-e> superstar64: I guess what I'm really getting at is that the relation to Data.Fix.Fix feels superficial.
22:51:48 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
22:52:16 conal joins (~conal@64.71.133.70)
22:53:56 <superstar64> my code might be cleaner if i use recursion schemes anyway
22:54:14 × chaosmasttter quits (~chaosmast@p200300c4a72cf80165f6d709b523305b.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
22:54:43 <int-e> superstar64: your choice, obviously... and you should know best what the tradeoffs are
22:55:22 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
22:55:38 <superstar64> it's 40 lines that i start writing a few hours ago
22:55:43 <superstar64> it's not a big deal
22:55:49 × phaul quits (~phaul@ruby/staff/phaul) (Remote host closed the connection)
22:56:27 phaul joins (~phaul@ruby/staff/phaul)
22:58:03 × sleblanc quits (~sleblanc@unaffiliated/sebleblanc) (Quit: Leaving)
22:58:50 × falafel_ quits (~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4) (Ping timeout: 264 seconds)
22:59:29 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:02:28 × hiroaki quits (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
23:03:27 × darjeeling_ quits (~darjeelin@122.245.219.209) (Ping timeout: 265 seconds)
23:04:28 × Lycurgus quits (~niemand@98.4.114.74) (Quit: Exeunt)
23:04:44 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
23:05:11 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:06:23 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
23:08:00 hackage zeolite-lang 0.9.0.0 - Zeolite is a statically-typed, general-purpose programming language. https://hackage.haskell.org/package/zeolite-lang-0.9.0.0 (ta0kira)
23:08:08 × Kaeipi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 256 seconds)
23:10:05 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
23:10:17 × jneira quits (02896ac0@gateway/web/cgi-irc/kiwiirc.com/ip.2.137.106.192) (Ping timeout: 260 seconds)
23:10:18 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
23:11:10 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
23:12:10 frdg joins (~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
23:12:13 frdg parts (~nick@pool-71-184-143-249.bstnma.fios.verizon.net) ()
23:15:18 × _linker_ quits (~linker@2a02:a31a:a041:9a80:1550:ab25:bf6f:9a3a) (Remote host closed the connection)
23:15:37 pavonia joins (~user@unaffiliated/siracusa)
23:17:16 × mirrorbird quits (~psutcliff@89.45.7.132) (Quit: Leaving)
23:17:17 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
23:17:48 darjeeling_ joins (~darjeelin@122.245.219.209)
23:19:23 Tario joins (~Tario@201.192.165.173)
23:19:31 hackage bitvec 1.1.0.0 - Space-efficient bit vectors https://hackage.haskell.org/package/bitvec-1.1.0.0 (Bodigrim)
23:19:38 × son0p quits (~son0p@181.136.122.143) (Quit: Lost terminal)
23:21:39 e2 joins (e2@sponsored.by.bnc4you.xyz)
23:22:50 × terrorjack quits (~terrorjac@static.23.111.201.195.clients.your-server.de) (Ping timeout: 264 seconds)
23:29:32 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
23:29:36 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:31:41 rednaZ2 joins (rednaZ2@freebnc.bnc4you.xyz)
23:33:13 × justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
23:33:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:33:27 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
23:33:49 cads joins (~cads@ip-64-72-99-232.lasvegas.net)
23:34:08 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
23:36:38 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
23:36:38 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
23:37:26 <sondr3> I'm having some trouble with a parser I'm writing, I want it to parse a multiline string until it either reaches EOF or a specific text. I have been able to get one or the other but not a parser that does both
23:38:10 <sondr3> I got some help earlier and have `T.pack <$> someTill anySingle (lookAhead (string b) <|> string ("\n" <> b))`, but this fails if the string ends with EOF
23:38:24 <sondr3> And I've been looking at my code for too long now :P
23:38:27 <sondr3> ;;;;;
23:38:54 <sondr3> bah, sorry, getting used to Colemak and Moonlander at the same time
23:39:08 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
23:40:16 <monochrom> I would not use most parser combinator libraries for "anything at all except until this specific string" (unless that specific string is one single character)
23:40:48 Kaeipi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
23:40:55 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer)
23:42:13 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
23:43:09 <monochrom> A minority of parser combinator libraries feature non-determinism for ambiguous grammars, at the expense of speed. Those would be a good fit.
23:43:43 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
23:46:50 × wonko7 quits (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 264 seconds)
23:47:44 × vicfred_ quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
23:48:01 <sondr3> monochrom: do you happen to know hw
23:48:03 justan0theruser joins (~justanoth@unaffiliated/justanotheruser)
23:48:10 × cosimone quits (~cosimone@5.170.241.60) (Quit: cosimone)
23:48:21 <sondr3> *how I'd get the rest of the input from megaparsec?
23:48:59 vicfred joins (~vicfred@unaffiliated/vicfred)
23:49:50 <sondr3> looks like I might be able to use getInput and friends
23:50:00 × vicfred quits (~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
23:50:31 vicfred joins (~vicfred@unaffiliated/vicfred)
23:50:40 Chi1thangoo joins (~Chi1thang@87.112.60.168)
23:50:53 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Read error: Connection reset by peer)
23:53:44 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
23:54:18 × rednaZ2 quits (rednaZ2@freebnc.bnc4you.xyz) (Quit: ZNC from ##bnc4you)
23:56:27 × redmp quits (~redmp@mobile-166-137-178-102.mycingular.net) (Quit: leaving)
23:57:19 <sm[m]> hey friends.. what's the function f [a] that is equivalent to a <|> a <|> a <|> ... ?
23:58:20 <hpc> foldr1 (<|>)?
23:58:21 <hpc> ;)
23:58:44 × resolve quits (~resolve@178.162.212.214) (Remote host closed the connection)
23:59:34 terrorjack joins (~terrorjac@static.23.111.201.195.clients.your-server.de)
23:59:38 cosimone joins (~cosimone@5.170.241.60)

All times are in UTC on 2020-11-23.