2021/07/29

2021-07-29 00:00:00 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-29 00:00:04 +0200 <monochrom> To achieve what Knuth meant by literate programming (hint: if it were just comment-vs-code syntax, he would not go to the trouble to implement two programs, weave and tangle), people now have to say "bidirectional literate programming"
2021-07-29 00:00:23 +0200 <monochrom> Programmers keep doing this.
2021-07-29 00:01:27 +0200 <monochrom> Hungarian notation : "Hungarian notation" :: engineer : "engineer" :: literate programming :: "literate programming"
2021-07-29 00:03:35 +0200 <monochrom> euouae: I haven't done literate programming (the real one) for a long time. But when I did, I used Norman Ramsay's programs "noweave" and "notangle".
2021-07-29 00:04:11 +0200 <monochrom> I get to handwave it because I can point you to existing software. :)
2021-07-29 00:04:34 +0200 <hpc> my favorite is when programmers invent new words for nothing, like "eventually consistent" or "duck typing"
2021-07-29 00:04:55 +0200 <monochrom> But "notangle" is the program that emits code files you can then give to compilers.
2021-07-29 00:05:13 +0200 <monochrom> "noweave" is the one that emits TeX/LaTeX files.
2021-07-29 00:05:22 +0200 <monochrom> Similarly Knuth's weave and tangle.
2021-07-29 00:06:35 +0200 <euouae> That stuff is so cryptic
2021-07-29 00:06:43 +0200 <euouae> I'm reading the man page and it's almost nonsensical
2021-07-29 00:07:08 +0200 <monochrom> man pages are seldom tutorials.
2021-07-29 00:07:20 +0200 <euouae> well for one I can't even find it online
2021-07-29 00:07:26 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-29 00:07:35 +0200 <monochrom> If you already know Knuth's idea of literate programming, then noweave and notangle make sense.
2021-07-29 00:07:39 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
2021-07-29 00:07:56 +0200 <monochrom> If you don't, perhaps don't worry about it for now.
2021-07-29 00:08:03 +0200 <euouae> O
2021-07-29 00:08:04 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com)
2021-07-29 00:08:17 +0200 <euouae> I'd know the idea if there was a single coherent article/blog about it :P
2021-07-29 00:08:22 +0200dschrempf(~dominik@mobiledyn-185-69-244-184.mrsn.at) (Quit: WeeChat 3.2)
2021-07-29 00:08:24 +0200 <monochrom> But millenial bloggers can only brag and handwave, yes.
2021-07-29 00:08:33 +0200ukari(~ukari@user/ukari)
2021-07-29 00:08:52 +0200 <monochrom> "coherent blog" is an oxymoron.
2021-07-29 00:09:21 +0200 <dolio> Does the wikipedia article explain it?
2021-07-29 00:09:27 +0200 <monochrom> Look for Knuth's original articles and papers. Screw bloggers.
2021-07-29 00:09:48 +0200 <monochrom> Yeah wikipedia has a high chance of being OK too.
2021-07-29 00:10:16 +0200 <dolio> Seems like it does, although I just read it, and never understood what advocates were on about prior.
2021-07-29 00:10:16 +0200 <monochrom> The blogosphere is a meta-level echo chamber of mediocrity.
2021-07-29 00:10:55 +0200 <dolio> E.G. one of the main things that would disqualify Literate Haskell is that you still have to put all your imports at the top.
2021-07-29 00:11:33 +0200 <monochrom> That would be my opinion, yes.
2021-07-29 00:12:05 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-29 00:13:49 +0200 <dolio> I'm not really sure I buy the 'revolutionary' part either, though.
2021-07-29 00:14:37 +0200euouae(~euouae@user/euouae) (Quit: Client closed)
2021-07-29 00:14:48 +0200 <monochrom> True. I was excited when I learned it when I was young. But not to the point of calling it "revolutionary".
2021-07-29 00:14:48 +0200 <dolio> It seems way too optimistic about the underlying reasons why software is poorly documented.
2021-07-29 00:15:51 +0200chris_(~chris@81.96.113.213)
2021-07-29 00:15:51 +0200epolanski(uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-29 00:16:00 +0200 <dolio> Using literate programming isn't going to make your programmers proofread the entire codebase every time they make a change to make sure everything is still coherent.
2021-07-29 00:16:08 +0200 <monochrom> Oh yeah, it's even more thankless work than the existing comment system.
2021-07-29 00:17:13 +0200 <monochrom> I certainly did it when only it was appropriate. I ran a programming contest and then posted my solution and explanation. That one was an excellent use case.
2021-07-29 00:17:39 +0200 <monochrom> But the program I wrote for my MSc project, haha why would anyone.
2021-07-29 00:18:49 +0200euouae(~euouae@user/euouae)
2021-07-29 00:19:54 +0200chris_(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2021-07-29 00:23:36 +0200 <dolio> Yeah, I would guess that it turns out well because of how Knuth is writing the programs, and most programs aren't written that way (single author, writing something intended to be didactic).
2021-07-29 00:24:32 +0200agua(~agua@2804:14c:8793:8e2f:8dcb:5525:982:c9ab) (Ping timeout: 268 seconds)
2021-07-29 00:24:33 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-29 00:24:33 +0200 <dolio> I can write (I think) great stuff like that in non-literate Haskell when it's my goal, but often it's not.
2021-07-29 00:25:59 +0200 <dolio> Sometimes I do it in Agda, and that has constraints on the order you can write definitions in.
2021-07-29 00:28:44 +0200 <sm> eww!
2021-07-29 00:28:48 +0200 <glguy> Couldn't we do literate programming just the same now as Knuth did then? It just wouldn't be .lhs files; we'd have to use the same kind of processing passes used before.
2021-07-29 00:29:50 +0200Null_A(~null_a@2601:645:8700:2290:7921:180d:4519:92d1) ()
2021-07-29 00:29:53 +0200 <sm> we certainly can
2021-07-29 00:29:56 +0200 <monochrom> Yeah just use Knuth's weave-tangle or Ramsay's nowave-notangle. Agnostic to languages.
2021-07-29 00:30:39 +0200 <monochrom> Why even invent lhs in the first place.
2021-07-29 00:31:03 +0200 <sm> org mode can do it too
2021-07-29 00:32:16 +0200 <sm> and https://leoeditor.com
2021-07-29 00:34:44 +0200 <sm> or I suppose just m4 if you want to really mess around
2021-07-29 00:37:34 +0200euouae(~euouae@user/euouae) (Ping timeout: 246 seconds)
2021-07-29 00:37:38 +0200lavaman(~lavaman@98.38.249.169)
2021-07-29 00:38:37 +0200son0p-(~ff@181.136.122.143)
2021-07-29 00:42:26 +0200 <monochrom> Uh m4 hahahaha
2021-07-29 00:43:05 +0200 <monochrom> Someone please concort a shell script that uses sed, and only sed, in a very clever way >:)
2021-07-29 00:43:50 +0200cheater(~Username@user/cheater) (Ping timeout: 255 seconds)
2021-07-29 00:43:55 +0200 <dolio> I guess strictly speaking, the orderedness of Agda is likely to be less of a limitation, because it basically means you need to introduce the type of something before referring to it, or the definition of something before depending on the properties thereof.
2021-07-29 00:44:22 +0200 <dolio> Which seems like it would correllate with how you'd have to explain things for them to make sense.
2021-07-29 00:46:31 +0200dajoer(~david@user/gvx)
2021-07-29 00:47:06 +0200Topsi(~Tobias@dyndsl-037-138-065-120.ewe-ip-backbone.de)
2021-07-29 00:48:26 +0200 <monochrom> My experience is that, e.g., if an ADT has 4 cases and you have a function that works on that ADT, half of the time it is better to explain the first 2 cases and the first half of your function, and then go back to explain the other 2 cases and the other half of your function.
2021-07-29 00:48:57 +0200 <monochrom> In fact I am doing this in my course notes http://www.cs.utoronto.ca/~trebla/CSCC24-2021-Summer/09-semantics-1.html
2021-07-29 00:49:26 +0200 <dolio> Yeah, I'm not sure if you can break up definitions like that in Agda.
2021-07-29 00:49:49 +0200 <monochrom> Pedagogically it makes no sense to even bring up, e.g., the "VClosure" case of the "Value" type at any early point.
2021-07-29 00:50:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 00:52:06 +0200 <dolio> That idea might have been reinvented many years later as "aspect oriented programming", although I'm not an expert on that, either.
2021-07-29 00:52:16 +0200 <monochrom> :)
2021-07-29 00:52:26 +0200 <dolio> Much worse name, certainly.
2021-07-29 00:53:05 +0200 <monochrom> My recollection is that AOP fizzled because it (or its community) really went the equivalent of the m4 route and it became unwanted madness.
2021-07-29 00:53:10 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-29 00:54:38 +0200 <monochrom> But AOP did not aim for explaining code, it aimed for keeping code open-world for postmortem additions.
2021-07-29 00:55:28 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-07-29 00:55:59 +0200 <dolio> Yeah.
2021-07-29 00:56:20 +0200 <dolio> I guess it's the same sort of idea with a different goal in mind.
2021-07-29 00:56:36 +0200 <monochrom> Ah, yeah.
2021-07-29 00:58:02 +0200Null_A(~null_a@2601:645:8700:2290:2910:fbd1:f882:3730)
2021-07-29 00:58:04 +0200wroathe(~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Ping timeout: 250 seconds)
2021-07-29 00:59:30 +0200vysn(~vysn@user/vysn) (Remote host closed the connection)
2021-07-29 00:59:35 +0200 <dolio> I guess my hypothesis is that widespread adoption of literate programming tools would probably get you to where AOP went.
2021-07-29 00:59:56 +0200 <dolio> Because programmers will care about the code organization possibilities, not writing excellent documentation.
2021-07-29 01:03:09 +0200 <johnw> if I have a record data Foo = Foo { a :: Int, b :: Int }, is it possible to write a Traversal' Foo Int over the two members?
2021-07-29 01:03:47 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 252 seconds)
2021-07-29 01:04:32 +0200 <dolio> Yes, you can write one.
2021-07-29 01:04:38 +0200 <dibblego> yes, though it would be Iso
2021-07-29 01:04:45 +0200 <dibblego> (and ∴ traversal)
2021-07-29 01:05:05 +0200 <dolio> If the question is whether a library will generate one automatically, I don't know.
2021-07-29 01:05:18 +0200 <johnw> I don't know why I'm stuck on this
2021-07-29 01:05:32 +0200 <dibblego> generic-lens is the closest you'll get in this regard; I've been down this rabbit hole
2021-07-29 01:05:59 +0200 <dibblego> johnw: fooIso = iso (\(Foo x y) -> (x, y)) (uncurry Foo)
2021-07-29 01:06:21 +0200 <johnw> I actually want a traversal
2021-07-29 01:06:24 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-29 01:06:26 +0200 <johnw> not a projected to a pair
2021-07-29 01:06:28 +0200 <dibblego> that is a traversal ^^
2021-07-29 01:06:46 +0200 <dibblego> oh wait sorry
2021-07-29 01:06:51 +0200 <dibblego> you want Traversal' Foo Int
2021-07-29 01:07:06 +0200 <dibblego> fooTraversal f (Foo x y) = Foo <$> f x <*> f y
2021-07-29 01:07:18 +0200 <johnw> ah, got it
2021-07-29 01:07:23 +0200 <johnw> in my case it's actually:
2021-07-29 01:07:24 +0200 <johnw> s & zipped fees commission %%~ \(x, y) -> (,) <$> f x <*> f y
2021-07-29 01:07:30 +0200 <johnw> it's the use of the sub-lenses that made it awkward
2021-07-29 01:07:36 +0200 <johnw> thanks dibblego!
2021-07-29 01:07:42 +0200lavaman(~lavaman@98.38.249.169)
2021-07-29 01:08:01 +0200 <sm> hello johnw! hope you're having an excellent day
2021-07-29 01:08:01 +0200 <dibblego> @type both -- you can also use that ^ Iso with both
2021-07-29 01:08:03 +0200 <lambdabot> (Data.Bitraversable.Bitraversable r, Applicative f) => (a -> f b) -> r a a -> f (r b b)
2021-07-29 01:08:09 +0200 <johnw> hi sm, it's a good day; you?
2021-07-29 01:08:39 +0200 <boxscape_> % let foo = Foo 1 2 in (foo ^.. template :: [Int]) -- this works if Foo derives Data
2021-07-29 01:08:39 +0200 <yahb> boxscape_: [1,2]
2021-07-29 01:08:52 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net) (Quit: Client closed)
2021-07-29 01:08:56 +0200dhil(~dhil@195.213.192.47) (Ping timeout: 268 seconds)
2021-07-29 01:09:07 +0200 <sm> yes! no complaints. it's drizzling 🌧👍🏻
2021-07-29 01:10:23 +0200 <boxscape_> % let fooTraversal = template :: Traversal' Foo Int -- more concretely
2021-07-29 01:10:23 +0200 <yahb> boxscape_:
2021-07-29 01:12:03 +0200cheater(~Username@user/cheater)
2021-07-29 01:12:46 +0200wrunt(~ajc@vmx14030.hosting24.com.au) (Ping timeout: 258 seconds)
2021-07-29 01:13:42 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-29 01:14:29 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-07-29 01:18:44 +0200renzhi(~xp@142.184.90.63)
2021-07-29 01:19:07 +0200octeep(~octeep@42-2-223-196.static.netvigator.com)
2021-07-29 01:22:38 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
2021-07-29 01:24:02 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-29 01:25:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-29 01:27:38 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-29 01:30:24 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-07-29 01:34:34 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2021-07-29 01:35:00 +0200renzhi(~xp@142.184.90.63) (Ping timeout: 258 seconds)
2021-07-29 01:39:41 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 01:41:36 +0200acidjnk_new3(~acidjnk@p200300d0c72b95049518cd6c04553bbc.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-07-29 01:43:34 +0200hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 265 seconds)
2021-07-29 01:43:59 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-29 01:44:36 +0200zeenk(~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38) (Quit: Konversation terminated!)
2021-07-29 01:44:56 +0200hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2021-07-29 01:51:43 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2021-07-29 01:52:55 +0200renzhi(~xp@142.184.90.63)
2021-07-29 01:55:10 +0200vk3wtf(~doc@220-245-2-190.tpgi.com.au)
2021-07-29 01:57:48 +0200Atum_(~IRC@user/atum/x-2392232) (Read error: Connection reset by peer)
2021-07-29 01:58:05 +0200vk3wtf_(~doc@207.134.220.203.dial.dynamic.acc01-carp-beg.comindico.com.au) (Ping timeout: 255 seconds)
2021-07-29 02:04:42 +0200retro_(~retro@5ec19a54.skybroadband.com) (Ping timeout: 245 seconds)
2021-07-29 02:05:28 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-07-29 02:07:57 +0200 <Axman6> I wonder how efficient the generated code for that is, given all the types are fixed
2021-07-29 02:09:11 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-29 02:12:02 +0200Brianmancer(~Neuromanc@user/briandamag) (Ping timeout: 255 seconds)
2021-07-29 02:13:27 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
2021-07-29 02:19:13 +0200jess(~jess@libera/staff/jess) ()
2021-07-29 02:23:21 +0200 <Axman6> % Foo 1 2 & partsOf template %~ (reverse @Int)
2021-07-29 02:23:21 +0200 <yahb> Axman6: Foo {a = 2, b = 1}
2021-07-29 02:24:37 +0200 <Axman6> % Foo 1 2 & partsOf template %~ (reverse @Int . map (*10))
2021-07-29 02:24:37 +0200 <yahb> Axman6: Foo {a = 20, b = 10}
2021-07-29 02:28:12 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
2021-07-29 02:33:50 +0200MQ-17J(~MQ-17J@8.6.144.192) (Ping timeout: 265 seconds)
2021-07-29 02:34:18 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-07-29 02:35:55 +0200Deide1(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-07-29 02:36:02 +0200Deide1(~Deide@217.155.19.23)
2021-07-29 02:36:38 +0200Deide2(~Deide@217.155.19.23)
2021-07-29 02:40:10 +0200Deide1(~Deide@217.155.19.23) (Ping timeout: 240 seconds)
2021-07-29 02:45:24 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-29 02:45:39 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-07-29 02:46:46 +0200renzhi(~xp@142.184.90.63) (Ping timeout: 272 seconds)
2021-07-29 02:48:13 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
2021-07-29 02:51:00 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-29 02:52:26 +0200peterhil(~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi) (Ping timeout: 258 seconds)
2021-07-29 02:54:22 +0200cjb(~cjb@user/cjb)
2021-07-29 02:55:53 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-07-29 02:56:06 +0200yilin(~yilin@2601:400:c100:6330:6b23:fdc1:34d0:ae01)
2021-07-29 02:58:27 +0200chris_(~chris@81.96.113.213)
2021-07-29 03:03:14 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2)
2021-07-29 03:03:33 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-29 03:04:15 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-29 03:09:04 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-29 03:12:18 +0200xff0x(~xff0x@2001:1a81:52b7:d000:8a03:e207:89f6:6456) (Ping timeout: 240 seconds)
2021-07-29 03:14:33 +0200xff0x(~xff0x@2001:1a81:52ef:f900:65e4:872c:1a09:47)
2021-07-29 03:17:17 +0200jeslie0(~user@135-23-172-182.cpe.pppoe.ca)
2021-07-29 03:17:51 +0200TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-07-29 03:19:19 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-29 03:21:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 03:22:20 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-07-29 03:23:16 +0200jeslie0(~user@135-23-172-182.cpe.pppoe.ca) (ERC (IRC client for Emacs 28.0.50))
2021-07-29 03:26:06 +0200davros(~davros@host86-185-61-40.range86-185.btcentralplus.com) (Ping timeout: 276 seconds)
2021-07-29 03:28:17 +0200sridonhiatus[m]srid[m]
2021-07-29 03:29:40 +0200neurocyte4(~neurocyte@212.232.80.209)
2021-07-29 03:29:40 +0200neurocyte4(~neurocyte@212.232.80.209) (Changing host)
2021-07-29 03:29:40 +0200neurocyte4(~neurocyte@user/neurocyte)
2021-07-29 03:33:12 +0200neurocyte(~neurocyte@user/neurocyte) (Ping timeout: 250 seconds)
2021-07-29 03:33:13 +0200neurocyte4neurocyte
2021-07-29 03:33:26 +0200euouae(~euouae@user/euouae)
2021-07-29 03:38:18 +0200davros(~davros@host86-184-180-96.range86-184.btcentralplus.com)
2021-07-29 03:50:35 +0200Null_A(~null_a@2601:645:8700:2290:2910:fbd1:f882:3730) (Remote host closed the connection)
2021-07-29 03:50:57 +0200juhp(~juhp@bb116-14-48-29.singnet.com.sg)
2021-07-29 03:51:11 +0200Null_A(~null_a@2601:645:8700:2290:2910:fbd1:f882:3730)
2021-07-29 03:52:56 +0200alx741(~alx741@181.196.69.4) (Quit: alx741)
2021-07-29 03:53:46 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2021-07-29 03:55:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-29 03:55:22 +0200Null_A(~null_a@2601:645:8700:2290:2910:fbd1:f882:3730) (Ping timeout: 240 seconds)
2021-07-29 03:56:24 +0200Topsi(~Tobias@dyndsl-037-138-065-120.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-07-29 03:57:55 +0200trent(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
2021-07-29 04:05:18 +0200Null_A(~null_a@2601:645:8700:2290:2910:fbd1:f882:3730)
2021-07-29 04:09:10 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-29 04:09:54 +0200goepsilongo(~chacho@2603-7000-ab00-62ed-0000-0000-0000-0bd0.res6.spectrum.com) (Quit: Konversation terminated!)
2021-07-29 04:12:10 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-07-29 04:19:22 +0200yilin(~yilin@2601:400:c100:6330:6b23:fdc1:34d0:ae01) (Ping timeout: 240 seconds)
2021-07-29 04:23:54 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 250 seconds)
2021-07-29 04:26:59 +0200wei2912(~wei2912@112.199.250.21)
2021-07-29 04:27:54 +0200boxscape_(~boxscape_@p4ff0b769.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2021-07-29 04:28:44 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-07-29 04:28:44 +0200FinnElijaGuest8697
2021-07-29 04:28:44 +0200Guest8697(~finn_elij@user/finn-elija/x-0085643) (Killed (tungsten.libera.chat (Nickname regained by services)))
2021-07-29 04:28:44 +0200finn_elijaFinnElija
2021-07-29 04:33:20 +0200dmwit(~dmwit@pool-108-18-198-142.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
2021-07-29 04:34:55 +0200dmwit(~dmwit@pool-108-18-198-142.washdc.fios.verizon.net)
2021-07-29 04:37:00 +0200Deide2(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-07-29 04:45:08 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-07-29 04:46:38 +0200slycelote_(~slycelote@user/slycelote) (Quit: Leaving)
2021-07-29 04:48:42 +0200derelict(~derelict@user/derelict) (Ping timeout: 240 seconds)
2021-07-29 04:59:48 +0200td_(~td@muedsl-82-207-238-200.citykom.de) (Ping timeout: 265 seconds)
2021-07-29 05:00:05 +0200wei2912(~wei2912@112.199.250.21) (Ping timeout: 258 seconds)
2021-07-29 05:00:41 +0200wei2912(~wei2912@112.199.250.21)
2021-07-29 05:01:18 +0200td_(~td@94.134.91.37)
2021-07-29 05:01:23 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-29 05:03:30 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
2021-07-29 05:03:44 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net)
2021-07-29 05:04:03 +0200euouae(~euouae@user/euouae) (Quit: Client closed)
2021-07-29 05:05:05 +0200derelict(~derelict@user/derelict)
2021-07-29 05:05:47 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-29 05:06:10 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-07-29 05:12:13 +0200obs\(~obscur1ty@user/obs/x-5924898) (Quit: Leaving)
2021-07-29 05:13:15 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-29 05:13:16 +0200wrunt(~ajc@vmx14030.hosting24.com.au)
2021-07-29 05:18:57 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-29 05:20:24 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-29 05:29:53 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-29 05:30:57 +0200ishutin_(~ishutin@92-249-150-169.static.digikabel.hu)
2021-07-29 05:34:36 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-29 05:34:43 +0200ishutin(~ishutin@193-110-63-61.cable-modem.hdsnet.hu) (Ping timeout: 268 seconds)
2021-07-29 05:36:06 +0200xff0x(~xff0x@2001:1a81:52ef:f900:65e4:872c:1a09:47) (Ping timeout: 276 seconds)
2021-07-29 05:36:44 +0200xff0x(~xff0x@2001:1a81:52ef:f900:f86e:7128:132:6c84)
2021-07-29 05:41:55 +0200Null_A(~null_a@2601:645:8700:2290:2910:fbd1:f882:3730) (Remote host closed the connection)
2021-07-29 05:46:18 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 240 seconds)
2021-07-29 05:46:26 +0200trent(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 268 seconds)
2021-07-29 05:46:54 +0200Null_A(~null_a@2601:645:8700:2290:2910:fbd1:f882:3730)
2021-07-29 05:46:58 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 256 seconds)
2021-07-29 05:47:18 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-29 05:52:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 05:53:56 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-07-29 06:01:05 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-29 06:02:32 +0200derelict(~derelict@user/derelict) (Quit: WeeChat 3.2)
2021-07-29 06:04:39 +0200anandprabhu(~anandprab@45.83.220.218)
2021-07-29 06:06:55 +0200pe200012(~pe200012@183.236.83.77)
2021-07-29 06:08:47 +0200cjb(~cjb@user/cjb) (Ping timeout: 256 seconds)
2021-07-29 06:12:48 +0200notzmv(~zmv@user/notzmv)
2021-07-29 06:16:31 +0200cjb(~cjb@user/cjb)
2021-07-29 06:23:54 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-29 06:25:00 +0200koala_man(~vidar@157.146.251.23.bc.googleusercontent.com) (Quit: RIP Freenode lenge leve libera.katt)
2021-07-29 06:25:41 +0200ccc(~ccc@dynamic-acs-24-112-153-241.zoominternet.net)
2021-07-29 06:26:19 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-07-29 06:26:32 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-29 06:28:11 +0200arkho(~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Ping timeout: 252 seconds)
2021-07-29 06:29:15 +0200koala_man(~vidar@157.146.251.23.bc.googleusercontent.com)
2021-07-29 06:29:49 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 06:33:21 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-07-29 06:33:37 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-07-29 06:41:50 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
2021-07-29 06:42:56 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-29 06:44:46 +0200cjb(~cjb@user/cjb)
2021-07-29 06:45:32 +0200KM4MBGjackhill
2021-07-29 06:46:22 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 06:48:04 +0200trufas(~trufas@177.240.218.218) (Ping timeout: 265 seconds)
2021-07-29 06:48:29 +0200trufas(~trufas@177.240.218.218)
2021-07-29 06:49:04 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Ping timeout: 250 seconds)
2021-07-29 06:50:48 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com)
2021-07-29 06:56:10 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-07-29 06:56:11 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-29 06:57:17 +0200qbt(~edun@user/edun)
2021-07-29 06:57:20 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-29 06:58:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 07:00:36 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
2021-07-29 07:03:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-29 07:05:23 +0200Null_A(~null_a@2601:645:8700:2290:2910:fbd1:f882:3730) (Remote host closed the connection)
2021-07-29 07:06:43 +0200Null_A(~null_a@2601:645:8700:2290:2910:fbd1:f882:3730)
2021-07-29 07:09:31 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 07:16:29 +0200Null_A(~null_a@2601:645:8700:2290:2910:fbd1:f882:3730) (Remote host closed the connection)
2021-07-29 07:20:58 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-29 07:21:02 +0200xff0x(~xff0x@2001:1a81:52ef:f900:f86e:7128:132:6c84) (Ping timeout: 256 seconds)
2021-07-29 07:21:53 +0200xff0x(~xff0x@2001:1a81:52ef:f900:4116:e67f:3dc9:5c87)
2021-07-29 07:24:38 +0200jneira(~jneira@212.8.115.226)
2021-07-29 07:29:18 +0200img(~img@user/img)
2021-07-29 07:30:46 +0200retroid_(~retro@5ec19a54.skybroadband.com)
2021-07-29 07:33:01 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-07-29 07:36:26 +0200trent(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
2021-07-29 07:36:49 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 268 seconds)
2021-07-29 07:37:19 +0200cjb(~cjb@user/cjb)
2021-07-29 07:43:43 +0200dhil(~dhil@195.213.192.47)
2021-07-29 07:48:00 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-07-29 07:52:40 +0200hyiltiz(~quassel@31.220.5.250)
2021-07-29 07:59:23 +0200tenniscp25(~textual@cm-171-101-115-139.revip11.asianet.co.th)
2021-07-29 08:03:22 +0200tenniscp25(~textual@cm-171-101-115-139.revip11.asianet.co.th) (Client Quit)
2021-07-29 08:06:19 +0200thiross(~thiross@39.170.37.82)
2021-07-29 08:12:09 +0200 <Xnuk> :t (%~)
2021-07-29 08:12:10 +0200 <lambdabot> ASetter s t a b -> (a -> b) -> s -> t
2021-07-29 08:12:17 +0200Erutuon_(~Erutuon@user/erutuon)
2021-07-29 08:12:23 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-07-29 08:14:15 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-29 08:14:21 +0200hendursaga(~weechat@user/hendursaga)
2021-07-29 08:16:17 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
2021-07-29 08:19:58 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-07-29 08:20:34 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
2021-07-29 08:21:12 +0200Lord_of_Life_Lord_of_Life
2021-07-29 08:25:53 +0200ridcully(~ridcully@p508ac428.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2021-07-29 08:26:10 +0200ridcully(~ridcully@p508ac428.dip0.t-ipconnect.de)
2021-07-29 08:26:34 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-29 08:28:48 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Quit: bye bye)
2021-07-29 08:37:36 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-29 08:37:51 +0200lavaman(~lavaman@98.38.249.169)
2021-07-29 08:37:59 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-29 08:43:02 +0200xff0x(~xff0x@2001:1a81:52ef:f900:4116:e67f:3dc9:5c87) (Ping timeout: 250 seconds)
2021-07-29 08:44:04 +0200xff0x(~xff0x@2001:1a81:52ef:f900:318a:5cee:26ae:a4f9)
2021-07-29 08:44:26 +0200chele(~chele@user/chele)
2021-07-29 08:47:13 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:388d:2d63:2508:1711)
2021-07-29 08:47:26 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-07-29 08:48:50 +0200spruit11_(~quassel@2a02:a467:ccd6:1:91b8:870a:fb3:8344)
2021-07-29 08:49:43 +0200spruit11_(~quassel@2a02:a467:ccd6:1:91b8:870a:fb3:8344) (Client Quit)
2021-07-29 08:50:43 +0200spruit11_(~quassel@2a02:a467:ccd6:1:91b8:870a:fb3:8344)
2021-07-29 08:51:10 +0200pe200012(~pe200012@183.236.83.77) (Remote host closed the connection)
2021-07-29 08:51:11 +0200spruit11(~quassel@2a02:a467:ccd6:1:c892:977a:b4bf:318c) (Ping timeout: 252 seconds)
2021-07-29 08:51:24 +0200spruit11_(~quassel@2a02:a467:ccd6:1:91b8:870a:fb3:8344) (Client Quit)
2021-07-29 08:51:43 +0200spruit11(~quassel@2a02:a467:ccd6:1:91b8:870a:fb3:8344)
2021-07-29 08:51:44 +0200pe200012(~pe200012@113.105.10.33)
2021-07-29 08:51:51 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-07-29 08:55:45 +0200pe200012(~pe200012@113.105.10.33) (Remote host closed the connection)
2021-07-29 08:56:10 +0200pe200012(~pe200012@218.107.49.28)
2021-07-29 08:58:18 +0200xff0x(~xff0x@2001:1a81:52ef:f900:318a:5cee:26ae:a4f9) (Ping timeout: 240 seconds)
2021-07-29 08:58:20 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 252 seconds)
2021-07-29 08:58:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 08:59:15 +0200xff0x(~xff0x@2001:1a81:52ef:f900:5eb1:ed8e:7709:10d6)
2021-07-29 08:59:33 +0200thiross(~thiross@39.170.37.82) (Remote host closed the connection)
2021-07-29 08:59:38 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
2021-07-29 09:00:47 +0200thiross(~thiross@39.170.37.82)
2021-07-29 09:05:54 +0200vysn(~vysn@user/vysn)
2021-07-29 09:08:17 +0200anandprabhu(~anandprab@45.83.220.218) (Quit: Leaving)
2021-07-29 09:11:05 +0200trent(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 252 seconds)
2021-07-29 09:17:36 +0200thiross(~thiross@39.170.37.82) ()
2021-07-29 09:18:03 +0200shredder(~user@user/shredder) (Quit: quitting)
2021-07-29 09:18:35 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-07-29 09:19:35 +0200aegon(~mike@174.127.249.180)
2021-07-29 09:19:39 +0200aerona(~aerona@2600:6c54:4600:f300:d46d:5152:c0fc:6ad9) (Read error: Connection reset by peer)
2021-07-29 09:19:48 +0200 <aegon> how does one use a local dependency with stack :?
2021-07-29 09:19:49 +0200shredder(~user@user/shredder)
2021-07-29 09:20:06 +0200 <aegon> i tried putting the folder in my stack project but it doesn't seem happy with that
2021-07-29 09:20:17 +0200delYsid(~user@84-115-55-45.cable.dynamic.surfer.at)
2021-07-29 09:20:34 +0200 <Axman6> you need to add it to the stack.yaml... in the exra-deps I think?
2021-07-29 09:20:40 +0200 <Axman6> extra-deps*
2021-07-29 09:21:45 +0200 <Axman6> might njust need to add it to the packages clause
2021-07-29 09:21:56 +0200 <Axman6> https://docs.haskellstack.org/en/stable/yaml_configuration/#packages
2021-07-29 09:22:09 +0200acidjnk_new3(~acidjnk@p200300d0c72b95049518cd6c04553bbc.dip0.t-ipconnect.de)
2021-07-29 09:22:13 +0200fendor(~fendor@178.165.161.179.wireless.dyn.drei.com)
2021-07-29 09:24:47 +0200 <aegon> Axman6: thanks, i was confused by only seeing git options, totally glossed over just adding a relative path :X
2021-07-29 09:25:12 +0200 <Axman6> all good, I agree it is confusing
2021-07-29 09:29:41 +0200epolanski(uid312403@id-312403.brockwell.irccloud.com)
2021-07-29 09:29:57 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-29 09:29:58 +0200peterhil(~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi)
2021-07-29 09:30:18 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-07-29 09:30:21 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-07-29 09:31:08 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 250 seconds)
2021-07-29 09:32:02 +0200azeem(~azeem@176.201.32.30)
2021-07-29 09:32:04 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-07-29 09:32:35 +0200zeenk(~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38)
2021-07-29 09:36:19 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 09:38:29 +0200azeem(~azeem@176.201.32.30) (Ping timeout: 252 seconds)
2021-07-29 09:39:23 +0200azeem(~azeem@176.201.32.30)
2021-07-29 09:39:52 +0200chris_(~chris@81.96.113.213)
2021-07-29 09:42:24 +0200Obo(~roberto@79.red-79-153-119.dynamicip.rima-tde.net)
2021-07-29 09:43:46 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-29 09:45:38 +0200azeem(~azeem@176.201.32.30) (Read error: Connection reset by peer)
2021-07-29 09:46:37 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-07-29 09:54:42 +0200jippiedoe(~david@84-84-122-154.fixed.kpn.net)
2021-07-29 09:56:52 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net) (Ping timeout: 246 seconds)
2021-07-29 09:59:28 +0200jippiedoe(~david@84-84-122-154.fixed.kpn.net) (Ping timeout: 258 seconds)
2021-07-29 09:59:46 +0200Erutuon_(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2021-07-29 10:00:06 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-29 10:04:27 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-29 10:04:50 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 258 seconds)
2021-07-29 10:05:24 +0200hendursa1(~weechat@user/hendursaga)
2021-07-29 10:08:38 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-07-29 10:10:38 +0200kayprish(~kayprish@cable-188-2-229-172.dynamic.sbb.rs)
2021-07-29 10:10:55 +0200jumper149(~jumper149@80.240.31.34)
2021-07-29 10:11:56 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-29 10:17:03 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 10:17:30 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-07-29 10:17:31 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-07-29 10:17:32 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-29 10:17:33 +0200allbery_bgeekosaur
2021-07-29 10:18:02 +0200cfricke(~cfricke@user/cfricke)
2021-07-29 10:19:05 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2021-07-29 10:19:17 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 10:20:35 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-29 10:20:57 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 245 seconds)
2021-07-29 10:22:08 +0200azeem(~azeem@176.201.32.30)
2021-07-29 10:23:34 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
2021-07-29 10:28:52 +0200Obo(~roberto@79.red-79-153-119.dynamicip.rima-tde.net) (Quit: WeeChat 2.8)
2021-07-29 10:29:04 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-29 10:34:24 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
2021-07-29 10:34:50 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-07-29 10:37:29 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 10:40:45 +0200chris_(~chris@81.96.113.213)
2021-07-29 10:44:25 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-29 10:45:22 +0200azeem(~azeem@176.201.32.30) (Ping timeout: 240 seconds)
2021-07-29 10:46:11 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2)
2021-07-29 10:46:41 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
2021-07-29 10:47:48 +0200azeem(~azeem@176.201.32.30)
2021-07-29 10:53:52 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-07-29 10:56:48 +0200pe200012(~pe200012@218.107.49.28) (Read error: Connection reset by peer)
2021-07-29 10:56:54 +0200pe200012_(~pe200012@218.107.49.28)
2021-07-29 10:59:12 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 11:04:03 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-29 11:05:41 +0200cfricke(~cfricke@user/cfricke)
2021-07-29 11:06:19 +0200cfricke(~cfricke@user/cfricke) (Client Quit)
2021-07-29 11:07:03 +0200cfricke(~cfricke@user/cfricke)
2021-07-29 11:07:10 +0200aegon(~mike@174.127.249.180) (Quit: leaving)
2021-07-29 11:08:05 +0200azeem(~azeem@176.201.32.30) (Read error: Connection reset by peer)
2021-07-29 11:08:22 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-07-29 11:08:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 11:09:33 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 11:09:35 +0200kuribas(~user@ptr-25vy0i6v77tuc30f7h8.18120a2.ip6.access.telenet.be)
2021-07-29 11:15:38 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2)
2021-07-29 11:17:15 +0200cfricke(~cfricke@user/cfricke)
2021-07-29 11:17:51 +0200cfricke(~cfricke@user/cfricke) (Client Quit)
2021-07-29 11:18:01 +0200cfricke(~cfricke@user/cfricke)
2021-07-29 11:18:14 +0200cfricke(~cfricke@user/cfricke) (Client Quit)
2021-07-29 11:18:57 +0200cfricke(~cfricke@user/cfricke)
2021-07-29 11:23:29 +0200Obo(~roberto@79.red-79-153-119.dynamicip.rima-tde.net)
2021-07-29 11:24:04 +0200chomwitt(~chomwitt@2a02:587:dc01:5c00:12c3:7bff:fe6d:d374)
2021-07-29 11:37:18 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-29 11:37:39 +0200michalz(~michalz@185.246.204.57)
2021-07-29 11:40:40 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:388d:2d63:2508:1711) (Ping timeout: 272 seconds)
2021-07-29 11:41:28 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-29 11:43:51 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-29 11:44:57 +0200peterhil(~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-29 11:45:19 +0200peterhil(~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi)
2021-07-29 11:46:48 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 244 seconds)
2021-07-29 11:49:09 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:9f62:d831:3528:c2cf)
2021-07-29 11:49:17 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-07-29 11:50:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 11:50:53 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 11:56:45 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-07-29 11:57:49 +0200__monty__(~toonn@user/toonn)
2021-07-29 12:02:37 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-29 12:03:10 +0200chris_(~chris@81.96.113.213)
2021-07-29 12:07:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 12:11:14 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-07-29 12:18:11 +0200turlando(~turlando@user/turlando) (Ping timeout: 265 seconds)
2021-07-29 12:21:01 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 12:21:56 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net)
2021-07-29 12:22:04 +0200Obo(~roberto@79.red-79-153-119.dynamicip.rima-tde.net) (Ping timeout: 258 seconds)
2021-07-29 12:22:18 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:9f62:d831:3528:c2cf) (Ping timeout: 250 seconds)
2021-07-29 12:22:49 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-07-29 12:25:30 +0200thonkpod(~thonkpod@user/thonkpod) (Ping timeout: 240 seconds)
2021-07-29 12:25:41 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-29 12:30:59 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:956a:ab48:7c29:9877)
2021-07-29 12:31:06 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 12:36:40 +0200ormaaj(~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200siraben(~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200kadoban(~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200peddie(~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200sm(~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200rednaZ[m](~r3dnazmat@2001:470:69fc:105::ba70) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200bitonic(~bitonic@2001:470:69fc:105::1812) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200boxscape(~boxscape@user/boxscape) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200inkbottle[m](~inkbottle@2001:470:69fc:105::2ff5) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200unrooted(~unrooted@2001:470:69fc:105::a4a) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:40 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200Deewiant(~deewiant@2001:470:69fc:105::2fd3) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200polykernel(~polykerne@user/polykernel) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200Tisoxin(~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200jaror[m](~jaror@2001:470:69fc:105::265) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200ixlun(~ixlun@2001:470:69fc:105::41b3) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200jophish(~jophish@2001:470:69fc:105::670) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200unclechu(~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:41 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:42 +0200srid[m](~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:42 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:42 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:42 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:42 +0200bb010g(~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:44 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:44 +0200infinisil(~infinisil@2001:470:69fc:105::ff8) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200RohitGoswami[m](~rgoswamim@2001:470:69fc:105::16cc) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200fakehacker[m](~fakehacke@2001:470:69fc:105::b5f0) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200Guest6263(~sylveonma@2001:470:69fc:105::2d95) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200octeep[m]1(~octeepmoc@2001:470:69fc:105::695e) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200dminuoso[m](~dminuosom@2001:470:69fc:105::33bb) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:46 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:47 +0200yin[m](~zwromatri@2001:470:69fc:105::1d4) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:47 +0200jellz[m](~jellzmatr@2001:470:69fc:105::2daa) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:47 +0200CyrusT[m](~cyrustcru@2001:470:69fc:105::306e) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:47 +0200ecameron[m](~ecameronm@2001:470:69fc:105::35df) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200zfnmxt(~zfnmxtzfn@user/zfnmxt) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200jchia[m](~jchiamatr@2001:470:69fc:105::c50b) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200deuslambda[m](~deuslambd@2001:470:69fc:105::c749) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200kar1[m](~kar1matri@2001:470:69fc:105::c308) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200Soft(~soft-matr@2001:470:69fc:105::c75) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200PotatoHatsue(~berberman@2001:470:69fc:105::b488) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200andreabedini[m](~andreabed@2001:470:69fc:105::c821) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200Deide(~deide@user/deide) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:48 +0200carmysilna(~brightly-@2001:470:69fc:105::2190) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:49 +0200drewefenwick[m](~drewefenw@2001:470:69fc:105::c8c4) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:49 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:49 +0200afotgkmnzj7asv3r(~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:49 +0200aveltras[m](~aveltrasm@2001:470:69fc:105::3ef9) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:49 +0200Ollie[m](~ollieocha@2001:470:69fc:105::41a5) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:49 +0200jkachmar(~jkachmar@2001:470:69fc:105::c72d) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:49 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:50 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:50 +0200SimonWeiss[m](~weiss-dma@2001:470:69fc:105::bebd) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:50 +0200vbeatrice[m](~vbeatrice@2001:470:69fc:105::3ebf) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:50 +0200OndejSkup[m](~mimivxmat@2001:470:69fc:105::c300) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:36:50 +0200thomasjm[m](~thomasjmm@2001:470:69fc:105::c6d9) (Quit: Bridge terminating on SIGTERM)
2021-07-29 12:37:11 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 12:37:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-29 12:38:13 +0200kayprish(~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Remote host closed the connection)
2021-07-29 12:38:33 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 12:39:09 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 12:39:57 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2021-07-29 12:42:26 +0200agua(~agua@2804:18:40:39f8:1:0:64c7:dff1)
2021-07-29 12:42:29 +0200acidjnk_new(~acidjnk@p200300d0c72b95075c335839612ea8d0.dip0.t-ipconnect.de)
2021-07-29 12:43:54 +0200berberman(~berberman@user/berberman) (Ping timeout: 240 seconds)
2021-07-29 12:44:41 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-29 12:44:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-07-29 12:45:03 +0200berberman(~berberman@user/berberman)
2021-07-29 12:45:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 12:45:22 +0200acidjnk_new3(~acidjnk@p200300d0c72b95049518cd6c04553bbc.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-07-29 12:45:27 +0200peterhil(~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi) (Ping timeout: 258 seconds)
2021-07-29 12:45:54 +0200Obo(~roberto@79.red-79-153-119.dynamicip.rima-tde.net)
2021-07-29 12:46:25 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2021-07-29 12:46:34 +0200michalz(~michalz@185.246.204.57) (Ping timeout: 240 seconds)
2021-07-29 12:47:59 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-07-29 12:48:55 +0200ac(~aloiscoch@2001:470:69fc:105::65)
2021-07-29 12:48:55 +0200sm(~sm@plaintextaccounting/sm)
2021-07-29 12:48:55 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22)
2021-07-29 12:48:55 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd)
2021-07-29 12:48:55 +0200jaror[m](~jaror@2001:470:69fc:105::265)
2021-07-29 12:48:55 +0200fgaz(~fgaz@2001:470:69fc:105::842)
2021-07-29 12:48:55 +0200peddie(~peddie@2001:470:69fc:105::25d)
2021-07-29 12:48:55 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284)
2021-07-29 12:48:56 +0200thomasjm[m](~thomasjmm@2001:470:69fc:105::c6d9)
2021-07-29 12:48:56 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2)
2021-07-29 12:48:56 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef)
2021-07-29 12:48:56 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db)
2021-07-29 12:48:56 +0200bb010g(~bb010g@2001:470:69fc:105::9a5)
2021-07-29 12:48:56 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e)
2021-07-29 12:48:56 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a)
2021-07-29 12:48:56 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b)
2021-07-29 12:48:56 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f)
2021-07-29 12:48:56 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2021-07-29 12:48:56 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32)
2021-07-29 12:48:56 +0200bitonic(~bitonic@2001:470:69fc:105::1812)
2021-07-29 12:48:56 +0200kadoban(~kadoban@user/kadoban)
2021-07-29 12:48:56 +0200carmysilna(~brightly-@2001:470:69fc:105::2190)
2021-07-29 12:48:56 +0200jophish(~jophish@2001:470:69fc:105::670)
2021-07-29 12:48:56 +0200ericson2314(~ericson23@2001:470:69fc:105::70c)
2021-07-29 12:48:56 +0200ixlun(~ixlun@2001:470:69fc:105::41b3)
2021-07-29 12:48:56 +0200siraben(~siraben@user/siraben)
2021-07-29 12:48:56 +0200PotatoHatsue(~berberman@2001:470:69fc:105::b488)
2021-07-29 12:48:56 +0200unclechu(~unclechu@2001:470:69fc:105::354)
2021-07-29 12:48:56 +0200Deewiant(~deewiant@2001:470:69fc:105::2fd3)
2021-07-29 12:48:56 +0200bryan[m](~bchreekat@2001:470:69fc:105::16b5)
2021-07-29 12:48:56 +0200unrooted(~unrooted@2001:470:69fc:105::a4a)
2021-07-29 12:48:56 +0200rednaZ[m](~r3dnazmat@2001:470:69fc:105::ba70)
2021-07-29 12:48:56 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2021-07-29 12:48:57 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b)
2021-07-29 12:48:57 +0200inkbottle[m](~inkbottle@2001:470:69fc:105::2ff5)
2021-07-29 12:48:57 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda)
2021-07-29 12:48:57 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2021-07-29 12:48:57 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4)
2021-07-29 12:48:57 +0200boxscape(~boxscape@user/boxscape)
2021-07-29 12:48:57 +0200infinisil(~infinisil@2001:470:69fc:105::ff8)
2021-07-29 12:48:57 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56)
2021-07-29 12:48:57 +0200jkachmar(~jkachmar@2001:470:69fc:105::c72d)
2021-07-29 12:48:57 +0200Tisoxin(~ikosit@user/ikosit)
2021-07-29 12:48:57 +0200Deide(~deide@user/deide)
2021-07-29 12:48:57 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2021-07-29 12:48:57 +0200polykernel(~polykerne@user/polykernel)
2021-07-29 12:48:57 +0200srid[m](~sridmatri@2001:470:69fc:105::1c2)
2021-07-29 12:48:57 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d)
2021-07-29 12:48:57 +0200OndejSkup[m](~mimivxmat@2001:470:69fc:105::c300)
2021-07-29 12:48:57 +0200kar1[m](~kar1matri@2001:470:69fc:105::c308)
2021-07-29 12:48:57 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2021-07-29 12:48:57 +0200ormaaj(~ormaaj@user/ormaaj)
2021-07-29 12:48:57 +0200andreabedini[m](~andreabed@2001:470:69fc:105::c821)
2021-07-29 12:49:07 +0200dualinverter[m](~dualinver@2001:470:69fc:105::16a7)
2021-07-29 12:49:07 +0200jchia[m](~jchiamatr@2001:470:69fc:105::c50b)
2021-07-29 12:49:07 +0200Morrow[m](~morrowmma@2001:470:69fc:105::1d0)
2021-07-29 12:49:08 +0200dminuoso[m](~dminuosom@2001:470:69fc:105::33bb)
2021-07-29 12:49:08 +0200Ollie[m](~ollieocha@2001:470:69fc:105::41a5)
2021-07-29 12:49:08 +0200yin[m](~zwromatri@2001:470:69fc:105::1d4)
2021-07-29 12:49:08 +0200SimonWeiss[m](~weiss-dma@2001:470:69fc:105::bebd)
2021-07-29 12:49:08 +0200jellz[m](~jellzmatr@2001:470:69fc:105::2daa)
2021-07-29 12:49:08 +0200RohitGoswami[m](~rgoswamim@2001:470:69fc:105::16cc)
2021-07-29 12:49:08 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8)
2021-07-29 12:49:08 +0200wallymathieu[m](~wallymath@2001:470:69fc:105::16ae)
2021-07-29 12:49:08 +0200adziahel[m](~adziahelm@2001:470:69fc:105::b4d)
2021-07-29 12:49:08 +0200Soft(~soft-matr@2001:470:69fc:105::c75)
2021-07-29 12:49:08 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d)
2021-07-29 12:49:08 +0200autrim64[m](~autrim64m@2001:470:69fc:105::16a1)
2021-07-29 12:49:09 +0200drewefenwick[m](~drewefenw@2001:470:69fc:105::c8c4)
2021-07-29 12:49:09 +0200ecameron[m](~ecameronm@2001:470:69fc:105::35df)
2021-07-29 12:49:09 +0200octeep[m](~octeepmoc@2001:470:69fc:105::695e)
2021-07-29 12:49:09 +0200CyrusT[m](~cyrustcru@2001:470:69fc:105::306e)
2021-07-29 12:49:09 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f)
2021-07-29 12:49:09 +0200aveltras[m](~aveltrasm@2001:470:69fc:105::3ef9)
2021-07-29 12:49:09 +0200afotgkmnzj7asv3r(~afotgkmnz@2001:470:69fc:105::c24b)
2021-07-29 12:49:09 +0200deuslambda[m](~deuslambd@2001:470:69fc:105::c749)
2021-07-29 12:49:09 +0200fakehacker[m](~fakehacke@2001:470:69fc:105::b5f0)
2021-07-29 12:49:09 +0200vbeatrice[m](~vbeatrice@2001:470:69fc:105::3ebf)
2021-07-29 12:49:10 +0200oak-(~oakuniver@2001:470:69fc:105::fcd)
2021-07-29 12:49:10 +0200Sylveon(~sylveonma@2001:470:69fc:105::2d95)
2021-07-29 12:49:32 +0200michalz(~michalz@185.246.204.62)
2021-07-29 12:49:33 +0200SylveonGuest2540
2021-07-29 12:49:48 +0200thonkpod(~thonkpod@user/thonkpod)
2021-07-29 12:50:07 +0200xkuru(~xkuru@user/xkuru)
2021-07-29 12:51:20 +0200Obo(~roberto@79.red-79-153-119.dynamicip.rima-tde.net) (Ping timeout: 250 seconds)
2021-07-29 12:51:26 +0200xkuru(~xkuru@user/xkuru) (Client Quit)
2021-07-29 12:52:32 +0200Deide1(~Deide@217.155.19.23)
2021-07-29 12:52:39 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-29 12:53:08 +0200Obo(~roberto@94.191.137.235.mobile.tre.se)
2021-07-29 12:54:48 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-07-29 12:56:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 12:56:40 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:956a:ab48:7c29:9877) (Ping timeout: 272 seconds)
2021-07-29 13:01:14 +0200Deide1(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-07-29 13:01:35 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
2021-07-29 13:01:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-07-29 13:01:56 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com)
2021-07-29 13:01:58 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 13:02:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 13:04:21 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-07-29 13:07:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-07-29 13:07:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 13:07:32 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 13:07:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 13:13:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-07-29 13:13:45 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 13:15:48 +0200ubert(~Thunderbi@178.165.190.122.wireless.dyn.drei.com)
2021-07-29 13:18:02 +0200favonia(~favonia@user/favonia) (Ping timeout: 258 seconds)
2021-07-29 13:20:40 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 13:24:28 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-07-29 13:24:28 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-07-29 13:24:28 +0200turlando(~turlando@user/turlando)
2021-07-29 13:25:44 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 13:26:21 +0200 <merijn> hmm, any suggestions on how to best represent a case of "0, 1, or 2" args for a function?
2021-07-29 13:27:08 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:d518:334f:85c4:8d2d)
2021-07-29 13:27:47 +0200pesada(~agua@2804:14c:8793:8e2f:3944:8017:7f63:8e28)
2021-07-29 13:28:32 +0200 <sshine> merijn, data Args a b = Args { argsOne :: Maybe a, argsTwo :: Maybe b }?
2021-07-29 13:29:23 +0200 <sm> maerwald: congrats on the ghcup release!
2021-07-29 13:29:27 +0200 <sshine> merijn, i.e. Data.These
2021-07-29 13:30:16 +0200ikex1(~ash@user/ikex)
2021-07-29 13:30:21 +0200 <maerwald> sm: thanks
2021-07-29 13:30:29 +0200 <sshine> oh, data These a b = This a | That b | These a b. I guess that's more canonical. :)
2021-07-29 13:30:30 +0200agua(~agua@2804:18:40:39f8:1:0:64c7:dff1) (Ping timeout: 256 seconds)
2021-07-29 13:30:30 +0200ikex(~ash@user/ikex) (Ping timeout: 256 seconds)
2021-07-29 13:30:48 +0200 <sm> maerwald: I think a better answer needs to be found for that good question at https://www.reddit.com/r/haskell/comments/ottx21/ann_ghcup01161_released
2021-07-29 13:30:56 +0200 <merijn> These doesn't cover 0 arguments case, though
2021-07-29 13:30:56 +0200ikex1ikex
2021-07-29 13:31:03 +0200 <merijn> At least, not nicely
2021-07-29 13:31:41 +0200 <sm> (the current answer sounds like a bunch of negatives, it doesn't motivate)
2021-07-29 13:31:42 +0200 <sshine> merijn, but another interpretation is Maybe (a, Maybe b)
2021-07-29 13:31:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 13:32:14 +0200 <maerwald> sm: what do you propose?
2021-07-29 13:32:15 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 13:32:28 +0200 <merijn> sshine: In my case it's just representing a commandline that takes 0, 1, or 2 paths and I'm trying to avoid adding separate constructors for each case
2021-07-29 13:32:38 +0200 <sm> nothing unfortunately, I'd like to know the answer too
2021-07-29 13:33:42 +0200 <merijn> sshine: Which question as you referring to?
2021-07-29 13:33:44 +0200 <merijn> eh
2021-07-29 13:33:47 +0200 <merijn> s/sshine/sm
2021-07-29 13:34:42 +0200 <maerwald> sm: I think the answer is that stack shouldn't do an in-place upgrade by default, but install into e.g. ~/.local/bin or whatever is configured
2021-07-29 13:35:34 +0200 <maerwald> ghcup by default does that too... you have to pass `--inplace` if you want that
2021-07-29 13:36:28 +0200 <sm> merijn: "I'm new to this. Why should I choose it over stack?" at https://www.reddit.com/r/haskell/comments/ottx21/ann_ghcup01161_released/
2021-07-29 13:37:08 +0200 <maerwald> sm: ah, you mean that
2021-07-29 13:37:20 +0200 <maerwald> I think my answer is pretty accurate.
2021-07-29 13:37:50 +0200 <merijn> The answer is "because lots of people don't like stack and lots of linux distros fuck up the packaging of GHC/cabal"
2021-07-29 13:38:01 +0200 <sm> merijn: "you should choose ghcup because it doesn't overwrite itself, unlike stack upgrade" ?
2021-07-29 13:38:13 +0200 <maerwald> sm: what?
2021-07-29 13:38:16 +0200 <sshine> merijn, if one or two paths are missing, will the program supply a default path or will a section of code not run?
2021-07-29 13:38:25 +0200 <drewefenwick[m]> If you only want to use the Stack workflow with no system GHC then GHCup doesn't give you that much extra AFAIK at the moment. If you want straight GHC or a cabal workflow then GHCup is very handy.
2021-07-29 13:38:45 +0200 <merijn> sshine: It's basically diffing configs, so either diff two specified configs or diff one specified config to the default
2021-07-29 13:39:09 +0200 <merijn> sm: "you should choose ghcup because you think figuring out which GHC bindist to download is to complex"
2021-07-29 13:39:16 +0200 <sshine> merijn, what does zero config paths mean then?
2021-07-29 13:39:17 +0200 <sm> OP asks a very simple question and ghcup should have a simple and clear answer to this if it's to succeed with new folks
2021-07-29 13:39:27 +0200 <maerwald> sm: there is a simple and clear answer
2021-07-29 13:39:29 +0200 <merijn> sshine: Just dumping out the diff of the default
2021-07-29 13:39:32 +0200 <maerwald> did you read my response?
2021-07-29 13:39:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 13:39:48 +0200 <sm> maerwald: which response ?
2021-07-29 13:39:52 +0200 <maerwald> sm: on reddit
2021-07-29 13:40:17 +0200 <sm> maerwald: https://www.reddit.com/r/haskell/comments/ottx21/ann_ghcup01161_released/h6xsowf/ ?
2021-07-29 13:40:50 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 13:40:50 +0200 <sshine> makes sense.
2021-07-29 13:40:50 +0200 <maerwald> Yes
2021-07-29 13:42:18 +0200chomwitt(~chomwitt@2a02:587:dc01:5c00:12c3:7bff:fe6d:d374) (Ping timeout: 276 seconds)
2021-07-29 13:43:27 +0200 <sshine> I understand this as a step on the way. the things snoyberg wrote about having a shared library for managing GHC installations seems like a nice future goal. I guess pushing GHC management responsibility out of Stack and into a library, only so that either Stack or GHCup can refer to this, is the way forward from having competing tools? kinda like having cabal as a format, and not just a tool. :)
2021-07-29 13:43:38 +0200 <sm> maerwald: yes I read it, I just pinged you and gave you feedback about it. I think it's not very motivating and a better answer is needed for folks like the OP. Take it FWIW.
2021-07-29 13:44:18 +0200 <maerwald> sm: I don't understand what other answer you expect
2021-07-29 13:44:23 +0200 <sshine> whether 'stack upgrade' eventually runs a sub-command that triggers this code, or 'ghcup ...' does, should be a CLI preference.
2021-07-29 13:45:21 +0200 <maerwald> sshine: there was never an attempt to write a shared library and the blog post you mentioned also didn't have this as a motivation
2021-07-29 13:45:35 +0200 <sshine> maerwald, oh, okay.
2021-07-29 13:46:06 +0200 <merijn> sm: tbh, I think the question there has a whole bunch of built in assumptions that run counter to the target audience of ghcup
2021-07-29 13:46:18 +0200 <merijn> sm: You say "this person needs a better answer to be convinced to use ghcup"
2021-07-29 13:46:30 +0200 <maerwald> then my answer is: don't :)
2021-07-29 13:46:31 +0200 <merijn> sm: I say "this person sounds like they're not in the target audience of ghcup"
2021-07-29 13:46:39 +0200 <maerwald> yep
2021-07-29 13:46:58 +0200 <sshine> maerwald, yeah, https://www.snoyman.com/blog/2021/05/unified-haskell-installer/ -- the section called "The Goal": What I'd like to see is a well maintained Haskell library for installing Haskell toolchains, generally acknowledged as the de facto standard way to install GHC and other tools. It should be Haskell, so that it's easy for Haskellers to maintain. It should support as many operating systems as
2021-07-29 13:47:04 +0200 <sshine> possible. It should provide an easy-to-use Haskell API that other tooling can leverage.
2021-07-29 13:47:27 +0200 <sshine> maerwald, of course, I interpreted with some degree of freedom. :)
2021-07-29 13:47:28 +0200 <sm> maerwald: you said "not a replacement for stack", "supports installing and managing stack versions", "does the same for cabal, GHC and HLS", "doesn't make a workflow choice for you" - I'm just pointing out that to a new haskeller, especially one already using stack, these sound obscure or like disadvantages. I hope that makes sense. I don't expect anything, I'm just trying to help.
2021-07-29 13:47:37 +0200 <merijn> sm: The target audience of ghcup is "grumpy unix curmudgeons who dislike package manager induced breackage of haskell tooling"
2021-07-29 13:47:41 +0200viluon(uid453725@id-453725.brockwell.irccloud.com)
2021-07-29 13:48:17 +0200 <sshine> merijn, grumpy unix curmudgeons don't like Stack?
2021-07-29 13:48:37 +0200 <merijn> I don't and maerwald doesn't and I consider us prototypical grumpy unix curmudgeons :p
2021-07-29 13:49:05 +0200 <maerwald> I was talked into supporting stack... so don't blame me
2021-07-29 13:49:07 +0200sshinewonders if prototype inheritance will solve this.
2021-07-29 13:49:57 +0200 <drewefenwick[m]> IIRC Snoyman hasn't approached anyone to make GHCup this unified GHC installer that Stack uses to install GHC.
2021-07-29 13:49:57 +0200 <sm> merijn, is that really true ? maerwald seems to push it as the haskell install tool
2021-07-29 13:49:58 +0200 <merijn> sm: ghcup came from "people don't like stack, but installing the bindists from the website is guess work which version you need and package managers like Arch keep breaking tools" -> "ghcup reliably and predictably install correct bindist for you"
2021-07-29 13:50:14 +0200 <maerwald> sm: no, the HF did
2021-07-29 13:50:15 +0200 <sshine> maerwald, so, just to understand: if I install stack with ghcup, besides not running 'stack upgrade' to confuse ghcup, should I always use a system-ghc?
2021-07-29 13:50:25 +0200 <maerwald> sm: HF wanted windows support, HF wanted stack support
2021-07-29 13:50:29 +0200 <maerwald> I didn't want either of those
2021-07-29 13:50:39 +0200 <viluon> can Hoogle search for types or typeclasses by kind signature?
2021-07-29 13:51:12 +0200 <maerwald> sshine: doesn't matter, does it? You'll just have potentially multiple instances of one GHC version installed
2021-07-29 13:51:34 +0200Obo(~roberto@94.191.137.235.mobile.tre.se) (Ping timeout: 250 seconds)
2021-07-29 13:51:36 +0200 <merijn> viluon: No clue, try it? :p
2021-07-29 13:51:51 +0200 <viluon> merijn: tried on the online instance, didn't work
2021-07-29 13:52:07 +0200 <sm> maerwald: I'm thinking of a proposal from snoyman about making stack more universal which you kind of shot down and pushed full speed ahead with ghcup
2021-07-29 13:52:12 +0200 <sshine> maerwald, well, I suppose it mattered slightly if 1) ghcup installs system-ghc, 2) running stack the first time installs another ghc. -- seems kinda silly. but I guess just bundling stack with a system-ghc that isn't necessarily the stack ghc is still sort of useful.
2021-07-29 13:52:21 +0200 <viluon> I'm wondering if the commandline tool can do it, if there's a flag or config option or something
2021-07-29 13:52:24 +0200 <maerwald> sm: "shot down"?
2021-07-29 13:52:26 +0200 <viluon> (I don't have Hoogle locally)
2021-07-29 13:52:38 +0200 <sm> yes
2021-07-29 13:52:45 +0200 <maerwald> sm: that's untrue
2021-07-29 13:52:57 +0200 <sm> I am certainly be confused about ghcup's goals now, so others will be too
2021-07-29 13:53:15 +0200 <sshine> maerwald, I'm just thinking, if two tools refer to the same GHC installation, doing so with a shared library would make a lot of sense. :-D that's why I assumed this was a step on the way to something similar to what Snoyman described.
2021-07-29 13:53:17 +0200 <merijn> sm: ghcup's goals are: install GHC/cabal/hls
2021-07-29 13:53:34 +0200 <sshine> merijn, /stack now?
2021-07-29 13:53:36 +0200 <merijn> sm: Including managing installs of multiple versions
2021-07-29 13:53:54 +0200 <merijn> sshine: Well, according to maerwald that's not a goal, merely something demanded from externally
2021-07-29 13:54:07 +0200 <sshine> merijn, who's demanding?
2021-07-29 13:54:24 +0200 <merijn> Haskell Foundation, per maerwald's words, like, 30 seconds ago :p
2021-07-29 13:54:51 +0200 <merijn> "13:50 < maerwald> sm: HF wanted windows support, HF wanted stack support"
2021-07-29 13:55:03 +0200 <sm> merijn: ok, I understand that as far as it goes. I'm still curious what's a good answer to "I'm new to this. Why should I choose it over stack?"
2021-07-29 13:55:22 +0200 <merijn> sm: "Because you don't like stack's mandated workflow"
2021-07-29 13:55:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 13:56:00 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 13:57:24 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 13:58:00 +0200 <merijn> Stack is very opinionated and many people strongly disagree with its opinions, but some people find installing cabal/GHC bindists to tricky/annoying, so ghcup takes care of that for you. Your question (and the original one) are predicated on "stack is a good default tool, therefore argumentation to use something else is required"
2021-07-29 13:58:01 +0200 <maerwald> sm: 1. the proposal you mentioned was nothing but confusing and didn't represent the current state of the ecosystem correctly, 2. Stack team never collaborated with me and doesn't until today (despite multiple attempts to improve integration, including several patches), 3. I didn't "shoot" down anything. I was correcting the misrepresentation.
2021-07-29 13:59:20 +0200 <sm> maerwald: that's how it read to me, again take it FWIW
2021-07-29 13:59:21 +0200 <merijn> sm: There are many people (including myself) who do not think stack is a good tool. Therefore there is no reason for me to argue "why use this over stack?". I didn't ever consider stack an option to begin with
2021-07-29 13:59:29 +0200 <maerwald> sm: well, you're incorrect
2021-07-29 13:59:30 +0200 <sm> I'm just some crackpot on the internet
2021-07-29 14:00:00 +0200 <sshine> oh, you're also a simon, sm.
2021-07-29 14:00:13 +0200 <merijn> The value proposition of ghcup isn't "what does this provide over stack?", the value proposition is "what does ghcup provide over manually downloading bindists/using apt-get?"
2021-07-29 14:00:37 +0200 <sm> merijn: isn't there a simpler, calmer answer ? a newbie friendly one, without the drama ? that's the one I'd like to read
2021-07-29 14:00:46 +0200 <merijn> sm: What drama?
2021-07-29 14:00:57 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-07-29 14:00:59 +0200 <maerwald> the only drama I read is from you right now :p
2021-07-29 14:01:33 +0200 <sm> alright. Thanks for the chat, anyway
2021-07-29 14:01:35 +0200 <merijn> sm: The value proposition of ghcup over downloading bindists is "no need to guess which bindist you need for your obscure distro"
2021-07-29 14:02:11 +0200 <merijn> sm: The value proposition of ghcup over apt-get/Arch's package manager is: ability to manage multiple concurrent versions, get predictable tooling across distros (i.e. avoiding arch's broken packages)
2021-07-29 14:02:12 +0200 <sm> night all
2021-07-29 14:02:40 +0200 <merijn> Which seem perfectly clear goals/value propositions
2021-07-29 14:02:49 +0200 <maerwald> I wonder when there'll be a release where I don't have to get into these kind of discussions. They happen *every* release.
2021-07-29 14:03:12 +0200 <merijn> maerwald: Well, you don't *have* to get into these discussions :)
2021-07-29 14:03:22 +0200 <merijn> You can just leave them unanswered/addressed :p
2021-07-29 14:03:38 +0200 <sshine> or maybe refer back to previous discussion if it's the same?
2021-07-29 14:03:42 +0200 <yushyin> btw. stack annoyingly does not support mixins in stack repl. it was the reason why i used cabal (and ghcup) again
2021-07-29 14:03:46 +0200 <dminuoso> Im going to argue that the majority of stack users use stack for no reason other than they started out with stack and never bothered to consider their choices after the newbie phase.
2021-07-29 14:04:05 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 268 seconds)
2021-07-29 14:04:08 +0200 <dminuoso> Not saying that there's people who genuinely prefer stack, but Im not sure that this is the majority
2021-07-29 14:04:16 +0200 <merijn> dminuoso: And they mostly started with it due to FP Complete's beginner writings asserting it is good :p
2021-07-29 14:04:23 +0200 <dminuoso> Sure
2021-07-29 14:04:34 +0200 <maerwald> there are already some users who use ghcup in conjunction with stack and they prefer that over letting stack manage GHC versions
2021-07-29 14:04:56 +0200 <drewefenwick[m]> dminuoso: And they read a tutorial written before Cabal 3 or even Cabal nix-style builds that said that Stack was better
2021-07-29 14:04:57 +0200 <merijn> maerwald: That just strikes me as weird, tbh
2021-07-29 14:05:08 +0200 <maerwald> merijn: well, you save disk space, sorta
2021-07-29 14:05:16 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-07-29 14:05:17 +0200 <maerwald> merijn: e.g. HLS devs always need cabal and stack
2021-07-29 14:05:21 +0200 <maerwald> they have to test with both
2021-07-29 14:05:26 +0200 <dminuoso> As if disk spave is an issue in 2021. :-)
2021-07-29 14:05:50 +0200 <maerwald> yah, no idea
2021-07-29 14:05:51 +0200 <dminuoso> 1TiB in a laptop is a regular thing already
2021-07-29 14:06:22 +0200 <dminuoso> If I was really short on disk space, I wouldn't be writing Haskell to begin with.
2021-07-29 14:06:35 +0200 <viluon> dminuoso: I'm writing Haskell and have a 256 GB SSD
2021-07-29 14:06:47 +0200drewefenwick[m]Drew[m]
2021-07-29 14:07:18 +0200 <viluon> it is a pain, esp. with multiple local installations of GHC *and* a couple local clones
2021-07-29 14:07:25 +0200 <dminuoso> viluon: Let me guess. Macbook and no interest in throwing away money? :p
2021-07-29 14:07:34 +0200 <viluon> ThinkPad
2021-07-29 14:07:39 +0200 <dminuoso> Curious
2021-07-29 14:07:54 +0200 <dminuoso> Why not buy a 1TiB SSD for a hundred bucks?
2021-07-29 14:08:20 +0200 <maerwald> dminuoso: well, one GHC install is 2GB
2021-07-29 14:08:24 +0200 <viluon> you were right about the "no interest in throwing away money." I also lack the tools for a DIY upgrade though.
2021-07-29 14:08:41 +0200 <dminuoso> Im a thinkpad user.. you dont have a screwdriver?
2021-07-29 14:08:47 +0200 <viluon> nope
2021-07-29 14:09:32 +0200 <viluon> I'd require more than just a screwdriver though, I need a way to transfer my data
2021-07-29 14:10:23 +0200 <dminuoso> Mmm, well you can just buy a USB SATA interface for 5 bucks alongside the SSD. :p
2021-07-29 14:10:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 14:10:38 +0200 <dminuoso> But anyway, not trying to convince you
2021-07-29 14:10:51 +0200 <viluon> I should definitely upgrade, hopefully next month
2021-07-29 14:10:59 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 14:11:17 +0200 <viluon> I suppose I can't just `dd` a mounted partition and expect everything to work though
2021-07-29 14:11:58 +0200 <dminuoso> Well, you can just reboot onto a usb stick, and then `dd` the internal disk to the new SSD connected via the USB SATA interface
2021-07-29 14:12:04 +0200 <dminuoso> Or some such
2021-07-29 14:12:29 +0200 <viluon> true
2021-07-29 14:12:35 +0200 <viluon> maybe I even have a USB stick
2021-07-29 14:13:13 +0200 <viluon> anyway: anecdotal evidence that drive space can still be an issue in 2021
2021-07-29 14:13:14 +0200 <Drew[m]> The whole moving drive procedure gives me data loss anxiety
2021-07-29 14:13:24 +0200 <viluon> Drew[m]: smae
2021-07-29 14:13:26 +0200 <viluon> same*
2021-07-29 14:15:40 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net) (Remote host closed the connection)
2021-07-29 14:16:05 +0200 <Drew[m]> What if I lose all my loose markdown files containing barely started story ideas and incoherent ramblings about technical topics
2021-07-29 14:16:20 +0200 <sshine> dminuoso, "the majority of stack users use stack for no reason other than they started out with stack and never bothered to consider their choices after the newbie phase." -- I suppose my newbie phase has been 9 years now, but I did set up cabal on CI, and every time I have to bump the version constraints, I'm reminded of why I'm apparently still a noob. :P
2021-07-29 14:16:40 +0200 <merijn> sshine: How so?
2021-07-29 14:17:05 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 265 seconds)
2021-07-29 14:17:25 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-07-29 14:18:18 +0200 <sshine> merijn, I'll ping you when it's time to do it again. ;-) I ended up in some weird dependency equation where I couldn't find packages that worked together.
2021-07-29 14:18:42 +0200 <yushyin> viluon: it sure is. you wouldn't believe how often people complain in #latex that they are missing latex package xy and still refuse to just install texlive-full because they don't feel like sacrificing the 4-6GB for it. :D
2021-07-29 14:19:51 +0200 <sshine> dminuoso, or rather: I'm a fan of stackage. and I'm a fan of having a file in my project directory that says which GHC to use, and that that GHC is located somewhere manageable by non-root. that's pretty much why I'm a stack user, I think...
2021-07-29 14:20:35 +0200 <viluon> yushyin: I wish a day will come when package managers and build systems are things of the past and a compilation process only fetches and caches the objects it truly needs, garbage-collecting long unused "dependencies."
2021-07-29 14:20:35 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net)
2021-07-29 14:20:36 +0200 <sshine> dminuoso, I *think* that the moment I put anything besides 'resolver: lts-...' in stack.yaml, I'm sort of screwing myself over. (I learned recently that extra-deps do not propagate.)
2021-07-29 14:20:50 +0200 <merijn> sshine: You can have a file in your directory saying which GHC to use ;)
2021-07-29 14:21:14 +0200 <sshine> merijn, such that 'ghc build' will infer the content of that file?
2021-07-29 14:21:29 +0200 <merijn> sshine: When using ghc manually?
2021-07-29 14:21:34 +0200 <merijn> Then no
2021-07-29 14:21:41 +0200 <sshine> merijn, not necessarily. I'm not bent on calling my wrapper "stack".
2021-07-29 14:22:03 +0200 <merijn> sshine: I mean in the sense that cabal.project already lets you specify arbitrary ghc to use
2021-07-29 14:22:09 +0200 <sshine> merijn, I just think that having a prefix to my build tools is nicer than having something like python's virtualenv where I have to remember to type something before I enter a directory in order to fix PATH.
2021-07-29 14:22:30 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 14:22:54 +0200 <maerwald> One of the reasons I switched from stack to cabal at one workplace was that bumping versions in stack is just incredibly difficult. And nix people might not like this, but: practical software security is mainly just "bump your deps as often as possible".
2021-07-29 14:22:56 +0200 <merijn> sshine: Both cabal and GHC already support multiple parallel installs out-of-the-box (well, of different GHC versions, multiple installs of the same GHC version might give issues, but then you deserve it :p)
2021-07-29 14:23:00 +0200 <sshine> merijn, ah. I don't think I've used cabal.project files. what command would I type to build a project with the GHC specified there?
2021-07-29 14:23:19 +0200 <maerwald> migrating from one major solver to another is just too much work... better update regularly
2021-07-29 14:23:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 14:23:41 +0200 <maerwald> you want to keep the impact low, not get a whole set of surprises when updating the solver
2021-07-29 14:23:49 +0200 <maerwald> you can't do that with stack
2021-07-29 14:23:51 +0200 <merijn> sshine: cabal has a -w flag to specify which compiler to use and the cabal.project file can persist that so you don't have to manually pass it
2021-07-29 14:23:53 +0200 <maerwald> it doesn't support this workflow
2021-07-29 14:24:15 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 14:24:38 +0200 <maerwald> if you don't care about software security, all these things might not matter
2021-07-29 14:24:59 +0200 <merijn> sshine: You can use "cabal configure --with-compiler=path/to/ghc" to persist it
2021-07-29 14:25:03 +0200 <sshine> maerwald, right. I'd rather bump rarely and deal with it then. but I guess there are drawbacks with that. I haven't had to maintain something big in Haskell over a long time. the projects that I've worked on commercially have had few unchanging dependencies and never propagated much back to the ecosystem.
2021-07-29 14:25:24 +0200 <merijn> sshine: Personally I have 4-8 parallel installs of GHC in my user dir (most recent version first in path, so ghc default to that)
2021-07-29 14:25:46 +0200 <maerwald> sshine: I mean... if you use npm and don't update for 6 months
2021-07-29 14:25:46 +0200 <merijn> sshine: Since the bin dirs include version tagged executable for ghc (i.e. ghc-8.2, ghc-9.0, etc)
2021-07-29 14:25:57 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 245 seconds)
2021-07-29 14:26:00 +0200 <maerwald> you're gonna have a thousand high-risk vulnerabilities
2021-07-29 14:26:02 +0200 <merijn> sshine: So I can just use "cabal -w ghc-8.2" to use a non-default GHC version
2021-07-29 14:26:11 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-07-29 14:26:14 +0200 <maerwald> *known* ones
2021-07-29 14:26:23 +0200 <merijn> maerwald: Whether that matters depends on the security model
2021-07-29 14:26:36 +0200 <merijn> maerwald: Like, a commandline tool its gonna matter less than a webserver :p
2021-07-29 14:26:47 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
2021-07-29 14:26:55 +0200 <maerwald> what about a blockchain
2021-07-29 14:26:57 +0200 <sshine> merijn, I'll give the cabal.project approach a go the next time I bump my CIs.
2021-07-29 14:27:20 +0200 <sshine> blockchain that depends on arbitrary npm packages deserve whatever they have coming for them.
2021-07-29 14:27:34 +0200 <merijn> sshine: Note that that doesn't install it, though. So that assumes you have all relevant versions of GHC installed on your system
2021-07-29 14:27:48 +0200 <sshine> merijn, sure, okay.
2021-07-29 14:27:50 +0200 <merijn> sshine: otoh, ghcup can fix that for you ;)
2021-07-29 14:27:54 +0200 <maerwald> sshine: lol, no... I mean blockchain depending on haskell
2021-07-29 14:29:36 +0200 <sshine> merijn, yeah, I mean, I understand that it's sliced-and-diced differently; I suppose the big difference is whether or not to maintain package sets, or not. but I've learned now that this evidently also relates to how frequently one maintains dependencies.
2021-07-29 14:30:11 +0200 <maerwald> You'd think PVP was invented exactly for that purpose... so you can move forward freely without such stuff as a fixed package set and then bump major versions occasionally
2021-07-29 14:30:16 +0200 <maerwald> but in practice, PVP failed
2021-07-29 14:30:32 +0200 <merijn> sshine: I have an RSS feed that notifies me when my direct dependencies release out-of-bounds version, so I just bump and test when that happens
2021-07-29 14:31:03 +0200 <sshine> merijn, ok.
2021-07-29 14:31:59 +0200 <sshine> maerwald, because people don't follow the PVP?
2021-07-29 14:32:02 +0200 <merijn> sshine: https://packdeps.haskellers.com/feed?needle=microlens for example
2021-07-29 14:32:26 +0200 <merijn> you can just take that as RSS feed to keep track
2021-07-29 14:32:29 +0200 <maerwald> sshine: hm... maybe. I'm not sure the idea is a good one to begin with. PVP assumes ppl backport bugfixes and security patches. But most don't.
2021-07-29 14:33:20 +0200 <maerwald> In fact, I believe you can do fine without PVP. If you rewrite your entire API, go write a new package. That's what many ecosystem do. Even if it's called foo2
2021-07-29 14:33:50 +0200 <maerwald> But haskellers tend to constantly experiment with their API
2021-07-29 14:34:06 +0200 <sshine> first-class modules!
2021-07-29 14:34:15 +0200 <sshine> then version can be derived!
2021-07-29 14:34:17 +0200 <merijn> People can get a stable API from me when they pay me >.<
2021-07-29 14:38:09 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-07-29 14:38:26 +0200 <Drew[m]> I mean recently I encountered a package on Hackage that something appeared to require as a dependency (which actually didn't need it), and the package had no dependency bounds and it failed while building because of an ambiguous occurence error...
2021-07-29 14:38:28 +0200 <Drew[m]> I presume there was a particular set of dependencies the package was originally built under. I have no idea how I discover what they are.
2021-07-29 14:38:52 +0200 <merijn> Drew[m]: Brute force and guess work
2021-07-29 14:38:57 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-07-29 14:39:36 +0200 <merijn> Drew[m]: There is a contigent of "never specify upperbounds" people on Hackage (with significant overlap with the "you should use stackage to ensure things work!" people)
2021-07-29 14:39:49 +0200lavaman(~lavaman@98.38.249.169)
2021-07-29 14:40:00 +0200 <Drew[m]> I know
2021-07-29 14:40:08 +0200 <Drew[m]> I've been thinking about it
2021-07-29 14:40:28 +0200 <Drew[m]> I feel like different people are trying to communicate different things through the bounds
2021-07-29 14:40:55 +0200 <merijn> Drew[m]: This is part of the reason cabal has the new ^>= bounds and allow-newer support
2021-07-29 14:41:22 +0200 <Drew[m]> yeah
2021-07-29 14:41:37 +0200 <Drew[m]> Has it fixed the contention though?
2021-07-29 14:42:05 +0200 <merijn> Can't force people to do the right thing, sadly >.>
2021-07-29 14:43:41 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:d518:334f:85c4:8d2d) (Quit: WeeChat 2.8)
2021-07-29 14:43:59 +0200 <yushyin> cargo (rust) has done it right. If you specify "1.2.3" as the version, it is implicitly "^1.2.3" which is similar to our ^>=.
2021-07-29 14:44:17 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-07-29 14:44:55 +0200fendor_(~fendor@178.165.162.84.wireless.dyn.drei.com)
2021-07-29 14:45:10 +0200 <merijn> yushyin: Yeah, but that's benefit of hindsight
2021-07-29 14:45:15 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net)
2021-07-29 14:45:36 +0200 <viluon> merijn: it is, but it's still a way of forcing people to do the right thing
2021-07-29 14:45:53 +0200 <merijn> viluon: Maybe in cabal-version 4.0 we can make that the new default :p
2021-07-29 14:46:04 +0200 <merijn> And then 20 years from now we can rely on it :p
2021-07-29 14:46:09 +0200 <yushyin> :D
2021-07-29 14:46:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 14:46:43 +0200 <merijn> At least we have our forwards-compat story sorted in cabal files now
2021-07-29 14:46:44 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 14:46:55 +0200 <merijn> That's more than many other tools can say :p
2021-07-29 14:47:22 +0200fendor(~fendor@178.165.161.179.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
2021-07-29 14:47:25 +0200 <viluon> the Unison language does it even better in my opinion, content-addressable code means that the issue of naming is essentially trivial. The issue of updating, i.e. replacing one definition with another, persists, but there's no ad-hoc versioning scheme / package manager / build system you have to rely on in order to specify what your code depends on.
2021-07-29 14:53:55 +0200Obo(~roberto@94.191.137.235.mobile.tre.se)
2021-07-29 14:56:08 +0200oxide(~lambda@user/oxide)
2021-07-29 14:56:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 14:57:06 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 14:59:05 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-29 15:00:17 +0200chris_(~chris@81.96.113.213)
2021-07-29 15:00:20 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-07-29 15:00:40 +0200fendor_fendor
2021-07-29 15:01:05 +0200alx741(~alx741@181.196.69.4)
2021-07-29 15:02:48 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-07-29 15:03:04 +0200 <maerwald> what does "1.2.3" being implicitly "^1.2.3" get you when the dependency doesn't actually follow semver
2021-07-29 15:03:33 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-07-29 15:05:29 +0200Sgeo(~Sgeo@user/sgeo)
2021-07-29 15:09:04 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
2021-07-29 15:09:35 +0200jolly(~jolly@208.180.97.158) (Quit: Connection closed)
2021-07-29 15:14:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 15:14:28 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 15:15:15 +0200Null_A(~null_a@2601:645:8700:2290:44f7:81a6:341:7abe)
2021-07-29 15:16:42 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 15:19:52 +0200Null_A(~null_a@2601:645:8700:2290:44f7:81a6:341:7abe) (Ping timeout: 256 seconds)
2021-07-29 15:20:13 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-29 15:21:18 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-07-29 15:21:22 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
2021-07-29 15:21:33 +0200img(~img@user/img)
2021-07-29 15:22:46 +0200 <zzz> i just found out there's a function called zipLazy which is the same as zip "but lazy on the second list". isn't zip lazy by default?
2021-07-29 15:23:27 +0200 <Lycurgus> extra
2021-07-29 15:24:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 15:24:22 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 15:25:35 +0200 <zzz> it seems to me that it'a not lazy, it's irrefutable on the pattern match for the second list, throwing an error if the first list's length is greater
2021-07-29 15:25:59 +0200 <zzz> how is this useful?
2021-07-29 15:26:50 +0200 <boxscape> zzz: FWIW base docs say `zip is right-lazy: zip [] _|_ = []
2021-07-29 15:26:51 +0200 <boxscape> which sounds very much like the description of zipLazy
2021-07-29 15:27:01 +0200 <boxscape> I inserted the / accidentally
2021-07-29 15:27:02 +0200 <boxscape> wait
2021-07-29 15:27:11 +0200 <boxscape> I don't know if matrix is displaying this correctly
2021-07-29 15:27:23 +0200 <boxscape> it's supposed to be `zip [] undefined = []`, basically
2021-07-29 15:27:54 +0200 <zzz> so my question is, how is zipLazy different from zip in a useful way?
2021-07-29 15:28:37 +0200 <boxscape> (Oh.. matrix displays | as a | in italic, not a slash, I see)
2021-07-29 15:28:56 +0200 <boxscape> s/matrix/element
2021-07-29 15:29:21 +0200 <Drew[m]> zzz: Say you have two lists and the second one is infinite. With zip you have to somewhat evaluate the second list to get the first element of the zipped list. I believe with this zipLazy you could access all the first elements without evaluating any of the second list
2021-07-29 15:30:35 +0200 <zzz> > map fst $ zip [0..7] [9..]
2021-07-29 15:30:37 +0200 <lambdabot> [0,1,2,3,4,5,6,7]
2021-07-29 15:31:19 +0200 <Drew[m]> I "first element" but I meant "fst value of the first element"
2021-07-29 15:31:33 +0200 <Drew[m]> I said*
2021-07-29 15:31:36 +0200 <zzz> > map fst $ zip [0..7] (undefined : [9..])
2021-07-29 15:31:37 +0200 <lambdabot> [0,1,2,3,4,5,6,7]
2021-07-29 15:31:57 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 15:32:14 +0200 <Drew[m]> That could save some work in some circumstances
2021-07-29 15:32:37 +0200 <zzz> maybe i'm not understanding your point, but zip seems to work just fine for that
2021-07-29 15:33:00 +0200peterhil(~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
2021-07-29 15:33:16 +0200 <Drew[m]> Probably because I'm wrong
2021-07-29 15:33:20 +0200Obo(~roberto@94.191.137.235.mobile.tre.se) (Ping timeout: 252 seconds)
2021-07-29 15:34:39 +0200 <Drew[m]> Oh wait
2021-07-29 15:34:48 +0200 <Drew[m]> Your example still requires evaluating some of the second list
2021-07-29 15:34:57 +0200 <Drew[m]> Namely the `:` constructor
2021-07-29 15:35:20 +0200 <zzz> yes
2021-07-29 15:35:31 +0200 <zzz> when would it be useful not to?
2021-07-29 15:36:09 +0200 <zzz> > map fst $ zip [0..7] undefined
2021-07-29 15:36:11 +0200 <lambdabot> *Exception: Prelude.undefined
2021-07-29 15:36:13 +0200 <zzz> > map fst $ zipLazy [0..7] undefined
2021-07-29 15:36:15 +0200 <lambdabot> error:
2021-07-29 15:36:15 +0200 <lambdabot> Variable not in scope: zipLazy :: [a0] -> t0 -> [(b, b0)]
2021-07-29 15:36:20 +0200 <zzz> > map fst $ Util.zipLazy [0..7] undefined
2021-07-29 15:36:21 +0200 <lambdabot> error:
2021-07-29 15:36:21 +0200 <lambdabot> Not in scope: ‘Util.zipLazy’
2021-07-29 15:36:22 +0200 <lambdabot> No module named ‘Util’ is imported.
2021-07-29 15:36:30 +0200 <zzz> how do i do this?
2021-07-29 15:37:04 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 15:37:26 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-07-29 15:38:11 +0200 <zzz> % map fst $ Util.zipLazy [0..7] undefined
2021-07-29 15:38:11 +0200 <yahb> zzz: ; <interactive>:27:11: error:; Not in scope: `Util.zipLazy'; No module named `Util' is imported.
2021-07-29 15:38:19 +0200 <zzz> oh well
2021-07-29 15:38:43 +0200qbt(~edun@user/edun) (Ping timeout: 258 seconds)
2021-07-29 15:39:01 +0200 <Drew[m]> zzz: So I'm not sure I've ever encountered such a situation, but imagine a hypothetical situation where you have a list defined by a computation that must do a lot of work just to determine whether the list is empty or not, but for whatever reason you know ahead of time that not only will the list not be empty, it will be longer than the first list you give to `zipLazy`. Under this situation you could avoid having to do that work while still
2021-07-29 15:39:02 +0200 <Drew[m]> being able to extract the fst values of the zipped list
2021-07-29 15:39:54 +0200 <zzz> the point is zipLazy works here but I can't imagine a situation where that's useful
2021-07-29 15:40:02 +0200 <zzz> Drew[m]: zip works fine for that
2021-07-29 15:40:24 +0200Toast52(~Toast52@151.192.167.120)
2021-07-29 15:40:57 +0200 <zzz> oh i see now
2021-07-29 15:41:05 +0200 <Drew[m]> You can't access any values of the zipped list with `zip` without first case matching both lists to make sure neither is empty though, right?
2021-07-29 15:41:20 +0200 <zzz> yes i see what you mean
2021-07-29 15:41:22 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
2021-07-29 15:42:30 +0200 <zzz> that is a very weird hypothetical though. if the list is empty you'll end up with an error as soon as you try to evaluate it
2021-07-29 15:43:00 +0200 <zzz> and why would you zip something you have no intention of evaluating?
2021-07-29 15:43:24 +0200 <zzz> but i see now
2021-07-29 15:43:30 +0200 <Drew[m]> I'd love to hear what the situation was that made someone put it in the `ghc` package
2021-07-29 15:43:57 +0200 <Drew[m]> I guess that implies that it's used in GHC somewhere
2021-07-29 15:44:46 +0200 <zzz> there's also a zipWithLazy
2021-07-29 15:44:49 +0200 <zzz> which is scary
2021-07-29 15:46:17 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-07-29 15:46:48 +0200hendursaga(~weechat@user/hendursaga)
2021-07-29 15:48:39 +0200 <Toast52> actually i got a question
2021-07-29 15:48:57 +0200 <Toast52> often theres some helper function that I realise is in the GHC library
2021-07-29 15:49:34 +0200 <Toast52> e.g. IIRC theres applyN and some others
2021-07-29 15:49:45 +0200Brianmancer(~Neuromanc@user/briandamag)
2021-07-29 15:50:24 +0200 <Toast52> if I import the GHC library does that inflate my binary with the entire size of GHC
2021-07-29 15:50:30 +0200 <geekosaur> yes
2021-07-29 15:55:42 +0200 <Toast52> right. I figured. thanks a lot!
2021-07-29 15:56:18 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-29 15:57:16 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-07-29 15:58:49 +0200zelmac(~zelmac@host86-188-117-120.range86-188.btcentralplus.com)
2021-07-29 16:00:33 +0200oni123(~oni123@cpe-70-121-244-14.neb.res.rr.com)
2021-07-29 16:03:24 +0200Obo(~roberto@94.191.137.235.mobile.tre.se)
2021-07-29 16:03:38 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-07-29 16:05:55 +0200acidjnk_new(~acidjnk@p200300d0c72b95075c335839612ea8d0.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-07-29 16:06:31 +0200kuribas(~user@ptr-25vy0i6v77tuc30f7h8.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-07-29 16:10:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 16:10:24 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 16:10:40 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-29 16:11:17 +0200chomwitt(~chomwitt@athedsl-32041.home.otenet.gr)
2021-07-29 16:11:52 +0200chris_(~chris@81.96.113.213)
2021-07-29 16:12:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-29 16:13:49 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-07-29 16:14:01 +0200oni123(~oni123@cpe-70-121-244-14.neb.res.rr.com) (Quit: Client closed)
2021-07-29 16:14:48 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-07-29 16:14:56 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 16:14:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 16:15:24 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 16:15:33 +0200zebrag(~chris@user/zebrag)
2021-07-29 16:15:50 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-29 16:20:32 +0200son0p(~ff@181.136.122.143)
2021-07-29 16:20:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 16:21:17 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 16:23:37 +0200jippiedoe(~david@84-84-122-154.fixed.kpn.net)
2021-07-29 16:24:08 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-07-29 16:25:07 +0200favonia(~favonia@user/favonia)
2021-07-29 16:25:13 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-29 16:26:23 +0200chris_(~chris@81.96.113.213)
2021-07-29 16:26:37 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-07-29 16:27:36 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-29 16:28:20 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-29 16:30:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 16:31:45 +0200motle(~motle@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net)
2021-07-29 16:31:53 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 16:32:07 +0200 <motle> hi, im trying to get some graphics applications running in windows
2021-07-29 16:32:35 +0200 <motle> iv been trying to build gtk or opengl (inc freeglut)
2021-07-29 16:32:42 +0200jippiedoe(~david@84-84-122-154.fixed.kpn.net) (Remote host closed the connection)
2021-07-29 16:32:49 +0200 <motle> using msys, or ubuntu on wsl
2021-07-29 16:33:22 +0200 <motle> i found a common dependency with lesah, which wont build either for the same reason
2021-07-29 16:33:40 +0200 <motle> it fails at; pacman -S mingw-w64-x86_64-webkitgtk3
2021-07-29 16:34:56 +0200 <motle> this apparently according to some thread i cant find anymore "no longer works, and has been depreciated"
2021-07-29 16:35:13 +0200 <motle> this seems like it affects most of the haskell graphics ecosystem on windows
2021-07-29 16:35:39 +0200 <motle> does anyone have a currently working windows setup for GUIs or graphics?
2021-07-29 16:35:58 +0200 <motle> leksah*
2021-07-29 16:36:45 +0200 <motle> anyway, that depreciated library is from msys - which was the windows way to build the graphics library dependencies like with unix
2021-07-29 16:37:05 +0200 <motle> not sure whats up with wsl, couldnt fathom the x-forwarding i think...
2021-07-29 16:37:32 +0200 <motle> i think this means cairo is broken on windows too, as well as gloss
2021-07-29 16:37:40 +0200sedeki(~textual@user/sedeki)
2021-07-29 16:38:02 +0200 <motle> though mostly this problem is encountered when trying to build gtk
2021-07-29 16:38:06 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-07-29 16:38:06 +0200chris_(~chris@81.96.113.213)
2021-07-29 16:38:16 +0200 <motle> which on windows i think is totally dead
2021-07-29 16:39:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 16:39:30 +0200 <motle> cant get any of the solutions such as freeglut to work either - probably if anyone has up to date installation instructions for this it might work - considering building from source, but with just putting the dlls it seems to break
2021-07-29 16:40:18 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 16:42:34 +0200chris_(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2021-07-29 16:43:35 +0200 <Toast52> does msys link with window's opengl32.dll
2021-07-29 16:43:53 +0200 <Toast52> or does it come with its own set of shared libs
2021-07-29 16:49:03 +0200 <Toast52> I believe ghc on windows is able to locate shared libs on PATH which includes %systemroot%\system32 (where opengl32.dll is located)
2021-07-29 16:50:24 +0200 <kritzefitz> motle, a few week ago I was able to build GTK3 applications based on gi-gtk after installing mingw-w64-x86_64-{pkgconf,gtk3,gobject-introspection}.
2021-07-29 16:50:59 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 16:51:52 +0200sedeki(~textual@user/sedeki) (Quit: Textual IRC Client: www.textualapp.com)
2021-07-29 16:52:03 +0200 <motle> yeah, gobject is what led me to leksah, i thought it would install that for me, since i couldnt get the install to supress the error
2021-07-29 16:52:23 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-29 16:54:24 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 16:55:07 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 245 seconds)
2021-07-29 16:57:56 +0200zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
2021-07-29 16:58:40 +0200 <zava> writing me a haskell exam tmrw. fuckin monads and some of the types make me head hurt
2021-07-29 16:58:41 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:9d14:637c:254d:7940)
2021-07-29 16:58:59 +0200 <motle> :t (>>)
2021-07-29 16:59:00 +0200 <lambdabot> Monad m => m a -> m b -> m b
2021-07-29 16:59:04 +0200 <motle> :t (>>=)
2021-07-29 16:59:05 +0200 <lambdabot> Monad m => m a -> (a -> m b) -> m b
2021-07-29 16:59:14 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-29 16:59:33 +0200 <zava> which is also used in parsing
2021-07-29 16:59:50 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 268 seconds)
2021-07-29 17:00:08 +0200 <zava> I really have no reason to complain. I'll pass
2021-07-29 17:00:22 +0200 <zava> those are the only things that I struggle with
2021-07-29 17:01:06 +0200 <zava> and when I write a function with where and 4 lines of nested helperfunctions and my mate achieves the same with a 2 liner :)
2021-07-29 17:01:16 +0200michalz(~michalz@185.246.204.62) (Remote host closed the connection)
2021-07-29 17:02:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 17:02:51 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 17:02:55 +0200 <kritzefitz> motle, I don't think I understand your problem. Can you be more specific what GUI toolkit you were trying to build? You say you couldn't use GTK, because you couldn't install <mingw-prefix>-webkitgtk3, but GTK itself doesn't actually need webkit.
2021-07-29 17:03:18 +0200 <zava> \o
2021-07-29 17:03:21 +0200zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.0)
2021-07-29 17:05:18 +0200sweater2(~sweater@206.81.18.26) (Quit: WeeChat 2.8)
2021-07-29 17:05:38 +0200 <dsal> :t (*>)
2021-07-29 17:05:39 +0200 <lambdabot> Applicative f => f a -> f b -> f b
2021-07-29 17:06:04 +0200 <dsal> I should get in the habit of using that more.
2021-07-29 17:06:35 +0200 <dminuoso> Also cute:
2021-07-29 17:06:41 +0200 <dminuoso> % :t (<$)
2021-07-29 17:06:41 +0200 <yahb> dminuoso: Functor f => a -> f b -> f a
2021-07-29 17:06:51 +0200 <dminuoso> Really grown to like that one.
2021-07-29 17:08:36 +0200 <dsal> Yeah. I use these things in parsers, but outside of parsers, I never think to use them.
2021-07-29 17:09:24 +0200 <dminuoso> `() <$` I find more comfortable than `void` which needs an extra import
2021-07-29 17:09:41 +0200 <dminuoso> Also in some custom monads it can be handy
2021-07-29 17:10:29 +0200 <dminuoso> One of our projects has a large compilation monad with various failures (that get promoted to fatal at certain stages). So I regularly do something like: True <$ configErr "this and that failed"
2021-07-29 17:10:46 +0200 <dminuoso> Allowing me to produce some temporary result while setting an eventually fatal error
2021-07-29 17:11:04 +0200 <motle> krizefitz: i was trying to install gobject which leksah had a .bash file to do, but *it* failed because it needed webkitgtk3
2021-07-29 17:12:09 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 17:12:15 +0200peterhil(~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Ping timeout: 258 seconds)
2021-07-29 17:12:23 +0200averell(~averell@user/averell) (Quit: .)
2021-07-29 17:13:26 +0200 <dsal> Oh, looks like I use `$>` a lot, but not `<$` hmm...
2021-07-29 17:14:35 +0200 <dminuoso> Guess it depends a bit on the emphasis.
2021-07-29 17:15:02 +0200 <dminuoso> <$ on longer lines immediately shows you the result ahead of the line, with $> I feel like I run out of mental stack space by the time I get to the other side
2021-07-29 17:16:16 +0200 <Drew[m]> motle: From my not very clear understanding of what gobject is, I doubt it requires webkitgtk
2021-07-29 17:16:28 +0200 <lechner> Hi, with JSON.eitherDecode on known JSON data I get: "Error in $: Failed reading: Cannot decode input: Data.Text.Internal.Encoding.decodeUtf8: Invalid UTF-8 stream. Expecting object value at ',' " What does that mean, please? Is that a JSON problem (missing object value) or a UTF-8 encoding problem? Thanks!
2021-07-29 17:16:32 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
2021-07-29 17:16:57 +0200 <lechner> or decoding problem, to be more exact
2021-07-29 17:17:49 +0200peterhil(~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi)
2021-07-29 17:17:51 +0200 <dminuoso> I suspect there's some escape character issue
2021-07-29 17:18:02 +0200 <lechner> it happens on all files, though
2021-07-29 17:18:13 +0200 <geekosaur> Drew[m],motle: leksah uses webkitgtk, so it installs it at the same time as gtk. that does not mean gtk itself requires webkit
2021-07-29 17:18:54 +0200 <motle> sure
2021-07-29 17:19:15 +0200 <Drew[m]> Right, and from my research trying to get reflex-dom to work, webkitgtk3 didn't seem like a thing that was available on windows
2021-07-29 17:19:36 +0200 <motle> but i did pacman -S ... gobject-introspection, and it still throws an error
2021-07-29 17:19:54 +0200 <motle> i was trying to get a leksah build to get that to work for me
2021-07-29 17:19:58 +0200 <kritzefitz> motle, what error does it throw?
2021-07-29 17:20:00 +0200Obo(~roberto@94.191.137.235.mobile.tre.se) (Ping timeout: 256 seconds)
2021-07-29 17:20:23 +0200 <motle> but your right, the depreciated dependency which kills leksah shouldnt actually stop the gtk build, i shall try again
2021-07-29 17:21:34 +0200 <motle> the package gobject version something something required but not found
2021-07-29 17:22:04 +0200 <motle> from stack run on a project with gi-gtk dependencies in the stack yaml
2021-07-29 17:23:31 +0200 <kritzefitz> Stack does not install C dependencies for you.
2021-07-29 17:23:46 +0200 <kritzefitz> You need to install the gobject C library before running stack
2021-07-29 17:23:58 +0200 <Drew[m]> Yeah but it sounds like motle has tried installing that
2021-07-29 17:24:16 +0200 <kritzefitz> Yes, but they never told us, why it didn't work.
2021-07-29 17:24:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 17:25:06 +0200 <Drew[m]> Well I think what they said was ambiguous. Was pacman throwing an error when they tried to install gobject-introspection, or did it succeed and stack threw an error when they tried to use it
2021-07-29 17:25:07 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 17:25:55 +0200 <kritzefitz> motle, maybe you can clarify? Did you run `pacman -S mingw-w64-x86_64-object-introspection`? Did that work? If not, what was the error message?
2021-07-29 17:25:57 +0200 <Drew[m]> Clarification would be handy!
2021-07-29 17:26:48 +0200peterhil(~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi) (Ping timeout: 256 seconds)
2021-07-29 17:27:53 +0200 <motle> i think the gobject-introspection install "succeded" but didnt make the lib available, maybe PATH
2021-07-29 17:28:53 +0200 <motle> error: target not found: mingw-w64-x86_64-object-introspection
2021-07-29 17:28:57 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-07-29 17:29:10 +0200 <kritzefitz> You're missing a `g` in front of `object`.
2021-07-29 17:29:31 +0200 <motle> derp, just copy pasted it from the comment
2021-07-29 17:29:50 +0200 <kritzefitz> OOps
2021-07-29 17:30:22 +0200 <motle> hmm, might be building ok now, have to wait a sec
2021-07-29 17:30:54 +0200pe200012_(~pe200012@218.107.49.28) (Ping timeout: 272 seconds)
2021-07-29 17:32:42 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 17:32:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 17:33:57 +0200zelmac(~zelmac@host86-188-117-120.range86-188.btcentralplus.com) (Remote host closed the connection)
2021-07-29 17:35:44 +0200danielam(~daniel@cpe-67-247-21-112.nyc.res.rr.com)
2021-07-29 17:37:11 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
2021-07-29 17:38:07 +0200agua(~agua@2804:18:40:39f8:1:0:64c7:dff1)
2021-07-29 17:39:02 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 17:39:36 +0200danielam(~daniel@cpe-67-247-21-112.nyc.res.rr.com) (Quit: leaving)
2021-07-29 17:39:44 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 252 seconds)
2021-07-29 17:40:07 +0200pesada(~agua@2804:14c:8793:8e2f:3944:8017:7f63:8e28) (Ping timeout: 245 seconds)
2021-07-29 17:42:36 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 17:43:22 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-07-29 17:43:49 +0200yilin1(~yilin@2601:400:c100:6330:6b23:fdc1:34d0:ae01)
2021-07-29 17:44:12 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 272 seconds)
2021-07-29 17:44:33 +0200yilin1(~yilin@2601:400:c100:6330:6b23:fdc1:34d0:ae01) (Client Quit)
2021-07-29 17:46:21 +0200motle(~motle@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net) (Quit: Connection closed)
2021-07-29 17:46:43 +0200 <Drew[m]> if you're going through gi-gtk, I wouldn't trust the windows instructions there to be up to date and good practice
2021-07-29 17:46:58 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-07-29 17:47:38 +0200pesada(~agua@2804:14c:8793:8e2f:3944:8017:7f63:8e28)
2021-07-29 17:50:47 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-07-29 17:51:23 +0200agua(~agua@2804:18:40:39f8:1:0:64c7:dff1) (Ping timeout: 252 seconds)
2021-07-29 17:51:33 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:9d14:637c:254d:7940) (Quit: WeeChat 2.8)
2021-07-29 17:53:07 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 244 seconds)
2021-07-29 17:53:23 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-07-29 17:54:43 +0200motle(~motle@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net)
2021-07-29 17:54:53 +0200 <motle> now it complains about; libcairo-gobject2
2021-07-29 17:55:09 +0200rmoe(~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) (Ping timeout: 276 seconds)
2021-07-29 17:55:10 +0200 <motle> so i guess that fixed the original gobject issue
2021-07-29 17:55:38 +0200 <motle> ie pacman -S mingw-w64-x86_64-gobject-introspection
2021-07-29 17:55:39 +0200 <motle> worked
2021-07-29 17:55:43 +0200 <kritzefitz> motle, did you also `pacman -S mingw-w32-x86_64-gtk3`?
2021-07-29 17:56:04 +0200 <kritzefitz> That should pull in the rest of the dependencies you need for gi-gtk.
2021-07-29 17:56:28 +0200 <kritzefitz> (assuming you're using gt-gtk version 3.x and not 4.x)
2021-07-29 17:56:31 +0200 <motle> error: target not found: mingw-w32-x86_64-gtk3
2021-07-29 17:56:54 +0200 <kritzefitz> err, mingw-w64-x86_64-gtk3
2021-07-29 17:57:08 +0200rmoe(~rmoe@c-71-236-207-44.hsd1.wa.comcast.net)
2021-07-29 17:57:27 +0200 <motle> yah, that works
2021-07-29 17:58:32 +0200 <motle> ahh, iv just got to get used to putting that prefix on the dependencies normally listed because of msys
2021-07-29 17:59:22 +0200 <motle> still complains about 'libcairo-gobject-2.dll though
2021-07-29 17:59:32 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-07-29 18:01:06 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-07-29 18:01:10 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-07-29 18:01:29 +0200 <kritzefitz> That sounds like an issue with PATH
2021-07-29 18:03:30 +0200 <kritzefitz> IIRC libcairo-gobject-2.dll should be in you msys environment inside /mingw64/bin or similar. Can you find it there?
2021-07-29 18:03:49 +0200 <motle> i thought that before when it couldnt resolve gobject after gobject-introspect installed
2021-07-29 18:04:41 +0200 <kritzefitz> Yeah, but that was a different error message. When stack complains about not finding a library, its usually because pkg-config can't even find the definition for the file.
2021-07-29 18:05:10 +0200 <kritzefitz> If you get complaints about a .dll, pkg-config probably found the definition, but now the linker can't find the .dll one the PATH.
2021-07-29 18:06:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 18:06:12 +0200 <motle> the only dlls in the bin dir at ../.. in a msys prompt are prefixed by msys-
2021-07-29 18:06:22 +0200 <motle> not the right ones
2021-07-29 18:07:04 +0200 <kritzefitz> Are you sure ../.. is the same as /mingw64?
2021-07-29 18:07:09 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-07-29 18:07:09 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 18:07:30 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 276 seconds)
2021-07-29 18:08:04 +0200 <motle> C:\msys64\mingw64\bin has the gtk dll
2021-07-29 18:08:49 +0200 <kritzefitz> That sounds about right, but...
2021-07-29 18:08:59 +0200 <motle> aha, and the libcairo-gobject-2.dll
2021-07-29 18:09:00 +0200 <kritzefitz> you're using a system installation of msys?
2021-07-29 18:09:18 +0200 <motle> yeah, i installed stack within it not the other way round
2021-07-29 18:09:20 +0200 <motle> using curl
2021-07-29 18:09:53 +0200 <kritzefitz> Are you sure stack didn't install its own msys environment? It's not exactly straightforward to keep it from doing that.
2021-07-29 18:11:22 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 268 seconds)
2021-07-29 18:11:41 +0200 <motle> im not sure if its just the windows installer that does that?
2021-07-29 18:11:56 +0200 <motle> the curl option being for the unix environemnt
2021-07-29 18:12:02 +0200 <kritzefitz> Nah, `stack setup` does it much like it does with GHC.
2021-07-29 18:12:32 +0200 <motle> oh yeah fair, probably it has some msys dir somewhere like ghc
2021-07-29 18:12:49 +0200 <motle> but if those are like sandboxed things...
2021-07-29 18:12:54 +0200azeem(~azeem@176.201.11.200)
2021-07-29 18:13:04 +0200 <kritzefitz> You can check the output of `stack path`. If the items of bin-path point to some obscure location, it's probably using the wrong msys environment.
2021-07-29 18:13:18 +0200 <maerwald[m]> https://docs.haskellstack.org/en/stable/yaml_configuration/#skip-msys
2021-07-29 18:13:34 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net) (Quit: Client closed)
2021-07-29 18:13:59 +0200pavonia(~user@user/siracusa)
2021-07-29 18:14:10 +0200 <motle> idk i added that directory and started a new msys session and it seems like its building ok now
2021-07-29 18:14:20 +0200 <motle> to the PATH
2021-07-29 18:14:44 +0200 <motle> cant tell if its some intermittent thing like to do with starting the new session
2021-07-29 18:14:48 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-07-29 18:14:57 +0200 <motle> something like that could be quite confusing!
2021-07-29 18:15:25 +0200 <motle> or running stack several times in a row changing something, idk
2021-07-29 18:15:36 +0200 <motle> seems to be working now anyhow
2021-07-29 18:15:38 +0200 <kritzefitz> If C:\msys64\mingw64\bin is on your path when you start stack, it will probably not remove it, so everything should still work.
2021-07-29 18:16:04 +0200 <Drew[m]> What's fun is that installing msys yourself, installing it through chocolatey, installing it through chocolatey's haskell-dev package, installing it through GHCup and Stack installing it all put things in different locations and some of those methods don't clean up after themselves reliably in my experience.
2021-07-29 18:16:59 +0200 <kritzefitz> But at least in the long run you should consider setting skip-msys and removing stack's installation of msys. Its great for your own sanity, as long as you remember to only call stack from the correct MSYS environment.
2021-07-29 18:17:55 +0200 <motle> yeah, i keep refreshing windows too
2021-07-29 18:18:14 +0200 <kritzefitz> Also: you have to remember to start it from the correct MSYS shell. Last time I installed MSYS, it installed three different “entry points“ (“MSYS2”, “MinGW32”, “MinGW64” IIRC) and each of them have different things on the PATH.
2021-07-29 18:18:17 +0200 <maerwald[m]> Drew: GHCup should clean up properly after itself
2021-07-29 18:18:42 +0200 <maerwald[m]> You don't need to start it from an msys2 shell
2021-07-29 18:18:42 +0200 <kritzefitz> And by default all the mingw-w64 stuff is only on PATH if you start MinGW64.
2021-07-29 18:19:09 +0200ikex1(~ash@user/ikex)
2021-07-29 18:19:26 +0200ikex(~ash@user/ikex) (Ping timeout: 252 seconds)
2021-07-29 18:19:28 +0200 <maerwald[m]> You need these settings: skip-msys, extra-path, extra-include-dirs, extra-lib-dirs
2021-07-29 18:19:46 +0200 <kritzefitz> Yeah, that should work too.
2021-07-29 18:19:50 +0200ikex1ikex
2021-07-29 18:20:01 +0200 <maerwald[m]> Then it works from powershell
2021-07-29 18:20:08 +0200 <maerwald[m]> Adjusting PATH has odd side effects on windows
2021-07-29 18:20:26 +0200 <motle> now it just dies without giving any reason
2021-07-29 18:20:36 +0200 <kritzefitz> who dies? stack?
2021-07-29 18:20:43 +0200 <motle> yeah
2021-07-29 18:21:01 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-07-29 18:21:05 +0200 <kritzefitz> What's the exit code? Maybe it's just finished?
2021-07-29 18:21:13 +0200 <motle> Process exited with code: ExitFailure (-1073741515)
2021-07-29 18:21:21 +0200 <kritzefitz> Huh.
2021-07-29 18:21:39 +0200 <maerwald[m]> Try cabal, it doesn't install its own msys2
2021-07-29 18:21:41 +0200 <kritzefitz> Maybe try re-running? Sometimes the actual error message is buried inside other messages.
2021-07-29 18:21:50 +0200hexfive(~eric@50.35.83.177)
2021-07-29 18:21:56 +0200 <motle> idk how best to get cabal on a clean msys install
2021-07-29 18:22:05 +0200hexfive(~eric@50.35.83.177) (Client Quit)
2021-07-29 18:22:08 +0200Toast52(~Toast52@151.192.167.120) (Quit: Leaving)
2021-07-29 18:23:01 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-29 18:23:32 +0200 <kritzefitz> motle, you might need to set XDG_DATA_DIRS=/mingw64/share in the environment. But if that's the case there should be an error message hidden somewhere.
2021-07-29 18:24:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 18:24:12 +0200 <kritzefitz> e.g. `XDG_DATA_DIRS=/mingw64/share stack ...`
2021-07-29 18:24:59 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 18:25:08 +0200 <maerwald[m]> motle: can install cabal with ghcup
2021-07-29 18:25:13 +0200 <zzz> wait, importing a module inflates the binary with the full module? seems trivial to statically check what's not used and strip it away, no?
2021-07-29 18:25:32 +0200 <maerwald[m]> It asks for pre-existent msys2
2021-07-29 18:27:03 +0200 <maerwald[m]> Don't run stuff from within msys2
2021-07-29 18:27:52 +0200superstar64(~superstar@2600:1700:ed80:50a0:d250:99ff:fe2c:53c4)
2021-07-29 18:28:25 +0200 <lechner> Hi, does a ! strictness indicator in a JSON data type definition make the parsing more strict or more relaxed, please?
2021-07-29 18:28:26 +0200hgolden(~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Quit: Konversation terminated!)
2021-07-29 18:28:32 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-07-29 18:29:07 +0200 <motle> lechner: it ensures its parsed at all
2021-07-29 18:29:26 +0200 <lechner> it is not without?
2021-07-29 18:29:42 +0200 <motle> not if by lazyness its never called, thats what stricness is about
2021-07-29 18:29:47 +0200 <motle> calls it there and then
2021-07-29 18:29:53 +0200 <motle> instead of deffering it to call by use
2021-07-29 18:30:44 +0200 <lechner> where does it go in an array please? [! Constituent] or ![ Constituent ] ?
2021-07-29 18:30:44 +0200 <kritzefitz> motle, are you sure? Because if we're talking about parsing with aeson, it should parse everything strictly to be able to report failures.
2021-07-29 18:30:50 +0200mattil(~mattilinn@87-92-17-82.bb.dnainternet.fi)
2021-07-29 18:31:03 +0200 <motle> lechner: maybe its only used in pattern bindings?
2021-07-29 18:31:21 +0200 <motle> im not sure no
2021-07-29 18:31:30 +0200 <superstar64> i'm trying to write a traversal for a higher kinded typed. is this possible? https://gist.github.com/Superstar64/d04cce9dd60f931a18868a648ff5b22a
2021-07-29 18:31:32 +0200hgolden(~hgolden2@cpe-172-114-84-61.socal.res.rr.com)
2021-07-29 18:31:52 +0200 <superstar64> `g λ` doesn't work because e doesn't match with e'
2021-07-29 18:31:57 +0200 <kritzefitz> lechner, ![Foo] works, but probably does not what you want, because it only evaluates until the first `:`.
2021-07-29 18:32:09 +0200 <kritzefitz> lechner, [!Foo] is not valid syntax.
2021-07-29 18:32:19 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-07-29 18:32:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 18:32:48 +0200 <kritzefitz> If you want strict lists, you need a type that is explicitly designed to be a strict list or possibly define it yourself.
2021-07-29 18:32:58 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 18:33:03 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-29 18:33:17 +0200 <kritzefitz> But I *don't* think strictness annotations should have any effect on JSON parsing.
2021-07-29 18:33:27 +0200 <kritzefitz> So it probably doesn't matter.
2021-07-29 18:33:39 +0200 <lechner> so i have known valid JSON. migrating to Haskell, my definitions are probably off but the error message is not great
2021-07-29 18:33:41 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 18:33:50 +0200 <motle> yeah, idk was thinking lazy IO if it was escapable and needed prompt evaluation or something
2021-07-29 18:34:14 +0200 <lechner> i saw a note one time in a haskell project asking all contributors to use !
2021-07-29 18:34:32 +0200 <motle> you should have a good reason
2021-07-29 18:34:39 +0200 <motle> never normally needed
2021-07-29 18:35:27 +0200 <motle> really rare times where otherwise something gets dropped in a monadic sequence needing ! cat remember
2021-07-29 18:36:06 +0200 <motle> but like, only encountering actual use cases of ! rarely, so not really seeing why anyone would emphasize its importance
2021-07-29 18:36:32 +0200 <lechner> unfortunately i cannot find it anymore
2021-07-29 18:36:42 +0200 <kritzefitz> There is another case with libraries such as Data.Binary, where the decoding function doesn't check for errors in favour of more laziness.
2021-07-29 18:36:56 +0200 <motle> saw some thing about performant parallel from some london bank in haskell, strict on the spine lazy on the branches i think
2021-07-29 18:37:33 +0200 <kritzefitz> In that case strictness annotations actually make a big difference, because an all-strict structure will throw errors earlier.
2021-07-29 18:37:42 +0200KUrare(~KUrare@user/kurare)
2021-07-29 18:38:10 +0200KUrare(~KUrare@user/kurare) (Remote host closed the connection)
2021-07-29 18:38:11 +0200 <motle> ah right, like if it does a bunch of work before calling the next lazy value
2021-07-29 18:38:22 +0200 <motle> in a sequence that will eventually fail or something like that
2021-07-29 18:38:30 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
2021-07-29 18:39:00 +0200 <motle> so you would want to get everything into a pure environemnt first for example to avoid that source of errors
2021-07-29 18:39:19 +0200 <motle> like reading all the values in from files before starting the processing
2021-07-29 18:39:45 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-07-29 18:39:53 +0200 <motle> so you would want to basically just use ! on the let bound variable capturing it from reading in from IO
2021-07-29 18:40:26 +0200 <motle> and then just have everything else be lazy
2021-07-29 18:40:33 +0200 <motle> idk about this stric list
2021-07-29 18:40:41 +0200 <motle> to bind the functionality into the datatype like that
2021-07-29 18:41:17 +0200 <motle> seems like you would have to have a different reason - like what were you saying, some kind of mapped error check?
2021-07-29 18:41:25 +0200lavaman(~lavaman@98.38.249.169)
2021-07-29 18:41:38 +0200 <motle> i guess you could have a safe-strict-constructor
2021-07-29 18:41:55 +0200 <motle> so that it performs all the safety checks to construct it at the same time
2021-07-29 18:42:24 +0200 <c_wraith> as far as I'm concerned, the only reason to put strictness annotations into a constructor is when you need to unpack something of a known type for performance reasons.
2021-07-29 18:42:25 +0200 <motle> or like, a strict fold using the safe constructor?
2021-07-29 18:43:07 +0200 <c_wraith> otherwise it should be a property of functions that use that data and can set their own strictness policies appropriately for that exact use.
2021-07-29 18:43:14 +0200 <motle> but then i dont see why you wouldnt just have a strict traversal with the error checker directly
2021-07-29 18:43:50 +0200 <maerwald[m]> I use StrictData by default and so do many others
2021-07-29 18:44:05 +0200 <c_wraith> StrictData doesn't even solve any interesting problems
2021-07-29 18:44:15 +0200 <c_wraith> All it does is prevent using Haskell
2021-07-29 18:44:35 +0200 <motle> lol, well if your usecase is known finite and totally evaluated
2021-07-29 18:45:17 +0200 <maerwald[m]> No
2021-07-29 18:45:24 +0200 <motle> so thats just like an easy switch to ensure recursive datatypes have everything like map performed strictly/simultaniously?
2021-07-29 18:45:47 +0200 <maerwald[m]> https://github.com/yesodweb/wai/pull/752#issuecomment-501531386
2021-07-29 18:46:00 +0200 <c_wraith> StrictData is the equivalent of sticking ! on every field in data types defined in modules where it's enabled
2021-07-29 18:46:30 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 276 seconds)
2021-07-29 18:46:42 +0200 <motle> idk, everything i do is state encoded anyway...
2021-07-29 18:47:11 +0200 <c_wraith> I don't get it. I don't have problems like that comment is talking about, because I make things the correct strictness up-front.
2021-07-29 18:47:20 +0200 <motle> so basically definitely lazy!
2021-07-29 18:47:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 18:47:29 +0200 <motle> (as pottentially infinite as not yet unfolded)
2021-07-29 18:47:48 +0200 <c_wraith> And I still get to do all the things that post ignores with knot-tying
2021-07-29 18:47:50 +0200 <motle> just nyam everything up one at a time like pipes processing
2021-07-29 18:47:51 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 18:48:06 +0200 <motle> + fusion. strictness seems to kill all of that!
2021-07-29 18:48:19 +0200 <motle> no streams...
2021-07-29 18:48:30 +0200 <motle> thats IO scanning out the window
2021-07-29 18:48:49 +0200 <motle> strictly evaluate this stream of market data!
2021-07-29 18:48:52 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2)
2021-07-29 18:49:19 +0200 <motle> i guess if you have a state encoded IO list though your gona be fine
2021-07-29 18:49:36 +0200 <motle> i mean, the IO should allow stricness to be on by default? idk im confused
2021-07-29 18:50:02 +0200 <lechner> it looks like aeson also offers strict parsers with json' and decode': http://winterland.me/2019/03/05/aeson%27s-mysterious-lazy-parsing/index.html
2021-07-29 18:50:15 +0200 <motle> i still think i need it to be lazy because everythings these partially suspended traversals
2021-07-29 18:50:21 +0200 <motle> yeah thats it
2021-07-29 18:50:48 +0200 <motle> scanning is almost like a zipper, using lazyness at the front of evaluation by tail calls
2021-07-29 18:51:08 +0200 <motle> so you need to "do the work" on a per value basis
2021-07-29 18:51:31 +0200 <motle> and this will happen whenever your unfolding
2021-07-29 18:51:41 +0200 <motle> er, if the unfolds may be infinite
2021-07-29 18:51:52 +0200 <motle> so you cant be using streaming unfolds is basically all i can conclude
2021-07-29 18:52:12 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
2021-07-29 18:52:50 +0200 <motle> id say thats enough to call stric by default unidiomatic to some extent
2021-07-29 18:52:58 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com)
2021-07-29 18:53:32 +0200 <motle> assuming that folding/unfolding lazy lists is what we do
2021-07-29 18:53:55 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 268 seconds)
2021-07-29 18:54:03 +0200 <motle> i guess the division is between people with finite datatypes or not
2021-07-29 18:54:28 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-29 18:54:38 +0200 <motle> eg a fixed size fluid simulation compared to a live IO interface
2021-07-29 18:55:17 +0200 <motle> its only because of the markets that i ended up with these damn scanners
2021-07-29 18:55:19 +0200 <motle> damn
2021-07-29 18:55:26 +0200 <motle> probably not going to make any money
2021-07-29 18:55:34 +0200 <motle> hope you like scanners everybody!!
2021-07-29 18:55:35 +0200motle(~motle@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net) (Quit: Connection closed)
2021-07-29 18:57:13 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 18:57:35 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 18:57:42 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 18:58:32 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 18:58:58 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 18:59:59 +0200lavaman(~lavaman@98.38.249.169)
2021-07-29 19:00:14 +0200deejaytee(~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net)
2021-07-29 19:00:21 +0200chomwitt(~chomwitt@athedsl-32041.home.otenet.gr) (Ping timeout: 258 seconds)
2021-07-29 19:01:01 +0200econo(uid147250@user/econo)
2021-07-29 19:02:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 19:03:25 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 19:03:42 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
2021-07-29 19:04:43 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
2021-07-29 19:04:52 +0200 <lechner> Hi, why does readCreateProcessWithExitCode returns stdout as a String, please? It is the same as [Char], which according to Data.Char are Unicode code points. What if the called program, like all programs, outputs a ByteString that may or may not be UTF-8? Does System.Process attempt to decode? Thanks!
2021-07-29 19:05:05 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com)
2021-07-29 19:07:41 +0200motle(~motle@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net)
2021-07-29 19:08:48 +0200 <motle> i spent half of last year designing asyncronous scheduling on graph distrbuted computing for these trading robot things! like, years wasted if the only reason is scanners!
2021-07-29 19:09:56 +0200 <motle> had restricted types flowing on the edges of a hierarchical tensor net, was mental
2021-07-29 19:10:45 +0200 <motle> damn AWS sentinals killing the haskell apps
2021-07-29 19:11:25 +0200 <motle> all that just for a persistent net of processes that could start each other up if the sentinal got one of 'em
2021-07-29 19:12:33 +0200 <motle> so yeah - to make something of that, i kind of want to get a programming language at least
2021-07-29 19:12:44 +0200 <motle> its got graphs too...
2021-07-29 19:12:50 +0200 <motle> like how we have lists
2021-07-29 19:12:58 +0200 <motle> and something convolutional
2021-07-29 19:13:11 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 19:13:17 +0200 <motle> extends lenses to pointers?
2021-07-29 19:13:44 +0200 <motle> anyway, the point is about call by use and lazy evaluation i guess
2021-07-29 19:14:01 +0200 <motle> running the program starting information flowing over the edges
2021-07-29 19:14:14 +0200 <motle> so the pointers setting about foraging for nearby data
2021-07-29 19:14:39 +0200 <motle> i guess then you have an elaboration over everything being just tail calls
2021-07-29 19:14:55 +0200 <motle> ie there is other stuff "nearby" in different ways in a graph
2021-07-29 19:14:59 +0200 <motle> than just the tail
2021-07-29 19:15:18 +0200 <motle> so instead of pattern matching cons being the bare currency of the language...
2021-07-29 19:15:28 +0200 <motle> and basically traversals and folds being king
2021-07-29 19:15:38 +0200 <motle> so by suspending traversals on graphs with pointer navigation
2021-07-29 19:15:54 +0200 <motle> idk... something complicated
2021-07-29 19:16:10 +0200 <motle> supposed to be the key part to the heart of the language, i cant get it
2021-07-29 19:16:59 +0200 <motle> anyway, instead of records and complicated lenses via template haskell, everything is done by pointer indexing
2021-07-29 19:17:09 +0200 <motle> some algebra on the index
2021-07-29 19:17:27 +0200 <motle> cant quite get the class system, but anyway...
2021-07-29 19:18:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 19:18:17 +0200Null_A(~null_a@2601:645:8700:2290:44f7:81a6:341:7abe)
2021-07-29 19:18:22 +0200Guest9(~Guest9@103.240.170.208)
2021-07-29 19:18:23 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 19:18:26 +0200 <motle> i guess normally "positions" are infact let bound variables, probably enough for now
2021-07-29 19:18:31 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-07-29 19:19:23 +0200 <motle> i guess thats just an artefact of having put edges where there were function arguments
2021-07-29 19:20:06 +0200 <motle> its anoying how it basically just allows recursive programs to be expressed and haskell just does that anyway...
2021-07-29 19:20:22 +0200 <motle> i guess it would be nice to wield the IR directly as a nice graph though...
2021-07-29 19:20:59 +0200 <motle> oh yeah, it was supposed to go in the compiler as like the lowest level after making lists... not sure if would even require a systemF extension
2021-07-29 19:22:21 +0200 <motle> yeah i guess everythings just done with mad big records at the minute, could make it better?
2021-07-29 19:22:25 +0200pgib(~textual@173.38.117.81)
2021-07-29 19:23:47 +0200 <motle> i dont actually know how term reduction or whatever it is actually happens
2021-07-29 19:24:14 +0200 <motle> like if having a nice graph scafolding would help, instead of having to keep track of all the record name subsets
2021-07-29 19:25:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 19:25:46 +0200 <motle> i guess its not quite the question "why use datatypes at all, just make a big hetrogenous free list", since this handles the added issues about navigation that are introduced
2021-07-29 19:25:59 +0200 <motle> which is probably why we use names for that
2021-07-29 19:26:18 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 19:26:54 +0200 <motle> idk, maybe by the time its some illegible IR it probably doesnt matter what record naming is used
2021-07-29 19:27:23 +0200 <motle> the question is about the ability to make use of a coding approach that also dispensed of records at the top level, in the actual language
2021-07-29 19:27:57 +0200 <motle> you dont need to use the names, you just have to specify the shape which is all done numerically
2021-07-29 19:28:20 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-07-29 19:28:46 +0200 <motle> i mean, i use big 3d grids of numbers all the time, so it would be totally infeasable to have anything other than a numeric record
2021-07-29 19:29:21 +0200 <motle> i guess normally programs are more "structured" in a sense where big datatypes with meaningful constructor names are used
2021-07-29 19:29:54 +0200 <Drew[m]> I'm struggling to follow all this. Are you still talking about haskell or are you comparing something to haskell?
2021-07-29 19:29:55 +0200 <motle> ie how we ended up with this tradition of not really supporting big grids as default datatypes
2021-07-29 19:30:10 +0200 <motle> Drew[m]: its what i have made in haskell
2021-07-29 19:30:21 +0200 <motle> just a bunch of work traversing free hetrogenous extensible things
2021-07-29 19:30:37 +0200 <motle> the point is how close it is to a language fundamenta
2021-07-29 19:30:41 +0200 <Clint> lechner: you might want something like https://hackage.haskell.org/package/process-extras-0.7.4/docs/System-Process-ByteString.html#v:rea… instead
2021-07-29 19:30:44 +0200 <motle> to be comparable to the status of list
2021-07-29 19:31:06 +0200 <motle> and im trying to work out how it would look more well made and built in
2021-07-29 19:31:23 +0200 <motle> seems like cartesian convolutions is the standard example
2021-07-29 19:31:40 +0200 <motle> (needs cycles for the cubes)
2021-07-29 19:31:50 +0200 <motle> graphamagig
2021-07-29 19:32:12 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 19:33:03 +0200 <motle> but yeah, i really want shapes more suited to recursive higher order functions, like map
2021-07-29 19:33:28 +0200 <motle> just to express the program on the graph scafolding and have it evaluate properly with the states all interlocking
2021-07-29 19:33:30 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-29 19:33:38 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 19:33:42 +0200 <motle> er yeah, we have modifiable programs now too, because the states
2021-07-29 19:34:04 +0200 <motle> ie the program can store a magic number that can change between evaluation
2021-07-29 19:34:57 +0200derelict(~derelict@user/derelict)
2021-07-29 19:35:08 +0200 <motle> so like, lazy lists state unfold, then states all interconected like pipes/conduit, then message passing doing the argument application to the modifiable functions held at the nodes, ie (state function,state value) pairs
2021-07-29 19:35:22 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-07-29 19:35:27 +0200 <motle> because states all connected together in a graph like state encoding a list somehow
2021-07-29 19:35:56 +0200 <motle> and scanning states like mapAcuumL traversal, somehow with the states ending up per node!///
2021-07-29 19:36:18 +0200 <motle> its about the connectivity of subsequent scans
2021-07-29 19:36:40 +0200 <motle> theres an algebra of function composition with a rewrite rule similar to map . map
2021-07-29 19:36:42 +0200azeem(~azeem@176.201.11.200) (Read error: Connection reset by peer)
2021-07-29 19:37:13 +0200 <motle> but then not just sequencing them one after the other, because having branching outputs like a scan doing something like unzip
2021-07-29 19:37:13 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-07-29 19:37:32 +0200 <motle> the program sits still while notionally data is fed subsequent values as inputs
2021-07-29 19:37:49 +0200 <motle> as opposed to the scanner kind of moving along over the list
2021-07-29 19:38:00 +0200 <motle> during traversal with the carried accumulator
2021-07-29 19:38:47 +0200 <motle> just to say something like fold unfold fusion rewrite rules composing on a big graph with zip/unzip style branching
2021-07-29 19:39:06 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
2021-07-29 19:39:34 +0200 <motle> and somehow thats programs on a graph, i guess intrinsically for straming which explains why there all states, and how they then end up modifiable, since they are collectively like a carry traversing over it like a scanner
2021-07-29 19:39:53 +0200 <motle> it kind of scans over the list but demangles it through the branching program
2021-07-29 19:40:17 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 252 seconds)
2021-07-29 19:40:20 +0200 <motle> just for streaming i think, but they can output back into themselves, so i think thats how it does recursion too
2021-07-29 19:41:04 +0200 <motle> eg you could just provide initial data and have it unfold data streamingly
2021-07-29 19:41:47 +0200 <motle> or you could also stream data into it while it runs, in sync with the clock of the internal programs evaluation scheduling as specified on the graph as a bunch of simultanious opperations per cycle
2021-07-29 19:42:42 +0200 <motle> i mean, its all just streaming through graphs for recursive programs
2021-07-29 19:43:03 +0200 <motle> (with hopfiled nets as a type restriction!)
2021-07-29 19:43:58 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 19:44:15 +0200 <motle> not sure if its wrong (or realistic) to ask for help, but anyway... thats what it is
2021-07-29 19:45:12 +0200 <lechner> Clint: thanks! i was already looking into Data.ByteString.Lazy.UTF8.fromString but your solution is much better!
2021-07-29 19:45:22 +0200Atum_(~IRC@user/atum/x-2392232)
2021-07-29 19:47:05 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-29 19:47:54 +0200 <motle> sorry i was confusing the state which does the unfold to the states on the nodes of the graph scanning over it
2021-07-29 19:48:50 +0200 <motle> thats why theres the clock function which just streams a list of (), to have a small shaped state fo the unfolding state and the rest of the unfold as a graph program scanning over the stream of ()
2021-07-29 19:49:16 +0200roboguy_(~roboguy_@2605:a601:afe7:9f00:1557:b33d:ca8c:dfa4)
2021-07-29 19:49:28 +0200 <Drew[m]> <motle> "not sure if its wrong (or..." <- I feel like I wouldn't expect many people to be able to follow your thoughts to know how to help. Clearly you've been thinking about it a lot but I think you'd need to condense it down to a more concrete question or series of questions.
2021-07-29 19:49:48 +0200 <motle> i mean n terms of getting something implemented
2021-07-29 19:50:15 +0200 <Drew[m]> What do
2021-07-29 19:50:17 +0200 <Drew[m]> oops
2021-07-29 19:50:23 +0200 <Drew[m]> What do you want to implement?
2021-07-29 19:50:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 19:50:58 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 240 seconds)
2021-07-29 19:51:15 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-29 19:51:22 +0200 <motle> i guess if i could implement a square grid as a cycle for the data in a covnet and express the net as a fold through layers that are graphs... something like that, it uses the convolutions to do both message parsing and data processing then
2021-07-29 19:51:42 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 19:51:59 +0200 <motle> but that the same structure (the aim of the implementation) be used for both, the graph with the stencil api
2021-07-29 19:52:29 +0200 <motle> the hetrogenaity and polymorphicity are difficult
2021-07-29 19:53:08 +0200 <motle> ends up with type level programs specifying the shape and for the indexing etc
2021-07-29 19:53:29 +0200azeem(~azeem@176.201.11.200)
2021-07-29 19:53:45 +0200 <zzz> do imported but not used modules contribute to binary size? and i can ask the same for functions inside and outside those modules
2021-07-29 19:53:52 +0200 <motle> i guess the strange thing about passing types over the edges is thinking that they could modify the types at the nodes
2021-07-29 19:54:21 +0200 <lechner> Hi, why does Haskell always assume that with f g x i mean f(g, x) instead of f(g( x )) ?
2021-07-29 19:54:24 +0200 <zzz> s/those/any
2021-07-29 19:54:28 +0200 <motle> ie the types of the functions held in the program, a wierd result of the thing being modifiable i guess
2021-07-29 19:54:34 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-29 19:54:49 +0200 <motle> really wants to be used for genetic programming though
2021-07-29 19:55:01 +0200 <zzz> lechner: f g x === (f g) x
2021-07-29 19:55:17 +0200 <motle> have a pottential project there with elucidating slightly less common higher order programing patters
2021-07-29 19:55:25 +0200 <zzz> prefix function notation is left associative by default
2021-07-29 19:55:55 +0200 <motle> just cool to have a program that can be modifying itself while it runs i guess
2021-07-29 19:56:03 +0200 <lechner> zzz: somehow that goes against my RPN pbrain
2021-07-29 19:56:06 +0200 <motle> not sure how to handle runtime typechecking though...
2021-07-29 19:56:35 +0200 <zzz> lechner: use `f $ g $ x` then
2021-07-29 19:56:50 +0200 <motle> which would correspond to establishing or removing edges i guess, or changing types of arguments, such as the dimension of subgraph segment they were passing for insertion somewhere or something like that
2021-07-29 19:57:20 +0200 <lechner> zzz: maybe the other way woudn't work. it just seems i need a lot of brackets
2021-07-29 19:57:26 +0200 <lechner> or $
2021-07-29 19:57:27 +0200 <roboguy_> lechner: wouldn't RPN be x f g?
2021-07-29 19:58:04 +0200 <lechner> roboguy_: you are right
2021-07-29 19:58:17 +0200 <lechner> not sure what i am saying
2021-07-29 19:58:20 +0200 <zzz> :t (&)
2021-07-29 19:58:22 +0200 <lambdabot> a -> (a -> b) -> b
2021-07-29 19:58:33 +0200 <zzz> & = flip ($)
2021-07-29 19:59:40 +0200 <motle> i guess its more difficult than a regular machine learning problem. you cant just compare its outputing a stream of functions - you would want to "regularize" it directly, which would be complicated programs acting on the various types in the graph program, to try to get it to produce eg higher order functions in some order
2021-07-29 19:59:59 +0200 <lechner> it just seems there are more functions with just one argument
2021-07-29 20:00:03 +0200 <roboguy_> lechner: I don't think eta-reduction would work normally if "f g x" meant "f (g x)"
2021-07-29 20:00:12 +0200 <lechner> i ynow
2021-07-29 20:00:15 +0200 <lechner> know
2021-07-29 20:00:29 +0200 <lechner> what is eta please?
2021-07-29 20:00:37 +0200 <motle> like its not exactly straitforwards how to encourage a program to assemble itself in such a way
2021-07-29 20:01:14 +0200 <roboguy_> lechner: for example, eta-reduction allows you to rewrite "f x = g 2 x" as "f = g 2"
2021-07-29 20:01:56 +0200 <roboguy_> eta-expansion is the other direction, which is also fine
2021-07-29 20:02:08 +0200 <motle> i guess if it had some really badass way of examining the functions it was supposed to be reproducing, it could kind of make a way to produce them properly
2021-07-29 20:02:10 +0200 <roboguy_> (if the function takes enough arguments)
2021-07-29 20:02:25 +0200 <lechner> motle: don't lose those thoughts; write them into a word processor instead
2021-07-29 20:02:42 +0200 <motle> that wont make them real like you!
2021-07-29 20:02:58 +0200 <lechner> paper is real
2021-07-29 20:02:58 +0200azeem(~azeem@176.201.11.200) (Read error: Connection reset by peer)
2021-07-29 20:03:12 +0200 <motle> why you want to limit the audience so?
2021-07-29 20:03:23 +0200 <motle> i mean really impactful i guess
2021-07-29 20:03:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 20:03:31 +0200 <motle> more real
2021-07-29 20:03:44 +0200 <motle> no pressure
2021-07-29 20:04:02 +0200 <lechner> on the contrary, i want to make sure your thoughts (ultimately) get the attention they deserve
2021-07-29 20:04:12 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-07-29 20:04:34 +0200 <motle> anyway dont we have tunes still here?
2021-07-29 20:05:17 +0200 <motle> lechner: well i heard about the machine learning problem in my first hear classes so i guess similar projects have *some* attention?
2021-07-29 20:05:26 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-29 20:05:31 +0200 <motle> probably makes more sense now though...
2021-07-29 20:05:44 +0200 <motle> not sure how much anyone exept me ever heard of those classes anyway
2021-07-29 20:06:18 +0200 <motle> anyway, i feel like saying something
2021-07-29 20:06:31 +0200 <motle> the point is im not sure i can write it!
2021-07-29 20:06:42 +0200 <motle> this is the barrier, for the asking for help
2021-07-29 20:06:45 +0200 <lechner> roboguy_: yeah i knew something would be off. maybe applying functions partially also breaks
2021-07-29 20:07:06 +0200 <lechner> roboguy_: don't listen to me. i am new
2021-07-29 20:07:15 +0200 <motle> anyway, machine learning problem asside, this graph at the language seems resounding
2021-07-29 20:07:37 +0200 <roboguy_> lechner: no worries! We were all new at some point!
2021-07-29 20:07:37 +0200 <motle> like enough to not just be a total waste of time for anyone to bother with
2021-07-29 20:08:00 +0200 <roboguy_> motle: are you saying that you want to parse something using a neural network?
2021-07-29 20:08:17 +0200 <motle> thats more of a use case for sake of example
2021-07-29 20:08:30 +0200 <motle> the thing is like a net with type abstraction everywhere
2021-07-29 20:08:42 +0200 <motle> ends up like a program representation
2021-07-29 20:08:49 +0200 <motle> wierdly dynamic
2021-07-29 20:08:52 +0200 <lechner> roboguy_: i love haskell though. where can i get my tattoo :)
2021-07-29 20:09:12 +0200superstar64(~superstar@2600:1700:ed80:50a0:d250:99ff:fe2c:53c4) (Quit: Leaving)
2021-07-29 20:09:28 +0200 <motle> just for the graph really, it uses the stencil convolution for data and program evaluation ordering
2021-07-29 20:09:35 +0200 <roboguy_> lechner: haha, not sure!
2021-07-29 20:10:10 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 256 seconds)
2021-07-29 20:10:21 +0200 <lechner> roboguy_: it would be a giant "λ" !
2021-07-29 20:10:24 +0200 <roboguy_> motle: hmm, how familiar are you with traditional ways to implement those things?
2021-07-29 20:10:34 +0200 <motle> this is why that example
2021-07-29 20:10:44 +0200 <motle> graph, pointer, stencil? (classes)
2021-07-29 20:11:11 +0200 <motle> roboguy_: well, they dont use tails, its all index edge stuff adjacency matrix no good imo
2021-07-29 20:11:26 +0200Null_A(~null_a@2601:645:8700:2290:44f7:81a6:341:7abe) (Remote host closed the connection)
2021-07-29 20:11:27 +0200 <motle> wants proper hetrogenous like
2021-07-29 20:12:06 +0200 <roboguy_> I mean the stuff you want to replace with stencil convolution
2021-07-29 20:12:10 +0200 <motle> you know what i mean, making it all isomorphic to grpahs with hetrogenous list branches with explicated cycles
2021-07-29 20:12:27 +0200 <motle> roboguy: yeah, things like repa
2021-07-29 20:12:37 +0200 <motle> parallel zips iirc
2021-07-29 20:12:53 +0200 <motle> and the indexing on the fast random access containers
2021-07-29 20:12:56 +0200 <motle> something about idiom
2021-07-29 20:13:10 +0200 <motle> i want an actual extensible datatype
2021-07-29 20:13:21 +0200 <motle> the HList cyclic tree
2021-07-29 20:13:33 +0200 <motle> everythings just that anyway
2021-07-29 20:13:33 +0200 <lechner> Hi, will 'show' convert a UTF-8 ByteString into a String with Unicode code points?
2021-07-29 20:13:36 +0200 <roboguy_> hmm, ok then I think I really don't understand, hah. I haven't seen anyone use repa to implement program evaluation
2021-07-29 20:14:00 +0200 <[exa]> lechner: utf will usually get shown as \u1234 or something
2021-07-29 20:14:01 +0200 <motle> lol, stencil convolutions
2021-07-29 20:14:10 +0200 <motle> matrix stuff, linear algebra
2021-07-29 20:14:17 +0200 <motle> tensors like applicative
2021-07-29 20:14:59 +0200 <motle> you would have a faster implementation if it was block diagonal with 0 elsewhere, typical convolution
2021-07-29 20:15:01 +0200 <[exa]> motle: someone talked about implementing similar stuff here a while ago, actually I think he foudn some solution, you might search the logs
2021-07-29 20:15:19 +0200 <roboguy_> motle: Have you seen Conal Elliott's papers on automatic differentiation and generalized convolution?
2021-07-29 20:15:32 +0200Atum_(~IRC@user/atum/x-2392232) (Ping timeout: 245 seconds)
2021-07-29 20:15:43 +0200 <motle> logs stop on 21.07.29
2021-07-29 20:16:05 +0200 <motle> roboguy_: i never got AD, but yeah i tried a bunch
2021-07-29 20:16:24 +0200 <[exa]> yeah that's the migration date, there should be a repo linked with older ones
2021-07-29 20:16:42 +0200 <roboguy_> did you see those papers? I think they'd probably help
2021-07-29 20:17:17 +0200 <motle> anyway, its topological locality, so stencil "foraging" does
2021-07-29 20:17:17 +0200 <motle> its more about the neighbour connectivity as per edges
2021-07-29 20:17:17 +0200 <motle> i mean, in terms of "differentiable datatypes" (SPJ)
2021-07-29 20:17:17 +0200 <roboguy_> they're all about implementing those things nicely in Haskell, leveraging the type system
2021-07-29 20:17:27 +0200 <motle> you get multiple derivatives in cartesian grids
2021-07-29 20:17:27 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-29 20:17:29 +0200 <roboguy_> differentiable datatypes are something else entirely
2021-07-29 20:17:33 +0200 <motle> and something messed up with graphs
2021-07-29 20:17:45 +0200 <motle> but its like a helish topological calculus or something
2021-07-29 20:17:56 +0200 <motle> best just stick with "navigating nearby"
2021-07-29 20:18:02 +0200 <motle> pointers is fine
2021-07-29 20:18:12 +0200 <motle> the comonad really
2021-07-29 20:18:19 +0200 <motle> yeah its the navigable pointer comonad
2021-07-29 20:18:39 +0200 <motle> easyer for us than any "differentiability"
2021-07-29 20:18:45 +0200 <motle> just to get at "local"
2021-07-29 20:18:58 +0200 <motle> topology helps but barely
2021-07-29 20:19:18 +0200 <motle> "neighbourhood"
2021-07-29 20:19:29 +0200 <motle> but we just say convolutional stencil
2021-07-29 20:20:02 +0200 <motle> so its like the convolutional capability of graph pointer comonads?
2021-07-29 20:21:27 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 20:21:27 +0200 <motle> roboguy_: yeah i said idk what AD at all
2021-07-29 20:21:27 +0200 <motle> says it speeds up learning, never saw how, gibberish
2021-07-29 20:21:36 +0200 <lechner> wow, that's like james joyce
2021-07-29 20:21:38 +0200 <motle> was doing 0 derivative stochastic learning for ages too
2021-07-29 20:21:47 +0200lavaman(~lavaman@98.38.249.169)
2021-07-29 20:21:53 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 20:22:13 +0200 <motle> some things are just genuinely incomprehensible to me for whatever reason and AD was one of those
2021-07-29 20:22:16 +0200 <roboguy_> motle: automatic differentiation essentially allows you to take the derivative of a function written in a programming language
2021-07-29 20:22:35 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-29 20:22:45 +0200 <motle> yeah, which makes also as much sense by tautology
2021-07-29 20:22:47 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-29 20:22:52 +0200 <roboguy_> what
2021-07-29 20:23:00 +0200lavaman(~lavaman@98.38.249.169)
2021-07-29 20:23:10 +0200 <motle> AD is program differentiation
2021-07-29 20:23:16 +0200 <motle> ok.... so....
2021-07-29 20:23:24 +0200 <motle> monads are also burritos!
2021-07-29 20:23:46 +0200 <motle> what does it mean to differentiate a program?
2021-07-29 20:24:02 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 20:24:04 +0200 <roboguy_> I think you are mixing up two things. Like I said, it is unrelated to the datatype derivative thing
2021-07-29 20:24:14 +0200 <motle> thats what its not so...
2021-07-29 20:24:23 +0200 <motle> what is it!?
2021-07-29 20:24:27 +0200 <motle> idk go read about it
2021-07-29 20:24:31 +0200 <motle> i dont care!
2021-07-29 20:24:33 +0200 <janus> motle: do you also use other social media? i wish to subscribe to your newsletter
2021-07-29 20:24:54 +0200 <motle> really i think AD is just sillyness
2021-07-29 20:25:09 +0200 <roboguy_> For example, if you have a function `f x = 2 * sin x`, then there is a function called `diff` that allows `diff f` to be \z -> 2*cos z
2021-07-29 20:25:15 +0200 <motle> noooo
2021-07-29 20:25:18 +0200 <motle> duh
2021-07-29 20:25:26 +0200 <motle> i know how to differentiate after type restriction
2021-07-29 20:25:33 +0200 <motle> absurd
2021-07-29 20:25:34 +0200 <roboguy_> type restriction?
2021-07-29 20:25:40 +0200 <motle> your doubles
2021-07-29 20:25:51 +0200 <juri_> motle: please be a bit kinder. people are trying to be helpful. :)
2021-07-29 20:25:52 +0200 <motle> i can differentiate that no problem
2021-07-29 20:25:59 +0200 <motle> noo, its not a real concept!
2021-07-29 20:26:05 +0200 <motle> they are skirting this!
2021-07-29 20:26:21 +0200 <motle> its layer upon layer of misdirection *on all the layers*
2021-07-29 20:26:25 +0200Atum_(~IRC@user/atum/x-2392232)
2021-07-29 20:26:40 +0200 <roboguy_> I think I cannot help very much in this discussion, but I hope you can make progress on your project
2021-07-29 20:26:48 +0200 <motle> "oh, you mean regular differentiation, what were you trying to get me to read about?"
2021-07-29 20:27:10 +0200 <motle> a feux thing exists in the notion of AD and its not your fault and im sorry
2021-07-29 20:27:18 +0200 <motle> but im pissed at AD nonetheless
2021-07-29 20:27:22 +0200 <roboguy_> that's weird
2021-07-29 20:27:26 +0200 <motle> yeah!
2021-07-29 20:27:41 +0200Atum__(~IRC@user/atum/x-2392232)
2021-07-29 20:28:05 +0200 <motle> if it wasnt a tautological mess i wouldnt be complaining so...
2021-07-29 20:28:13 +0200 <roboguy_> define "tautology"
2021-07-29 20:28:13 +0200spirit_(~spirit@171.61.156.55)
2021-07-29 20:28:28 +0200 <motle> tautologies are like this...
2021-07-29 20:28:47 +0200 <motle> er, wait thats actually a good definition, oh wait no its not... argh
2021-07-29 20:29:08 +0200 <motle> idk what that is, seems badly broken
2021-07-29 20:29:15 +0200echoone(~echoone@188.74.32.13)
2021-07-29 20:29:19 +0200 <motle> dont make theories like that plz!
2021-07-29 20:29:27 +0200 <roboguy_> tautologies are logical propositions of the form "p implies p"
2021-07-29 20:29:35 +0200 <lechner> tautological mess is a contradiction in terms. with a tautology, you have absolute certainty!
2021-07-29 20:29:44 +0200 <motle> its the fundamental construction of a partially specified stylesheet
2021-07-29 20:29:53 +0200 <roboguy_> hm
2021-07-29 20:30:04 +0200 <motle> you just do model extension putting tautologies everywhere and closing things and then adding decoration
2021-07-29 20:30:07 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-07-29 20:30:17 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-07-29 20:30:26 +0200 <motle> and out comes a half baked category theory!!
2021-07-29 20:30:34 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk)
2021-07-29 20:30:40 +0200 <motle> its a madness, damn ncatlab
2021-07-29 20:30:41 +0200 <juri_> i'm not convinced this is a conversation.
2021-07-29 20:31:06 +0200Atum_(~IRC@user/atum/x-2392232) (Ping timeout: 250 seconds)
2021-07-29 20:31:08 +0200 <motle> im just retorting to anyone mistakely trying to vex me with mention of AD
2021-07-29 20:31:20 +0200 <lechner> maybe too much caffeine?
2021-07-29 20:31:34 +0200 <motle> maybe too much prescision nudging!
2021-07-29 20:32:04 +0200 <Drew[m]> <motle> "noo, its not a real concept!" <- I don't understand. Sure that example might be easy, but if you're combining a whole bunch of different differentiable functions it becomes not so easy pretty quickly surely. Why make the programmer do the work if we have the power to make machnes do it in at least some cases.
2021-07-29 20:32:10 +0200 <motle> i was *trying* to talk about tolopogical differentiation of datatypes!
2021-07-29 20:32:35 +0200 <motle> which as far as i can tell (.....) is all thats differentiationay about programs!!
2021-07-29 20:32:54 +0200 <motle> i think AD is a misdirection in of itself, quit throwing things
2021-07-29 20:33:29 +0200 <motle> nobody has demonstrated otherwise! the closest anyone can get is invoking the notion of normal differentiation
2021-07-29 20:33:49 +0200 <motle> i have *actual* topological differention with these convolutional neighberhoods on pointer graph thing
2021-07-29 20:34:01 +0200 <motle> none of your rubbish
2021-07-29 20:34:16 +0200Atum__(~IRC@user/atum/x-2392232) (Ping timeout: 258 seconds)
2021-07-29 20:34:51 +0200 <motle> even topology would struggle to get that, so programming really helps here
2021-07-29 20:35:32 +0200 <Drew[m]> Whatever concept of differentiation you're talking about, as far as I can tell automatic differentiation is a thing with a community agreed upon meaning and it's a useful thing and I just don't get why you were speaking ill of a useful thing
2021-07-29 20:35:38 +0200 <motle> i just keep trying to get the class hierarchy, think it was pointer, navigate, comonad
2021-07-29 20:36:33 +0200 <motle> Drew[m]: because sometimes when i try to learn things its just to find out if they are enough of a thing to learn about, or if they do what i think they infer they mean they do
2021-07-29 20:36:50 +0200 <motle> i assumed they meant some kind of differentiation *other* than regular differentiation
2021-07-29 20:36:55 +0200 <motle> apparently not
2021-07-29 20:36:56 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds)
2021-07-29 20:36:57 +0200 <roboguy_> I will say that the combativeness makes it difficult to engage in a discussion.
2021-07-29 20:37:14 +0200 <motle> mate, iv been battling this AD thing for ages
2021-07-29 20:37:35 +0200 <motle> its like, a main avenue of not a thing getting at me
2021-07-29 20:37:41 +0200 <Drew[m]> Why would differentiation mean anything other than the normal sense of differentiating a function
2021-07-29 20:38:01 +0200 <motle> well topology!
2021-07-29 20:38:05 +0200 <motle> position in datatype
2021-07-29 20:38:05 +0200 <roboguy_> I have worked with AD a bit myself. I've worked through that paper I mentioned carefully, read some of the references, looked through other implementations, read the followup paper where some similar techniques are connected to a generalized form of convolution
2021-07-29 20:38:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-07-29 20:38:38 +0200 <motle> how so?
2021-07-29 20:38:46 +0200 <roboguy_> but it feels as though you do not want to hear any more about it. so that is that
2021-07-29 20:38:48 +0200 <motle> i thought they werent allowed to be like differentiable datatypes?
2021-07-29 20:38:52 +0200 <motle> nono
2021-07-29 20:38:55 +0200 <roboguy_> you have made up your mined
2021-07-29 20:38:56 +0200 <roboguy_> *mind
2021-07-29 20:39:06 +0200 <motle> its a contradition, now yours seem topological all of a sudden
2021-07-29 20:39:07 +0200 <motle> wft!?
2021-07-29 20:39:29 +0200 <motle> boomerang of some sort
2021-07-29 20:39:41 +0200 <motle> ok cool, so weer talking about the same thing
2021-07-29 20:39:45 +0200 <motle> so stencils!
2021-07-29 20:39:50 +0200 <Drew[m]> What does differentiation of datatypes even mean
2021-07-29 20:39:58 +0200 <motle> zipper for the nav
2021-07-29 20:40:10 +0200 <motle> presented in the SPJ as a suspended traversal
2021-07-29 20:40:14 +0200 <motle> see a primative pointer
2021-07-29 20:40:21 +0200 <motle> now graphs
2021-07-29 20:40:28 +0200 <roboguy_> Drew[m]: http://strictlypositive.org/diff.pdf
2021-07-29 20:40:28 +0200 <motle> nav
2021-07-29 20:40:55 +0200 <motle> yeah that
2021-07-29 20:40:58 +0200 <motle> thats a zipper
2021-07-29 20:41:04 +0200 <EvanR> e.g. derivative of T^2 is 2*T
2021-07-29 20:41:07 +0200 <motle> its a pointer of some kind see?
2021-07-29 20:41:17 +0200 <motle> comonad follows
2021-07-29 20:41:34 +0200 <motle> right so and then we need a class for many such things
2021-07-29 20:41:50 +0200 <motle> and the nav
2021-07-29 20:42:19 +0200 <motle> fine i guess its called AD whatever
2021-07-29 20:42:33 +0200 <motle> but i never got stencils at the go
2021-07-29 20:42:39 +0200 <motle> this is the API
2021-07-29 20:43:02 +0200 <motle> because finite difference gradient approximations of various orders as common stencil uses
2021-07-29 20:43:15 +0200 <motle> its more like, "because thats how differentiation works"
2021-07-29 20:43:31 +0200 <motle> and the topology stuff is because we have places to put data not continuums of it
2021-07-29 20:44:03 +0200 <motle> easyer to explain in programing actually, maths arent coping with it well - its called sheafification over there
2021-07-29 20:44:09 +0200 <motle> stacks
2021-07-29 20:44:31 +0200 <motle> and the heart of the stack sheaf is the topological neigberhood and constructing sections
2021-07-29 20:44:47 +0200 <motle> which i didnt think was called AD...
2021-07-29 20:45:00 +0200 <motle> but yeah, not records for lenses is how it hits here
2021-07-29 20:45:20 +0200 <motle> regular grids as simple type level specifications for demo
2021-07-29 20:45:32 +0200 <lechner> Hi, why do many people dislike 'printf' in favor of 'putStrLn', please?
2021-07-29 20:45:38 +0200 <EvanR> me
2021-07-29 20:45:57 +0200 <EvanR> oh i thought you said who dislikes printf in favor of putStrLn
2021-07-29 20:46:29 +0200 <EvanR> printf has some good options but building the string yourself gives full control
2021-07-29 20:46:52 +0200 <lechner> do you use ++ or <> ?
2021-07-29 20:47:13 +0200 <boxscape> printf also gives you full control, you just need to use %s :P
2021-07-29 20:47:17 +0200 <roboguy_> lechner: I believe there is, in effect, dynamic typing involved with printf
2021-07-29 20:47:26 +0200 <roboguy_> unless I'm misremembering how the format string works
2021-07-29 20:47:28 +0200 <EvanR> ++ or <>... doesn't matter. But concatting a list is another option
2021-07-29 20:48:37 +0200 <EvanR> > concat ["This time is ", format theTime, " sweetheart"]
2021-07-29 20:48:38 +0200 <lambdabot> error:
2021-07-29 20:48:38 +0200 <lambdabot> • Variable not in scope: format :: t0 -> [Char]
2021-07-29 20:48:38 +0200 <lambdabot> • Perhaps you meant one of these:
2021-07-29 20:48:48 +0200 <EvanR> didn't mean to put >
2021-07-29 20:48:52 +0200 <roboguy_> > printf "%s" True
2021-07-29 20:48:54 +0200 <lambdabot> error:
2021-07-29 20:48:54 +0200 <lambdabot> • Could not deduce (PrintfArg Bool) arising from a use of ‘printf’
2021-07-29 20:48:54 +0200 <lambdabot> from the context: PrintfType t
2021-07-29 20:49:03 +0200 <roboguy_> > printf "%s" (123 :: Int)
2021-07-29 20:49:05 +0200 <lambdabot> error:
2021-07-29 20:49:05 +0200 <lambdabot> • Ambiguous type variable ‘a0’ arising from a use of ‘show_M693588695403...
2021-07-29 20:49:05 +0200 <lambdabot> prevents the constraint ‘(Show a0)’ from being solved.
2021-07-29 20:49:22 +0200 <roboguy_> that's different than what I get in GHCi...
2021-07-29 20:49:29 +0200 <EvanR> > printf "%s" (123 :: Int) :: String
2021-07-29 20:49:29 +0200 <roboguy_> > printf "%s" (123 :: Int) :: IO ()
2021-07-29 20:49:31 +0200 <lambdabot> "*Exception: printf: bad formatting char 's'
2021-07-29 20:49:31 +0200 <lambdabot> <IO ()>
2021-07-29 20:49:37 +0200 <roboguy_> ah, you got it EvanR
2021-07-29 20:49:51 +0200 <roboguy_> there are runtime type errors. that's one big reason you could dislike it
2021-07-29 20:50:06 +0200 <roboguy_> also, you could probably improve the interface so that is impossible...
2021-07-29 20:50:45 +0200 <EvanR> stringing together strings is much more conceptually simplee
2021-07-29 20:50:47 +0200 <lechner> my big issue, as a beginner, is that with putStrLn lines get very long, and right now, my style has some serious problems
2021-07-29 20:51:01 +0200 <lechner> i now use a code formatter
2021-07-29 20:51:01 +0200 <EvanR> if printf works then use it
2021-07-29 20:51:22 +0200 <roboguy_> I usually write putStrLn $ "some text " ++ show x ++ " .... " ++ show y ++ ...
2021-07-29 20:51:23 +0200 <lechner> i will have multiple iterations of this program
2021-07-29 20:51:49 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-07-29 20:51:54 +0200 <Drew[m]> roboguy_: I wouldn't be surprised if there's already a library with type-safe formatting template representation
2021-07-29 20:52:14 +0200 <roboguy_> Drew[m]: same. I feel like I've actually seen one, but I don't quite remember
2021-07-29 20:52:21 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk)
2021-07-29 20:52:53 +0200 <lechner> i also give imperative name to functions. does that condition have a name. is there a cure?
2021-07-29 20:53:03 +0200 <EvanR> wait
2021-07-29 20:53:03 +0200 <lechner> names
2021-07-29 20:53:11 +0200 <EvanR> i didn't even get a runtime type error
2021-07-29 20:53:16 +0200 <EvanR> > printf "%s" (123 :: Int) :: String
2021-07-29 20:53:17 +0200 <lambdabot> "*Exception: printf: bad formatting char 's'
2021-07-29 20:53:24 +0200 <EvanR> oh i see, no closing "
2021-07-29 20:53:33 +0200tput(~tim@S0106a84e3fe54613.ed.shawcable.net) (Ping timeout: 268 seconds)
2021-07-29 20:53:39 +0200 <Drew[m]> lechner: Er what's an example of an imperative name?
2021-07-29 20:53:40 +0200 <roboguy_> lechner: imperative names?
2021-07-29 20:53:51 +0200 <EvanR> at first i thought it was a horribad way out of the error
2021-07-29 20:54:25 +0200 <lechner> processTask sendProduct updateTool getTool getConfig
2021-07-29 20:54:29 +0200 <EvanR> function names that happen to be a verb?
2021-07-29 20:54:49 +0200tput(~tim@S0106a84e3fe54613.ed.shawcable.net)
2021-07-29 20:55:00 +0200 <Drew[m]> If `processTask` processes a task I wouldn't be bothered
2021-07-29 20:55:10 +0200 <EvanR> at least it's not the kingdom of nouns
2021-07-29 20:55:10 +0200 <roboguy_> lechner: those sound fine to me
2021-07-29 20:55:30 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-29 20:55:33 +0200 <roboguy_> in fact, probably what I would use (and often see used in other Haskell projects)
2021-07-29 20:55:42 +0200 <EvanR> NounVerber
2021-07-29 20:55:48 +0200mattil(~mattilinn@87-92-17-82.bb.dnainternet.fi) (Quit: Leaving)
2021-07-29 20:55:55 +0200 <Drew[m]> taskProcessor would upset me
2021-07-29 20:56:00 +0200 <lechner> used as an imperative. i think English uses plain verb as the imperative
2021-07-29 20:56:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 20:56:31 +0200 <EvanR> what language is your program in
2021-07-29 20:56:39 +0200 <roboguy_> oh, "imperative" in the sense of natural languages like English, not the programming language notion?
2021-07-29 20:56:41 +0200 <lechner> Haskell
2021-07-29 20:56:49 +0200 <EvanR> like, not english?
2021-07-29 20:56:51 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 20:56:51 +0200 <lechner> well, English
2021-07-29 20:57:22 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 272 seconds)
2021-07-29 20:58:10 +0200 <lechner> sorry, like the AD thing with the other fellow earlier i am fighting the remnants of imperative programming in my mind, or so i think
2021-07-29 20:58:12 +0200 <EvanR> haskell is cool for having a variety of grammatical types... nouns, verbs, prepositions
2021-07-29 20:58:19 +0200 <Drew[m]> When you write `processTask task` what are you doing? Processing a task called `task`
2021-07-29 20:58:19 +0200 <Drew[m]> When you write `taskProcessor task` are you task processoring a task?
2021-07-29 20:58:27 +0200 <lechner> yes
2021-07-29 20:58:42 +0200 <lechner> they are all monadic
2021-07-29 20:58:48 +0200 <lechner> but still
2021-07-29 20:58:49 +0200 <EvanR> send task taskProcessor
2021-07-29 20:59:38 +0200qbt(~edun@user/edun)
2021-07-29 20:59:50 +0200 <EvanR> taskProcessor <- createThingDoer processTask
2021-07-29 21:00:58 +0200 <EvanR> when you get into non IO monads I can see how not using verbs will confuse people
2021-07-29 21:01:20 +0200 <EvanR> in pure code, non verbs seems more natural
2021-07-29 21:01:25 +0200vicfred(~vicfred@user/vicfred)
2021-07-29 21:01:31 +0200 <roboguy_> lechner: that all seems fine to me. In general, I wouldn't worry as much about "avoiding doing it the imperative way" and focus more on "doing it the Haskell way"
2021-07-29 21:01:33 +0200 <roboguy_> if that makes sense
2021-07-29 21:02:00 +0200 <roboguy_> sometimes the Haskell way involves some imperative-style stuff. Sometimes it does not
2021-07-29 21:02:34 +0200 <Drew[m]> Imo verbs are fine in pure code. I mean we `map` and `filter` and `sum` do we not?
2021-07-29 21:02:47 +0200 <lechner> this is my second Haskell program. it works just like the Perl version, but my style is terrible. i think i use the wrong entry points to separate the parts https://dpaste.org/RGJQ
2021-07-29 21:02:50 +0200 <EvanR> all three of those could be nouns xD
2021-07-29 21:02:56 +0200 <roboguy_> yeah, without verbs in names it would be very confusing
2021-07-29 21:02:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 21:03:05 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-07-29 21:03:06 +0200 <Drew[m]> map, mapped, mapping, sum, summed, summing
2021-07-29 21:03:11 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 21:03:15 +0200hyiltiz(~quassel@31.220.5.250)
2021-07-29 21:03:20 +0200 <EvanR> it's unclear if map, filter, or sum ought to be construed as verbs or not
2021-07-29 21:03:22 +0200 <EvanR> to me
2021-07-29 21:03:37 +0200 <EvanR> never even thought about it until now lol
2021-07-29 21:03:55 +0200 <Drew[m]> I read `map x y` as "map x (over) y`
2021-07-29 21:04:07 +0200 <EvanR> sure that's one way to think of it
2021-07-29 21:04:12 +0200 <Drew[m]> What about compose
2021-07-29 21:04:20 +0200 <Drew[m]> we don't call it the composer function
2021-07-29 21:04:32 +0200 <Drew[m]> and we don't think of "a compose"
2021-07-29 21:04:41 +0200 <EvanR> in purely math areas, the math really has nothing to do with grammar
2021-07-29 21:04:51 +0200 <EvanR> compose could just be the name of an operator
2021-07-29 21:05:03 +0200 <EvanR> it could have been known as composition
2021-07-29 21:05:04 +0200 <deejaytee> we think of a composition, though
2021-07-29 21:05:06 +0200ddb(~ddb@2607:5300:61:c67::196) (Ping timeout: 240 seconds)
2021-07-29 21:05:06 +0200 <lechner> haskell can flow well, though
2021-07-29 21:06:09 +0200 <lechner> conditionals are my other problem. i am kind of Either'ed out
2021-07-29 21:06:50 +0200 <EvanR> a functor for example could be seen as an action that sends things from C to D, or the act of lifting arrows so they can act between categories
2021-07-29 21:07:06 +0200 <lechner> plus, i have poor vision and ten indent levels are too much. maybe i should write shorter functions
2021-07-29 21:07:18 +0200 <EvanR> i rarely have more than 1 or 2 indent levels
2021-07-29 21:07:25 +0200 <EvanR> where clauses can help there
2021-07-29 21:07:28 +0200ddb(~ddb@2607:5300:61:c67::196)
2021-07-29 21:07:51 +0200 <lechner> that may be hint i needed
2021-07-29 21:07:54 +0200 <lechner> the
2021-07-29 21:08:46 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 21:09:16 +0200 <Drew[m]> Yes you can have a filter, a sum and a map but in the context of `map` wouldn't the correct noun be a mapper or mapping? "A map" as a noun makes me think of atlases more than well... a mapping from input to output
2021-07-29 21:09:18 +0200 <echoone> You guys should check out APL. The take the grammar stuff seriously.
2021-07-29 21:09:24 +0200 <echoone> You guys should check out APL. They take the grammar stuff seriously.
2021-07-29 21:09:35 +0200 <dsal> :t get
2021-07-29 21:09:36 +0200 <lambdabot> MonadState s m => m s
2021-07-29 21:09:48 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 21:10:07 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 21:10:17 +0200 <dsal> You don't need `getX` when you have `gets`
2021-07-29 21:10:19 +0200 <dsal> :t gets
2021-07-29 21:10:20 +0200 <lambdabot> MonadState s m => (s -> a) -> m a
2021-07-29 21:10:33 +0200 <Drew[m]> There's also `traverse`, rather than traversal.
2021-07-29 21:10:35 +0200pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: gone to sleep. ZZZzzz…)
2021-07-29 21:10:58 +0200 <dsal> :t traversed
2021-07-29 21:11:00 +0200 <lambdabot> (Indexable Int p, Traversable f1, Applicative f2) => p a (f2 b) -> f1 a -> f2 (f1 b)
2021-07-29 21:11:43 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-29 21:11:45 +0200 <deejaytee> echoone: that's been a source of difficulty for me in learning J - while at first parts of speech are useful for remembering what does what, it starts to clash later on
2021-07-29 21:12:14 +0200 <EvanR> map seems a bit ambiguous... probably because this is a purely mathematical idea to me
2021-07-29 21:12:15 +0200 <deejaytee> but I suppose it's better than no terminology whatsoever
2021-07-29 21:12:22 +0200 <dsal> I've seen people get hung up on "how do I read this in English?" Such a weird concept. If I could even express my problems in English, I'd probably do that in the first place.
2021-07-29 21:12:28 +0200 <EvanR> math doesn't really verb anything
2021-07-29 21:12:51 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.2)
2021-07-29 21:12:54 +0200 <roboguy_> EvanR: what about "acting on"
2021-07-29 21:13:07 +0200 <roboguy_> or "pulling back along"
2021-07-29 21:13:19 +0200 <EvanR> right, group action. Sounds like a case of math people trying to get inspiration from language, like us
2021-07-29 21:13:29 +0200 <EvanR> pullback definitely
2021-07-29 21:13:33 +0200 <EvanR> it's verby
2021-07-29 21:13:40 +0200 <EvanR> 'a pullback' lol
2021-07-29 21:14:04 +0200 <EvanR> a case of math terms becoming ambiuously part-of-speeched
2021-07-29 21:14:37 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
2021-07-29 21:14:49 +0200 <EvanR> lens gets a lot of help from adjectives
2021-07-29 21:15:13 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com)
2021-07-29 21:15:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 21:15:27 +0200 <EvanR> but group actions, pullbacks, and lenses still aren't "doing" more or less than anything else
2021-07-29 21:15:43 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 21:15:44 +0200 <lechner> Hi, how do I best print each element of an array on a separate line, prepended by a space, please?
2021-07-29 21:15:48 +0200 <dsal> `map` is also a little weird because you can also think of it as just sort of sticking a transformation on list accessors. It doesn't *actually* build a new list after applying your function to every element in the list.
2021-07-29 21:15:58 +0200 <dsal> lechner: mapM_ print thing
2021-07-29 21:16:17 +0200 <dsal> Oh, if you want to add a space, you can stick one in the action there.
2021-07-29 21:16:35 +0200 <EvanR> yes lazy evaluation makes verbing even less applicable, if you wanted to think of verbs causing the compuer to heat up and do things
2021-07-29 21:16:36 +0200 <dsal> mapM_ (\x -> putStr " " >> print x) thing
2021-07-29 21:16:38 +0200 <roboguy_> :t unlines
2021-07-29 21:16:39 +0200 <lambdabot> [String] -> String
2021-07-29 21:17:26 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-29 21:17:32 +0200 <EvanR> verbs <-> do work
2021-07-29 21:17:35 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2021-07-29 21:17:45 +0200 <dsal> @undo do work
2021-07-29 21:17:45 +0200 <lambdabot> work
2021-07-29 21:17:50 +0200 <dsal> There's no way out!
2021-07-29 21:17:52 +0200 <EvanR> fix error
2021-07-29 21:18:38 +0200finsternis(~X@23.226.237.192) (Remote host closed the connection)
2021-07-29 21:19:04 +0200echoone(~echoone@188.74.32.13) (Quit: Client closed)
2021-07-29 21:19:12 +0200 <EvanR> actually this entire train of thought about programming = a bunch of verbs to make stuff 'happen' in a row might be the initial key thing to tell people to forget when starting haskell
2021-07-29 21:19:22 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-29 21:20:31 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-07-29 21:20:54 +0200 <dsal> The intuition starts to break down with infinite lists, but yeah, it's helpful. It's also helpful when you do stuff like `map f . map g`. If you think about the `map` doing something, it suddenly seems expensive. If you think about it just shoving filters on the thing, you won't spend hours trying to make your code more complicated to do what RULEs can do.
2021-07-29 21:21:20 +0200 <Drew[m]> I'm fine with thinking that `map` "maps a function over a list", that it "does stuff"
2021-07-29 21:21:20 +0200 <Drew[m]> It just only does stuff when the stuff is needed.
2021-07-29 21:21:56 +0200 <lechner> that's another point
2021-07-29 21:21:57 +0200 <dsal> Sure. It's not a bad mental model, but it's not the only mental model. :)
2021-07-29 21:22:25 +0200 <EvanR> you can get pretty far in haskell imagining code running by rewriting expressions
2021-07-29 21:24:16 +0200 <EvanR> which is both an act and an expression of 'what this function means'
2021-07-29 21:24:51 +0200 <lechner> dsal: should your lambda above print the array element (which are of type String) in quotes?
2021-07-29 21:24:59 +0200 <lechner> elements
2021-07-29 21:25:14 +0200 <dsal> lechner: Yeah, that's what `print` does. I wasn't sure what the type was. You can use `putStrLn`
2021-07-29 21:25:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-29 21:25:29 +0200 <EvanR> the second thing there makes it easy to see you could reverse it without causing problems
2021-07-29 21:25:39 +0200 <dsal> lechner: It's good to understand what the parts were. :)
2021-07-29 21:25:53 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-29 21:25:54 +0200 <EvanR> imperative programming often involves doing things that can't be reversed
2021-07-29 21:26:11 +0200 <EvanR> e.g. updating arrays
2021-07-29 21:27:19 +0200 <maerwald> so what's the alternative to brick on windows?
2021-07-29 21:27:44 +0200 <lechner> dsal: could i also write mapM_ (\x -> putStrLn $ " " <> x) ?
2021-07-29 21:30:25 +0200shaprhops
2021-07-29 21:31:20 +0200 <[exa]> lechner: a complimentary bit of compression: `mapM_ (putStrLn . (' ':) )`
2021-07-29 21:31:37 +0200 <Drew[m]> <EvanR> "you can get pretty far in..." <- Isn't that to a degree what STG does?
2021-07-29 21:31:43 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
2021-07-29 21:32:04 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com)
2021-07-29 21:32:39 +0200 <dsal> lechner: I'll allow it. :)
2021-07-29 21:32:58 +0200 <EvanR> you can think of it like that
2021-07-29 21:33:16 +0200 <maerwald> so how do I use this from haskell https://github.com/migueldeicaza/gui.cs
2021-07-29 21:33:24 +0200 <dsal> lechner: There's mapM_ and forM_ -- I think I've used the latter once.
2021-07-29 21:33:26 +0200 <dsal> :t forM_
2021-07-29 21:33:27 +0200 <lambdabot> (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
2021-07-29 21:33:33 +0200ubert(~Thunderbi@178.165.190.122.wireless.dyn.drei.com) (Ping timeout: 276 seconds)
2021-07-29 21:33:55 +0200bontaq`(~user@ool-18e47f8d.dyn.optonline.net)
2021-07-29 21:34:10 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net)
2021-07-29 21:34:28 +0200 <lechner> [exa]: so this would be my first point-free, but unfortunately I actually have to prepend muliple characters (" - "). Is that possible?
2021-07-29 21:34:41 +0200 <dsal> lechner: Find out! :)
2021-07-29 21:34:54 +0200 <lechner> with cons?
2021-07-29 21:35:14 +0200 <dsal> Understand what it's doing. There's not much magic there.
2021-07-29 21:35:23 +0200 <dsal> :t (' ':)
2021-07-29 21:35:25 +0200 <lambdabot> [Char] -> [Char]
2021-07-29 21:35:34 +0200 <dsal> :t putStrLn . (' ':)
2021-07-29 21:35:36 +0200 <lambdabot> [Char] -> IO ()
2021-07-29 21:36:11 +0200 <dsal> Do you understand sections?
2021-07-29 21:36:18 +0200 <lechner> i am doing it wrong
2021-07-29 21:36:45 +0200 <dsal> You *can* use `:` but it'd be a little weird.
2021-07-29 21:36:47 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds)
2021-07-29 21:37:13 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-29 21:37:14 +0200 <lechner> mapM_ (putStrLn . (" - ":)) (Task.inputs task) gives me No instance for (Data.String.IsString Char) arising from literal
2021-07-29 21:37:42 +0200bontaq`bontaq
2021-07-29 21:37:43 +0200 <dsal> So, taking a step back.
2021-07-29 21:37:47 +0200 <dsal> :t (" - ":)
2021-07-29 21:37:48 +0200 <lambdabot> [[Char]] -> [[Char]]
2021-07-29 21:38:07 +0200 <[exa]> lechner: you confused "" and '', the second is only a single char that can be prepended with :
2021-07-29 21:38:10 +0200 <dsal> I don't think that's what you want.
2021-07-29 21:38:25 +0200 <[exa]> for strings, you need at least (" -" ++)
2021-07-29 21:38:44 +0200 <dsal> @pl \x -> putStrLn $ " " <> x
2021-07-29 21:38:44 +0200 <lambdabot> putStrLn . (" " <>)
2021-07-29 21:38:54 +0200 <lechner> maybe putStr . (" - " ++) ?
2021-07-29 21:39:06 +0200 <dsal> That's not the most egregious point freedom.
2021-07-29 21:39:14 +0200 <dsal> But you need to understand what it's saying.
2021-07-29 21:39:54 +0200 <lechner> i actually wrote that before seeing [exa]'s response
2021-07-29 21:39:59 +0200 <dsal> > (" - " <>) "dash"
2021-07-29 21:40:00 +0200 <lambdabot> " - dash"
2021-07-29 21:40:24 +0200 <[exa]> lechner: np :]
2021-07-29 21:40:40 +0200alx741(~alx741@181.196.69.4) (Ping timeout: 256 seconds)
2021-07-29 21:42:18 +0200chomwitt(~chomwitt@ppp-94-67-203-142.home.otenet.gr)
2021-07-29 21:42:45 +0200 <lechner> so, perhaps to state the obvious: a lambda with one variable is a partially applied function with one degree of freedom remainig, right? (in beginner's parlance)
2021-07-29 21:43:52 +0200 <dsal> I would say it doesn't make sense to call a function partially applied if it has one argument.
2021-07-29 21:44:20 +0200 <dsal> If a function takes two arguments and you supply one, it's partially applied.
2021-07-29 21:44:56 +0200 <dsal> Sections are a way of specifying that a function that takes two arguments is either partially applied in its first or second argument.
2021-07-29 21:45:42 +0200 <dsal> > . ("¡¡¡" <>) . (<> "!!!") $ "It can do both.
2021-07-29 21:45:44 +0200 <lambdabot> <hint>:1:1: error: parse error on input ‘.’
2021-07-29 21:45:45 +0200 <dsal> > . ("¡¡¡" <>) . (<> "!!!") $ "It can do both."
2021-07-29 21:45:47 +0200 <lambdabot> <hint>:1:1: error: parse error on input ‘.’
2021-07-29 21:45:54 +0200 <dsal> > ("¡¡¡" <>) . (<> "!!!") $ "It can do both."
2021-07-29 21:45:56 +0200 <lambdabot> "\161\161\161It can do both.!!!"
2021-07-29 21:45:57 +0200 <dsal> Man, I'm not smart today.
2021-07-29 21:46:00 +0200 <dsal> Also, boo.
2021-07-29 21:46:06 +0200 <Drew[m]> <maerwald> "so how do I use this from..." <- I've never done this before so I'm just learning as I go and probably not telling you what you don't already know but according to stack overflow you can call Haskell from C# by just using Haskell's FFI as you would to make Haskell callable from C, and using C#'s FFI as you would to call a C function. I assume the same idea applies in reverse.
2021-07-29 21:46:20 +0200vicfred(~vicfred@user/vicfred) (Ping timeout: 258 seconds)
2021-07-29 21:47:10 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 244 seconds)
2021-07-29 21:47:33 +0200 <lechner> wow, my little program is 18 megabytes! is haskell statically lihked like golang?
2021-07-29 21:47:53 +0200 <dminuoso> lechner: Yes and no.
2021-07-29 21:48:09 +0200 <dminuoso> The haskell object files get statically linked in, but native libraries are dynamically linked
2021-07-29 21:48:43 +0200 <dminuoso> lechner: Try setting `split-sections: True` in your ~/.cabal/config, and then also enable executable stripping in the cabal invocation.
2021-07-29 21:48:50 +0200 <dsal> lechner: You just have room to grow!
2021-07-29 21:48:55 +0200 <dminuoso> Note that this will rebuild all transitive dependencies
2021-07-29 21:49:00 +0200 <dsal> If it's 18MB, you should do 18MB worth of stuff in it.
2021-07-29 21:49:08 +0200 <dminuoso> This can easily get the size down to say 1MiB
2021-07-29 21:49:21 +0200 <dsal> Is it rust that prioritized tiny binaries?
2021-07-29 21:50:07 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
2021-07-29 21:52:28 +0200 <delYsid> Whats the "correct" way to use "at" from the Lens package with a Map where I know the key is present? at foo . to fromJust looks weird :-)
2021-07-29 21:52:53 +0200finsternis(~X@23.226.237.192)
2021-07-29 21:52:56 +0200 <dminuoso> delYsid: Hard to say what "correct" means without knowing your usage pattern.
2021-07-29 21:53:02 +0200 <delYsid> and ^?! doesnt work.
2021-07-29 21:53:10 +0200 <dminuoso> delYsid: But you can use: at foo . _Just
2021-07-29 21:53:19 +0200 <dminuoso> Consider preview to consume this
2021-07-29 21:53:21 +0200alx741(~alx741@181.196.69.85)
2021-07-29 21:53:43 +0200 <dminuoso> % import Data.Map qualified as M
2021-07-29 21:53:43 +0200 <yahb> dminuoso:
2021-07-29 21:54:49 +0200burnside_(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 21:54:49 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-07-29 21:54:52 +0200cjay(cjay@nerdbox.nerd2nerd.org)
2021-07-29 21:54:54 +0200 <dminuoso> % preview (at "foo" . _Just) (M.fromList [("foo", 1), ("bar", 2)])
2021-07-29 21:54:55 +0200 <yahb> dminuoso: Just 1
2021-07-29 21:55:01 +0200 <dminuoso> delYsid: If you can read what yahb just said.
2021-07-29 21:55:35 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-29 21:55:35 +0200burnside_(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-07-29 21:57:27 +0200fendor(~fendor@178.165.162.84.wireless.dyn.drei.com) (Remote host closed the connection)
2021-07-29 21:57:31 +0200 <lechner> dminuoso: stripping is not on by default? https://cabal.readthedocs.io/en/3.4/cabal-project.html#cfg-field-executable-stripping
2021-07-29 21:58:49 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-07-29 21:58:50 +0200 <delYsid> dminuosoBut now the result is a Just again :-) I was joping to get a pure result, since, I know the key must be present...
2021-07-29 21:59:52 +0200 <delYsid> % view (at "foo" . to fromJust) (M.fromList [("foo", 1), ("bar", 2)])
2021-07-29 21:59:52 +0200 <yahb> delYsid: 1
2021-07-29 22:01:47 +0200qbt(~edun@user/edun) (Ping timeout: 245 seconds)
2021-07-29 22:02:42 +0200fendor(~fendor@178.165.162.84.wireless.dyn.drei.com)
2021-07-29 22:02:56 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net)
2021-07-29 22:03:09 +0200 <amesgen[m]> % M.fromList [("foo", 1), ("bar", 2)] ^?! ix "foo"
2021-07-29 22:03:09 +0200 <yahb> amesgen[m]: 1
2021-07-29 22:03:28 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-29 22:03:42 +0200 <amesgen[m]> delYsid: ^ this should be about as succinct as it gets
2021-07-29 22:07:17 +0200 <lechner> dsal [exa] dminuoso roboguy_: thanks so much for your help today!
2021-07-29 22:08:52 +0200 <roboguy_> lechner: you're welcome!
2021-07-29 22:09:46 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 240 seconds)
2021-07-29 22:10:04 +0200 <delYsid> amesgen[m]: Thanks! This is a bit surprising, as I thought ix only worked for arrays and such... So it actually does work for maps!
2021-07-29 22:10:56 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 244 seconds)
2021-07-29 22:11:16 +0200hyiltiz(~quassel@31.220.5.250)
2021-07-29 22:13:20 +0200 <amesgen[m]> delYsid: yeah, there are many instances, even for functions (by application): https://hackage.haskell.org/package/lens-5.0.1/docs/Control-Lens-At.html#t:Ixed
2021-07-29 22:17:53 +0200jeslie0(~user@135-23-172-182.cpe.pppoe.ca)
2021-07-29 22:18:27 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-07-29 22:18:28 +0200 <delYsid> k, tnx
2021-07-29 22:21:25 +0200jeslie0(~user@135-23-172-182.cpe.pppoe.ca) (Remote host closed the connection)
2021-07-29 22:24:26 +0200Guest90(~Guest90@ip98-163-211-112.no.no.cox.net)
2021-07-29 22:24:40 +0200Guest90(~Guest90@ip98-163-211-112.no.no.cox.net) (Client Quit)
2021-07-29 22:25:01 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net) (Changing host)
2021-07-29 22:25:01 +0200Cajun(~Cajun@user/cajun)
2021-07-29 22:25:21 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-29 22:26:34 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-29 22:29:34 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2)
2021-07-29 22:30:21 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-29 22:30:54 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-07-29 22:31:57 +0200acidjnk_new(~acidjnk@p200300d0c72b9507354aa6404eb54f37.dip0.t-ipconnect.de)
2021-07-29 22:34:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-29 22:40:30 +0200Null_A(~null_a@2601:645:8700:2290:44f7:81a6:341:7abe)
2021-07-29 22:41:20 +0200 <maerwald> sm: following your advice, I updated the FAQ section of the README, so next time I can just link there
2021-07-29 22:41:36 +0200Guest9(~Guest9@103.240.170.208) (Quit: Connection closed)
2021-07-29 22:42:55 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2021-07-29 22:47:47 +0200__monty__(~toonn@user/toonn)
2021-07-29 22:48:38 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-29 22:50:26 +0200vicfred(~vicfred@user/vicfred)
2021-07-29 22:50:27 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-07-29 22:56:45 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 276 seconds)
2021-07-29 23:08:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-07-29 23:08:46 +0200 <sm> maerwald: +1, that's a time saver. https://gitlab.haskell.org/haskell/ghcup-hs#faq
2021-07-29 23:08:47 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
2021-07-29 23:09:14 +0200 <maerwald> sm: also, earlier you asked about goals: https://gitlab.haskell.org/haskell/ghcup-hs#design-goals
2021-07-29 23:09:23 +0200 <sm> sorry to leave abruptly last night, it was 2am here and we were not getting anywhere
2021-07-29 23:09:46 +0200 <sm> As with the reddit answer, I think more work is needed to make this more compelling/clear. And I understand, it's not easy.
2021-07-29 23:10:02 +0200 <maerwald> what needs to be more clear?
2021-07-29 23:10:59 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-29 23:14:18 +0200 <sm> the answer to "Why should I use ghcup over stack?", eg. The answer doesn't quite answer the question, as in eg "because X" or "you shouldn't" or "it's a wrong question because Y". I feel we have a lot of docs like this in the haskell world which don't quite cut to the point, I have lots myself so I'm interested in this kind of writing. As always, just IMHO and you may disagree with any of it.
2021-07-29 23:15:04 +0200 <maerwald[m]> The answer depends on your needs
2021-07-29 23:15:12 +0200 <sm> yes, indeed
2021-07-29 23:15:28 +0200 <sm> exactly so
2021-07-29 23:15:42 +0200agua(~agua@2804:18:4f:b157:1:0:6976:119)
2021-07-29 23:16:33 +0200 <maerwald[m]> That's why I don't answer, but explain
2021-07-29 23:17:11 +0200 <sm> I'm particularly interested in the needs of newcomers/folks not well versed in the history of haskell tools. Since they are a much bigger group and how we answer them affects haskell's future
2021-07-29 23:17:47 +0200 <sm> I think our explanations are often not the kind they need
2021-07-29 23:19:12 +0200 <maerwald[m]> They are a much bigger group?
2021-07-29 23:19:39 +0200 <sm> and I think the effort of finding a simple clear answer pays off big time. If we can't provide one, that's valuable information
2021-07-29 23:19:44 +0200pesada(~agua@2804:14c:8793:8e2f:3944:8017:7f63:8e28) (Ping timeout: 252 seconds)
2021-07-29 23:20:01 +0200 <maerwald[m]> I'd guess the question doesn't come from a newcomer, because it already contains misconceptions
2021-07-29 23:20:11 +0200 <sm> "I'm new to this. Why should I choose it over stack?". I take it at face value.
2021-07-29 23:21:05 +0200 <maerwald[m]> "New to ghcup" or "new to haskell"?
2021-07-29 23:21:22 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 245 seconds)
2021-07-29 23:21:29 +0200 <sm> either, both
2021-07-29 23:21:42 +0200 <maerwald[m]> No idea
2021-07-29 23:22:17 +0200 <maerwald[m]> Anyway, that seems more like a discussion for a download page
2021-07-29 23:24:04 +0200sheepduck(~sheepduck@user/sheepduck)
2021-07-29 23:24:22 +0200 <maerwald[m]> I don't think "you should use my tool, because" is something I want in any of my readmes
2021-07-29 23:24:40 +0200bruceleewees(~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) (Read error: Connection reset by peer)
2021-07-29 23:25:19 +0200 <sm> you can answer the question without saying that, as in the examples I gave above
2021-07-29 23:25:27 +0200bruceleewees(~bruceleew@83.24.236.64.ipv4.supernova.orange.pl)
2021-07-29 23:26:06 +0200 <maerwald[m]> I think the question is answered
2021-07-29 23:26:24 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-07-29 23:26:40 +0200 <motle> can you do my code for me?
2021-07-29 23:27:24 +0200gentauro(~gentauro@user/gentauro)
2021-07-29 23:27:29 +0200 <maerwald[m]> motle: what do you pay?
2021-07-29 23:27:38 +0200 <motle> salad?
2021-07-29 23:28:01 +0200 <maerwald[m]> With mozzarella?
2021-07-29 23:28:10 +0200 <motle> youd have to, you know, bring your own
2021-07-29 23:28:38 +0200 <motle> dont try just salad, cheapskates
2021-07-29 23:28:47 +0200 <motle> suplements people,
2021-07-29 23:30:08 +0200 <maerwald[m]> Ok, you pay in supplements?
2021-07-29 23:30:35 +0200 <motle> you can have salad, and you can go elsewhere for your suplements
2021-07-29 23:31:09 +0200 <maerwald[m]> I think I'm out :)
2021-07-29 23:31:10 +0200 <motle> idk if this counts as fair trade or what...
2021-07-29 23:31:18 +0200 <motle> yeah me to!
2021-07-29 23:31:30 +0200 <motle> fucking diet!
2021-07-29 23:31:50 +0200 <maerwald[m]> This isn't Haskell Den :p
2021-07-29 23:32:06 +0200 <motle> you were wanting paid
2021-07-29 23:32:10 +0200retroid_(~retro@5ec19a54.skybroadband.com) (Quit: Connection error?!)
2021-07-29 23:32:16 +0200 <motle> i just wanted codezzzz
2021-07-29 23:32:27 +0200 <motle> all my code is defective
2021-07-29 23:32:36 +0200 <motle> its all strewn
2021-07-29 23:32:56 +0200 <motle> i cant unfurl it
2021-07-29 23:33:30 +0200 <motle> its like trying to play a melting guitar
2021-07-29 23:34:08 +0200pesada(~agua@191.177.175.57)
2021-07-29 23:34:32 +0200 <motle> idk, i think it might have been important for something, i cant tell
2021-07-29 23:34:41 +0200 <roboguy_> motle: sometimes when that happens to me, I start over. Usually I have fresh insight and come up with a new way to structure the code
2021-07-29 23:34:42 +0200neightchan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
2021-07-29 23:35:04 +0200 <motle> yeah, i do that, and i see the universe instantly
2021-07-29 23:35:19 +0200 <roboguy_> hmm
2021-07-29 23:35:33 +0200 <motle> and then all my code kind of evaporates
2021-07-29 23:36:13 +0200 <motle> i mean im like, whatt was the oh the huge graph of everything with the polymorphic loopy bp oh god i cant do that
2021-07-29 23:36:28 +0200 <motle> helpf
2021-07-29 23:37:06 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-29 23:37:10 +0200 <motle> *points to years of groundwork dashed about the place*
2021-07-29 23:37:26 +0200 <motle> its the thing!
2021-07-29 23:37:52 +0200 <motle> i had various parts of it working at times...
2021-07-29 23:37:53 +0200agua(~agua@2804:18:4f:b157:1:0:6976:119) (Ping timeout: 252 seconds)
2021-07-29 23:38:03 +0200 <motle> im sure of it!
2021-07-29 23:38:18 +0200dhil(~dhil@195.213.192.47) (Ping timeout: 240 seconds)
2021-07-29 23:38:28 +0200 <motle> at what point does it self assemble?
2021-07-29 23:38:45 +0200 <motle> i try googling things and it just ends up more disparate!
2021-07-29 23:39:38 +0200aegon(~mike@174.127.249.180)
2021-07-29 23:39:43 +0200 <motle> i guess left in this state long enough gona try hitting it with a hammer
2021-07-29 23:39:50 +0200 <motle> at some point!
2021-07-29 23:39:54 +0200 <aegon> is there an easy way to host the haddock generated by stack through a stack command, if not what web server do you use
2021-07-29 23:40:02 +0200 <aegon> or what is your favorite method
2021-07-29 23:40:14 +0200agua(~agua@2804:18:4f:b157:1:0:6976:119)
2021-07-29 23:40:57 +0200pesada(~agua@191.177.175.57) (Ping timeout: 258 seconds)
2021-07-29 23:41:09 +0200 <arkanoid> I've almost at the end of my "first week with haskell experiment" and it has been a great experience. But I've some high level question for more experienced users and are more on the production side of haskell
2021-07-29 23:42:07 +0200 <motle> iv tried slopping the code back *into* the cup.....
2021-07-29 23:42:20 +0200 <motle> but most of it isnt in the cup...
2021-07-29 23:42:42 +0200 <motle> is this common?
2021-07-29 23:42:49 +0200 <Drew[m]> aegon: You run your own hoogle server with --local to get a version of hoogle that only provides documentation for the actual version of dependencies you're currently compiling with
2021-07-29 23:43:07 +0200son0p-(~ff@181.136.122.143) (Remote host closed the connection)
2021-07-29 23:43:07 +0200son0p(~ff@181.136.122.143) (Remote host closed the connection)
2021-07-29 23:43:15 +0200 <Drew[m]> I'm a cabal user but there's probably a `stack hoogle` command, I can't remember
2021-07-29 23:43:37 +0200 <motle> yeah, your right, there was a command for that
2021-07-29 23:44:15 +0200 <arkanoid> one thing that scares me te most in picking up haskell for a serious project is the fragmentation of the haskell packages. I have no feeling of a center where "big and enstablished" libraries/framework revolves around. When do libraries get "blessed" by the community? When do library dies and gets deprecated?
2021-07-29 23:44:16 +0200 <Drew[m]> So you'd want `stack hoogle --local` probably
2021-07-29 23:44:48 +0200 <motle> arkanoid: the fragmentation does not happen in haskell, only at its boarder
2021-07-29 23:44:59 +0200 <motle> siege!
2021-07-29 23:45:11 +0200 <deejaytee> arkanoid: stackage could sort of be construed as a "big and established" ground, though some of the libraries still are on the small side
2021-07-29 23:45:14 +0200 <motle> might complain to brussles
2021-07-29 23:45:34 +0200 <dsal> arkanoid: That's an interesting concern. But for the most part, I grab things that work for me and use them or make my own.
2021-07-29 23:45:40 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
2021-07-29 23:45:41 +0200 <motle> they say we should get on with the graph
2021-07-29 23:45:45 +0200 <maerwald[m]> Lol
2021-07-29 23:46:02 +0200 <dsal> But yeah, stackage ends up filtering out things that aren't maintained well because language changes end up breaking things and they fall out of stackage if people don't update their stuff.
2021-07-29 23:46:25 +0200 <dsal> (I still end up using things that aren't in stackage for a few reasons, though)
2021-07-29 23:46:25 +0200fluffyballoon(~fluffybal@pat-verona-h.epic.com)
2021-07-29 23:47:28 +0200 <motle> coffee??
2021-07-29 23:47:58 +0200spirit_(~spirit@171.61.156.55) (Quit: Konversation terminated!)
2021-07-29 23:47:59 +0200 <yushyin> i usually just use libraries I need, ask here for opinions (lots of opinions here) and I (try to) avoid certain authors
2021-07-29 23:48:16 +0200 <aegon> Drew[m]: hoogle --server :)
2021-07-29 23:48:21 +0200 <aegon> thanks!
2021-07-29 23:48:41 +0200 <Drew[m]> Remember the `--local`!
2021-07-29 23:48:43 +0200 <arkanoid> I've just searched a library for testing in a stackage LTS distribution, I get more than 30 different libraries for just testing
2021-07-29 23:49:04 +0200 <dsal> That's not a meaningful thing to do, though. What are you expecting to find?
2021-07-29 23:49:14 +0200 <dsal> Something like tasty?
2021-07-29 23:49:14 +0200 <motle> local hoogle server?
2021-07-29 23:49:23 +0200 <motle> wait...
2021-07-29 23:49:50 +0200 <motle> what about mercurial?
2021-07-29 23:50:13 +0200 <motle> ih god my code! such a mess
2021-07-29 23:50:18 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-07-29 23:50:54 +0200xff0x(~xff0x@2001:1a81:52ef:f900:5eb1:ed8e:7709:10d6) (Ping timeout: 272 seconds)
2021-07-29 23:50:55 +0200deejaytee(~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Killed (tungsten.libera.chat (Nickname regained by services)))
2021-07-29 23:51:00 +0200deejaytee(~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk)
2021-07-29 23:51:10 +0200 <motle> hang on ill just take its jacobian...
2021-07-29 23:51:33 +0200 <sm> aegon: also `stack haddock --open`
2021-07-29 23:51:36 +0200xff0x(~xff0x@2001:1a81:52ef:f900:6be3:99e6:cbd0:482d)
2021-07-29 23:52:42 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-07-29 23:53:10 +0200 <motle> harmonic driving version control is whats required.
2021-07-29 23:53:19 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-07-29 23:53:25 +0200 <motle> i think mine crashed...
2021-07-29 23:53:55 +0200 <arkanoid> if I want to put haskell into my toolbelt as production language, it's required to put haskell on the time-to-write-a-program graph. I have a strong feeling that the fragmentation of the libraries is going to make up most of the problems here
2021-07-29 23:53:56 +0200 <motle> i was hoping you might have seen a wheel rolling by...
2021-07-29 23:54:22 +0200 <motle> dont "time to write a program graph" me sunny jim
2021-07-29 23:54:27 +0200 <sm> arkanoid: hackage is a strong central package store, anything intended to be reused appears there. stackage is the rolling series of stable curated subsets of that. Like debian unstable, testing, stable, or similar
2021-07-29 23:54:39 +0200 <dsal> arkanoid: That sounds good. I've had worse problems with library fragmentation in all the other languages I've used. :)
2021-07-29 23:55:14 +0200 <sm> stackage was the answer to "how to I make this reproducible for production". In recent times, cabal.project is another answer
2021-07-29 23:55:24 +0200 <motle> anyway its not representative, i wasnt even sure i was driving tbh
2021-07-29 23:55:30 +0200 <dsal> My stack default template drops out a project with a lib, app, and test suite in tasty with an example quickcheck property I can run immediately.
2021-07-29 23:56:20 +0200 <arkanoid> apart from new languages where the ecosystem is quite small, among the "big and mature" languages I find haskell the one out of a central control. I'm still talking about the ecosystem, not the implementation itself oviously
2021-07-29 23:57:18 +0200 <motle> advice for people starting learning haskell would be something like "start simple, abstract, keep abstracting - ok enough abstracting!! stop already!! gigs of .hs files, no no no...
2021-07-29 23:57:53 +0200 <dsal> arkanoid: I'm not sure what you mean. What makes something like go or java better in this regard?
2021-07-29 23:58:09 +0200 <motle> its at the point where it goes all styrofoam expanding foam you want to put the cup down
2021-07-29 23:58:31 +0200 <motle> if any of the surfaces are solid
2021-07-29 23:59:00 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-07-29 23:59:04 +0200 <dsal> go ships with an implementation of quickcheck that's objectively bad and they froze the API over a decade ago. heh
2021-07-29 23:59:34 +0200 <arkanoid> go has google that delivers basically what'ever needed to be productive
2021-07-29 23:59:45 +0200deejayteeGuest5510
2021-07-29 23:59:45 +0200Guest5510(~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) (Killed (sodium.libera.chat (Nickname regained by services)))
2021-07-29 23:59:49 +0200 <dsal> The quickcheck thing I just mentioned is a counter argument to that.
2021-07-29 23:59:50 +0200 <motle> google is a huge productivity inhibitor
2021-07-29 23:59:50 +0200deejaytee(~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net)
2021-07-29 23:59:55 +0200 <sm> go, rust etc. ship one blessed set of tools and everyone's on board with that (or so it appears from the outside). haskell isn't like that, in part because of less corporate support