2022/12/19

2022-12-19 00:00:04 +0100 <geekosaur> I'd say true because that even permeates the compiler, which tries to rewrite things into compositions and then rearranges those
2022-12-19 00:00:18 +0100 <geekosaur> Lisp is also based on lambda callculus, but privileges a different aspect of it
2022-12-19 00:00:24 +0100 <Inst> but haskell at least has ridiculous favoritism to composition as a mode of thinking etc within the compiler
2022-12-19 00:00:38 +0100xacktm(~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
2022-12-19 00:00:45 +0100andreas303(andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
2022-12-19 00:01:18 +0100 <Inst> I'm only trivially familiar with Lisp, I'm thinking about picking up Racket just to get a hold of meta-programming, and because Haskell is hard when you want to do IO, to make productive, non-trivial programs
2022-12-19 00:01:26 +0100 <EvanR> fusion basically requires thinking of stuff as compositions
2022-12-19 00:01:59 +0100 <EvanR> the IO type is great
2022-12-19 00:02:17 +0100 <EvanR> stash it in a data structure, send one through a channel, lol
2022-12-19 00:02:23 +0100 <Inst> it's not, one, IO is not trivially decomposable, no?
2022-12-19 00:02:24 +0100 <geekosaur> I don't find Haskell that hard. phrasing something well for the Haskell view of IO is hard, but usually worth it because it helps you separate concerns
2022-12-19 00:02:38 +0100 <Inst> More specifically, I'm comfortable with readFile / writeFile
2022-12-19 00:02:38 +0100 <geekosaur> you could sort of think of it as MVC taken to its limit
2022-12-19 00:02:47 +0100 <Inst> but you need to understand IO libs
2022-12-19 00:02:57 +0100 <Inst> then there's a preference for streaming IO over lazy IO / strict IO
2022-12-19 00:03:19 +0100 <EvanR> isn't there a preference of streaming everywhere?
2022-12-19 00:03:34 +0100 <geekosaur> and even more than composition, Haskell privileges continuations
2022-12-19 00:03:44 +0100 <Inst> continuations I don't get, unfortunately
2022-12-19 00:04:05 +0100 <Inst> Cont monad, I'm aware of, but don't really understand, nor do I understand how to program in CPS style
2022-12-19 00:04:25 +0100 <Inst> especially since, afaik, CPS doesn't present substantial performance benefits in Haskell
2022-12-19 00:04:34 +0100 <geekosaur> don't worry, almost nobody understands Cont 🙂
2022-12-19 00:04:40 +0100 <Inst> "mother of all monads"
2022-12-19 00:04:45 +0100 <Inst> i.e, all monads can be generated from Contd
2022-12-19 00:04:52 +0100 <Inst> ContT
2022-12-19 00:04:52 +0100 <EvanR> CPS versions of many libs exist for performance basically
2022-12-19 00:05:20 +0100 <EvanR> there's a CPS Writer monad
2022-12-19 00:05:22 +0100 <geekosaur> and the compiler rewrites everything it can to CPS
2022-12-19 00:05:33 +0100 <Inst> but the IO complaint basically comes down to, beyond IO readFile / writeFile, most IO is unergonomic / requires libraries to be ergonomic
2022-12-19 00:05:43 +0100 <Inst> is CPS writer monad cancer?
2022-12-19 00:05:46 +0100 <Inst> I'm told WriterT is cancer
2022-12-19 00:06:02 +0100 <Inst> as of 2020, still space-leaking like a universe
2022-12-19 00:06:12 +0100 <geekosaur> that's because of the limitations of WriterT
2022-12-19 00:06:12 +0100 <EvanR> I/O is unergonomic, that's not haskell's fault xD
2022-12-19 00:06:43 +0100 <EvanR> Writer is fine, but maybe the naming is to evocative
2022-12-19 00:06:46 +0100 <Inst> but the reason I'm headed to Racket next is because most IO things you want to do are handled by IO libs
2022-12-19 00:07:07 +0100 <Inst> and I find it very hard to "get" or master IO libs, in part because IO layer seems substantially harder to train / practice than pure layer
2022-12-19 00:07:14 +0100 <geekosaur> and there's not a lot of pressure to fix it because nobody to speak of uses it, because of its limitations (which have less to do with space leaks than with an earlier discussion you missed)
2022-12-19 00:07:33 +0100 <geekosaur> [18 20:38:05] <c_wraith> sort of, yeah. a good logger gets things onto disk as fast as possible
2022-12-19 00:07:33 +0100 <geekosaur> [18 20:38:26] <c_wraith> Writer accumulates things and completes (or fails) the whole computation before logging anything
2022-12-19 00:07:37 +0100 <Inst> I'm on Windows, and IIRc Hecate's working on GUI lib
2022-12-19 00:07:54 +0100 <Inst> I honestly dislike Monads and would prefer a different effect system if possible, tbh
2022-12-19 00:08:02 +0100 <geekosaur> but Writer looks like something for logging
2022-12-19 00:08:13 +0100shailangsa(~shailangs@host217-39-45-196.range217-39.btcentralplus.com) ()
2022-12-19 00:08:21 +0100 <Inst> whereas Writer keeps a log within pure code
2022-12-19 00:08:32 +0100 <EvanR> no, it's not good for logging period
2022-12-19 00:08:42 +0100 <Inst> then provides a dump of it on request
2022-12-19 00:08:55 +0100 <geekosaur> you've come to an odd place if you dislike monads
2022-12-19 00:08:57 +0100 <EvanR> you can't even do that with Writer xD
2022-12-19 00:09:09 +0100 <Hecate> I am nowhere near completion wrt to ghcup's GTK interface
2022-12-19 00:09:15 +0100 <Hecate> (help very much welcome btw)
2022-12-19 00:09:21 +0100 <Hecate> (GTK is kicking my ass)
2022-12-19 00:09:23 +0100 <geekosaur> and may be in trouble as the concept, if not the implementation, is making inroads in a number of languages
2022-12-19 00:09:24 +0100 <Inst> wish I could help you
2022-12-19 00:09:32 +0100 <monochrom> At this point I'm convinced that everyone disagree on what "logging" means.
2022-12-19 00:09:32 +0100 <dibblego> I don't even know what it means to dislike monads
2022-12-19 00:09:53 +0100 <Inst> dibblego: understanding / misunderstanding papers talking about limitations of monads
2022-12-19 00:10:06 +0100 <Hecate> The Applicative zealots are back at it again
2022-12-19 00:10:21 +0100 <Inst> the anti-monad argument comes as "monads are a transitional form of effect systems and there has to be a better way to do algebraic effects than with monads"
2022-12-19 00:10:48 +0100 <geekosaur> sadly, nobody's actually found one yet
2022-12-19 00:10:49 +0100 <dibblego> that argument is more to do with "effects" than monads
2022-12-19 00:10:52 +0100 <Inst> I'd think it's just rare to hate monads for other reasons than "monads are hard"
2022-12-19 00:10:59 +0100 <Inst> also, pure code isn't really pure ;)
2022-12-19 00:11:03 +0100 <Inst> because they side effect space and time
2022-12-19 00:11:10 +0100 <EvanR> monads aren't effect systems so that's an issue right there
2022-12-19 00:11:15 +0100 <Inst> which is where mtl etc, barris alexis king's efforts, suck
2022-12-19 00:11:18 +0100 <dibblego> "hate monads" invokes the same feeling as "hating the number 3"
2022-12-19 00:11:25 +0100 <Inst> I love the number 9
2022-12-19 00:11:32 +0100 <dibblego> I don't, because it's not 8
2022-12-19 00:11:32 +0100 <Inst> because it's the first number in the multiplication table my mother taught me
2022-12-19 00:11:57 +0100 <monochrom> 6 is very afraid.
2022-12-19 00:12:16 +0100 <EvanR> (:[]) 6
2022-12-19 00:12:17 +0100Lycurgus(~juan@user/Lycurgus)
2022-12-19 00:12:19 +0100 <Inst> i wonder if people are, erm, what's the term?
2022-12-19 00:12:26 +0100 <dibblego> one of the biggest limitations of 6 is that you cannot use it as an odd number
2022-12-19 00:12:34 +0100 <Inst> synaesthetic with numbers
2022-12-19 00:12:35 +0100 <Lycurgus> all good things are 3, monads, meh
2022-12-19 00:12:37 +0100 <dibblego> gotta be a better way
2022-12-19 00:13:04 +0100 <Inst> well, you can, by stapling it into a multiplication with an odd number, no?
2022-12-19 00:13:27 +0100 <dibblego> yeah that's the 6 hack
2022-12-19 00:14:04 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
2022-12-19 00:14:56 +0100 <geekosaur> are we recapitulating that argument the other day which ended with "all primes are odd except 2, which makes it the oddest prime"?
2022-12-19 00:15:10 +0100 <dibblego> haha I missed that
2022-12-19 00:16:01 +0100 <Inst> the sad thing is, the many of the useful properties associated with the number 9 revolve around it being the largest single-digit number in base 10
2022-12-19 00:16:16 +0100LemanR(~LemanR@2607:fb90:54b0:6e01:9403:ba62:4ea3:9eb9)
2022-12-19 00:16:27 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-12-19 00:17:32 +0100 <Inst> btw, since people seem to be active
2022-12-19 00:17:38 +0100 <Inst> if i have code embedded into a closure
2022-12-19 00:17:51 +0100 <Inst> or rather, a definition within a definition as with where or let
2022-12-19 00:17:58 +0100 <Inst> there is no way to access the code, right?
2022-12-19 00:18:11 +0100 <Inst> since I tend to stuff crap into nested definitions these days
2022-12-19 00:20:46 +0100xacktm(~xacktm@user/xacktm)
2022-12-19 00:20:48 +0100 <dsal> You're being a bit loose with terminology. What do you mean "to access the code" ?
2022-12-19 00:21:46 +0100 <Inst> say, I have code nested within code to indicated organization
2022-12-19 00:21:50 +0100Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
2022-12-19 00:22:01 +0100 <Inst> or to present an abstract interface denying access to the internals
2022-12-19 00:22:13 +0100 <Inst> how do I access the internals, then, for testing purposes?
2022-12-19 00:22:27 +0100 <glguy> You don't
2022-12-19 00:22:33 +0100 <Inst> a particularly egregious example would be the time I built a closure to prevent passing around a 33 mb Map around
2022-12-19 00:22:45 +0100 <Inst> can't you do something with template Haskell to take it out?
2022-12-19 00:22:49 +0100 <glguy> nope
2022-12-19 00:23:46 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-19 00:24:05 +0100 <EvanR> you can nest functions in a where clause that are then packed into a record that gets returned for poor man's OOP
2022-12-19 00:24:48 +0100 <EvanR> if you don't actually want that but still want organization use modules
2022-12-19 00:25:45 +0100oopzzozzo(~Thunderbi@user/oopzzozzo)
2022-12-19 00:27:02 +0100fserucas(~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 246 seconds)
2022-12-19 00:28:24 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Ping timeout: 260 seconds)
2022-12-19 00:28:46 +0100 <Inst> yeah but closures, i.e, being able to refer to parameters given on higher level
2022-12-19 00:29:05 +0100 <dsal> They can reach up, but you can't reach down.
2022-12-19 00:29:18 +0100 <Inst> i was just wondering why no one has considered that because nesting etc, or at least sub-modules, enhances code organization and also hides APIs
2022-12-19 00:29:36 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-19 00:29:59 +0100 <Inst> since it is a complaint with FP that there are too many functions, some of them are useful in a modularized state
2022-12-19 00:30:08 +0100 <Inst> some of them are merely convenience to enhance readability
2022-12-19 00:30:14 +0100 <dsal> Who's complained that there are too many functions?
2022-12-19 00:30:28 +0100 <Inst> people coming into FP from IP / mainstream programming
2022-12-19 00:31:18 +0100oopzzozzo(~Thunderbi@user/oopzzozzo) (Quit: oopzzozzo)
2022-12-19 00:31:23 +0100andreas303(andreas303@ip227.orange.bnc4free.com)
2022-12-19 00:31:31 +0100oopzzozzo(~Thunderbi@user/oopzzozzo)
2022-12-19 00:31:39 +0100 <dsal> I guess I've not seen that one. Mostly in other languages I see too many things that could be functions, but aren't so you have to learn some different behavior.
2022-12-19 00:32:25 +0100 <Inst> https://chrisdone.com/posts/haskell-lisp-philosophy-difference/
2022-12-19 00:32:28 +0100 <Inst> which he's retracted
2022-12-19 00:34:12 +0100LemanR(~LemanR@2607:fb90:54b0:6e01:9403:ba62:4ea3:9eb9) (Quit: Client closed)
2022-12-19 00:35:10 +0100 <EvanR> I think mainstream programming doesn't have enough functions
2022-12-19 00:35:14 +0100 <Inst> w/e, i'll get off venting about Haskell for a day
2022-12-19 00:35:25 +0100 <Inst> okay, maybe not
2022-12-19 00:35:27 +0100slack1256(~slack1256@186.11.29.60)
2022-12-19 00:36:15 +0100 <Inst> there are two cons of a FP approach (or, for that matter, a Lisp-like minimum syntax)
2022-12-19 00:36:22 +0100 <Inst> first, too many functions lying around that you have to learn and memorize
2022-12-19 00:36:25 +0100 <EvanR> for example, elixir has a function that maps a Map but only bringing the key along. Nothing built in to like fmap
2022-12-19 00:36:44 +0100LemanR(~LemanR@2607:fb90:54b0:6e01:9403:ba62:4ea3:9eb9)
2022-12-19 00:36:51 +0100 <Inst> no typeclasses in Elixir, right?
2022-12-19 00:37:06 +0100 <EvanR> you don't have to learn any functions, you can paste the code from those functions everywhere they would be used
2022-12-19 00:37:38 +0100 <EvanR> that that just works is another benefit of functional programming
2022-12-19 00:37:38 +0100 <Inst> which is less convenient than reading stuff, and arguably makes for less readable code
2022-12-19 00:37:41 +0100 <Inst> it creates a scalability issue
2022-12-19 00:38:15 +0100 <Inst> you can implement a MSP / IP-type minimum API with definition nesting, or for that matter, modules, but my experiment with modular layout was that there were too many modules
2022-12-19 00:38:38 +0100 <Inst> definition nesting creates the issue that subfunctions are hard to test
2022-12-19 00:38:54 +0100 <EvanR> yeah so why would you do it
2022-12-19 00:39:06 +0100kenaryn(~aurele@89-88-44-27.abo.bbox.fr) (Quit: leaving)
2022-12-19 00:39:07 +0100 <EvanR> that's a problem in every language that has inner functions
2022-12-19 00:39:41 +0100 <Inst> organization, i.e, i don't want a given function to be exposed to the public namespace
2022-12-19 00:39:51 +0100 <Inst> but the problem with not being exposed to the public namespace is, well, can't test
2022-12-19 00:40:12 +0100 <EvanR> namespace management is something you do at the module level
2022-12-19 00:40:20 +0100 <EvanR> not inside a function
2022-12-19 00:40:42 +0100 <EvanR> export or not what you want exported, or not
2022-12-19 00:41:12 +0100 <Inst> but with single-file modules, you end up with problems
2022-12-19 00:41:18 +0100 <Inst> from a UI perspective
2022-12-19 00:41:24 +0100 <Inst> having to switch screens, create more tabs, so on so forth
2022-12-19 00:41:53 +0100 <EvanR> I use bookmarks to go between parts of the same file or different files, seems the same
2022-12-19 00:42:01 +0100 <Inst> i guess for *nixers, you have grep, so not being able to ctrl f isn't that much of a deal
2022-12-19 00:42:26 +0100 <Inst> also, afaik, multi-modules, while supported in OCaml, aren't much used there
2022-12-19 00:42:56 +0100 <Inst> easiest way, tbh, might be to have a different export syntax
2022-12-19 00:43:02 +0100 <EvanR> probably because they actually want to be organized xD
2022-12-19 00:43:49 +0100 <Inst> to access let expressions and where clauses
2022-12-19 00:44:13 +0100 <dsal> I don't think I understand the problem. I use Haskell mostly because I find it easier to understand and refactor code vs. other stuff I've used.
2022-12-19 00:44:24 +0100 <EvanR> 100%
2022-12-19 00:44:44 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 260 seconds)
2022-12-19 00:44:47 +0100 <Inst> i guess, for the time being, i've evolved toward a style that's way too dependent on nested definitions
2022-12-19 00:45:04 +0100 <EvanR> yeah style takes time to figure out
2022-12-19 00:45:07 +0100 <Inst> which is one way to express code organization, and i've stated the drawbacks of other ways to do so
2022-12-19 00:45:26 +0100 <Inst> still, it's funny making 100 line functions in Haskell
2022-12-19 00:45:37 +0100 <EvanR> that sounds awful
2022-12-19 00:45:38 +0100 <dsal> It's not clear what it would even mean to "access a where" clause. My where clauses often close on values other where clauses defined from each other and params. In order to access one, you'd have to push a ton of state down.
2022-12-19 00:45:53 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2022-12-19 00:45:53 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2022-12-19 00:45:53 +0100wroathe(~wroathe@user/wroathe)
2022-12-19 00:45:53 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
2022-12-19 00:46:03 +0100 <EvanR> maybe they want dynamic scoping xD
2022-12-19 00:46:05 +0100 <Inst> dsal: the main drawback of abusing nesting is weak testing
2022-12-19 00:46:10 +0100 <Inst> what is dynamic scoping?
2022-12-19 00:46:30 +0100 <EvanR> it's the opposite of lexical scoping
2022-12-19 00:46:32 +0100 <dsal> We've got things nearly that long in some work code, but that's because people mix in all kinds of tracing and logging and stuff.
2022-12-19 00:46:47 +0100 <EvanR> i.e. impossible to understand
2022-12-19 00:47:12 +0100 <dsal> Inst: One of the schools of testing argues that you should only test the API you present.
2022-12-19 00:47:13 +0100 <Inst> this would be an example
2022-12-19 00:47:14 +0100 <Inst> https://github.com/liamzee/Dicewarist/blob/master/app/Dicewarist.hs
2022-12-19 00:47:47 +0100 <geekosaur> lexical scoping means you can access bindings you are nested within. dynamic scoping means you can access bindings you were called from
2022-12-19 00:47:50 +0100fizbin(~fizbin@user/fizbin)
2022-12-19 00:48:28 +0100 <geekosaur> lexical scoping is therefore clean and easy to figure out, whereas dynamic scoping could lead to nasty surprises because it's all controlled by your caller(s)
2022-12-19 00:48:34 +0100 <EvanR> imagine if you could "access" equations in a where clause, but the free variables suddenly point somewhere else xD
2022-12-19 00:48:49 +0100 <EvanR> very "handy"
2022-12-19 00:48:50 +0100 <dsal> I like that it imports `OK (OK)`
2022-12-19 00:48:50 +0100 <Inst> the idea is that you're not actually supposed to program with it
2022-12-19 00:50:13 +0100 <dsal> Inst: Is there something in here you're wanting to fix?
2022-12-19 00:50:34 +0100 <dsal> My general approach is to write the tests I think I need and then look at a coverage report.
2022-12-19 00:51:12 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-12-19 00:51:32 +0100 <Inst> i mean wouldn't it be standard Haskell style to take out some of the where clausing?
2022-12-19 00:51:56 +0100 <dsal> For what reason?
2022-12-19 00:52:16 +0100 <Inst> because the where clausing isn't necessary
2022-12-19 00:52:19 +0100 <Inst> it improves readability
2022-12-19 00:52:33 +0100 <dsal> I find this super readable, so I need you to walk me a little bit.
2022-12-19 00:52:55 +0100 <dsal> "get rid of where clause" isn't helpful to me. Which ones? Why?
2022-12-19 00:53:41 +0100 <Inst> well, at least, expose functions to testing
2022-12-19 00:54:00 +0100 <Inst> this whole whereclausing thing, tbh, is a miracle
2022-12-19 00:54:40 +0100 <dsal> It's super hard to understand where you're coming from. I don't like naming things because naming things is hard, but why is naming things inherently a problem?
2022-12-19 00:56:42 +0100 <Inst> that's more like an aside, i.e, where clausing in Haskell is a key advantage of haskell code over other languages code
2022-12-19 00:56:57 +0100 <Inst> but it has the drawback that stuff defined within where clauses is not accessible to testing, but that's about it
2022-12-19 00:57:21 +0100 <Inst> i guess in another language, wherein larger and less modularized functions is a norm, there's no real trade-off, so the idea wouldn't be apparent
2022-12-19 00:57:27 +0100 <Inst> because you can't modularize in this way in other languages
2022-12-19 00:57:36 +0100 <dsal> "where clausing" sounds really bizarre. nobody says that. Just say "naming things"
2022-12-19 00:57:37 +0100 <Inst> it's inconvenient to do so
2022-12-19 00:57:54 +0100 <dsal> You can name things in most languages.
2022-12-19 00:57:56 +0100 <Inst> where makes it more specific to the where syntactical sugar
2022-12-19 00:58:09 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-19 00:58:37 +0100 <Inst> w/e, i don't want to cause frustration, and it's getting late
2022-12-19 00:58:41 +0100 <Inst> thanks for humoring me
2022-12-19 00:58:53 +0100crazazy``(~user@130.89.171.62) (Ping timeout: 268 seconds)
2022-12-19 00:58:55 +0100 <dsal> Heh. Sure. That particular example can be written in almost any language.
2022-12-19 01:00:26 +0100j4cc3b(~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-12-19 01:03:45 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-12-19 01:04:26 +0100 <dsal> I pick up a lot of code that just does everything at the top level and you have to spend time trying to draw a useful dependency tree to figure out what actually matters. If `addAnotherDice` only needs to be used in a tiny scope, then putting it at the toplevel just muddies things up. Testing the thing you're providing would help, but `addAnotherDice` needs to be tried in ghci once and then given a better name.
2022-12-19 01:04:59 +0100 <dsal> But this thing being in IO means it's pretty hard to write a test because the IO stuff is coupled with how it's generated. I'd split it that way for testing.
2022-12-19 01:06:18 +0100rnat(uid73555@id-73555.lymington.irccloud.com)
2022-12-19 01:08:48 +0100wroathe(~wroathe@user/wroathe) (Quit: Lost terminal)
2022-12-19 01:10:20 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2022-12-19 01:10:20 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2022-12-19 01:10:20 +0100wroathe(~wroathe@user/wroathe)
2022-12-19 01:10:24 +0100LemanR(~LemanR@2607:fb90:54b0:6e01:9403:ba62:4ea3:9eb9) (Quit: Client closed)
2022-12-19 01:11:13 +0100 <Inst> i'm wondering if i have the only diceware software in Haskell
2022-12-19 01:11:56 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-12-19 01:13:13 +0100 <Inst> nope
2022-12-19 01:13:13 +0100 <Inst> https://hackage.haskell.org/package/alea
2022-12-19 01:14:38 +0100 <Inst> Haskell diceware actually seems pretty popular as a newbie project
2022-12-19 01:14:58 +0100 <dsal> I don't know what diceware is. But if the above one is yours, then the main thing you need to do is separate the IO parts from the functional parts. It sounds like you want to test the functions, but you've combined the IO and the non-IO stuff.
2022-12-19 01:16:45 +0100 <Inst> it's not
2022-12-19 01:16:53 +0100 <Inst> you mean the liamzee github?
2022-12-19 01:17:08 +0100 <Inst> that is mine, the packages aren't
2022-12-19 01:17:15 +0100 <Inst> erm, the hackage etc aren't
2022-12-19 01:17:31 +0100j4cc3b-(~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-12-19 01:20:09 +0100 <dsal> RIght, so `process :: ReaderT Stores IO ()` should be `process :: Stores -> Stores` (like `processInner`). The outer action is just calling that with a store and then writing the result. The coupling is unnecessary and makes testing hard.
2022-12-19 01:20:11 +0100 <EvanR> ideally your haskell program is a thin crunchy IO shell around juicy purely functional interior, says Cale
2022-12-19 01:20:35 +0100slack1256goes for taco bell
2022-12-19 01:20:50 +0100 <dsal> Monads are tacos.
2022-12-19 01:23:28 +0100 <EvanR> To use haskell you first need a bit of calzonegory theory
2022-12-19 01:24:59 +0100 <Inst> yeah, i've had stuff like that, but dicewarist tbh is mostly IO code, which is unfortunate
2022-12-19 01:25:26 +0100 <Inst> the ReaderT is pretty arbitrary, tbh
2022-12-19 01:26:08 +0100 <Inst> it wouldn't hurt that much given the design of the program, were ReaderT removed
2022-12-19 01:26:54 +0100 <Inst> what I did was to move ProcessInner to top-level, rename it
2022-12-19 01:26:59 +0100 <Inst> because that's the real pure part of the function
2022-12-19 01:27:55 +0100shailangsa(~shailangs@host217-39-45-196.range217-39.btcentralplus.com)
2022-12-19 01:27:58 +0100 <slack1256> Is HLS usable to work *on* GHC?
2022-12-19 01:28:09 +0100 <Inst> what does that question mean?
2022-12-19 01:28:19 +0100 <dsal> "Does HLS scale?"
2022-12-19 01:28:43 +0100 <slack1256> The build system in GHC is shake (well still autoconf).
2022-12-19 01:28:43 +0100 <dsal> I think some people use it at work. Our codebase is kind of big.
2022-12-19 01:28:46 +0100 <Inst> oh, you mean, does HLS work when you've git-cloned the GHC repo?
2022-12-19 01:29:05 +0100oopzzozzo(~Thunderbi@user/oopzzozzo) (Quit: oopzzozzo)
2022-12-19 01:29:11 +0100 <slack1256> Yeah, work *on* GHC.
2022-12-19 01:33:54 +0100 <geekosaur> people do use HLS to work on GHC but it requires quite a lot of memory. I think there's some information in the ghc dev wiki
2022-12-19 01:34:17 +0100 <geekosaur> then again, compiling ghc also requires quite a lot of memory, so if you can do one you can probably do the other
2022-12-19 01:35:21 +0100wroathe(~wroathe@user/wroathe) (Quit: Lost terminal)
2022-12-19 01:38:37 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2022-12-19 01:38:37 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2022-12-19 01:38:37 +0100wroathe(~wroathe@user/wroathe)
2022-12-19 01:39:09 +0100ft(~ft@p4fc2a257.dip0.t-ipconnect.de) (Remote host closed the connection)
2022-12-19 01:39:29 +0100 <slack1256> Oh right, the wiki. I was just reading the docs on the repo.
2022-12-19 01:40:02 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
2022-12-19 01:40:39 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-12-19 01:40:54 +0100ft(~ft@p4fc2a257.dip0.t-ipconnect.de)
2022-12-19 01:41:11 +0100 <geekosaur> you might also ask in #ghc since there's a decent chance someone there can give you pointers as to how to set up for HLS
2022-12-19 01:45:10 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-12-19 01:47:46 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-19 01:49:35 +0100acidjnk(~acidjnk@p200300d6e7137a394052686d931fefc2.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-12-19 01:55:32 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
2022-12-19 01:57:14 +0100finsternis(~X@23.226.237.192) (Read error: Connection reset by peer)
2022-12-19 02:00:14 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-19 02:06:46 +0100[_](~itchyjunk@user/itchyjunk/x-7353470)
2022-12-19 02:06:59 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds)
2022-12-19 02:10:41 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-12-19 02:12:23 +0100slack1256(~slack1256@186.11.29.60) (Ping timeout: 255 seconds)
2022-12-19 02:16:49 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-12-19 02:16:49 +0100 <albet70> unit73e , you're right, I just tested it
2022-12-19 02:18:58 +0100 <Inst> why is it that containers generally contain a null value?
2022-12-19 02:19:02 +0100 <Inst> oh wait, mempty identity
2022-12-19 02:19:04 +0100 <Inst> ;_;
2022-12-19 02:20:06 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds)
2022-12-19 02:27:24 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-12-19 02:29:18 +0100xff0x(~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 272 seconds)
2022-12-19 02:30:02 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2022-12-19 02:32:46 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex)
2022-12-19 02:34:57 +0100__xor_xor
2022-12-19 02:35:00 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
2022-12-19 02:35:14 +0100Topsi(~Topsi@dialin-80-228-141-093.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-12-19 02:36:26 +0100quazimodo(~quazimodo@122-199-39-221.ip4.superloop.com)
2022-12-19 02:36:27 +0100 <quazimodo> hi all
2022-12-19 02:36:56 +0100 <quazimodo> I am a perenial 'dont get it' guy and i remember that the last time i tried to internalize how monads work I saw that 'return' was something to define
2022-12-19 02:37:14 +0100 <quazimodo> recently watched a video to refresh & saw that an instance of monad should be an instance of applicative
2022-12-19 02:37:21 +0100 <quazimodo> and the dude didnt' define 'return'
2022-12-19 02:37:37 +0100 <quazimodo> has there been a change to the interface since I last came across this?
2022-12-19 02:45:41 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-19 02:47:41 +0100 <hpc> it now defaults to pure
2022-12-19 02:47:42 +0100 <hpc> :t pure
2022-12-19 02:47:43 +0100 <lambdabot> Applicative f => a -> f a
2022-12-19 02:48:09 +0100 <hpc> since you need that Applicative instance anyway and the two are always the same for lawful instances
2022-12-19 02:49:28 +0100 <dsal> quazimodo: Many of us never write `return` in any code anymore. It's a weird, confusing term.
2022-12-19 02:50:05 +0100 <EvanR> I never found it weird or confusing, but I think there were less monad tutorials back then
2022-12-19 02:50:12 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 255 seconds)
2022-12-19 02:51:19 +0100 <dsal> People with experience in other languages often find return confusing.
2022-12-19 02:51:40 +0100 <dsal> It often looks like it does a very different thing from what it actually does.
2022-12-19 02:51:41 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-12-19 03:08:38 +0100rnat(uid73555@id-73555.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-12-19 03:14:19 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-12-19 03:17:21 +0100 <quazimodo> ok so sounds like the language spec may have changed a little since I last went over it
2022-12-19 03:17:28 +0100 <quazimodo> because it did look like applicative does the jobp
2022-12-19 03:20:48 +0100 <quazimodo> i guess the other question that I have is; when is `pure` used?
2022-12-19 03:21:36 +0100razetime(~quassel@49.207.230.181)
2022-12-19 03:21:38 +0100 <quazimodo> i see that you define it for a given applicative but i haven't really seen anyone using it, then i can only imagine that other people who write libs that rely on some applicative ?may? need `pure` to do their job, thus we need to write it
2022-12-19 03:21:43 +0100 <quazimodo> i just havent seen it being used much
2022-12-19 03:22:41 +0100 <EvanR> after about 1 moment of inquiry about `return' it should be clear that it does not in fact return, then people move on with their haskell
2022-12-19 03:22:53 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-19 03:24:03 +0100 <EvanR> pure is used in Applicative style code when nothing else will do and what pure does would be more code
2022-12-19 03:25:05 +0100 <EvanR> or when you're in polymorphic applicative code and you couldn't expand it if you wanted to
2022-12-19 03:25:42 +0100 <EvanR> the <* and *> operators cut down on the need for pure many times
2022-12-19 03:28:54 +0100 <dsal> > pure 5 :: Maybe Int
2022-12-19 03:28:55 +0100 <lambdabot> Just 5
2022-12-19 03:29:21 +0100 <EvanR> look, it saves on holding shift key xD
2022-12-19 03:30:50 +0100 <quazimodo> ok so it's something more technical than I can understand atm
2022-12-19 03:30:51 +0100 <quazimodo> cool
2022-12-19 03:31:00 +0100 <EvanR> dsal used pure!
2022-12-19 03:31:04 +0100 <EvanR> it wasn't very effective
2022-12-19 03:31:05 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-19 03:31:46 +0100 <EvanR> quazimodo, have you used Applicative much?
2022-12-19 03:32:13 +0100 <dsal> :t many
2022-12-19 03:32:14 +0100 <lambdabot> Alternative f => f a -> f [a]
2022-12-19 03:32:29 +0100 <dsal> Man, so close…
2022-12-19 03:33:40 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 268 seconds)
2022-12-19 03:34:09 +0100danso(~danso@danso.ca) (Quit: ZNC - https://znc.in)
2022-12-19 03:35:41 +0100dcoutts_(~duncan@host86-151-44-212.range86-151.btcentralplus.com)
2022-12-19 03:35:48 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
2022-12-19 03:36:34 +0100 <quazimodo> EvanR: i haven't used haskell much :)
2022-12-19 03:36:42 +0100danso(~danso@danso.ca)
2022-12-19 03:36:58 +0100 <quazimodo> i probabyl have used it without really 'getting it' in the past
2022-12-19 03:38:34 +0100dcoutts(~duncan@host86-151-44-212.range86-151.btcentralplus.com) (Ping timeout: 260 seconds)
2022-12-19 03:39:32 +0100 <EvanR> the central idiom for Applicative f code is like, g <$> action1 <*> action2 <*> action3 (<*> and so on)
2022-12-19 03:40:08 +0100 <EvanR> where g takes the results of each action as arguments
2022-12-19 03:40:45 +0100 <EvanR> if you want to just use a value with no effect as one of the actions, you'll need pure
2022-12-19 03:43:13 +0100 <quazimodo> by that do you mean if I want to do g <$> action1 <*> action2 <*> pure val <*> actio3 (<*> and so on)?
2022-12-19 03:43:29 +0100 <quazimodo> I didn't understand why it was called 'pure' until you showed/said that
2022-12-19 03:43:51 +0100 <quazimodo> but i can't understand why i'd use it in a chain like that in place of an action,
2022-12-19 03:46:16 +0100 <quazimodo> yeah i clearly don't understand & need to experiment, what I just wrote is nonesense
2022-12-19 03:47:16 +0100 <quazimodo> maybe it's meant to be like "a value" <$> pure <*> action1 <*> action2 ...etc?
2022-12-19 03:47:21 +0100 <quazimodo> that makes sense to me, i think
2022-12-19 03:49:28 +0100 <EvanR> no you're right
2022-12-19 03:49:36 +0100 <EvanR> the first time
2022-12-19 03:50:13 +0100 <EvanR> the next step would be to look at the types and see what that idiom is even well typed
2022-12-19 03:50:14 +0100 <quazimodo> in that case would it be more like pure somePureFunction
2022-12-19 03:50:28 +0100 <quazimodo> as in, use this pure function in place of an applicative funciton
2022-12-19 03:50:47 +0100 <EvanR> actions are not necessarily functions
2022-12-19 03:50:51 +0100 <quazimodo> if i understood the applicative <*> wants an f(a->b)
2022-12-19 03:51:16 +0100 <EvanR> > (+) <$> Just 3 <*> Just 9
2022-12-19 03:51:17 +0100 <quazimodo> (also i dont fully understand why we wouldn't use fmap, in that case)
2022-12-19 03:51:18 +0100 <lambdabot> Just 12
2022-12-19 03:51:30 +0100 <EvanR> (<$> is fmap)
2022-12-19 03:51:30 +0100 <quazimodo> oh, yeah that's true
2022-12-19 03:51:41 +0100 <quazimodo> holy hell haskell is weird hey
2022-12-19 03:51:44 +0100 <quazimodo> fun stuff
2022-12-19 03:52:01 +0100 <EvanR> <$> is idiomatic there but is the same thing as
2022-12-19 03:52:09 +0100 <quazimodo> Yeah I think i got it
2022-12-19 03:52:10 +0100 <EvanR> > pure (+) <*> Just 3 <*> Just 9
2022-12-19 03:52:11 +0100 <lambdabot> Just 12
2022-12-19 03:52:37 +0100 <quazimodo> got it
2022-12-19 03:52:55 +0100 <EvanR> this pattern really cuts down on certain kinds of code
2022-12-19 03:53:26 +0100 <quazimodo> the truth of it is that I've been bitten by c# lately, the nominal typing makes it absolutely necessary to do interface based programming & that makes dependency injection even more important
2022-12-19 03:53:44 +0100 <quazimodo> and that got me thinking how the hell do I do a bit of DI, in a nice automagic way, in something like typescript
2022-12-19 03:53:49 +0100 <EvanR> I only understood maybe 1/10th of that
2022-12-19 03:53:56 +0100 <quazimodo> which brought me to haskel & reader/readerT
2022-12-19 03:54:13 +0100 <quazimodo> EvanR: you're happier this way
2022-12-19 03:54:30 +0100 <EvanR> 9/10 times dependency injection takes the form of "just pass a parameter into a function" in haskell
2022-12-19 03:54:35 +0100 <quazimodo> the more OOP i end up having to do the more i miss lispy, functiony shenanigans
2022-12-19 03:55:00 +0100 <EvanR> s/param/argument
2022-12-19 03:55:09 +0100 <quazimodo> EvanR: i can't speak to haskell but in other languages it can become very easy to engage in argument drilling
2022-12-19 03:55:23 +0100 <quazimodo> parents need to know about child dependencies etc
2022-12-19 03:55:43 +0100 <EvanR> sounds like parent child is the wrong relationship then xD
2022-12-19 03:55:49 +0100 <quazimodo> yeah
2022-12-19 03:56:08 +0100 <EvanR> suspicious neighbors pattern
2022-12-19 03:56:46 +0100 <quazimodo> in c# they invert the situation a bit, something crawls the argument dependency tree and resolves the interfaces to concrete implementations, that then may have dependencies (expressed as interfaces) and so it fetches a concrete implementation of that & so on, then constructs everything
2022-12-19 03:56:51 +0100 <quazimodo> it's super ugly
2022-12-19 03:57:30 +0100 <quazimodo> that way the parent doesn't need to know what the child needs, it leaves that to the dependency injection framework
2022-12-19 03:57:55 +0100 <quazimodo> it's a little all or nothing & harder to do with languages that dont leave runtime metadata somewhere that helps the dynamic injector to know what to inject
2022-12-19 03:58:13 +0100 <quazimodo> it's not a bad pattern but it's some sort of implicit argument passing
2022-12-19 03:58:22 +0100 <quazimodo> and I don't mind it but i'd love to not have to do it the way c# does it
2022-12-19 03:58:35 +0100 <EvanR> yeah I've never needed anything like that in haskell
2022-12-19 03:58:36 +0100 <quazimodo> i was super curious how haskell might do it though
2022-12-19 03:58:57 +0100 <quazimodo> EvanR: suppose you have a function that takes an http request & puts stuff in database using some client
2022-12-19 03:58:59 +0100 <EvanR> if you have a subsystem that needs driver X, just take it as an argument and perhaps close over it
2022-12-19 03:59:23 +0100 <EvanR> the driver can take the form of a value, a record of functions or IO actions, or even a single IO action
2022-12-19 03:59:31 +0100 <quazimodo> this in a language like javascript would be a function that imports some modules/functions & uses them till the data gets into the db
2022-12-19 03:59:37 +0100 <EvanR> where it comes from is not important to the subsystem
2022-12-19 04:00:20 +0100 <EvanR> I'm sure you could do the same in C#, where the driver takes the form of an object
2022-12-19 04:00:45 +0100 <quazimodo> yeah so architecture in haskell obviously changes the situation. In my career i've only had to change dependencies on the fly a handful of times - the dependency injection pattern mostly just helped us to set mock classes/instancses during testing
2022-12-19 04:01:02 +0100 <quazimodo> so the DI pattern mostly seems to be leveraged in testing
2022-12-19 04:01:55 +0100 <EvanR> indeed taking the driver or resource as an argument opens up the possibility of testing with test drivers
2022-12-19 04:01:55 +0100 <quazimodo> if i've understood you correctly, your example almost treats the call stack like a reactive pipeline that returns some object(s) that get passed into some 'drivers' that go off & do things in the world
2022-12-19 04:02:15 +0100 <EvanR> well there's no call stack...
2022-12-19 04:02:23 +0100 <EvanR> but I'm not sure if it's relevant
2022-12-19 04:02:36 +0100 <quazimodo> a calls b calls c etc etc and some final value is returend right
2022-12-19 04:02:48 +0100 <EvanR> no...
2022-12-19 04:02:49 +0100 <quazimodo> does that fina lthing get shovelled into the driver
2022-12-19 04:02:55 +0100 <quazimodo> ah ok then i've misunderstood you
2022-12-19 04:03:46 +0100king_gs(~Thunderbi@2806:103e:29:cdd2:b2dd:cddc:5884:d05c)
2022-12-19 04:03:53 +0100j4cc3b(~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 260 seconds)
2022-12-19 04:03:58 +0100 <quazimodo> i'll go eat, my wife is dangerously close to revoking certain privileges if i don't spend some meaningful time with her
2022-12-19 04:04:20 +0100 <EvanR> like, if you have an http request handler which besides responding to a request (which might even be just a simple function), but needs database access on the side, then you could express that as a Connection -> Request -> IO Response. (just an example)
2022-12-19 04:04:22 +0100 <quazimodo> be back soon, also really appreciat your time EvanR
2022-12-19 04:05:18 +0100 <EvanR> the connection could be provided anew each time or partially applied and now you have this Request -> IO Response thing that magically can use the database
2022-12-19 04:05:35 +0100j4cc3b-(~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
2022-12-19 04:05:55 +0100 <EvanR> until the connection explodes and that's another story
2022-12-19 04:10:03 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
2022-12-19 04:15:34 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-12-19 04:16:50 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds)
2022-12-19 04:23:48 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-12-19 04:23:48 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-12-19 04:23:48 +0100finn_elijaFinnElija
2022-12-19 04:26:21 +0100 <quazimodo> EvanR: partial application is a reasonable way to go as part of the handling from the top i guess
2022-12-19 04:26:52 +0100 <EvanR> that's if the resource can reasonably be provided once and closed over
2022-12-19 04:26:53 +0100 <quazimodo> it's unclear to me how reader & readerT could be applied to this issue of depenencies
2022-12-19 04:27:02 +0100 <quazimodo> yeah
2022-12-19 04:27:06 +0100 <quazimodo> makes sense
2022-12-19 04:27:17 +0100 <EvanR> Reader is basically a function argument
2022-12-19 04:27:53 +0100 <EvanR> it's great if there's only ever 1 such function argument ever
2022-12-19 04:28:08 +0100 <quazimodo> ever?
2022-12-19 04:28:11 +0100 <EvanR> even then, the monad style might be overkill for what it does
2022-12-19 04:28:13 +0100 <quazimodo> so it can't be changed ever
2022-12-19 04:28:22 +0100 <EvanR> you can always begin a new Reader context
2022-12-19 04:28:25 +0100 <quazimodo> right
2022-12-19 04:28:57 +0100 <quazimodo> does 'pure' perform a 'lift' operation? it seems like it does
2022-12-19 04:29:26 +0100 <EvanR> if fmap is liftA1, and the <$> <*> pattern above is liftA2, you could say pure is liftA0 xD
2022-12-19 04:29:53 +0100 <EvanR> this has not much to do with lift from transformers
2022-12-19 04:30:51 +0100 <quazimodo> ah ok so that's why pure isn't called lift
2022-12-19 04:31:44 +0100td_(~td@83.135.9.47) (Ping timeout: 252 seconds)
2022-12-19 04:32:05 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-19 04:33:30 +0100td_(~td@83.135.9.40)
2022-12-19 04:34:13 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
2022-12-19 04:37:49 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2022-12-19 04:41:23 +0100[_](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-12-19 04:44:45 +0100king_gs(~Thunderbi@2806:103e:29:cdd2:b2dd:cddc:5884:d05c) (Quit: king_gs)
2022-12-19 04:47:47 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-12-19 04:49:09 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-12-19 04:50:41 +0100talismanick(~talismani@76.133.152.122)
2022-12-19 04:58:18 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
2022-12-19 05:00:41 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-19 05:05:29 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-12-19 05:11:04 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-12-19 05:15:59 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
2022-12-19 05:18:03 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-12-19 05:19:31 +0100Techcable(~Techcable@user/Techcable) (Remote host closed the connection)
2022-12-19 05:19:41 +0100 <EvanR> cabal complaint incoming
2022-12-19 05:20:19 +0100 <EvanR> I naively typed ghc -O2 Main.hs for 17 days of AoC this year and things worked alright. You can see where this is going xD
2022-12-19 05:20:39 +0100 <EvanR> import Control.DeepSeq
2022-12-19 05:21:33 +0100 <EvanR> misread a type error as "deepseq not installed"
2022-12-19 05:21:42 +0100 <EvanR> actually it was installed
2022-12-19 05:22:04 +0100 <EvanR> cabal install --libs deepseq, it installed a second version of deepseq package
2022-12-19 05:22:22 +0100 <EvanR> now it won't compile for a different reason xD
2022-12-19 05:22:33 +0100 <EvanR> and I can't seem to undo it
2022-12-19 05:23:30 +0100 <glguy> what does : ghc-pkg list deepseq show?
2022-12-19 05:23:59 +0100 <EvanR> the original deepseq only
2022-12-19 05:24:17 +0100 <glguy> what's the build error?
2022-12-19 05:24:42 +0100 <EvanR> ambiguous module name Control.DeepSeq, it was found in multiple packages: deepseq-1.4.6.1 deepseq-1.4.8.0
2022-12-19 05:27:09 +0100 <EvanR> this error is appreciated but I have to wonder what to do about it
2022-12-19 05:27:49 +0100 <EvanR> (and the complaint follow up is, why did cabal install even install a second version with no warning or anything)
2022-12-19 05:28:19 +0100wroathe(~wroathe@user/wroathe) (Quit: Lost terminal)
2022-12-19 05:28:57 +0100 <EvanR> if the command will get you into an unrecoverable situation maybe it shouldn't continue
2022-12-19 05:33:16 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-12-19 05:37:29 +0100 <glguy> presumably it installed the library because you specifically told it to
2022-12-19 05:37:44 +0100Techcable(~Techcable@user/Techcable)
2022-12-19 05:37:49 +0100 <EvanR> yeah but I didn't specify a version
2022-12-19 05:38:15 +0100 <glguy> Does this show two version? cabal exec ghc-pkg list
2022-12-19 05:38:46 +0100 <EvanR> no cabal file here
2022-12-19 05:40:44 +0100ddellacosta(~ddellacos@143.244.47.88) (Ping timeout: 255 seconds)
2022-12-19 05:41:08 +0100 <EvanR> running that in a real project shows only 1.4.6.1 just like bare ghc-pkg list
2022-12-19 05:42:35 +0100 <glguy> I think it sets up some kind of extra environment in your ~/.cabal directory for --lib installed stuff
2022-12-19 05:42:45 +0100 <glguy> I'm trying to search around to see what that was
2022-12-19 05:43:41 +0100jrm(~jrm@user/jrm) (Quit: ciao)
2022-12-19 05:44:35 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-19 05:44:50 +0100 <glguy> EvanR: when you run ghci does it say it's loading from: /Users/emertens/.ghc/x86_64-darwin-9.4.3/environments/default or something like that?
2022-12-19 05:45:06 +0100jrm(~jrm@user/jrm)
2022-12-19 05:45:59 +0100 <EvanR> yeah, and then a warning about missing libHSdeepseq-1.4.8.0 shared object which was probably in a directory in .cabal that I deleted
2022-12-19 05:46:15 +0100 <glguy> if you edit that file deepseq is probably at the end of the file
2022-12-19 05:46:20 +0100 <glguy> it'll have a hash after its name
2022-12-19 05:46:29 +0100 <glguy> you can remove the line
2022-12-19 05:46:58 +0100 <EvanR> I see it, in the middle somewhere
2022-12-19 05:47:04 +0100 <EvanR> 1.4.6.1 was at the bottom curiously
2022-12-19 05:47:42 +0100 <EvanR> that seems to have fixed it thanks! Now I will try to integrate what I learned
2022-12-19 05:49:31 +0100 <glguy> EvanR: I haven't used these files (knowingly) before, but there's this: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/packages.html#package-environments
2022-12-19 05:49:57 +0100smol-horspony
2022-12-19 05:50:08 +0100 <EvanR> right... right...
2022-12-19 05:56:23 +0100iqubic(~avi@2601:602:9502:c70:98f0:c0ba:f8c9:e2cc)
2022-12-19 06:01:30 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-19 06:04:14 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2022-12-19 06:06:58 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex)
2022-12-19 06:20:09 +0100jero98772(~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
2022-12-19 06:22:29 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
2022-12-19 06:27:26 +0100raym(~ray@user/raym) (Ping timeout: 256 seconds)
2022-12-19 06:29:13 +0100raym(~ray@user/raym)
2022-12-19 06:34:56 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 252 seconds)
2022-12-19 06:36:18 +0100 <Inst> this is probably really stupid, and thus not worth responding to
2022-12-19 06:36:18 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
2022-12-19 06:36:27 +0100 <Inst> but has anyone ever tried to teach 5 languages at once or something?
2022-12-19 06:41:21 +0100 <EvanR> HTML, XHTML, DHTML, XML, and HTML5
2022-12-19 06:42:07 +0100 <Inst> lol
2022-12-19 06:42:19 +0100 <Inst> still, compared to learning haskell, it sort of feels like learning 5 languages at once
2022-12-19 06:42:38 +0100 <Inst> since all imperative languages are more or less the same, just with effectively different sugar / small syntactical differences
2022-12-19 06:42:53 +0100 <Inst> might as well try teaching 5 languages at once
2022-12-19 06:43:51 +0100 <Inst> intro IP, with Python / C / C++... hmm, what other major IP languages are important to pick up? I can think of Java, but Java is wedded to OOP in a similar way than Haskell is wedded to FP
2022-12-19 06:44:15 +0100 <Inst> i guess it'd probbaly go as well as trying to teach romance languages together, which is to say, not at all
2022-12-19 06:44:21 +0100 <c_wraith> lots of schools have a course called "programming languages" that's a survery of several languages they don't normally use. Would that be similar to your thoughts?
2022-12-19 06:44:44 +0100 <Inst> no, but survey of rarely-used paradigms (sorry FP!)
2022-12-19 06:44:51 +0100 <Inst> is not concurrent
2022-12-19 06:44:58 +0100 <Inst> if you're stuck wasting weeks on teaching someone the concept of assignment
2022-12-19 06:45:06 +0100 <Inst> why not teach them how to do assignment in 5 different languages at once?
2022-12-19 06:45:50 +0100 <Inst> Python / C / C++ / JS, oh what the hell, add Java to it
2022-12-19 06:46:15 +0100 <Inst> the Haskell-take on it is that it's implicitly teaching the same exact language in different flavors, so what's the big deal?
2022-12-19 06:47:38 +0100 <Inst> I'm trying to do Python exercises and translate them to Julia at the same time, hence the origin of the idea
2022-12-19 06:51:29 +0100 <Inst> but I guess I'm serious about it, like, teaching 5 languages at once helps people get to the notion that you have to learn a lot of languages, but fortunately, for the most part, they're just syntax swaps of one another
2022-12-19 07:11:01 +0100 <EvanR> screw the course of programming languages, where's the course of all the build systems
2022-12-19 07:11:20 +0100 <EvanR> at least 1 for each language
2022-12-19 07:13:45 +0100 <DigitalKiwi> my favorite programming course on coursera teaches three lol
2022-12-19 07:15:38 +0100 <DigitalKiwi> https://www.coursera.org/learn/programming-languages/home/info
2022-12-19 07:16:17 +0100 <DigitalKiwi> sml scheme and ruby
2022-12-19 07:16:45 +0100 <DigitalKiwi> err racket w/e
2022-12-19 07:17:17 +0100 <DigitalKiwi> apparenly i type with a lisp
2022-12-19 07:19:30 +0100 <DigitalKiwi> lisp programs can only be talked about but never read
2022-12-19 07:19:34 +0100 <DigitalKiwi> it's untyped
2022-12-19 07:19:48 +0100 <Inst> tbh i'm really enthusiastic with my multi-lingual programming idea
2022-12-19 07:20:02 +0100 <Inst> like, teaching an FP course in two languages at once, a hybrid or imperative language, and Haskell
2022-12-19 07:20:15 +0100 <Inst> force people to implement monads in the hybrid / imperative language
2022-12-19 07:20:18 +0100 <DigitalKiwi> that's basically what that course i linked is
2022-12-19 07:20:24 +0100 <Inst> is it concurrent?
2022-12-19 07:21:08 +0100 <DigitalKiwi> i did the sml examples in haskell too
2022-12-19 07:21:19 +0100 <DigitalKiwi> s/examples/exercises/
2022-12-19 07:22:34 +0100 <DigitalKiwi> it's a free course and all of the materials are available (some courses don't let you take the tests etc. but this one did)
2022-12-19 07:25:29 +0100kenran(~user@user/kenran)
2022-12-19 07:25:31 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2022-12-19 07:27:31 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-12-19 07:29:12 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2022-12-19 07:29:20 +0100kenran(~user@user/kenran)
2022-12-19 07:29:51 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2022-12-19 07:32:15 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-19 07:42:15 +0100trev(~trev@user/trev)
2022-12-19 07:42:16 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-12-19 07:47:34 +0100trev(~trev@user/trev) (Remote host closed the connection)
2022-12-19 07:48:33 +0100trev(~trev@user/trev)
2022-12-19 07:52:40 +0100sammelweis(~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Ping timeout: 260 seconds)
2022-12-19 07:54:07 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2022-12-19 07:56:09 +0100Guest123(~Guest123@102.118.46.174)
2022-12-19 07:56:56 +0100telser(~quassel@user/telser) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-12-19 07:58:38 +0100mncheck(~mncheck@193.224.205.254)
2022-12-19 07:58:49 +0100Guest123jhdr
2022-12-19 08:00:21 +0100johnw(~johnw@2600:1700:cf00:db0:c0a7:cf05:c926:15f4)
2022-12-19 08:00:55 +0100mncheck(~mncheck@193.224.205.254) (Remote host closed the connection)
2022-12-19 08:06:18 +0100mncheck(~mncheck@193.224.205.254)
2022-12-19 08:06:54 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-12-19 08:10:24 +0100telser(~quassel@user/telser)
2022-12-19 08:24:35 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-19 08:27:33 +0100coot(~coot@213.134.171.3)
2022-12-19 08:28:35 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2022-12-19 08:29:15 +0100 <markasoftware> when you need to compose more than 3 monads do you usually write your own monad that does everything needed, or build a monstrosity of monad transformers and lifts?
2022-12-19 08:30:17 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-12-19 08:31:50 +0100shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-12-19 08:34:18 +0100 <opqdonut> I'd newtype the stack, and add helpers like `myFoo = lift originalFoo; myBar = lift (lift originalBar)`
2022-12-19 08:38:08 +0100quazimodo(~quazimodo@122-199-39-221.ip4.superloop.com) (Ping timeout: 252 seconds)
2022-12-19 08:38:16 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:ef88:3e30:d92e:5615)
2022-12-19 08:39:30 +0100trev(~trev@user/trev) (Remote host closed the connection)
2022-12-19 08:40:30 +0100trev(~trev@user/trev)
2022-12-19 08:51:22 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-19 09:12:08 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-12-19 09:12:22 +0100mbuf(~Shakthi@49.204.139.20)
2022-12-19 09:19:05 +0100alexiscott(~user@4.red-83-36-45.dynamicip.rima-tde.net)
2022-12-19 09:21:14 +0100alexiscott(~user@4.red-83-36-45.dynamicip.rima-tde.net) (Client Quit)
2022-12-19 09:21:24 +0100arahael(~arahael@193-119-109-208.tpgi.com.au) (Ping timeout: 252 seconds)
2022-12-19 09:26:55 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2022-12-19 09:27:54 +0100gmg(~user@user/gehmehgeh)
2022-12-19 09:33:55 +0100Inst(~Inst@2601:6c4:4081:54f0:38bc:71f6:776d:9675) (Ping timeout: 260 seconds)
2022-12-19 09:40:11 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-12-19 09:43:24 +0100arahael(~arahael@193-119-109-208.tpgi.com.au)
2022-12-19 09:46:08 +0100beefbambi(~beefbambi@183.82.30.144) (Ping timeout: 268 seconds)
2022-12-19 09:47:02 +0100taeaad(~taeaad@user/taeaad)
2022-12-19 09:47:05 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-19 09:47:43 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-19 09:48:32 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 09:49:15 +0100kuribas(~user@ptr-17d51eoh5205c65jz5o.18120a2.ip6.access.telenet.be)
2022-12-19 09:50:04 +0100acidjnk(~acidjnk@p200300d6e7137a39c81a3694893f5e3e.dip0.t-ipconnect.de)
2022-12-19 09:51:56 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2022-12-19 09:53:30 +0100merijn(~merijn@195.114.232.74)
2022-12-19 09:54:05 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-12-19 09:55:32 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2022-12-19 09:57:09 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex)
2022-12-19 09:57:09 +0100beefbambi(~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
2022-12-19 09:57:25 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 09:58:06 +0100beefbambi(~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
2022-12-19 09:58:42 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 10:01:01 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-12-19 10:02:13 +0100gehmehgeh(~user@user/gehmehgeh)
2022-12-19 10:02:14 +0100fserucas(~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
2022-12-19 10:02:44 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 255 seconds)
2022-12-19 10:03:06 +0100beefbambi(~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
2022-12-19 10:04:14 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 10:04:32 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
2022-12-19 10:05:30 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-12-19 10:08:07 +0100tok(~user@mobile-access-d98cd1-96.dhcp.inet.fi)
2022-12-19 10:12:44 +0100v0id_ptr(~adrift@user/ptr-frac7al/x-0038398)
2022-12-19 10:19:40 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
2022-12-19 10:20:17 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2022-12-19 10:21:06 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-12-19 10:21:13 +0100arahael(~arahael@193-119-109-208.tpgi.com.au) (Ping timeout: 252 seconds)
2022-12-19 10:24:11 +0100cfricke(~cfricke@user/cfricke)
2022-12-19 10:29:52 +0100tok(~user@mobile-access-d98cd1-96.dhcp.inet.fi) (Changing host)
2022-12-19 10:29:52 +0100tok(~user@user/tok)
2022-12-19 10:32:37 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-12-19 10:35:27 +0100son0p(~ff@2604:3d08:5b7f:5540::417e) (Ping timeout: 256 seconds)
2022-12-19 10:36:38 +0100yuribarros(~yuribarro@2804:14c:65e4:865c::1000) (Remote host closed the connection)
2022-12-19 10:36:56 +0100yuribarros(~yuribarro@2804:14c:65e4:865c::1000)
2022-12-19 10:37:56 +0100foul_owl(~kerry@193.29.61.234) (Ping timeout: 268 seconds)
2022-12-19 10:41:02 +0100beefbambi(~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
2022-12-19 10:41:39 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 10:41:42 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-12-19 10:43:13 +0100arahael(~arahael@193-119-109-208.tpgi.com.au)
2022-12-19 10:46:13 +0100beefbambi(~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
2022-12-19 10:46:27 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 10:47:03 +0100chele(~chele@user/chele)
2022-12-19 10:48:29 +0100pagnol(~user@213-205-209-87.ftth.glasoperator.nl)
2022-12-19 10:49:17 +0100andreas303(andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
2022-12-19 10:49:34 +0100xacktm(~xacktm@user/xacktm) (Ping timeout: 265 seconds)
2022-12-19 10:53:24 +0100foul_owl(~kerry@193.29.61.234)
2022-12-19 10:57:24 +0100coot(~coot@213.134.171.3) (Quit: coot)
2022-12-19 11:00:56 +0100beefbambi(~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
2022-12-19 11:05:47 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-12-19 11:08:33 +0100ft(~ft@p4fc2a257.dip0.t-ipconnect.de) (Quit: leaving)
2022-12-19 11:09:15 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-12-19 11:12:30 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
2022-12-19 11:16:46 +0100jhdr(~Guest123@102.118.46.174) (Quit: Client closed)
2022-12-19 11:20:09 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-19 11:20:11 +0100vpan(~0@212.117.1.172)
2022-12-19 11:23:18 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-12-19 11:24:28 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2022-12-19 11:24:34 +0100Lord_of_Life_Lord_of_Life
2022-12-19 11:25:26 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 255 seconds)
2022-12-19 11:28:51 +0100trev(~trev@user/trev) (Quit: trev)
2022-12-19 11:29:25 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds)
2022-12-19 11:32:40 +0100tok(~user@user/tok) (Remote host closed the connection)
2022-12-19 11:33:05 +0100glguy(~glguy@libera/staff-emeritus/glguy) (Ping timeout: 255 seconds)
2022-12-19 11:33:36 +0100glguy(~glguy@libera/staff-emeritus/glguy)
2022-12-19 11:34:09 +0100glguy(~glguy@libera/staff-emeritus/glguy) (Read error: Connection reset by peer)
2022-12-19 11:37:28 +0100glguy(~glguy@libera/staff-emeritus/glguy)
2022-12-19 11:37:35 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-12-19 11:40:11 +0100trev(~trev@user/trev)
2022-12-19 11:41:56 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 11:47:23 +0100zer0bitz_(~zer0bitz@196.244.192.59)
2022-12-19 11:47:26 +0100xacktm(~xacktm@user/xacktm)
2022-12-19 11:49:10 +0100beefbambi(~beefbambi@183.82.30.144) (Ping timeout: 272 seconds)
2022-12-19 11:49:23 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-19 11:49:45 +0100zer0bitz(~zer0bitz@196.244.192.59) (Ping timeout: 255 seconds)
2022-12-19 11:52:36 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-19 11:53:02 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 11:53:12 +0100Me-me(~Me-me@146.102.215.218.dyn.iprimus.net.au) (Quit: Going offline, see ya! (www.adiirc.com))
2022-12-19 11:58:03 +0100zer0bitz(~zer0bitz@196.244.192.58)
2022-12-19 11:59:58 +0100zer0bitz_(~zer0bitz@196.244.192.59) (Ping timeout: 268 seconds)
2022-12-19 12:01:14 +0100andreas303(andreas303@ip227.orange.bnc4free.com)
2022-12-19 12:06:44 +0100hueso(~root@user/hueso) (Ping timeout: 268 seconds)
2022-12-19 12:06:57 +0100xff0x(~xff0x@ai071162.d.east.v6connect.net)
2022-12-19 12:13:45 +0100Inst(~Inst@2601:6c4:4081:54f0:e018:7519:854e:3017)
2022-12-19 12:13:52 +0100 <Inst> has anyone gotten 3 penny GUI to work recently?
2022-12-19 12:19:57 +0100mbuf(~Shakthi@49.204.139.20) (Ping timeout: 265 seconds)
2022-12-19 12:21:48 +0100hueso(~root@user/hueso)
2022-12-19 12:26:20 +0100int-e(~noone@int-e.eu) (Remote host closed the connection)
2022-12-19 12:26:49 +0100mbuf(~Shakthi@49.204.120.206)
2022-12-19 12:27:30 +0100mbuf(~Shakthi@49.204.120.206) (Remote host closed the connection)
2022-12-19 12:27:31 +0100int-e(~noone@int-e.eu)
2022-12-19 12:29:24 +0100lambdabot(~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
2022-12-19 12:29:52 +0100lambdabot(~lambdabot@silicon.int-e.eu)
2022-12-19 12:29:52 +0100lambdabot(~lambdabot@silicon.int-e.eu) (Changing host)
2022-12-19 12:29:52 +0100lambdabot(~lambdabot@haskell/bot/lambdabot)
2022-12-19 12:36:10 +0100Guest123(~Guest123@102.118.46.174)
2022-12-19 12:37:34 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-12-19 12:38:10 +0100Guest123(~Guest123@102.118.46.174) (Client Quit)
2022-12-19 12:38:33 +0100califax(~califax@user/califx)
2022-12-19 12:38:42 +0100jhdr(~jhdr@102.118.46.174)
2022-12-19 12:40:53 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-12-19 12:42:08 +0100ulvarrefr(~user@188.124.56.153)
2022-12-19 12:42:15 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-19 12:43:40 +0100dextaa6(~DV@user/dextaa)
2022-12-19 12:44:48 +0100son0p(~ff@2604:3d08:5b7f:5540::e96e)
2022-12-19 12:45:30 +0100jhdr_(~jhdr@102.118.46.174)
2022-12-19 12:45:35 +0100hueso(~root@user/hueso) (Ping timeout: 268 seconds)
2022-12-19 12:45:43 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2022-12-19 12:46:10 +0100dextaa(~DV@user/dextaa) (Ping timeout: 272 seconds)
2022-12-19 12:46:10 +0100dextaa6dextaa
2022-12-19 12:46:53 +0100hueso(~root@user/hueso)
2022-12-19 12:50:21 +0100jhdr(~jhdr@102.118.46.174) (Quit: Client closed)
2022-12-19 12:51:45 +0100Alex_test(~al_test@178.34.161.14) (Ping timeout: 268 seconds)
2022-12-19 12:53:46 +0100AlexZenon(~alzenon@178.34.161.14) (Ping timeout: 272 seconds)
2022-12-19 12:53:46 +0100AlexNoo(~AlexNoo@178.34.161.14) (Ping timeout: 272 seconds)
2022-12-19 12:53:54 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
2022-12-19 12:55:45 +0100ubert(~Thunderbi@p200300ecdf264e7e72c65d11ee5c445f.dip0.t-ipconnect.de)
2022-12-19 13:07:08 +0100meinside(uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-12-19 13:08:30 +0100CiaoSen(~Jura@p200300c9570e1d002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-12-19 13:09:35 +0100hueso(~root@user/hueso) (Ping timeout: 256 seconds)
2022-12-19 13:10:14 +0100raym(~ray@user/raym) (Ping timeout: 272 seconds)
2022-12-19 13:12:53 +0100slack1256(~slack1256@191.126.99.70)
2022-12-19 13:14:54 +0100__monty__(~toonn@user/toonn)
2022-12-19 13:15:14 +0100slack1256(~slack1256@191.126.99.70) (Remote host closed the connection)
2022-12-19 13:15:29 +0100beefbambi(~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
2022-12-19 13:15:46 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-19 13:22:54 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-19 13:24:19 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 13:26:55 +0100raym(~ray@user/raym)
2022-12-19 13:33:51 +0100yuribarros(~yuribarro@2804:14c:65e4:865c::1000) (Quit: Leaving)
2022-12-19 13:36:00 +0100xacktm(~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
2022-12-19 13:36:00 +0100andreas303(andreas303@ip227.orange.bnc4free.com) (Remote host closed the connection)
2022-12-19 13:39:59 +0100hueso(~root@user/hueso)
2022-12-19 13:46:45 +0100AlexNoo(~AlexNoo@94.233.241.57)
2022-12-19 13:47:27 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-12-19 13:48:29 +0100Alex_test(~al_test@94.233.241.57)
2022-12-19 13:50:40 +0100freeside(~mengwong@213.86.11.74)
2022-12-19 13:52:54 +0100AlexZenon(~alzenon@94.233.241.57)
2022-12-19 13:55:45 +0100beefbambi(~beefbambi@183.82.30.144) (Ping timeout: 255 seconds)
2022-12-19 13:56:17 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-19 13:57:38 +0100acidjnk(~acidjnk@p200300d6e7137a39c81a3694893f5e3e.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2022-12-19 13:58:34 +0100 <trev> how do i apply a function over a list of lists?
2022-12-19 13:58:48 +0100 <Rembane> trev: With more map!
2022-12-19 13:58:56 +0100 <Rembane> trev: What's the type of the function?
2022-12-19 14:00:33 +0100 <trev> i'm doing some crazy crappy parsing for AoC... want to apply `dropAround` for each Text in [[Text]]
2022-12-19 14:01:26 +0100 <merijn> trev: Hint: what's the type of "map (f :: Int -> Char)" :)
2022-12-19 14:04:48 +0100 <trev> [Int] -> [Char] ?
2022-12-19 14:05:12 +0100freeside(~mengwong@213.86.11.74) (Ping timeout: 252 seconds)
2022-12-19 14:06:16 +0100 <merijn> Looks suspiciously like the kinda function you'd pass to map ;)
2022-12-19 14:07:29 +0100 <trev> :D i'm dumb
2022-12-19 14:07:45 +0100 <trev> is there a concise way to do it in haskell?
2022-12-19 14:07:59 +0100 <trev> like <$$> (wishful)
2022-12-19 14:08:07 +0100 <merijn> trev: Just do "map (map f)"?
2022-12-19 14:09:04 +0100 <trev> works
2022-12-19 14:09:10 +0100 <trev> thanks
2022-12-19 14:11:07 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-19 14:13:24 +0100zer0bitz(~zer0bitz@196.244.192.58) (Read error: Connection reset by peer)
2022-12-19 14:15:14 +0100Sciencentistguy9(~sciencent@hacksoc/ordinary-member)
2022-12-19 14:15:51 +0100zer0bitz(~zer0bitz@196.244.192.58)
2022-12-19 14:17:10 +0100Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds)
2022-12-19 14:17:10 +0100Sciencentistguy9Sciencentistguy
2022-12-19 14:23:16 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-19 14:24:02 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-12-19 14:27:39 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 252 seconds)
2022-12-19 14:27:51 +0100xacktm(~xacktm@user/xacktm)
2022-12-19 14:28:18 +0100andreas303(andreas303@ip227.orange.bnc4free.com)
2022-12-19 14:29:17 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-19 14:32:19 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-19 14:35:58 +0100mvk(~mvk@2607:fea8:5ce3:8500::6126)
2022-12-19 14:37:06 +0100mvk(~mvk@2607:fea8:5ce3:8500::6126) (Client Quit)
2022-12-19 14:40:42 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-12-19 14:41:31 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 268 seconds)
2022-12-19 14:43:10 +0100coot_(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-19 14:44:43 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-19 14:45:21 +0100 <fendor[m]> is ghc 9.4.2 busted on windows in some way?
2022-12-19 14:45:29 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 14:45:54 +0100coot_coot
2022-12-19 14:47:04 +0100v0id_ptr(~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 268 seconds)
2022-12-19 14:50:45 +0100jhdr_(~jhdr@102.118.46.174) (Ping timeout: 265 seconds)
2022-12-19 14:51:03 +0100MangoIV[m](~mangoivma@2001:470:69fc:105::2:8417)
2022-12-19 14:56:10 +0100razetime(~quassel@49.207.230.181) (Ping timeout: 252 seconds)
2022-12-19 14:59:05 +0100fizbin(~fizbin@user/fizbin)
2022-12-19 14:59:14 +0100fizbin(~fizbin@user/fizbin) (Read error: Connection reset by peer)
2022-12-19 14:59:50 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 252 seconds)
2022-12-19 14:59:56 +0100fizbin(~fizbin@user/fizbin)
2022-12-19 15:00:32 +0100 <Inst> bleh
2022-12-19 15:00:40 +0100 <Inst> sort of sad that i have no time, i'm thinking about
2022-12-19 15:00:46 +0100 <Inst> or rather, no skill
2022-12-19 15:00:56 +0100 <Inst> i'm thinking about refactoring my Haskell program into running entirely in the IO monad
2022-12-19 15:01:07 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-12-19 15:02:03 +0100thongpv87(~thongpv87@113.169.255.193)
2022-12-19 15:04:45 +0100shriekingnoise(~shrieking@186.137.167.202)
2022-12-19 15:05:33 +0100 <lortabac> Inst: you mean without transformers? or literally having everything in IO (what would be the point)?
2022-12-19 15:05:42 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
2022-12-19 15:05:53 +0100 <Inst> with IORef
2022-12-19 15:06:07 +0100 <Inst> more to the point that Haskell is actually a multiparadigm language (you need HOOP or Objective to get objects, though)
2022-12-19 15:06:27 +0100thongpv87(~thongpv87@113.169.255.193) (Quit: leaving)
2022-12-19 15:06:34 +0100 <lortabac> IORef instead of what?
2022-12-19 15:07:46 +0100 <Inst> processing via expression-only language
2022-12-19 15:07:56 +0100 <Inst> and for loops via forM_
2022-12-19 15:12:18 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-12-19 15:16:06 +0100jhdr(~jhdr@102.118.128.137)
2022-12-19 15:16:58 +0100 <c_wraith> that seems like a really hard way to use Haskell
2022-12-19 15:17:10 +0100jhdr(~jhdr@102.118.128.137) (Client Quit)
2022-12-19 15:20:27 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2022-12-19 15:22:03 +0100 <lortabac> I mean, IORef instead of State/Writer makes sense if you want to avoid transformers
2022-12-19 15:22:24 +0100 <lortabac> but IORef everywhere... why?
2022-12-19 15:25:44 +0100fizbin_(~fizbin@user/fizbin)
2022-12-19 15:26:47 +0100 <c_wraith> maybe you don't like ease of reasoning?
2022-12-19 15:28:17 +0100fizbin(~fizbin@user/fizbin) (Read error: Connection reset by peer)
2022-12-19 15:31:45 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-19 15:35:35 +0100beefbambi(~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
2022-12-19 15:36:40 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
2022-12-19 15:36:55 +0100fizbin__(~fizbin@user/fizbin)
2022-12-19 15:36:55 +0100 <maerwald> c_wraith: transformers and ease of reasoning?
2022-12-19 15:37:15 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-19 15:37:45 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2022-12-19 15:38:06 +0100 <maerwald> We could start with explaining MonadBaseControl, MonadUnliftIO and friends. And then maybe how StateT interacts with inner IO and exceptions
2022-12-19 15:38:11 +0100 <c_wraith> maerwald: nah, pure expressions and ease of reasoning.
2022-12-19 15:38:36 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-19 15:38:46 +0100danza(~francesco@151.47.236.122)
2022-12-19 15:39:04 +0100 <c_wraith> though I am apparently the only person in the world who's unsurprised about the interaction of MonadBaseControl and bracket.
2022-12-19 15:39:25 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 15:39:55 +0100fizbin_(~fizbin@user/fizbin) (Ping timeout: 260 seconds)
2022-12-19 15:40:04 +0100 <maerwald> right, effects systems make it a tad easier
2022-12-19 15:40:32 +0100 <maerwald> https://github.com/hasura/eff/issues/12
2022-12-19 15:40:44 +0100fizbin(~fizbin@user/fizbin)
2022-12-19 15:40:53 +0100rekahsoft(~rekahsoft@2605:8d80:6e2:a50e:e78b:13e9:40ed:3d2c)
2022-12-19 15:43:09 +0100fizbin__(~fizbin@user/fizbin) (Ping timeout: 256 seconds)
2022-12-19 15:44:00 +0100 <maerwald> but yeah, IO is so hard...
2022-12-19 15:44:41 +0100 <lortabac> maerwald: I think we are discussing using IO instead of pure functions
2022-12-19 15:44:48 +0100mikoto-chan(~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb)
2022-12-19 15:44:50 +0100 <maerwald> :D
2022-12-19 15:45:41 +0100danza(~francesco@151.47.236.122) (Read error: Connection reset by peer)
2022-12-19 15:48:01 +0100fizbin(~fizbin@user/fizbin) (Read error: Connection reset by peer)
2022-12-19 15:54:11 +0100freeside(~mengwong@212.12.38.120)
2022-12-19 15:54:51 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-12-19 15:59:15 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-19 16:01:31 +0100mikoto-chan(~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) (Read error: Connection reset by peer)
2022-12-19 16:03:02 +0100mikoto-chan(~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb)
2022-12-19 16:12:50 +0100razetime(~quassel@49.207.230.181)
2022-12-19 16:14:27 +0100 <maerwald> how do you make a list of Proxies?
2022-12-19 16:16:45 +0100n0den1te(~~.~@2401:4900:1cc8:a400:6e01:e0b7:1a5e:9c43)
2022-12-19 16:17:33 +0100 <Hecate> (without Impredicative Types!)
2022-12-19 16:23:36 +0100mikoto-chan(~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) (Quit: WeeChat 3.6)
2022-12-19 16:24:47 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-19 16:26:07 +0100mikoto-chan(~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb)
2022-12-19 16:26:11 +0100mikoto-chan(~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) (Client Quit)
2022-12-19 16:26:54 +0100fizbin(~fizbin@user/fizbin)
2022-12-19 16:29:08 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 246 seconds)
2022-12-19 16:36:59 +0100bodisiw(~bodiskw@128.163.238.17)
2022-12-19 16:37:31 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.7.1)
2022-12-19 16:40:35 +0100freeside(~mengwong@212.12.38.120) (Ping timeout: 260 seconds)
2022-12-19 16:43:35 +0100Xeroine(~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2022-12-19 16:44:19 +0100beefbambi(~beefbambi@183.82.30.144) (Ping timeout: 260 seconds)
2022-12-19 16:44:25 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-19 16:44:45 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-19 16:48:39 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-19 16:48:59 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 16:52:37 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-12-19 16:57:36 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Quit: beteigeuze)
2022-12-19 17:01:49 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-12-19 17:02:11 +0100jinsun__(~jinsun@user/jinsun)
2022-12-19 17:02:11 +0100jinsunGuest2165
2022-12-19 17:02:11 +0100jinsun__jinsun
2022-12-19 17:02:29 +0100j4cc3b(~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-12-19 17:03:20 +0100Guest2165(~jinsun@user/jinsun) (Ping timeout: 260 seconds)
2022-12-19 17:04:49 +0100nschoe(~q@141.101.51.197)
2022-12-19 17:05:24 +0100elevenkb(~elevenkb@105.224.37.128)
2022-12-19 17:08:49 +0100razetime(~quassel@49.207.230.181) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-12-19 17:09:57 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-19 17:12:03 +0100kenran(~user@user/kenran)
2022-12-19 17:12:29 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2022-12-19 17:13:18 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
2022-12-19 17:13:46 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:ef88:3e30:d92e:5615) (Quit: WeeChat 2.8)
2022-12-19 17:15:00 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-12-19 17:20:35 +0100merijn(~merijn@195.114.232.74) (Ping timeout: 260 seconds)
2022-12-19 17:21:38 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 246 seconds)
2022-12-19 17:27:51 +0100Inst_(~Inst@2601:6c4:4081:54f0:7095:a698:8ea8:7bc6)
2022-12-19 17:27:51 +0100beefbambi(~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
2022-12-19 17:28:09 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-19 17:29:01 +0100beefbambi(~beefbambi@183.82.30.144)
2022-12-19 17:30:44 +0100shapr(~user@68.54.166.125)
2022-12-19 17:31:38 +0100Inst(~Inst@2601:6c4:4081:54f0:e018:7519:854e:3017) (Ping timeout: 252 seconds)
2022-12-19 17:35:18 +0100rekahsoft(~rekahsoft@2605:8d80:6e2:a50e:e78b:13e9:40ed:3d2c) (Ping timeout: 260 seconds)
2022-12-19 17:35:51 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-19 17:37:38 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-12-19 17:43:26 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-12-19 17:44:55 +0100 <kuribas> Any news about FOSDEM 2023? I made a proposal but it is still undecided...
2022-12-19 17:45:13 +0100 <kuribas> I probably was too late submitting it.
2022-12-19 17:45:15 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2022-12-19 17:53:14 +0100Xeroine(~Xeroine@user/xeroine) (Remote host closed the connection)
2022-12-19 17:54:06 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-19 17:59:29 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
2022-12-19 18:02:24 +0100elevenkb(~elevenkb@105.224.37.128) (Quit: Client closed)
2022-12-19 18:03:15 +0100dsrt^(~dsrt@76.145.185.103) (Remote host closed the connection)
2022-12-19 18:05:41 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-19 18:06:59 +0100FragByte(~christian@user/fragbyte) (Quit: Quit)
2022-12-19 18:07:09 +0100johnw(~johnw@2600:1700:cf00:db0:c0a7:cf05:c926:15f4) (Quit: ZNC - http://znc.in)
2022-12-19 18:07:21 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-12-19 18:08:02 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-19 18:09:19 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2022-12-19 18:09:58 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
2022-12-19 18:15:20 +0100slack1256(~slack1256@186.11.29.60)
2022-12-19 18:16:22 +0100 <slack1256> > show "gato"
2022-12-19 18:16:24 +0100 <lambdabot> "\"gato\""
2022-12-19 18:16:36 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-12-19 18:17:03 +0100 <slack1256> Is there a newtype over String that has a Show instance where the result does not have the extra " ?
2022-12-19 18:17:20 +0100 <geekosaur> no
2022-12-19 18:17:49 +0100 <c_wraith> you could create one, but why? That's not what Show is for...
2022-12-19 18:18:17 +0100 <slack1256> Yeah, it is an abuse of Show. Maybe I should use Pretty or something.
2022-12-19 18:18:32 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2022-12-19 18:19:27 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-12-19 18:20:46 +0100td_(~td@83.135.9.40) (Quit: waking up from the american dream ...)
2022-12-19 18:24:24 +0100pagnol(~user@213-205-209-87.ftth.glasoperator.nl) (Remote host closed the connection)
2022-12-19 18:27:23 +0100n0den1te(~~.~@2401:4900:1cc8:a400:6e01:e0b7:1a5e:9c43) ()
2022-12-19 18:30:52 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-19 18:32:11 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-19 18:33:24 +0100td_(~td@83.135.9.40)
2022-12-19 18:34:43 +0100chele(~chele@user/chele) (Remote host closed the connection)
2022-12-19 18:35:08 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2022-12-19 18:35:14 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
2022-12-19 18:44:39 +0100nschoe(~q@141.101.51.197) (Quit: Switching off)
2022-12-19 18:47:31 +0100johnw(~johnw@2600:1700:cf00:db0:c0a7:cf05:c926:15f4)
2022-12-19 18:49:03 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-12-19 18:49:11 +0100borrow(~borrow@dynamic-78-8-220-237.ssp.dialog.net.pl)
2022-12-19 18:49:59 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Max SendQ exceeded)
2022-12-19 18:50:23 +0100borrow(~borrow@dynamic-78-8-220-237.ssp.dialog.net.pl) (Client Quit)
2022-12-19 18:51:02 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-12-19 18:51:29 +0100fizbin(~fizbin@user/fizbin)
2022-12-19 18:52:25 +0100jinsun(~jinsun@user/jinsun) (Ping timeout: 260 seconds)
2022-12-19 18:52:48 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-12-19 18:53:26 +0100econo(uid147250@user/econo)
2022-12-19 19:01:17 +0100fizbin(~fizbin@user/fizbin) (Remote host closed the connection)
2022-12-19 19:01:36 +0100fizbin(~fizbin@user/fizbin)
2022-12-19 19:02:54 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-19 19:03:16 +0100 <kuribas> > id "gato" -- slack1256
2022-12-19 19:03:17 +0100 <lambdabot> "gato"
2022-12-19 19:03:48 +0100 <kuribas> slack1256: https://hackage.haskell.org/package/formatting-7.2.0/docs/Formatting.html
2022-12-19 19:06:46 +0100kuribas(~user@ptr-17d51eoh5205c65jz5o.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
2022-12-19 19:06:53 +0100CiaoSen(~Jura@p200300c9570e1d002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-12-19 19:10:59 +0100acidjnk(~acidjnk@p200300d6e7137a97c81a3694893f5e3e.dip0.t-ipconnect.de)
2022-12-19 19:14:29 +0100Guest8974(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-12-19 19:18:15 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-19 19:18:38 +0100vpan(~0@212.117.1.172) (Quit: Leaving.)
2022-12-19 19:19:05 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-12-19 19:20:05 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-19 19:20:15 +0100Xeroine(~Xeroine@user/xeroine) (Excess Flood)
2022-12-19 19:22:37 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-19 19:22:43 +0100Me-me(~Me-me@146.102.215.218.dyn.iprimus.net.au)
2022-12-19 19:23:11 +0100Jade[m]Jadesheit[m]
2022-12-19 19:36:05 +0100tomokojun(~tomokojun@75.164.24.44)
2022-12-19 19:36:18 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 252 seconds)
2022-12-19 19:38:16 +0100Red_Swan(~jared@174-23-134-43.slkc.qwest.net)
2022-12-19 19:39:28 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
2022-12-19 19:43:13 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-19 19:43:33 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-12-19 19:45:29 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2022-12-19 19:48:00 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 265 seconds)
2022-12-19 19:48:50 +0100jinsun(~jinsun@user/jinsun)
2022-12-19 19:50:00 +0100jinsun__(~jinsun@user/jinsun)
2022-12-19 19:50:00 +0100jinsunGuest3566
2022-12-19 19:50:01 +0100Guest3566(~jinsun@user/jinsun) (Killed (copper.libera.chat (Nickname regained by services)))
2022-12-19 19:50:01 +0100jinsun__jinsun
2022-12-19 19:56:13 +0100sayola1(~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
2022-12-19 19:56:20 +0100sayola(~sayola@dslb-002-201-085-035.002.201.pools.vodafone-ip.de)
2022-12-19 19:57:20 +0100bitdex_(~bitdex@gateway/tor-sasl/bitdex)
2022-12-19 20:00:13 +0100tomokojun(~tomokojun@75.164.24.44) (Remote host closed the connection)
2022-12-19 20:00:41 +0100elevenkb(~elevenkb@105.224.37.128)
2022-12-19 20:07:17 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2022-12-19 20:18:22 +0100Guest8974(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
2022-12-19 20:19:43 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-19 20:25:23 +0100irrgit_(~irrgit@146.70.27.250)
2022-12-19 20:28:04 +0100codaraxis(~codaraxis@user/codaraxis)
2022-12-19 20:33:43 +0100unit73e(~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36)
2022-12-19 20:35:41 +0100unit73e(~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Client Quit)
2022-12-19 20:37:48 +0100unit73e(~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36)
2022-12-19 20:38:18 +0100shapr(~user@68.54.166.125) (Remote host closed the connection)
2022-12-19 20:49:15 +0100Guest8974(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-12-19 20:50:30 +0100elevenkb(~elevenkb@105.224.37.128) (Quit: Client closed)
2022-12-19 20:54:18 +0100isovector(~isovector@172.103.253.106.cable.tpia.cipherkey.com)
2022-12-19 20:55:05 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
2022-12-19 20:55:14 +0100ft(~ft@p4fc2a257.dip0.t-ipconnect.de)
2022-12-19 20:57:02 +0100isovector(~isovector@172.103.253.106.cable.tpia.cipherkey.com) ()
2022-12-19 20:57:24 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-19 21:00:09 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 268 seconds)
2022-12-19 21:01:43 +0100mikoto-chan(~mikoto-ch@85-76-117-48-nat.elisa-mobile.fi)
2022-12-19 21:03:47 +0100ec(~ec@gateway/tor-sasl/ec)
2022-12-19 21:03:52 +0100mvk(~mvk@2607:fea8:5ce3:8500::6126)
2022-12-19 21:04:07 +0100mvk(~mvk@2607:fea8:5ce3:8500::6126) (Client Quit)
2022-12-19 21:06:02 +0100ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
2022-12-19 21:06:22 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
2022-12-19 21:10:59 +0100elevenkb(~elevenkb@105.224.37.128)
2022-12-19 21:17:15 +0100kenran(~user@user/kenran)
2022-12-19 21:17:23 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-19 21:17:36 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2022-12-19 21:18:29 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
2022-12-19 21:19:38 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-19 21:22:21 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-12-19 21:22:22 +0100elevenkb(~elevenkb@105.224.37.128) (Quit: Client closed)
2022-12-19 21:26:16 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-12-19 21:29:07 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-12-19 21:29:07 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2022-12-19 21:29:10 +0100allbery_bgeekosaur
2022-12-19 21:33:52 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-12-19 21:35:35 +0100chymera(~chymera@ns1000526.ip-51-81-46.us) (Remote host closed the connection)
2022-12-19 21:37:40 +0100Guest8974(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 252 seconds)
2022-12-19 21:40:14 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 252 seconds)
2022-12-19 21:40:26 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-12-19 21:42:31 +0100Lycurgus(~juan@user/Lycurgus)
2022-12-19 21:51:16 +0100Xeroine(~Xeroine@user/xeroine) (Remote host closed the connection)
2022-12-19 21:52:08 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-19 21:54:24 +0100 <voidzero> Hi, as an assignment I have: write out the evaluation steps for foldl (flip (*)) 1 [1..3]. Is this correct? https://paste.tomsmeding.com/FkuajyVj
2022-12-19 21:55:49 +0100td_(~td@83.135.9.40) (Ping timeout: 260 seconds)
2022-12-19 21:56:32 +0100slack1256(~slack1256@186.11.29.60) (Ping timeout: 272 seconds)
2022-12-19 21:56:38 +0100 <Jadesheit[m]> flip (*) is funny
2022-12-19 21:58:42 +0100 <voidzero> it's not my favorite assignment :) foldl by itself is confoozing
2022-12-19 21:58:57 +0100 <Jadesheit[m]> I may just not see something but I don't get a lot of the steps
2022-12-19 21:59:05 +0100 <Jadesheit[m]> does not seem right to me
2022-12-19 21:59:35 +0100 <Jadesheit[m]> what do you think happens in the first step?
2022-12-19 21:59:49 +0100 <voidzero> yeah i messed this up
2022-12-19 22:00:19 +0100 <Jadesheit[m]> lets go through it step by step, ok?
2022-12-19 22:01:00 +0100 <Jadesheit[m]> first of all you havefoldl (flip (*)) 1 [1, 2, 3]
2022-12-19 22:01:03 +0100 <Jadesheit[m]> s// `/, s//`/
2022-12-19 22:01:21 +0100 <Jadesheit[m]> can you look at the definition of foldl and tell me how this would expand?
2022-12-19 22:01:51 +0100 <voidzero> thanks. foldl (*) 2 [1..3] is going to become ((2 * 1) * 2 ) * 3
2022-12-19 22:01:57 +0100fserucas(~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving)
2022-12-19 22:02:13 +0100 <Jadesheit[m]> that's already the entire expansion. Only apply the definition once
2022-12-19 22:03:03 +0100 <MangoIV[m]> <maerwald> "how do you make a list of..." <- HList? A good implementation of HList is NP from sop-core
2022-12-19 22:03:06 +0100 <voidzero> foldl (flip (*)) 1) * 2) * 3
2022-12-19 22:03:17 +0100 <voidzero> sorry
2022-12-19 22:03:21 +0100 <voidzero> foldl ((flip (*)) 1) * 2) * 3
2022-12-19 22:03:32 +0100 <Jadesheit[m]> this also applies the recursive definitions
2022-12-19 22:03:48 +0100 <Jadesheit[m]> can you tell me what foldl looks like?
2022-12-19 22:04:25 +0100Xeroine_(~Xeroine@user/xeroine)
2022-12-19 22:04:35 +0100 <voidzero> foldl f acc (x:xs) = foldl f (f acc x) xs
2022-12-19 22:04:46 +0100Xeroine(~Xeroine@user/xeroine) (Ping timeout: 272 seconds)
2022-12-19 22:05:02 +0100 <voidzero> this is really difficult for me to grasp though, thanks for bearing with me :)
2022-12-19 22:05:22 +0100 <voidzero> weird how foldr seems easier
2022-12-19 22:05:47 +0100 <Jadesheit[m]> it is, but it's important to know this
2022-12-19 22:06:04 +0100Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
2022-12-19 22:06:17 +0100 <Jadesheit[m]> voidzero: apply this *once* to the original expression
2022-12-19 22:06:39 +0100chymera(~chymera@ns1000526.ip-51-81-46.us)
2022-12-19 22:06:40 +0100 <voidzero> foldl (flip (*)) 1 (1:[2,3,4])
2022-12-19 22:06:44 +0100 <voidzero> i'm not sure how to write xs
2022-12-19 22:07:17 +0100 <Jadesheit[m]> don't yet evaluate
2022-12-19 22:07:22 +0100 <Jadesheit[m]> note down the thunks
2022-12-19 22:07:34 +0100 <Jadesheit[m]> and your xs is not quite correct
2022-12-19 22:07:41 +0100 <MangoIV[m]> MangoIV[m]: It’s probably XY though, I’d expect you want to store your types in a list and then just get a proxy if you need one
2022-12-19 22:07:54 +0100 <MangoIV[m]> As Proxy is basically unit you can always just make one.
2022-12-19 22:09:07 +0100 <voidzero> the list is (1:2:3:[])
2022-12-19 22:09:16 +0100 <Jadesheit[m]> yes
2022-12-19 22:09:25 +0100 <voidzero> is 1 taken as x and the rest (2:3:[]) as xs?
2022-12-19 22:09:32 +0100 <Jadesheit[m]> correct
2022-12-19 22:09:36 +0100 <voidzero> alright
2022-12-19 22:09:51 +0100 <voidzero> foldl (flip (*)) 1 (1:2:3:4:[])
2022-12-19 22:10:18 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2022-12-19 22:10:35 +0100 <Jadesheit[m]> where do you get the four from?
2022-12-19 22:10:48 +0100 <voidzero> i got carried away lol
2022-12-19 22:11:09 +0100Sgeo(~Sgeo@user/sgeo)
2022-12-19 22:11:15 +0100 <voidzero> foldl (flip (*)) 1 (1:2:3:[])
2022-12-19 22:11:42 +0100 <Jadesheit[m]> that's our starting expression
2022-12-19 22:11:43 +0100 <Jadesheit[m]> now apply foldl once
2022-12-19 22:12:08 +0100 <Jadesheit[m]> voidzero: using this information
2022-12-19 22:12:31 +0100 <Square> Why cant I combine "where" with guards in this https://paste.tomsmeding.com/Nw53Nmg3 . Seem I cant have the "| otherwise = .. " if i have a where in the previous guard.
2022-12-19 22:12:34 +0100 <voidzero> foldl (flip (*)) 1 (1:2:3:[]) = foldl (flip (*)) ((flip (*)) 1 1) 2:3:[]
2022-12-19 22:13:05 +0100 <Jadesheit[m]> very good
2022-12-19 22:13:15 +0100 <Jadesheit[m]> (paranthesize the last expression)
2022-12-19 22:13:25 +0100 <Jadesheit[m]> * (paranthesize the list expression at the end)
2022-12-19 22:13:32 +0100 <Jadesheit[m]> now apply foldl again
2022-12-19 22:13:36 +0100 <voidzero> ah yes. -- foldl (flip (*)) 1 (1:2:3:[]) = foldl (flip (*)) ((flip (*)) 1 1) (2:3:[])
2022-12-19 22:13:56 +0100 <Jadesheit[m]> now apply foldl again
2022-12-19 22:14:52 +0100 <voidzero> let's see
2022-12-19 22:16:10 +0100 <Square> nvm, ofcourse it should be after last guard
2022-12-19 22:16:51 +0100 <geekosaur> correct, where applies to all guards
2022-12-19 22:18:47 +0100 <voidzero> it's a bit confusing with all these parentheses, still chewing on it for a bit
2022-12-19 22:19:18 +0100 <Jadesheit[m]> no worries, take your time
2022-12-19 22:19:28 +0100 <voidzero> ty
2022-12-19 22:19:31 +0100 <Jadesheit[m]> you can also ask questions or send intermediate results
2022-12-19 22:20:32 +0100tvandinther(~tvandinth@203.34.100.2)
2022-12-19 22:20:42 +0100danza(~francesco@151.37.165.128)
2022-12-19 22:21:02 +0100shapr(~user@68.54.166.125)
2022-12-19 22:21:48 +0100 <voidzero> foldl ((flip (*)) ((flip (*)) 1 1) 2) (3:[])
2022-12-19 22:21:50 +0100 <voidzero> I *think*
2022-12-19 22:22:32 +0100 <Jadesheit[m]> very good
2022-12-19 22:22:34 +0100 <Jadesheit[m]> yes
2022-12-19 22:22:41 +0100 <Jadesheit[m]> one more
2022-12-19 22:23:07 +0100 <voidzero> alright
2022-12-19 22:23:21 +0100 <tvandinther> Hello. Does anybody here have experience with compiling binaries across various OS and arch using GitHub actions? I'm trying to set up a workflow to compile for various platforms and have them uploaded to a GitHub release. Example yaml files would be a big help if you know of any.
2022-12-19 22:24:25 +0100 <voidzero> Jadesheit[m], foldl (((flip (*)) ((flip (*)) 1 1) 2) 3) []
2022-12-19 22:24:36 +0100 <Jadesheit[m]> very nice
2022-12-19 22:24:48 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2022-12-19 22:24:55 +0100 <Jadesheit[m]> ah wait, minor detail
2022-12-19 22:25:01 +0100 <Jadesheit[m]> you still need to pass the function
2022-12-19 22:25:10 +0100 <Jadesheit[m]> same with the version above
2022-12-19 22:25:36 +0100 <voidzero> ah yes so the intuitive idea ("needs one more flip (*)") was right
2022-12-19 22:25:54 +0100 <Jadesheit[m]> yes!
2022-12-19 22:26:07 +0100danza(~francesco@151.37.165.128) (Read error: Connection reset by peer)
2022-12-19 22:26:39 +0100 <Jadesheit[m]> voidzero: can you write down this with the function passed?
2022-12-19 22:26:50 +0100 <Jadesheit[m]> (just add the function as the first parameter)
2022-12-19 22:27:53 +0100 <voidzero> like this? :
2022-12-19 22:27:55 +0100 <voidzero> foldl (flip (*)) ((flip (*)) 1 1) (2:3:[]) = foldl ((flip (*)) ((flip (*)) 1 1) (flip (*)) 2) (3:[])
2022-12-19 22:29:40 +0100 <Jadesheit[m]> in the definition of foldl the function is still passed
2022-12-19 22:29:40 +0100 <Jadesheit[m]> so even on the other side you still need it
2022-12-19 22:31:37 +0100 <voidzero> oh. I guess I only did that in the first evaluation step
2022-12-19 22:31:41 +0100 <voidzero> yes, let's see
2022-12-19 22:32:16 +0100 <Jadesheit[m]> brb*
2022-12-19 22:32:50 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
2022-12-19 22:34:59 +0100 <EvanR> voidzero, yeah foldr is easier because it's just doing constructor replacement
2022-12-19 22:36:26 +0100 <EvanR> [] -> z
2022-12-19 22:36:38 +0100 <EvanR> (:) x xs -> f x xs
2022-12-19 22:37:14 +0100 <voidzero> yeah. It's just easier to brain :)
2022-12-19 22:37:50 +0100 <EvanR> and easier to laze (which as of now is the verb form of lazy)
2022-12-19 22:40:13 +0100 <voidzero> yes I'm tempted to laze way too often!
2022-12-19 22:40:29 +0100 <voidzero> ok so this is what i came up with when not lazeing (lazing?)
2022-12-19 22:40:33 +0100 <voidzero> https://paste.tomsmeding.com/EHvYCmc7
2022-12-19 22:40:56 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-19 22:41:37 +0100 <EvanR> someone probably asked this already but what's the point of flip (*), assuming it's a commutative operation
2022-12-19 22:41:45 +0100 <EvanR> adding a lot f noise
2022-12-19 22:42:58 +0100kenaryn(~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
2022-12-19 22:43:11 +0100 <voidzero> nothing. It's just the author of this book being a sadist (eyeballing you chris allen wherever you are)
2022-12-19 22:43:21 +0100 <Jadesheit[m]> its an exercise about evaluation
2022-12-19 22:43:29 +0100 <EvanR> alright assuming your listing is right, you're not done
2022-12-19 22:43:37 +0100 <voidzero> nah for the purposes of figuring out evaluating it's not that bad
2022-12-19 22:44:24 +0100 <Jadesheit[m]> voidzero: this is close but you started writing the `flip (*)` infix
2022-12-19 22:44:46 +0100 <Jadesheit[m]> it needs to be flip (*) a b
2022-12-19 22:45:12 +0100 <voidzero> ah yes. more parentheses needed
2022-12-19 22:45:40 +0100 <Jadesheit[m]> yep haha
2022-12-19 22:45:44 +0100 <EvanR> Not Enough Parenthesene Gas
2022-12-19 22:45:45 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 260 seconds)
2022-12-19 22:46:44 +0100 <voidzero> good catch. So 3 becomes: foldl ((flip (*)) ((flip (*)) 1 1) ((flip (*))) 2) (3:[])
2022-12-19 22:47:00 +0100 <voidzero> followed by: foldl (((flip (*)) ((flip (*)) 1 1) ((flip (*))) 2) (flip (*)) 3) []
2022-12-19 22:47:04 +0100pagnol(~user@213-205-209-87.ftth.glasoperator.nl)
2022-12-19 22:47:49 +0100 <voidzero> wait let me check that
2022-12-19 22:47:50 +0100 <EvanR> ((flip (*))) seems redundant right
2022-12-19 22:48:32 +0100 <pagnol> I'm looking for a datastructure to express a mapping from some type A to another type B
2022-12-19 22:48:41 +0100 <pagnol> something like Map A B, but it should be total
2022-12-19 22:48:51 +0100 <EvanR> hackage package total-map
2022-12-19 22:49:03 +0100 <voidzero> EvanR, yes, let me correct these last two steps
2022-12-19 22:49:17 +0100 <pagnol> thanks
2022-12-19 22:49:37 +0100 <Jadesheit[m]> voidzero: I think (???) its right
2022-12-19 22:49:47 +0100 <Jadesheit[m]> now you need to apply foldl once again
2022-12-19 22:49:53 +0100 <Jadesheit[m]> but another case
2022-12-19 22:49:57 +0100td_(~td@83.135.9.40)
2022-12-19 22:50:01 +0100 <Jadesheit[m]> the one for the empty list
2022-12-19 22:50:23 +0100 <EvanR> @src foldl
2022-12-19 22:50:23 +0100 <lambdabot> foldl f z [] = z
2022-12-19 22:50:23 +0100 <lambdabot> foldl f z (x:xs) = foldl f (f z x) xs
2022-12-19 22:50:40 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-12-19 22:51:03 +0100 <voidzero> ghci says no
2022-12-19 22:51:06 +0100bodisiw(~bodiskw@128.163.238.17) (Quit: This computer has gone to sleep)
2022-12-19 22:51:13 +0100 <Jadesheit[m]> ok let me see
2022-12-19 22:51:40 +0100 <Jadesheit[m]> should I just write it out once?
2022-12-19 22:51:48 +0100 <Jadesheit[m]> because I know you have the right idea
2022-12-19 22:51:55 +0100 <EvanR> cool thing about haskell, you can factor out the (flip (*)) into a let for readability
2022-12-19 22:52:25 +0100 <Jadesheit[m]> EvanR: if you are supposed to show evaluation i would think that's not allowed?
2022-12-19 22:52:28 +0100 <Jadesheit[m]> or it might be
2022-12-19 22:52:46 +0100 <EvanR> well you could still use it as an aid to working it out, then unfactor it in the end
2022-12-19 22:52:52 +0100MajorBiscuit(~MajorBisc@31-23-159.netrun.cytanet.com.cy)
2022-12-19 22:53:00 +0100 <Jadesheit[m]> fair!
2022-12-19 22:53:19 +0100 <EvanR> the unfactoring will be easy and correct thanks to referential transparency
2022-12-19 22:53:24 +0100 <voidzero> got it
2022-12-19 22:53:26 +0100 <Jadesheit[m]> that's actually good, I'd do let mult = flip (*) in ...
2022-12-19 22:53:26 +0100 <voidzero> foldl (flip (*)) ((flip (*)) ((flip (*)) 1 1) 2) (3:[])
2022-12-19 22:53:38 +0100 <Jadesheit[m]> perfect
2022-12-19 22:53:40 +0100 <Jadesheit[m]> yes
2022-12-19 22:53:53 +0100 <voidzero> ah that let is a good idea yes
2022-12-19 22:53:54 +0100 <Jadesheit[m]> now apply once more
2022-12-19 22:54:38 +0100 <voidzero> yes: foldl (flip (*)) (flip (*) ((flip (*)) ((flip (*)) 1 1) 2) 3) []
2022-12-19 22:54:57 +0100 <Jadesheit[m]> parantheses on the first function
2022-12-19 22:55:06 +0100 <Jadesheit[m]> but seems good
2022-12-19 22:55:25 +0100 <Jadesheit[m]> <lambdabot> "foldl f z [] = z" <- now apply foldl again, noting that the case here is different
2022-12-19 22:55:26 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-12-19 22:57:21 +0100 <voidzero> ok.. let's see
2022-12-19 22:57:44 +0100 <pagnol> does it make sense to use Data.Map.Strict when the number of key-value pairs is low?
2022-12-19 22:58:26 +0100 <Jadesheit[m]> pagnol: how low, and do you eventually access all pairs?
2022-12-19 22:58:45 +0100 <pagnol> say only a few dozen, and yes I do access all eventually
2022-12-19 22:58:45 +0100 <monochrom> Perhaps not. But I wouldn't worry about it until benchmarking says you need to worry about it.
2022-12-19 22:59:14 +0100 <monochrom> The thing is hardware keeps changing so the "low" threshold keeps changing too. It's a moving target.
2022-12-19 22:59:33 +0100 <pagnol> I'm curious what Haskellers use, though
2022-12-19 22:59:50 +0100 <monochrom> Haskellers just use Data.Map.Strict and move on.
2022-12-19 23:00:11 +0100 <monochrom> Haskellers worry about actual issues not micromanagement issues.
2022-12-19 23:00:12 +0100 <EvanR> I'd probably use list of (k,v) more often if the API didn't suck xD
2022-12-19 23:00:14 +0100 <voidzero> so when we remove the list and the function it becomes this:
2022-12-19 23:00:17 +0100 <voidzero> flip (*) ((flip (*)) ((flip (*)) 1 1) 2) 3
2022-12-19 23:00:20 +0100zns(~zns@user/zns) (Remote host closed the connection)
2022-12-19 23:00:29 +0100 <EvanR> congrats you just foldl'ed
2022-12-19 23:00:51 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-19 23:01:16 +0100 <voidzero> actually I think that was incorrect and this is correct:
2022-12-19 23:01:19 +0100 <voidzero> (flip (*)) ((flip (*)) ((flip (*)) 1 1) 2) 3
2022-12-19 23:01:39 +0100 <voidzero> both give the same answer but infix vs prefix
2022-12-19 23:01:43 +0100 <Jadesheit[m]> should be the same I think
2022-12-19 23:01:58 +0100 <EvanR> that's the same thing
2022-12-19 23:02:03 +0100 <Jadesheit[m]> voidzero: not infix but just currying
2022-12-19 23:02:04 +0100 <EvanR> (f x) y = f x y
2022-12-19 23:02:15 +0100zns(~zns@user/zns)
2022-12-19 23:02:15 +0100 <EvanR> not currying but simply grouping
2022-12-19 23:02:25 +0100 <EvanR> using assocativity rules
2022-12-19 23:02:39 +0100 <Jadesheit[m]> voidzero: now you can start evaluating this bad boy
2022-12-19 23:02:46 +0100ystael(~ystael@user/ystael) (Quit: Lost terminal)
2022-12-19 23:02:48 +0100 <Jadesheit[m]> EvanR: yeah sorry
2022-12-19 23:02:53 +0100 <voidzero> let's do it
2022-12-19 23:03:01 +0100 <EvanR> no reason to evaluate it, it's fine xD
2022-12-19 23:03:35 +0100 <EvanR> @src flip
2022-12-19 23:03:35 +0100 <lambdabot> flip f x y = f y x
2022-12-19 23:04:32 +0100 <pagnol> EvanR ha, I was thinking the same
2022-12-19 23:04:35 +0100 <Jadesheit[m]> would it be "correct" to write `flip (*) a b` as `b * a` in this context, maintaining the infixity of the operator?
2022-12-19 23:05:12 +0100 <EvanR> sure
2022-12-19 23:05:17 +0100 <pagnol> about the (k, v) API being being a bit unergonomic
2022-12-19 23:05:24 +0100 <EvanR> (*) x y = x * y
2022-12-19 23:06:43 +0100 <monochrom> But if you're using foldl, the choice is between (flip (*)) and (\x y -> y * x)
2022-12-19 23:07:48 +0100 <voidzero> (flip (*)) ((flip (*)) ((flip (*)) 1 1) 2) 3 = (flip (*)) ((flip (*)) (1 * 1) 2) 3
2022-12-19 23:08:28 +0100 <voidzero> (flip (*)) (1 * 2) 3
2022-12-19 23:08:42 +0100 <voidzero> 2 * 3
2022-12-19 23:08:44 +0100 <voidzero> 6
2022-12-19 23:08:49 +0100 <Jadesheit[m]> don't be so quick
2022-12-19 23:08:54 +0100 <voidzero> darn :D
2022-12-19 23:08:56 +0100 <Jadesheit[m]> leave the thunks for a second
2022-12-19 23:09:39 +0100 <Jadesheit[m]> (its absolutely correct, but I assume your prof will want to see the expansion as thunks)
2022-12-19 23:09:42 +0100 <voidzero> (flip (*)) (2 * (1 * 1)) 3
2022-12-19 23:10:15 +0100 <Jadesheit[m]> yes
2022-12-19 23:10:16 +0100 <voidzero> 3 * (2 * (1 * 1))
2022-12-19 23:10:17 +0100 <Jadesheit[m]> once more
2022-12-19 23:10:29 +0100 <Jadesheit[m]> perfect
2022-12-19 23:10:42 +0100 <Jadesheit[m]> now, slowly work your way from the inside out
2022-12-19 23:10:49 +0100 <Jadesheit[m]> and then you're done
2022-12-19 23:10:59 +0100 <voidzero> 3 * (2 * 1)
2022-12-19 23:11:04 +0100 <voidzero> 3 * 2
2022-12-19 23:11:08 +0100 <voidzero> 6
2022-12-19 23:11:10 +0100Alex_test(~al_test@94.233.241.57) (Ping timeout: 252 seconds)
2022-12-19 23:11:16 +0100 <Jadesheit[m]> congratulations
2022-12-19 23:11:21 +0100 <Jadesheit[m]> well done!
2022-12-19 23:11:54 +0100AlexZenon(~alzenon@94.233.241.57) (Ping timeout: 252 seconds)
2022-12-19 23:13:13 +0100opticblast(~Thunderbi@172.58.82.193)
2022-12-19 23:13:37 +0100 <voidzero> thank you so much!
2022-12-19 23:13:41 +0100opticblast(~Thunderbi@172.58.82.193) (Client Quit)
2022-12-19 23:13:49 +0100 <EvanR> that's the most inefficient string of multiplications ever
2022-12-19 23:14:09 +0100 <voidzero> I don't have a professor but I'm really glad you guys exist <3
2022-12-19 23:15:06 +0100pagnol(~user@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 255 seconds)
2022-12-19 23:15:38 +0100 <voidzero> graybeard sysadmin finally taking the time to learn a proper programming language
2022-12-19 23:16:22 +0100 <voidzero> the other day i worked out a fibonacci function and did this together with my 7 year old son
2022-12-19 23:16:34 +0100 <voidzero> I'll save the foldl until later though :-)
2022-12-19 23:17:04 +0100 <voidzero> EvanR, indeed :)
2022-12-19 23:17:37 +0100 <voidzero> I'm working through the book Haskell Programming From First Principles and am not allowing myself to skip exercises
2022-12-19 23:17:51 +0100 <Jadesheit[m]> please teach your son haskell
2022-12-19 23:18:24 +0100 <voidzero> you bet. It's a lot of fun
2022-12-19 23:18:27 +0100Alex_test(~al_test@94.233.241.57)
2022-12-19 23:18:43 +0100 <Jadesheit[m]> I've heard from people who only learned functional languages and not imperative languages, and I'd love to see what it would turn out to be
2022-12-19 23:18:46 +0100 <Jadesheit[m]> have fun :F
2022-12-19 23:18:53 +0100 <Jadesheit[m]> * have fun :D
2022-12-19 23:19:32 +0100AlexZenon(~alzenon@94.233.241.57)
2022-12-19 23:19:43 +0100 <voidzero> My only other skill is with zsh scripting. I wrote some cool scripts. There is a lot of similarity between piping commands on the shell, and haskell.
2022-12-19 23:19:58 +0100 <voidzero> xmonad was fun to figure out to the point where i managed to get a working config file
2022-12-19 23:20:09 +0100 <Jadesheit[m]> voidzero: indeed yeah!
2022-12-19 23:21:20 +0100 <voidzero> My functional programming interest first got piqued when I wrote a 24h audio stream in the Liquidsoap language (https://liquidsoap.info/)
2022-12-19 23:21:52 +0100 <Jadesheit[m]> never heard of that haha
2022-12-19 23:21:53 +0100 <voidzero> it streams audio from a filelist and live hosts can connect to it to stream liveshows
2022-12-19 23:22:01 +0100 <Jadesheit[m]> gotta take a look
2022-12-19 23:22:09 +0100 <voidzero> https://github.com/NoAgenda/noagendastream
2022-12-19 23:22:23 +0100 <geekosaur> fwiw you'll find that Puppet is pretty FP oriented
2022-12-19 23:22:50 +0100 <geekosaur> to the extent that it's highly declarative
2022-12-19 23:23:13 +0100 <voidzero> it is? I'm busy moving my stuff over to NixOS. Puppet, I know that from many years ago. Should check it out again.
2022-12-19 23:24:22 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds)
2022-12-19 23:24:35 +0100j4cc3b(~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 246 seconds)
2022-12-19 23:27:40 +0100 <Reinhilde> "noagenda" has an agenda.
2022-12-19 23:30:45 +0100 <voidzero> my only interest is to keep the boat afloat, and content wise that's all off topic anyway
2022-12-19 23:30:56 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com)
2022-12-19 23:30:58 +0100 <Reinhilde> eoe
2022-12-19 23:34:27 +0100thegeekinside(~thegeekin@189.128.148.159)
2022-12-19 23:36:21 +0100mc47(~mc47@xmonad/TheMC47)
2022-12-19 23:37:37 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2022-12-19 23:38:24 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-12-19 23:41:21 +0100drvitek(~drvitek@2601:85:c300:7940:6d22:5284:fc40:3019)
2022-12-19 23:41:51 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-12-19 23:44:23 +0100fizbin(~fizbin@user/fizbin)
2022-12-19 23:46:10 +0100talismanick(~talismani@76.133.152.122) (Remote host closed the connection)
2022-12-19 23:53:47 +0100trev(~trev@user/trev) (Remote host closed the connection)
2022-12-19 23:54:58 +0100talismanick(~talismani@76.133.152.122)
2022-12-19 23:56:46 +0100quazimodo(~quazimodo@122-199-39-221.ip4.superloop.com)