Logs on 2022-12-19 (liberachat/#haskell)
| 00:00:26 | → | j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 00:03:45 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 00:04:26 | <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. |
| 00:04:59 | <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. |
| 00:06:18 | → | rnat joins (uid73555@id-73555.lymington.irccloud.com) |
| 00:08:48 | × | wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal) |
| 00:10:20 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 00:10:20 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 00:10:20 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:10:24 | × | LemanR quits (~LemanR@2607:fb90:54b0:6e01:9403:ba62:4ea3:9eb9) (Quit: Client closed) |
| 00:11:13 | <Inst> | i'm wondering if i have the only diceware software in Haskell |
| 00:11:56 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 00:13:13 | <Inst> | nope |
| 00:13:13 | <Inst> | https://hackage.haskell.org/package/alea |
| 00:14:38 | <Inst> | Haskell diceware actually seems pretty popular as a newbie project |
| 00:14:58 | <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. |
| 00:16:45 | <Inst> | it's not |
| 00:16:53 | <Inst> | you mean the liamzee github? |
| 00:17:08 | <Inst> | that is mine, the packages aren't |
| 00:17:15 | <Inst> | erm, the hackage etc aren't |
| 00:17:31 | → | j4cc3b- joins (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 00:20:09 | <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. |
| 00:20:11 | <EvanR> | ideally your haskell program is a thin crunchy IO shell around juicy purely functional interior, says Cale |
| 00:20:35 | slack1256 | goes for taco bell |
| 00:20:50 | <dsal> | Monads are tacos. |
| 00:23:28 | <EvanR> | To use haskell you first need a bit of calzonegory theory |
| 00:24:59 | <Inst> | yeah, i've had stuff like that, but dicewarist tbh is mostly IO code, which is unfortunate |
| 00:25:26 | <Inst> | the ReaderT is pretty arbitrary, tbh |
| 00:26:08 | <Inst> | it wouldn't hurt that much given the design of the program, were ReaderT removed |
| 00:26:54 | <Inst> | what I did was to move ProcessInner to top-level, rename it |
| 00:26:59 | <Inst> | because that's the real pure part of the function |
| 00:27:55 | → | shailangsa joins (~shailangs@host217-39-45-196.range217-39.btcentralplus.com) |
| 00:27:58 | <slack1256> | Is HLS usable to work *on* GHC? |
| 00:28:09 | <Inst> | what does that question mean? |
| 00:28:19 | <dsal> | "Does HLS scale?" |
| 00:28:43 | <slack1256> | The build system in GHC is shake (well still autoconf). |
| 00:28:43 | <dsal> | I think some people use it at work. Our codebase is kind of big. |
| 00:28:46 | <Inst> | oh, you mean, does HLS work when you've git-cloned the GHC repo? |
| 00:29:05 | × | oopzzozzo quits (~Thunderbi@user/oopzzozzo) (Quit: oopzzozzo) |
| 00:29:11 | <slack1256> | Yeah, work *on* GHC. |
| 00:33:54 | <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 |
| 00:34:17 | <geekosaur> | then again, compiling ghc also requires quite a lot of memory, so if you can do one you can probably do the other |
| 00:35:21 | × | wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal) |
| 00:38:37 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 00:38:37 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 00:38:37 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:39:09 | × | ft quits (~ft@p4fc2a257.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 00:39:29 | <slack1256> | Oh right, the wiki. I was just reading the docs on the repo. |
| 00:40:02 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection) |
| 00:40:39 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 00:40:54 | → | ft joins (~ft@p4fc2a257.dip0.t-ipconnect.de) |
| 00:41:11 | <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 |
| 00:45:10 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 00:47:46 | → | morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) |
| 00:49:35 | × | acidjnk quits (~acidjnk@p200300d6e7137a394052686d931fefc2.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 00:55:32 | × | morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 00:57:14 | × | finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer) |
| 01:00:14 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 01:06:46 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 01:06:59 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds) |
| 01:10:41 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:12:23 | × | slack1256 quits (~slack1256@186.11.29.60) (Ping timeout: 255 seconds) |
| 01:16:49 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:16:49 | <albet70> | unit73e , you're right, I just tested it |
| 01:18:58 | <Inst> | why is it that containers generally contain a null value? |
| 01:19:02 | <Inst> | oh wait, mempty identity |
| 01:19:04 | <Inst> | ;_; |
| 01:20:06 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 01:27:24 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 01:29:18 | × | xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 272 seconds) |
| 01:30:02 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 01:32:46 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 01:34:57 | __xor | is now known as _xor |
| 01:35:00 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
| 01:35:14 | × | Topsi quits (~Topsi@dialin-80-228-141-093.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 01:36:26 | → | quazimodo joins (~quazimodo@122-199-39-221.ip4.superloop.com) |
| 01:36:27 | <quazimodo> | hi all |
| 01:36:56 | <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 |
| 01:37:14 | <quazimodo> | recently watched a video to refresh & saw that an instance of monad should be an instance of applicative |
| 01:37:21 | <quazimodo> | and the dude didnt' define 'return' |
| 01:37:37 | <quazimodo> | has there been a change to the interface since I last came across this? |
| 01:45:41 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) |
| 01:47:41 | <hpc> | it now defaults to pure |
| 01:47:42 | <hpc> | :t pure |
| 01:47:43 | <lambdabot> | Applicative f => a -> f a |
| 01:48:09 | <hpc> | since you need that Applicative instance anyway and the two are always the same for lawful instances |
| 01:49:28 | <dsal> | quazimodo: Many of us never write `return` in any code anymore. It's a weird, confusing term. |
| 01:50:05 | <EvanR> | I never found it weird or confusing, but I think there were less monad tutorials back then |
| 01:50:12 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 255 seconds) |
| 01:51:19 | <dsal> | People with experience in other languages often find return confusing. |
| 01:51:40 | <dsal> | It often looks like it does a very different thing from what it actually does. |
| 01:51:41 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 02:08:38 | × | rnat quits (uid73555@id-73555.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 02:14:19 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:17:21 | <quazimodo> | ok so sounds like the language spec may have changed a little since I last went over it |
| 02:17:28 | <quazimodo> | because it did look like applicative does the jobp |
| 02:20:48 | <quazimodo> | i guess the other question that I have is; when is `pure` used? |
| 02:21:36 | → | razetime joins (~quassel@49.207.230.181) |
| 02:21:38 | <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 |
| 02:21:43 | <quazimodo> | i just havent seen it being used much |
| 02:22:41 | <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 |
| 02:22:53 | → | morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) |
| 02:24:03 | <EvanR> | pure is used in Applicative style code when nothing else will do and what pure does would be more code |
| 02:25:05 | <EvanR> | or when you're in polymorphic applicative code and you couldn't expand it if you wanted to |
| 02:25:42 | <EvanR> | the <* and *> operators cut down on the need for pure many times |
| 02:28:54 | <dsal> | > pure 5 :: Maybe Int |
| 02:28:55 | <lambdabot> | Just 5 |
| 02:29:21 | <EvanR> | look, it saves on holding shift key xD |
| 02:30:50 | <quazimodo> | ok so it's something more technical than I can understand atm |
| 02:30:51 | <quazimodo> | cool |
| 02:31:00 | <EvanR> | dsal used pure! |
| 02:31:04 | <EvanR> | it wasn't very effective |
| 02:31:05 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 02:31:46 | <EvanR> | quazimodo, have you used Applicative much? |
| 02:32:13 | <dsal> | :t many |
| 02:32:14 | <lambdabot> | Alternative f => f a -> f [a] |
| 02:32:29 | <dsal> | Man, so close… |
| 02:33:40 | × | beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 268 seconds) |
| 02:34:09 | × | danso quits (~danso@danso.ca) (Quit: ZNC - https://znc.in) |
| 02:35:41 | → | dcoutts_ joins (~duncan@host86-151-44-212.range86-151.btcentralplus.com) |
| 02:35:48 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
| 02:36:34 | <quazimodo> | EvanR: i haven't used haskell much :) |
| 02:36:42 | → | danso joins (~danso@danso.ca) |
| 02:36:58 | <quazimodo> | i probabyl have used it without really 'getting it' in the past |
| 02:38:34 | × | dcoutts quits (~duncan@host86-151-44-212.range86-151.btcentralplus.com) (Ping timeout: 260 seconds) |
| 02:39:32 | <EvanR> | the central idiom for Applicative f code is like, g <$> action1 <*> action2 <*> action3 (<*> and so on) |
| 02:40:08 | <EvanR> | where g takes the results of each action as arguments |
| 02:40:45 | <EvanR> | if you want to just use a value with no effect as one of the actions, you'll need pure |
| 02:43:13 | <quazimodo> | by that do you mean if I want to do g <$> action1 <*> action2 <*> pure val <*> actio3 (<*> and so on)? |
| 02:43:29 | <quazimodo> | I didn't understand why it was called 'pure' until you showed/said that |
| 02:43:51 | <quazimodo> | but i can't understand why i'd use it in a chain like that in place of an action, |
| 02:46:16 | <quazimodo> | yeah i clearly don't understand & need to experiment, what I just wrote is nonesense |
| 02:47:16 | <quazimodo> | maybe it's meant to be like "a value" <$> pure <*> action1 <*> action2 ...etc? |
| 02:47:21 | <quazimodo> | that makes sense to me, i think |
| 02:49:28 | <EvanR> | no you're right |
| 02:49:36 | <EvanR> | the first time |
| 02:50:13 | <EvanR> | the next step would be to look at the types and see what that idiom is even well typed |
| 02:50:14 | <quazimodo> | in that case would it be more like pure somePureFunction |
| 02:50:28 | <quazimodo> | as in, use this pure function in place of an applicative funciton |
| 02:50:47 | <EvanR> | actions are not necessarily functions |
| 02:50:51 | <quazimodo> | if i understood the applicative <*> wants an f(a->b) |
| 02:51:16 | <EvanR> | > (+) <$> Just 3 <*> Just 9 |
| 02:51:17 | <quazimodo> | (also i dont fully understand why we wouldn't use fmap, in that case) |
| 02:51:18 | <lambdabot> | Just 12 |
| 02:51:30 | <EvanR> | (<$> is fmap) |
| 02:51:30 | <quazimodo> | oh, yeah that's true |
| 02:51:41 | <quazimodo> | holy hell haskell is weird hey |
| 02:51:44 | <quazimodo> | fun stuff |
| 02:52:01 | <EvanR> | <$> is idiomatic there but is the same thing as |
| 02:52:09 | <quazimodo> | Yeah I think i got it |
| 02:52:10 | <EvanR> | > pure (+) <*> Just 3 <*> Just 9 |
| 02:52:11 | <lambdabot> | Just 12 |
| 02:52:37 | <quazimodo> | got it |
| 02:52:55 | <EvanR> | this pattern really cuts down on certain kinds of code |
| 02:53:26 | <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 |
| 02:53:44 | <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 |
| 02:53:49 | <EvanR> | I only understood maybe 1/10th of that |
| 02:53:56 | <quazimodo> | which brought me to haskel & reader/readerT |
| 02:54:13 | <quazimodo> | EvanR: you're happier this way |
| 02:54:30 | <EvanR> | 9/10 times dependency injection takes the form of "just pass a parameter into a function" in haskell |
| 02:54:35 | <quazimodo> | the more OOP i end up having to do the more i miss lispy, functiony shenanigans |
| 02:55:00 | <EvanR> | s/param/argument |
| 02:55:09 | <quazimodo> | EvanR: i can't speak to haskell but in other languages it can become very easy to engage in argument drilling |
| 02:55:23 | <quazimodo> | parents need to know about child dependencies etc |
| 02:55:43 | <EvanR> | sounds like parent child is the wrong relationship then xD |
| 02:55:49 | <quazimodo> | yeah |
| 02:56:08 | <EvanR> | suspicious neighbors pattern |
| 02:56:46 | <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 |
| 02:56:51 | <quazimodo> | it's super ugly |
| 02:57:30 | <quazimodo> | that way the parent doesn't need to know what the child needs, it leaves that to the dependency injection framework |
| 02:57:55 | <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 |
| 02:58:13 | <quazimodo> | it's not a bad pattern but it's some sort of implicit argument passing |
| 02:58:22 | <quazimodo> | and I don't mind it but i'd love to not have to do it the way c# does it |
| 02:58:35 | <EvanR> | yeah I've never needed anything like that in haskell |
| 02:58:36 | <quazimodo> | i was super curious how haskell might do it though |
| 02:58:57 | <quazimodo> | EvanR: suppose you have a function that takes an http request & puts stuff in database using some client |
| 02:58:59 | <EvanR> | if you have a subsystem that needs driver X, just take it as an argument and perhaps close over it |
| 02:59:23 | <EvanR> | the driver can take the form of a value, a record of functions or IO actions, or even a single IO action |
| 02:59:31 | <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 |
| 02:59:37 | <EvanR> | where it comes from is not important to the subsystem |
| 03:00:20 | <EvanR> | I'm sure you could do the same in C#, where the driver takes the form of an object |
| 03:00:45 | <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 |
| 03:01:02 | <quazimodo> | so the DI pattern mostly seems to be leveraged in testing |
| 03:01:55 | <EvanR> | indeed taking the driver or resource as an argument opens up the possibility of testing with test drivers |
| 03:01:55 | <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 |
| 03:02:15 | <EvanR> | well there's no call stack... |
| 03:02:23 | <EvanR> | but I'm not sure if it's relevant |
| 03:02:36 | <quazimodo> | a calls b calls c etc etc and some final value is returend right |
| 03:02:48 | <EvanR> | no... |
| 03:02:49 | <quazimodo> | does that fina lthing get shovelled into the driver |
| 03:02:55 | <quazimodo> | ah ok then i've misunderstood you |
| 03:03:46 | → | king_gs joins (~Thunderbi@2806:103e:29:cdd2:b2dd:cddc:5884:d05c) |
| 03:03:53 | × | j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 260 seconds) |
| 03:03:58 | <quazimodo> | i'll go eat, my wife is dangerously close to revoking certain privileges if i don't spend some meaningful time with her |
| 03:04:20 | <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) |
| 03:04:22 | <quazimodo> | be back soon, also really appreciat your time EvanR |
| 03:05:18 | <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 |
| 03:05:35 | × | j4cc3b- quits (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds) |
| 03:05:55 | <EvanR> | until the connection explodes and that's another story |
| 03:10:03 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds) |
| 03:15:34 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 03:16:50 | × | Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds) |
| 03:23:48 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:23:48 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:23:48 | finn_elija | is now known as FinnElija |
| 03:26:21 | <quazimodo> | EvanR: partial application is a reasonable way to go as part of the handling from the top i guess |
| 03:26:52 | <EvanR> | that's if the resource can reasonably be provided once and closed over |
| 03:26:53 | <quazimodo> | it's unclear to me how reader & readerT could be applied to this issue of depenencies |
| 03:27:02 | <quazimodo> | yeah |
| 03:27:06 | <quazimodo> | makes sense |
| 03:27:17 | <EvanR> | Reader is basically a function argument |
| 03:27:53 | <EvanR> | it's great if there's only ever 1 such function argument ever |
| 03:28:08 | <quazimodo> | ever? |
| 03:28:11 | <EvanR> | even then, the monad style might be overkill for what it does |
| 03:28:13 | <quazimodo> | so it can't be changed ever |
| 03:28:22 | <EvanR> | you can always begin a new Reader context |
| 03:28:25 | <quazimodo> | right |
| 03:28:57 | <quazimodo> | does 'pure' perform a 'lift' operation? it seems like it does |
| 03:29:26 | <EvanR> | if fmap is liftA1, and the <$> <*> pattern above is liftA2, you could say pure is liftA0 xD |
| 03:29:53 | <EvanR> | this has not much to do with lift from transformers |
| 03:30:51 | <quazimodo> | ah ok so that's why pure isn't called lift |
| 03:31:44 | × | td_ quits (~td@83.135.9.47) (Ping timeout: 252 seconds) |
| 03:32:05 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 03:33:30 | → | td_ joins (~td@83.135.9.40) |
| 03:34:13 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 03:37:49 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
| 03:41:23 | × | [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 03:44:45 | × | king_gs quits (~Thunderbi@2806:103e:29:cdd2:b2dd:cddc:5884:d05c) (Quit: king_gs) |
| 03:47:47 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
| 03:49:09 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1) |
| 03:50:41 | → | talismanick joins (~talismani@76.133.152.122) |
| 03:58:18 | × | morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 04:00:41 | → | morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) |
| 04:05:29 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 04:11:04 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 04:15:59 | × | morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 04:18:03 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 04:19:31 | × | Techcable quits (~Techcable@user/Techcable) (Remote host closed the connection) |
| 04:19:41 | <EvanR> | cabal complaint incoming |
| 04:20:19 | <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 |
| 04:20:39 | <EvanR> | import Control.DeepSeq |
| 04:21:33 | <EvanR> | misread a type error as "deepseq not installed" |
| 04:21:42 | <EvanR> | actually it was installed |
| 04:22:04 | <EvanR> | cabal install --libs deepseq, it installed a second version of deepseq package |
| 04:22:22 | <EvanR> | now it won't compile for a different reason xD |
| 04:22:33 | <EvanR> | and I can't seem to undo it |
| 04:23:30 | <glguy> | what does : ghc-pkg list deepseq show? |
| 04:23:59 | <EvanR> | the original deepseq only |
| 04:24:17 | <glguy> | what's the build error? |
| 04:24:42 | <EvanR> | ambiguous module name Control.DeepSeq, it was found in multiple packages: deepseq-1.4.6.1 deepseq-1.4.8.0 |
| 04:27:09 | <EvanR> | this error is appreciated but I have to wonder what to do about it |
| 04:27:49 | <EvanR> | (and the complaint follow up is, why did cabal install even install a second version with no warning or anything) |
| 04:28:19 | × | wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal) |
| 04:28:57 | <EvanR> | if the command will get you into an unrecoverable situation maybe it shouldn't continue |
| 04:33:16 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 04:37:29 | <glguy> | presumably it installed the library because you specifically told it to |
| 04:37:44 | → | Techcable joins (~Techcable@user/Techcable) |
| 04:37:49 | <EvanR> | yeah but I didn't specify a version |
| 04:38:15 | <glguy> | Does this show two version? cabal exec ghc-pkg list |
| 04:38:46 | <EvanR> | no cabal file here |
| 04:40:44 | × | ddellacosta quits (~ddellacos@143.244.47.88) (Ping timeout: 255 seconds) |
| 04:41:08 | <EvanR> | running that in a real project shows only 1.4.6.1 just like bare ghc-pkg list |
| 04:42:35 | <glguy> | I think it sets up some kind of extra environment in your ~/.cabal directory for --lib installed stuff |
| 04:42:45 | <glguy> | I'm trying to search around to see what that was |
| 04:43:41 | × | jrm quits (~jrm@user/jrm) (Quit: ciao) |
| 04:44:35 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) |
| 04:44:50 | <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? |
| 04:45:06 | → | jrm joins (~jrm@user/jrm) |
| 04:45:59 | <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 |
| 04:46:15 | <glguy> | if you edit that file deepseq is probably at the end of the file |
| 04:46:20 | <glguy> | it'll have a hash after its name |
| 04:46:29 | <glguy> | you can remove the line |
| 04:46:58 | <EvanR> | I see it, in the middle somewhere |
| 04:47:04 | <EvanR> | 1.4.6.1 was at the bottom curiously |
| 04:47:42 | <EvanR> | that seems to have fixed it thanks! Now I will try to integrate what I learned |
| 04:49:31 | <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 |
| 04:49:57 | smol-hors | is now known as pony |
| 04:50:08 | <EvanR> | right... right... |
| 04:56:23 | → | iqubic joins (~avi@2601:602:9502:c70:98f0:c0ba:f8c9:e2cc) |
| 05:01:30 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 05:04:14 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 05:06:58 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 05:20:09 | × | jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection) |
| 05:22:29 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 05:27:26 | × | raym quits (~ray@user/raym) (Ping timeout: 256 seconds) |
| 05:29:13 | → | raym joins (~ray@user/raym) |
| 05:34:56 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 252 seconds) |
| 05:36:18 | <Inst> | this is probably really stupid, and thus not worth responding to |
| 05:36:18 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
| 05:36:27 | <Inst> | but has anyone ever tried to teach 5 languages at once or something? |
| 05:41:21 | <EvanR> | HTML, XHTML, DHTML, XML, and HTML5 |
| 05:42:07 | <Inst> | lol |
| 05:42:19 | <Inst> | still, compared to learning haskell, it sort of feels like learning 5 languages at once |
| 05:42:38 | <Inst> | since all imperative languages are more or less the same, just with effectively different sugar / small syntactical differences |
| 05:42:53 | <Inst> | might as well try teaching 5 languages at once |
| 05:43:51 | <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 |
| 05:44:15 | <Inst> | i guess it'd probbaly go as well as trying to teach romance languages together, which is to say, not at all |
| 05:44:21 | <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? |
| 05:44:44 | <Inst> | no, but survey of rarely-used paradigms (sorry FP!) |
| 05:44:51 | <Inst> | is not concurrent |
| 05:44:58 | <Inst> | if you're stuck wasting weeks on teaching someone the concept of assignment |
| 05:45:06 | <Inst> | why not teach them how to do assignment in 5 different languages at once? |
| 05:45:50 | <Inst> | Python / C / C++ / JS, oh what the hell, add Java to it |
| 05:46:15 | <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? |
| 05:47:38 | <Inst> | I'm trying to do Python exercises and translate them to Julia at the same time, hence the origin of the idea |
| 05:51:29 | <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 |
| 06:11:01 | <EvanR> | screw the course of programming languages, where's the course of all the build systems |
| 06:11:20 | <EvanR> | at least 1 for each language |
| 06:13:45 | <DigitalKiwi> | my favorite programming course on coursera teaches three lol |
| 06:15:38 | <DigitalKiwi> | https://www.coursera.org/learn/programming-languages/home/info |
| 06:16:17 | <DigitalKiwi> | sml scheme and ruby |
| 06:16:45 | <DigitalKiwi> | err racket w/e |
| 06:17:17 | <DigitalKiwi> | apparenly i type with a lisp |
| 06:19:30 | <DigitalKiwi> | lisp programs can only be talked about but never read |
| 06:19:34 | <DigitalKiwi> | it's untyped |
| 06:19:48 | <Inst> | tbh i'm really enthusiastic with my multi-lingual programming idea |
| 06:20:02 | <Inst> | like, teaching an FP course in two languages at once, a hybrid or imperative language, and Haskell |
| 06:20:15 | <Inst> | force people to implement monads in the hybrid / imperative language |
| 06:20:18 | <DigitalKiwi> | that's basically what that course i linked is |
| 06:20:24 | <Inst> | is it concurrent? |
| 06:21:08 | <DigitalKiwi> | i did the sml examples in haskell too |
| 06:21:19 | <DigitalKiwi> | s/examples/exercises/ |
| 06:22:34 | <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) |
| 06:25:29 | → | kenran joins (~user@user/kenran) |
| 06:25:31 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 06:27:31 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:29:12 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 06:29:20 | → | kenran joins (~user@user/kenran) |
| 06:29:51 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 06:32:15 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 06:42:15 | → | trev joins (~trev@user/trev) |
| 06:42:16 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 06:47:34 | × | trev quits (~trev@user/trev) (Remote host closed the connection) |
| 06:48:33 | → | trev joins (~trev@user/trev) |
| 06:52:40 | × | sammelweis quits (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Ping timeout: 260 seconds) |
| 06:54:07 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 06:56:09 | → | Guest123 joins (~Guest123@102.118.46.174) |
| 06:56:56 | × | telser quits (~quassel@user/telser) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 06:58:38 | → | mncheck joins (~mncheck@193.224.205.254) |
| 06:58:49 | Guest123 | is now known as jhdr |
| 07:00:21 | → | johnw joins (~johnw@2600:1700:cf00:db0:c0a7:cf05:c926:15f4) |
| 07:00:55 | × | mncheck quits (~mncheck@193.224.205.254) (Remote host closed the connection) |
| 07:06:18 | → | mncheck joins (~mncheck@193.224.205.254) |
| 07:06:54 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 07:10:24 | → | telser joins (~quassel@user/telser) |
| 07:24:35 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 07:27:33 | → | coot joins (~coot@213.134.171.3) |
| 07:28:35 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 07:29:15 | <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? |
| 07:30:17 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
| 07:31:50 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 07:34:18 | <opqdonut> | I'd newtype the stack, and add helpers like `myFoo = lift originalFoo; myBar = lift (lift originalBar)` |
| 07:38:08 | × | quazimodo quits (~quazimodo@122-199-39-221.ip4.superloop.com) (Ping timeout: 252 seconds) |
| 07:38:16 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:ef88:3e30:d92e:5615) |
| 07:39:30 | × | trev quits (~trev@user/trev) (Remote host closed the connection) |
| 07:40:30 | → | trev joins (~trev@user/trev) |
| 07:51:22 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:12:08 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 08:12:22 | → | mbuf joins (~Shakthi@49.204.139.20) |
| 08:19:05 | → | alexiscott joins (~user@4.red-83-36-45.dynamicip.rima-tde.net) |
| 08:21:14 | × | alexiscott quits (~user@4.red-83-36-45.dynamicip.rima-tde.net) (Client Quit) |
| 08:21:24 | × | arahael quits (~arahael@193-119-109-208.tpgi.com.au) (Ping timeout: 252 seconds) |
| 08:26:55 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 08:27:54 | → | gmg joins (~user@user/gehmehgeh) |
| 08:33:55 | × | Inst quits (~Inst@2601:6c4:4081:54f0:38bc:71f6:776d:9675) (Ping timeout: 260 seconds) |
| 08:40:11 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 08:43:24 | → | arahael joins (~arahael@193-119-109-208.tpgi.com.au) |
| 08:46:08 | × | beefbambi quits (~beefbambi@183.82.30.144) (Ping timeout: 268 seconds) |
| 08:47:02 | → | taeaad joins (~taeaad@user/taeaad) |
| 08:47:05 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 08:47:43 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 08:48:32 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 08:49:15 | → | kuribas joins (~user@ptr-17d51eoh5205c65jz5o.18120a2.ip6.access.telenet.be) |
| 08:50:04 | → | acidjnk joins (~acidjnk@p200300d6e7137a39c81a3694893f5e3e.dip0.t-ipconnect.de) |
| 08:51:56 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 08:53:30 | → | merijn joins (~merijn@195.114.232.74) |
| 08:54:05 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 08:55:32 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 08:57:09 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 08:57:09 | × | beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer) |
| 08:57:25 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 08:58:06 | × | beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer) |
| 08:58:42 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 09:01:01 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 09:02:13 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 09:02:14 | → | fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 09:02:44 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
| 09:03:06 | × | beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer) |
| 09:04:14 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 09:04:32 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
| 09:05:30 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 09:08:07 | → | tok joins (~user@mobile-access-d98cd1-96.dhcp.inet.fi) |
| 09:12:44 | → | v0id_ptr joins (~adrift@user/ptr-frac7al/x-0038398) |
| 09:19:40 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection) |
| 09:20:17 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 09:21:06 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 09:21:13 | × | arahael quits (~arahael@193-119-109-208.tpgi.com.au) (Ping timeout: 252 seconds) |
| 09:24:11 | → | cfricke joins (~cfricke@user/cfricke) |
| 09:29:52 | × | tok quits (~user@mobile-access-d98cd1-96.dhcp.inet.fi) (Changing host) |
| 09:29:52 | → | tok joins (~user@user/tok) |
| 09:32:37 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 09:35:27 | × | son0p quits (~ff@2604:3d08:5b7f:5540::417e) (Ping timeout: 256 seconds) |
| 09:36:38 | × | yuribarros quits (~yuribarro@2804:14c:65e4:865c::1000) (Remote host closed the connection) |
| 09:36:56 | → | yuribarros joins (~yuribarro@2804:14c:65e4:865c::1000) |
| 09:37:56 | × | foul_owl quits (~kerry@193.29.61.234) (Ping timeout: 268 seconds) |
| 09:41:02 | × | beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer) |
| 09:41:39 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 09:41:42 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:43:13 | → | arahael joins (~arahael@193-119-109-208.tpgi.com.au) |
| 09:46:13 | × | beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer) |
| 09:46:27 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 09:47:03 | → | chele joins (~chele@user/chele) |
| 09:48:29 | → | pagnol joins (~user@213-205-209-87.ftth.glasoperator.nl) |
| 09:49:17 | × | andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com) |
| 09:49:34 | × | xacktm quits (~xacktm@user/xacktm) (Ping timeout: 265 seconds) |
| 09:53:24 | → | foul_owl joins (~kerry@193.29.61.234) |
| 09:57:24 | × | coot quits (~coot@213.134.171.3) (Quit: coot) |
| 10:00:56 | × | beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer) |
| 10:05:47 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 10:08:33 | × | ft quits (~ft@p4fc2a257.dip0.t-ipconnect.de) (Quit: leaving) |
| 10:09:15 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 10:12:30 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
| 10:16:46 | × | jhdr quits (~Guest123@102.118.46.174) (Quit: Client closed) |
| 10:20:09 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) |
| 10:20:11 | → | vpan joins (~0@212.117.1.172) |
| 10:23:18 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 10:24:28 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
| 10:24:34 | Lord_of_Life_ | is now known as Lord_of_Life |
| 10:25:26 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 255 seconds) |
| 10:28:51 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 10:29:25 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 10:32:40 | × | tok quits (~user@user/tok) (Remote host closed the connection) |
| 10:33:05 | × | glguy quits (~glguy@libera/staff-emeritus/glguy) (Ping timeout: 255 seconds) |
| 10:33:36 | → | glguy joins (~glguy@libera/staff-emeritus/glguy) |
| 10:34:09 | × | glguy quits (~glguy@libera/staff-emeritus/glguy) (Read error: Connection reset by peer) |
| 10:37:28 | → | glguy joins (~glguy@libera/staff-emeritus/glguy) |
| 10:37:35 | → | beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
| 10:40:11 | → | trev joins (~trev@user/trev) |
| 10:41:56 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 10:47:23 | → | zer0bitz_ joins (~zer0bitz@196.244.192.59) |
| 10:47:26 | → | xacktm joins (~xacktm@user/xacktm) |
| 10:49:10 | × | beefbambi quits (~beefbambi@183.82.30.144) (Ping timeout: 272 seconds) |
| 10:49:23 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 10:49:45 | × | zer0bitz quits (~zer0bitz@196.244.192.59) (Ping timeout: 255 seconds) |
| 10:52:36 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 10:53:02 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 10:53:12 | × | Me-me quits (~Me-me@146.102.215.218.dyn.iprimus.net.au) (Quit: Going offline, see ya! (www.adiirc.com)) |
| 10:58:03 | → | zer0bitz joins (~zer0bitz@196.244.192.58) |
| 10:59:58 | × | zer0bitz_ quits (~zer0bitz@196.244.192.59) (Ping timeout: 268 seconds) |
| 11:01:14 | → | andreas303 joins (andreas303@ip227.orange.bnc4free.com) |
| 11:06:44 | × | hueso quits (~root@user/hueso) (Ping timeout: 268 seconds) |
| 11:06:57 | → | xff0x joins (~xff0x@ai071162.d.east.v6connect.net) |
| 11:13:45 | → | Inst joins (~Inst@2601:6c4:4081:54f0:e018:7519:854e:3017) |
| 11:13:52 | <Inst> | has anyone gotten 3 penny GUI to work recently? |
| 11:19:57 | × | mbuf quits (~Shakthi@49.204.139.20) (Ping timeout: 265 seconds) |
| 11:21:48 | → | hueso joins (~root@user/hueso) |
| 11:26:20 | × | int-e quits (~noone@int-e.eu) (Remote host closed the connection) |
| 11:26:49 | → | mbuf joins (~Shakthi@49.204.120.206) |
| 11:27:30 | × | mbuf quits (~Shakthi@49.204.120.206) (Remote host closed the connection) |
| 11:27:31 | → | int-e joins (~noone@int-e.eu) |
| 11:29:24 | × | lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection) |
| 11:29:52 | → | lambdabot joins (~lambdabot@silicon.int-e.eu) |
| 11:29:52 | × | lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host) |
| 11:29:52 | → | lambdabot joins (~lambdabot@haskell/bot/lambdabot) |
| 11:36:10 | → | Guest123 joins (~Guest123@102.118.46.174) |
| 11:37:34 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 11:38:10 | × | Guest123 quits (~Guest123@102.118.46.174) (Client Quit) |
| 11:38:33 | → | califax joins (~califax@user/califx) |
| 11:38:42 | → | jhdr joins (~jhdr@102.118.46.174) |
| 11:40:53 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 11:42:08 | → | ulvarrefr joins (~user@188.124.56.153) |
| 11:42:15 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 11:43:40 | → | dextaa6 joins (~DV@user/dextaa) |
| 11:44:48 | → | son0p joins (~ff@2604:3d08:5b7f:5540::e96e) |
| 11:45:30 | → | jhdr_ joins (~jhdr@102.118.46.174) |
| 11:45:35 | × | hueso quits (~root@user/hueso) (Ping timeout: 268 seconds) |
| 11:45:43 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 11:46:10 | × | dextaa quits (~DV@user/dextaa) (Ping timeout: 272 seconds) |
| 11:46:10 | dextaa6 | is now known as dextaa |
| 11:46:53 | → | hueso joins (~root@user/hueso) |
| 11:50:21 | × | jhdr quits (~jhdr@102.118.46.174) (Quit: Client closed) |
| 11:51:45 | × | Alex_test quits (~al_test@178.34.161.14) (Ping timeout: 268 seconds) |
| 11:53:46 | × | AlexZenon quits (~alzenon@178.34.161.14) (Ping timeout: 272 seconds) |
| 11:53:46 | × | AlexNoo quits (~AlexNoo@178.34.161.14) (Ping timeout: 272 seconds) |
| 11:53:54 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds) |
| 11:55:45 | → | ubert joins (~Thunderbi@p200300ecdf264e7e72c65d11ee5c445f.dip0.t-ipconnect.de) |
| 12:07:08 | × | meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 12:08:30 | → | CiaoSen joins (~Jura@p200300c9570e1d002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 12:09:35 | × | hueso quits (~root@user/hueso) (Ping timeout: 256 seconds) |
| 12:10:14 | × | raym quits (~ray@user/raym) (Ping timeout: 272 seconds) |
| 12:12:53 | → | slack1256 joins (~slack1256@191.126.99.70) |
| 12:14:54 | → | __monty__ joins (~toonn@user/toonn) |
| 12:15:14 | × | slack1256 quits (~slack1256@191.126.99.70) (Remote host closed the connection) |
| 12:15:29 | × | beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer) |
| 12:15:46 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 12:22:54 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 12:24:19 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 12:26:55 | → | raym joins (~ray@user/raym) |
| 12:33:51 | × | yuribarros quits (~yuribarro@2804:14c:65e4:865c::1000) (Quit: Leaving) |
| 12:36:00 | × | xacktm quits (~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com) |
| 12:36:00 | × | andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Remote host closed the connection) |
| 12:39:59 | → | hueso joins (~root@user/hueso) |
| 12:46:45 | → | AlexNoo joins (~AlexNoo@94.233.241.57) |
| 12:47:27 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 12:48:29 | → | Alex_test joins (~al_test@94.233.241.57) |
| 12:50:40 | → | freeside joins (~mengwong@213.86.11.74) |
| 12:52:54 | → | AlexZenon joins (~alzenon@94.233.241.57) |
| 12:55:45 | × | beefbambi quits (~beefbambi@183.82.30.144) (Ping timeout: 255 seconds) |
| 12:56:17 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 12:57:38 | × | acidjnk quits (~acidjnk@p200300d6e7137a39c81a3694893f5e3e.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 12:58:34 | <trev> | how do i apply a function over a list of lists? |
| 12:58:48 | <Rembane> | trev: With more map! |
| 12:58:56 | <Rembane> | trev: What's the type of the function? |
| 13:00:33 | <trev> | i'm doing some crazy crappy parsing for AoC... want to apply `dropAround` for each Text in [[Text]] |
| 13:01:26 | <merijn> | trev: Hint: what's the type of "map (f :: Int -> Char)" :) |
| 13:04:48 | <trev> | [Int] -> [Char] ? |
| 13:05:12 | × | freeside quits (~mengwong@213.86.11.74) (Ping timeout: 252 seconds) |
| 13:06:16 | <merijn> | Looks suspiciously like the kinda function you'd pass to map ;) |
| 13:07:29 | <trev> | :D i'm dumb |
| 13:07:45 | <trev> | is there a concise way to do it in haskell? |
| 13:07:59 | <trev> | like <$$> (wishful) |
| 13:08:07 | <merijn> | trev: Just do "map (map f)"? |
| 13:09:04 | <trev> | works |
| 13:09:10 | <trev> | thanks |
| 13:11:07 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:13:24 | × | zer0bitz quits (~zer0bitz@196.244.192.58) (Read error: Connection reset by peer) |
| 13:15:14 | → | Sciencentistguy9 joins (~sciencent@hacksoc/ordinary-member) |
| 13:15:51 | → | zer0bitz joins (~zer0bitz@196.244.192.58) |
| 13:17:10 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds) |
| 13:17:10 | Sciencentistguy9 | is now known as Sciencentistguy |
| 13:23:16 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) |
| 13:24:02 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 13:27:39 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 252 seconds) |
| 13:27:51 | → | xacktm joins (~xacktm@user/xacktm) |
| 13:28:18 | → | andreas303 joins (andreas303@ip227.orange.bnc4free.com) |
| 13:29:17 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:32:19 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 13:35:58 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::6126) |
| 13:37:06 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::6126) (Client Quit) |
| 13:40:42 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 13:41:31 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 268 seconds) |
| 13:43:10 | → | coot_ joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 13:44:43 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 13:45:21 | <fendor[m]> | is ghc 9.4.2 busted on windows in some way? |
| 13:45:29 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 13:45:54 | coot_ | is now known as coot |
| 13:47:04 | × | v0id_ptr quits (~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 268 seconds) |
| 13:50:45 | × | jhdr_ quits (~jhdr@102.118.46.174) (Ping timeout: 265 seconds) |
| 13:51:03 | → | MangoIV[m] joins (~mangoivma@2001:470:69fc:105::2:8417) |
| 13:56:10 | × | razetime quits (~quassel@49.207.230.181) (Ping timeout: 252 seconds) |
| 13:59:05 | → | fizbin joins (~fizbin@user/fizbin) |
| 13:59:14 | × | fizbin quits (~fizbin@user/fizbin) (Read error: Connection reset by peer) |
| 13:59:50 | × | Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 252 seconds) |
| 13:59:56 | → | fizbin joins (~fizbin@user/fizbin) |
| 14:00:32 | <Inst> | bleh |
| 14:00:40 | <Inst> | sort of sad that i have no time, i'm thinking about |
| 14:00:46 | <Inst> | or rather, no skill |
| 14:00:56 | <Inst> | i'm thinking about refactoring my Haskell program into running entirely in the IO monad |
| 14:01:07 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 14:02:03 | → | thongpv87 joins (~thongpv87@113.169.255.193) |
| 14:04:45 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 14:05:33 | <lortabac> | Inst: you mean without transformers? or literally having everything in IO (what would be the point)? |
| 14:05:42 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds) |
| 14:05:53 | <Inst> | with IORef |
| 14:06:07 | <Inst> | more to the point that Haskell is actually a multiparadigm language (you need HOOP or Objective to get objects, though) |
| 14:06:27 | × | thongpv87 quits (~thongpv87@113.169.255.193) (Quit: leaving) |
| 14:06:34 | <lortabac> | IORef instead of what? |
| 14:07:46 | <Inst> | processing via expression-only language |
| 14:07:56 | <Inst> | and for loops via forM_ |
| 14:12:18 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 14:16:06 | → | jhdr joins (~jhdr@102.118.128.137) |
| 14:16:58 | <c_wraith> | that seems like a really hard way to use Haskell |
| 14:17:10 | × | jhdr quits (~jhdr@102.118.128.137) (Client Quit) |
| 14:20:27 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 14:22:03 | <lortabac> | I mean, IORef instead of State/Writer makes sense if you want to avoid transformers |
| 14:22:24 | <lortabac> | but IORef everywhere... why? |
| 14:25:44 | → | fizbin_ joins (~fizbin@user/fizbin) |
| 14:26:47 | <c_wraith> | maybe you don't like ease of reasoning? |
| 14:28:17 | × | fizbin quits (~fizbin@user/fizbin) (Read error: Connection reset by peer) |
| 14:31:45 | → | morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) |
| 14:35:35 | × | beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer) |
| 14:36:40 | × | morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 265 seconds) |
| 14:36:55 | → | fizbin__ joins (~fizbin@user/fizbin) |
| 14:36:55 | <maerwald> | c_wraith: transformers and ease of reasoning? |
| 14:37:15 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 14:37:45 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1) |
| 14:38:06 | <maerwald> | We could start with explaining MonadBaseControl, MonadUnliftIO and friends. And then maybe how StateT interacts with inner IO and exceptions |
| 14:38:11 | <c_wraith> | maerwald: nah, pure expressions and ease of reasoning. |
| 14:38:36 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 14:38:46 | → | danza joins (~francesco@151.47.236.122) |
| 14:39:04 | <c_wraith> | though I am apparently the only person in the world who's unsurprised about the interaction of MonadBaseControl and bracket. |
| 14:39:25 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 14:39:55 | × | fizbin_ quits (~fizbin@user/fizbin) (Ping timeout: 260 seconds) |
| 14:40:04 | <maerwald> | right, effects systems make it a tad easier |
| 14:40:32 | <maerwald> | https://github.com/hasura/eff/issues/12 |
| 14:40:44 | → | fizbin joins (~fizbin@user/fizbin) |
| 14:40:53 | → | rekahsoft joins (~rekahsoft@2605:8d80:6e2:a50e:e78b:13e9:40ed:3d2c) |
| 14:43:09 | × | fizbin__ quits (~fizbin@user/fizbin) (Ping timeout: 256 seconds) |
| 14:44:00 | <maerwald> | but yeah, IO is so hard... |
| 14:44:41 | <lortabac> | maerwald: I think we are discussing using IO instead of pure functions |
| 14:44:48 | → | mikoto-chan joins (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) |
| 14:44:50 | <maerwald> | :D |
| 14:45:41 | × | danza quits (~francesco@151.47.236.122) (Read error: Connection reset by peer) |
| 14:48:01 | × | fizbin quits (~fizbin@user/fizbin) (Read error: Connection reset by peer) |
| 14:54:11 | → | freeside joins (~mengwong@212.12.38.120) |
| 14:54:51 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 14:59:15 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 15:01:31 | × | mikoto-chan quits (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) (Read error: Connection reset by peer) |
| 15:03:02 | → | mikoto-chan joins (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) |
| 15:12:50 | → | razetime joins (~quassel@49.207.230.181) |
| 15:14:27 | <maerwald> | how do you make a list of Proxies? |
| 15:16:45 | → | n0den1te joins (~~.~@2401:4900:1cc8:a400:6e01:e0b7:1a5e:9c43) |
| 15:17:33 | <Hecate> | (without Impredicative Types!) |
| 15:23:36 | × | mikoto-chan quits (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) (Quit: WeeChat 3.6) |
| 15:24:47 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) |
| 15:26:07 | → | mikoto-chan joins (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) |
| 15:26:11 | × | mikoto-chan quits (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) (Client Quit) |
| 15:26:54 | → | fizbin joins (~fizbin@user/fizbin) |
| 15:29:08 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 246 seconds) |
| 15:36:59 | → | bodisiw joins (~bodiskw@128.163.238.17) |
| 15:37:31 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1) |
| 15:40:35 | × | freeside quits (~mengwong@212.12.38.120) (Ping timeout: 260 seconds) |
| 15:43:35 | × | Xeroine quits (~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
| 15:44:19 | × | beefbambi quits (~beefbambi@183.82.30.144) (Ping timeout: 260 seconds) |
| 15:44:25 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 15:44:45 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 15:48:39 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 15:48:59 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 15:52:37 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 15:57:36 | × | beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Quit: beteigeuze) |
| 16:01:49 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 16:02:11 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 16:02:11 | jinsun | is now known as Guest2165 |
| 16:02:11 | jinsun__ | is now known as jinsun |
| 16:02:29 | → | j4cc3b joins (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 16:03:20 | × | Guest2165 quits (~jinsun@user/jinsun) (Ping timeout: 260 seconds) |
| 16:04:49 | → | nschoe joins (~q@141.101.51.197) |
| 16:05:24 | → | elevenkb joins (~elevenkb@105.224.37.128) |
| 16:08:49 | × | razetime quits (~quassel@49.207.230.181) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 16:09:57 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:12:03 | → | kenran joins (~user@user/kenran) |
| 16:12:29 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 16:13:18 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds) |
| 16:13:46 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:ef88:3e30:d92e:5615) (Quit: WeeChat 2.8) |
| 16:15:00 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 16:20:35 | × | merijn quits (~merijn@195.114.232.74) (Ping timeout: 260 seconds) |
| 16:21:38 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 246 seconds) |
| 16:27:51 | → | Inst_ joins (~Inst@2601:6c4:4081:54f0:7095:a698:8ea8:7bc6) |
| 16:27:51 | × | beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer) |
| 16:28:09 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:29:01 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 16:30:44 | → | shapr joins (~user@68.54.166.125) |
| 16:31:38 | × | Inst quits (~Inst@2601:6c4:4081:54f0:e018:7519:854e:3017) (Ping timeout: 252 seconds) |
| 16:35:18 | × | rekahsoft quits (~rekahsoft@2605:8d80:6e2:a50e:e78b:13e9:40ed:3d2c) (Ping timeout: 260 seconds) |
| 16:35:51 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) |
| 16:37:38 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 16:43:26 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 16:44:55 | <kuribas> | Any news about FOSDEM 2023? I made a proposal but it is still undecided... |
| 16:45:13 | <kuribas> | I probably was too late submitting it. |
| 16:45:15 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 16:53:14 | × | Xeroine quits (~Xeroine@user/xeroine) (Remote host closed the connection) |
| 16:54:06 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 16:59:29 | → | Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
| 17:02:24 | × | elevenkb quits (~elevenkb@105.224.37.128) (Quit: Client closed) |
| 17:03:15 | × | dsrt^ quits (~dsrt@76.145.185.103) (Remote host closed the connection) |
| 17:05:41 | → | morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) |
| 17:06:59 | × | FragByte quits (~christian@user/fragbyte) (Quit: Quit) |
| 17:07:09 | × | johnw quits (~johnw@2600:1700:cf00:db0:c0a7:cf05:c926:15f4) (Quit: ZNC - http://znc.in) |
| 17:07:21 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 17:08:02 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:09:19 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 17:09:58 | × | morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 17:15:20 | → | slack1256 joins (~slack1256@186.11.29.60) |
| 17:16:22 | <slack1256> | > show "gato" |
| 17:16:24 | <lambdabot> | "\"gato\"" |
| 17:16:36 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 17:17:03 | <slack1256> | Is there a newtype over String that has a Show instance where the result does not have the extra " ? |
| 17:17:20 | <geekosaur> | no |
| 17:17:49 | <c_wraith> | you could create one, but why? That's not what Show is for... |
| 17:18:17 | <slack1256> | Yeah, it is an abuse of Show. Maybe I should use Pretty or something. |
| 17:18:32 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 17:19:27 | → | beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
| 17:20:46 | × | td_ quits (~td@83.135.9.40) (Quit: waking up from the american dream ...) |
| 17:24:24 | × | pagnol quits (~user@213-205-209-87.ftth.glasoperator.nl) (Remote host closed the connection) |
| 17:27:23 | ← | n0den1te parts (~~.~@2401:4900:1cc8:a400:6e01:e0b7:1a5e:9c43) () |
| 17:30:52 | → | morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) |
| 17:32:11 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:33:24 | → | td_ joins (~td@83.135.9.40) |
| 17:34:43 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 17:35:08 | × | morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 246 seconds) |
| 17:35:14 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection) |
| 17:44:39 | × | nschoe quits (~q@141.101.51.197) (Quit: Switching off) |
| 17:47:31 | → | johnw joins (~johnw@2600:1700:cf00:db0:c0a7:cf05:c926:15f4) |
| 17:49:03 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 17:49:11 | → | borrow joins (~borrow@dynamic-78-8-220-237.ssp.dialog.net.pl) |
| 17:49:59 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Max SendQ exceeded) |
| 17:50:23 | × | borrow quits (~borrow@dynamic-78-8-220-237.ssp.dialog.net.pl) (Client Quit) |
| 17:51:02 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 17:51:29 | → | fizbin joins (~fizbin@user/fizbin) |
| 17:52:25 | × | jinsun quits (~jinsun@user/jinsun) (Ping timeout: 260 seconds) |
| 17:52:48 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 17:53:26 | → | econo joins (uid147250@user/econo) |
| 18:01:17 | × | fizbin quits (~fizbin@user/fizbin) (Remote host closed the connection) |
| 18:01:36 | → | fizbin joins (~fizbin@user/fizbin) |
| 18:02:54 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 18:03:16 | <kuribas> | > id "gato" -- slack1256 |
| 18:03:17 | <lambdabot> | "gato" |
| 18:03:48 | <kuribas> | slack1256: https://hackage.haskell.org/package/formatting-7.2.0/docs/Formatting.html |
| 18:06:46 | × | kuribas quits (~user@ptr-17d51eoh5205c65jz5o.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1)) |
| 18:06:53 | × | CiaoSen quits (~Jura@p200300c9570e1d002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 18:10:59 | → | acidjnk joins (~acidjnk@p200300d6e7137a97c81a3694893f5e3e.dip0.t-ipconnect.de) |
| 18:14:29 | → | Guest8974 joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 18:18:15 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) |
| 18:18:38 | × | vpan quits (~0@212.117.1.172) (Quit: Leaving.) |
| 18:19:05 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 18:20:05 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:20:15 | × | Xeroine quits (~Xeroine@user/xeroine) (Excess Flood) |
| 18:22:37 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 18:22:43 | → | Me-me joins (~Me-me@146.102.215.218.dyn.iprimus.net.au) |
| 18:23:11 | Jade[m] | is now known as Jadesheit[m] |
| 18:36:05 | → | tomokojun joins (~tomokojun@75.164.24.44) |
| 18:36:18 | × | beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 252 seconds) |
| 18:38:16 | → | Red_Swan joins (~jared@174-23-134-43.slkc.qwest.net) |
| 18:39:28 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection) |
| 18:43:13 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 18:43:33 | → | beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
| 18:45:29 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 18:48:00 | × | beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 265 seconds) |
| 18:48:50 | → | jinsun joins (~jinsun@user/jinsun) |
| 18:50:00 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 18:50:00 | jinsun | is now known as Guest3566 |
| 18:50:01 | × | Guest3566 quits (~jinsun@user/jinsun) (Killed (copper.libera.chat (Nickname regained by services))) |
| 18:50:01 | jinsun__ | is now known as jinsun |
| 18:56:13 | × | sayola1 quits (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds) |
| 18:56:20 | → | sayola joins (~sayola@dslb-002-201-085-035.002.201.pools.vodafone-ip.de) |
| 18:57:20 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 19:00:13 | × | tomokojun quits (~tomokojun@75.164.24.44) (Remote host closed the connection) |
| 19:00:41 | → | elevenkb joins (~elevenkb@105.224.37.128) |
| 19:07:17 | → | segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) |
| 19:18:22 | × | Guest8974 quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds) |
| 19:19:43 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) |
| 19:25:23 | → | irrgit_ joins (~irrgit@146.70.27.250) |
| 19:28:04 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 19:33:43 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) |
| 19:35:41 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Client Quit) |
| 19:37:48 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) |
| 19:38:18 | × | shapr quits (~user@68.54.166.125) (Remote host closed the connection) |
| 19:49:15 | → | Guest8974 joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 19:50:30 | × | elevenkb quits (~elevenkb@105.224.37.128) (Quit: Client closed) |
| 19:54:18 | → | isovector joins (~isovector@172.103.253.106.cable.tpia.cipherkey.com) |
| 19:55:05 | → | beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 19:55:14 | → | ft joins (~ft@p4fc2a257.dip0.t-ipconnect.de) |
| 19:57:02 | ← | isovector parts (~isovector@172.103.253.106.cable.tpia.cipherkey.com) () |
| 19:57:24 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 20:00:09 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 268 seconds) |
| 20:01:43 | → | mikoto-chan joins (~mikoto-ch@85-76-117-48-nat.elisa-mobile.fi) |
| 20:03:47 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 20:03:52 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::6126) |
| 20:04:07 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::6126) (Client Quit) |
| 20:06:02 | × | ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 20:06:22 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection) |
| 20:10:59 | → | elevenkb joins (~elevenkb@105.224.37.128) |
| 20:17:15 | → | kenran joins (~user@user/kenran) |
| 20:17:23 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 20:17:36 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 20:18:29 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer) |
| 20:19:38 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 20:22:21 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
| 20:22:22 | × | elevenkb quits (~elevenkb@105.224.37.128) (Quit: Client closed) |
| 20:26:16 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 20:29:07 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 20:29:07 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 20:29:10 | allbery_b | is now known as geekosaur |
| 20:33:52 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 20:35:35 | × | chymera quits (~chymera@ns1000526.ip-51-81-46.us) (Remote host closed the connection) |
| 20:37:40 | × | Guest8974 quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 252 seconds) |
| 20:40:14 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 252 seconds) |
| 20:40:26 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 20:42:31 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 20:51:16 | × | Xeroine quits (~Xeroine@user/xeroine) (Remote host closed the connection) |
| 20:52:08 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 20:54:24 | <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 |
| 20:55:49 | × | td_ quits (~td@83.135.9.40) (Ping timeout: 260 seconds) |
| 20:56:32 | × | slack1256 quits (~slack1256@186.11.29.60) (Ping timeout: 272 seconds) |
| 20:56:38 | <Jadesheit[m]> | flip (*) is funny |
| 20:58:42 | <voidzero> | it's not my favorite assignment :) foldl by itself is confoozing |
| 20:58:57 | <Jadesheit[m]> | I may just not see something but I don't get a lot of the steps |
| 20:59:05 | <Jadesheit[m]> | does not seem right to me |
| 20:59:35 | <Jadesheit[m]> | what do you think happens in the first step? |
| 20:59:49 | <voidzero> | yeah i messed this up |
| 21:00:19 | <Jadesheit[m]> | lets go through it step by step, ok? |
| 21:01:00 | <Jadesheit[m]> | first of all you havefoldl (flip (*)) 1 [1, 2, 3] |
| 21:01:03 | <Jadesheit[m]> | s// `/, s//`/ |
| 21:01:21 | <Jadesheit[m]> | can you look at the definition of foldl and tell me how this would expand? |
| 21:01:51 | <voidzero> | thanks. foldl (*) 2 [1..3] is going to become ((2 * 1) * 2 ) * 3 |
| 21:01:57 | × | fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving) |
| 21:02:13 | <Jadesheit[m]> | that's already the entire expansion. Only apply the definition once |
| 21:03:03 | <MangoIV[m]> | <maerwald> "how do you make a list of..." <- HList? A good implementation of HList is NP from sop-core |
| 21:03:06 | <voidzero> | foldl (flip (*)) 1) * 2) * 3 |
| 21:03:17 | <voidzero> | sorry |
| 21:03:21 | <voidzero> | foldl ((flip (*)) 1) * 2) * 3 |
| 21:03:32 | <Jadesheit[m]> | this also applies the recursive definitions |
| 21:03:48 | <Jadesheit[m]> | can you tell me what foldl looks like? |
| 21:04:25 | → | Xeroine_ joins (~Xeroine@user/xeroine) |
| 21:04:35 | <voidzero> | foldl f acc (x:xs) = foldl f (f acc x) xs |
| 21:04:46 | × | Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 272 seconds) |
| 21:05:02 | <voidzero> | this is really difficult for me to grasp though, thanks for bearing with me :) |
| 21:05:22 | <voidzero> | weird how foldr seems easier |
| 21:05:47 | <Jadesheit[m]> | it is, but it's important to know this |
| 21:06:04 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 21:06:17 | <Jadesheit[m]> | voidzero: apply this *once* to the original expression |
| 21:06:39 | → | chymera joins (~chymera@ns1000526.ip-51-81-46.us) |
| 21:06:40 | <voidzero> | foldl (flip (*)) 1 (1:[2,3,4]) |
| 21:06:44 | <voidzero> | i'm not sure how to write xs |
| 21:07:17 | <Jadesheit[m]> | don't yet evaluate |
| 21:07:22 | <Jadesheit[m]> | note down the thunks |
| 21:07:34 | <Jadesheit[m]> | and your xs is not quite correct |
| 21:07:41 | <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 |
| 21:07:54 | <MangoIV[m]> | As Proxy is basically unit you can always just make one. |
| 21:09:07 | <voidzero> | the list is (1:2:3:[]) |
| 21:09:16 | <Jadesheit[m]> | yes |
| 21:09:25 | <voidzero> | is 1 taken as x and the rest (2:3:[]) as xs? |
| 21:09:32 | <Jadesheit[m]> | correct |
| 21:09:36 | <voidzero> | alright |
| 21:09:51 | <voidzero> | foldl (flip (*)) 1 (1:2:3:4:[]) |
| 21:10:18 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 21:10:35 | <Jadesheit[m]> | where do you get the four from? |
| 21:10:48 | <voidzero> | i got carried away lol |
| 21:11:09 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 21:11:15 | <voidzero> | foldl (flip (*)) 1 (1:2:3:[]) |
| 21:11:42 | <Jadesheit[m]> | that's our starting expression |
| 21:11:43 | <Jadesheit[m]> | now apply foldl once |
| 21:12:08 | <Jadesheit[m]> | voidzero: using this information |
| 21:12:31 | <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. |
| 21:12:34 | <voidzero> | foldl (flip (*)) 1 (1:2:3:[]) = foldl (flip (*)) ((flip (*)) 1 1) 2:3:[] |
| 21:13:05 | <Jadesheit[m]> | very good |
| 21:13:15 | <Jadesheit[m]> | (paranthesize the last expression) |
| 21:13:25 | <Jadesheit[m]> | * (paranthesize the list expression at the end) |
| 21:13:32 | <Jadesheit[m]> | now apply foldl again |
| 21:13:36 | <voidzero> | ah yes. -- foldl (flip (*)) 1 (1:2:3:[]) = foldl (flip (*)) ((flip (*)) 1 1) (2:3:[]) |
| 21:13:56 | <Jadesheit[m]> | now apply foldl again |
| 21:14:52 | <voidzero> | let's see |
| 21:16:10 | <Square> | nvm, ofcourse it should be after last guard |
| 21:16:51 | <geekosaur> | correct, where applies to all guards |
| 21:18:47 | <voidzero> | it's a bit confusing with all these parentheses, still chewing on it for a bit |
| 21:19:18 | <Jadesheit[m]> | no worries, take your time |
| 21:19:28 | <voidzero> | ty |
| 21:19:31 | <Jadesheit[m]> | you can also ask questions or send intermediate results |
| 21:20:32 | → | tvandinther joins (~tvandinth@203.34.100.2) |
| 21:20:42 | → | danza joins (~francesco@151.37.165.128) |
| 21:21:02 | → | shapr joins (~user@68.54.166.125) |
| 21:21:48 | <voidzero> | foldl ((flip (*)) ((flip (*)) 1 1) 2) (3:[]) |
| 21:21:50 | <voidzero> | I *think* |
| 21:22:32 | <Jadesheit[m]> | very good |
| 21:22:34 | <Jadesheit[m]> | yes |
| 21:22:41 | <Jadesheit[m]> | one more |
| 21:23:07 | <voidzero> | alright |
| 21:23:21 | <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. |
| 21:24:25 | <voidzero> | Jadesheit[m], foldl (((flip (*)) ((flip (*)) 1 1) 2) 3) [] |
| 21:24:36 | <Jadesheit[m]> | very nice |
| 21:24:48 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 21:24:55 | <Jadesheit[m]> | ah wait, minor detail |
| 21:25:01 | <Jadesheit[m]> | you still need to pass the function |
| 21:25:10 | <Jadesheit[m]> | same with the version above |
| 21:25:36 | <voidzero> | ah yes so the intuitive idea ("needs one more flip (*)") was right |
| 21:25:54 | <Jadesheit[m]> | yes! |
| 21:26:07 | × | danza quits (~francesco@151.37.165.128) (Read error: Connection reset by peer) |
| 21:26:39 | <Jadesheit[m]> | voidzero: can you write down this with the function passed? |
| 21:26:50 | <Jadesheit[m]> | (just add the function as the first parameter) |
| 21:27:53 | <voidzero> | like this? : |
| 21:27:55 | <voidzero> | foldl (flip (*)) ((flip (*)) 1 1) (2:3:[]) = foldl ((flip (*)) ((flip (*)) 1 1) (flip (*)) 2) (3:[]) |
| 21:29:40 | <Jadesheit[m]> | in the definition of foldl the function is still passed |
| 21:29:40 | <Jadesheit[m]> | so even on the other side you still need it |
| 21:31:37 | <voidzero> | oh. I guess I only did that in the first evaluation step |
| 21:31:41 | <voidzero> | yes, let's see |
| 21:32:16 | <Jadesheit[m]> | brb* |
| 21:32:50 | → | beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 21:34:59 | <EvanR> | voidzero, yeah foldr is easier because it's just doing constructor replacement |
| 21:36:26 | <EvanR> | [] -> z |
| 21:36:38 | <EvanR> | (:) x xs -> f x xs |
| 21:37:14 | <voidzero> | yeah. It's just easier to brain :) |
| 21:37:50 | <EvanR> | and easier to laze (which as of now is the verb form of lazy) |
| 21:40:13 | <voidzero> | yes I'm tempted to laze way too often! |
| 21:40:29 | <voidzero> | ok so this is what i came up with when not lazeing (lazing?) |
| 21:40:33 | <voidzero> | https://paste.tomsmeding.com/EHvYCmc7 |
| 21:40:56 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) |
| 21:41:37 | <EvanR> | someone probably asked this already but what's the point of flip (*), assuming it's a commutative operation |
| 21:41:45 | <EvanR> | adding a lot f noise |
| 21:42:58 | → | kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) |
| 21:43:11 | <voidzero> | nothing. It's just the author of this book being a sadist (eyeballing you chris allen wherever you are) |
| 21:43:21 | <Jadesheit[m]> | its an exercise about evaluation |
| 21:43:29 | <EvanR> | alright assuming your listing is right, you're not done |
| 21:43:37 | <voidzero> | nah for the purposes of figuring out evaluating it's not that bad |
| 21:44:24 | <Jadesheit[m]> | voidzero: this is close but you started writing the `flip (*)` infix |
| 21:44:46 | <Jadesheit[m]> | it needs to be flip (*) a b |
| 21:45:12 | <voidzero> | ah yes. more parentheses needed |
| 21:45:40 | <Jadesheit[m]> | yep haha |
| 21:45:44 | <EvanR> | Not Enough Parenthesene Gas |
| 21:45:45 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 260 seconds) |
| 21:46:44 | <voidzero> | good catch. So 3 becomes: foldl ((flip (*)) ((flip (*)) 1 1) ((flip (*))) 2) (3:[]) |
| 21:47:00 | <voidzero> | followed by: foldl (((flip (*)) ((flip (*)) 1 1) ((flip (*))) 2) (flip (*)) 3) [] |
| 21:47:04 | → | pagnol joins (~user@213-205-209-87.ftth.glasoperator.nl) |
| 21:47:49 | <voidzero> | wait let me check that |
| 21:47:50 | <EvanR> | ((flip (*))) seems redundant right |
| 21:48:32 | <pagnol> | I'm looking for a datastructure to express a mapping from some type A to another type B |
| 21:48:41 | <pagnol> | something like Map A B, but it should be total |
| 21:48:51 | <EvanR> | hackage package total-map |
| 21:49:03 | <voidzero> | EvanR, yes, let me correct these last two steps |
| 21:49:17 | <pagnol> | thanks |
| 21:49:37 | <Jadesheit[m]> | voidzero: I think (???) its right |
| 21:49:47 | <Jadesheit[m]> | now you need to apply foldl once again |
| 21:49:53 | <Jadesheit[m]> | but another case |
| 21:49:57 | → | td_ joins (~td@83.135.9.40) |
| 21:50:01 | <Jadesheit[m]> | the one for the empty list |
| 21:50:23 | <EvanR> | @src foldl |
| 21:50:23 | <lambdabot> | foldl f z [] = z |
| 21:50:23 | <lambdabot> | foldl f z (x:xs) = foldl f (f z x) xs |
| 21:50:40 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:51:03 | <voidzero> | ghci says no |
| 21:51:06 | × | bodisiw quits (~bodiskw@128.163.238.17) (Quit: This computer has gone to sleep) |
| 21:51:13 | <Jadesheit[m]> | ok let me see |
| 21:51:40 | <Jadesheit[m]> | should I just write it out once? |
| 21:51:48 | <Jadesheit[m]> | because I know you have the right idea |
| 21:51:55 | <EvanR> | cool thing about haskell, you can factor out the (flip (*)) into a let for readability |
| 21:52:25 | <Jadesheit[m]> | EvanR: if you are supposed to show evaluation i would think that's not allowed? |
| 21:52:28 | <Jadesheit[m]> | or it might be |
| 21:52:46 | <EvanR> | well you could still use it as an aid to working it out, then unfactor it in the end |
| 21:52:52 | → | MajorBiscuit joins (~MajorBisc@31-23-159.netrun.cytanet.com.cy) |
| 21:53:00 | <Jadesheit[m]> | fair! |
| 21:53:19 | <EvanR> | the unfactoring will be easy and correct thanks to referential transparency |
| 21:53:24 | <voidzero> | got it |
| 21:53:26 | <Jadesheit[m]> | that's actually good, I'd do let mult = flip (*) in ... |
| 21:53:26 | <voidzero> | foldl (flip (*)) ((flip (*)) ((flip (*)) 1 1) 2) (3:[]) |
| 21:53:38 | <Jadesheit[m]> | perfect |
| 21:53:40 | <Jadesheit[m]> | yes |
| 21:53:53 | <voidzero> | ah that let is a good idea yes |
| 21:53:54 | <Jadesheit[m]> | now apply once more |
| 21:54:38 | <voidzero> | yes: foldl (flip (*)) (flip (*) ((flip (*)) ((flip (*)) 1 1) 2) 3) [] |
| 21:54:57 | <Jadesheit[m]> | parantheses on the first function |
| 21:55:06 | <Jadesheit[m]> | but seems good |
| 21:55:25 | <Jadesheit[m]> | <lambdabot> "foldl f z [] = z" <- now apply foldl again, noting that the case here is different |
| 21:55:26 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 21:57:21 | <voidzero> | ok.. let's see |
| 21:57:44 | <pagnol> | does it make sense to use Data.Map.Strict when the number of key-value pairs is low? |
| 21:58:26 | <Jadesheit[m]> | pagnol: how low, and do you eventually access all pairs? |
| 21:58:45 | <pagnol> | say only a few dozen, and yes I do access all eventually |
| 21:58:45 | <monochrom> | Perhaps not. But I wouldn't worry about it until benchmarking says you need to worry about it. |
| 21:59:14 | <monochrom> | The thing is hardware keeps changing so the "low" threshold keeps changing too. It's a moving target. |
| 21:59:33 | <pagnol> | I'm curious what Haskellers use, though |
| 21:59:50 | <monochrom> | Haskellers just use Data.Map.Strict and move on. |
| 22:00:11 | <monochrom> | Haskellers worry about actual issues not micromanagement issues. |
| 22:00:12 | <EvanR> | I'd probably use list of (k,v) more often if the API didn't suck xD |
| 22:00:14 | <voidzero> | so when we remove the list and the function it becomes this: |
| 22:00:17 | <voidzero> | flip (*) ((flip (*)) ((flip (*)) 1 1) 2) 3 |
| 22:00:20 | × | zns quits (~zns@user/zns) (Remote host closed the connection) |
| 22:00:29 | <EvanR> | congrats you just foldl'ed |
| 22:00:51 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:01:16 | <voidzero> | actually I think that was incorrect and this is correct: |
| 22:01:19 | <voidzero> | (flip (*)) ((flip (*)) ((flip (*)) 1 1) 2) 3 |
| 22:01:39 | <voidzero> | both give the same answer but infix vs prefix |
| 22:01:43 | <Jadesheit[m]> | should be the same I think |
| 22:01:58 | <EvanR> | that's the same thing |
| 22:02:03 | <Jadesheit[m]> | voidzero: not infix but just currying |
| 22:02:04 | <EvanR> | (f x) y = f x y |
| 22:02:15 | → | zns joins (~zns@user/zns) |
| 22:02:15 | <EvanR> | not currying but simply grouping |
| 22:02:25 | <EvanR> | using assocativity rules |
| 22:02:39 | <Jadesheit[m]> | voidzero: now you can start evaluating this bad boy |
| 22:02:46 | × | ystael quits (~ystael@user/ystael) (Quit: Lost terminal) |
| 22:02:48 | <Jadesheit[m]> | EvanR: yeah sorry |
| 22:02:53 | <voidzero> | let's do it |
| 22:03:01 | <EvanR> | no reason to evaluate it, it's fine xD |
| 22:03:35 | <EvanR> | @src flip |
| 22:03:35 | <lambdabot> | flip f x y = f y x |
| 22:04:32 | <pagnol> | EvanR ha, I was thinking the same |
| 22:04:35 | <Jadesheit[m]> | would it be "correct" to write `flip (*) a b` as `b * a` in this context, maintaining the infixity of the operator? |
| 22:05:12 | <EvanR> | sure |
| 22:05:17 | <pagnol> | about the (k, v) API being being a bit unergonomic |
| 22:05:24 | <EvanR> | (*) x y = x * y |
| 22:06:43 | <monochrom> | But if you're using foldl, the choice is between (flip (*)) and (\x y -> y * x) |
| 22:07:48 | <voidzero> | (flip (*)) ((flip (*)) ((flip (*)) 1 1) 2) 3 = (flip (*)) ((flip (*)) (1 * 1) 2) 3 |
| 22:08:28 | <voidzero> | (flip (*)) (1 * 2) 3 |
| 22:08:42 | <voidzero> | 2 * 3 |
| 22:08:44 | <voidzero> | 6 |
| 22:08:49 | <Jadesheit[m]> | don't be so quick |
| 22:08:54 | <voidzero> | darn :D |
| 22:08:56 | <Jadesheit[m]> | leave the thunks for a second |
| 22:09:39 | <Jadesheit[m]> | (its absolutely correct, but I assume your prof will want to see the expansion as thunks) |
| 22:09:42 | <voidzero> | (flip (*)) (2 * (1 * 1)) 3 |
| 22:10:15 | <Jadesheit[m]> | yes |
| 22:10:16 | <voidzero> | 3 * (2 * (1 * 1)) |
| 22:10:17 | <Jadesheit[m]> | once more |
| 22:10:29 | <Jadesheit[m]> | perfect |
| 22:10:42 | <Jadesheit[m]> | now, slowly work your way from the inside out |
| 22:10:49 | <Jadesheit[m]> | and then you're done |
| 22:10:59 | <voidzero> | 3 * (2 * 1) |
| 22:11:04 | <voidzero> | 3 * 2 |
| 22:11:08 | <voidzero> | 6 |
| 22:11:10 | × | Alex_test quits (~al_test@94.233.241.57) (Ping timeout: 252 seconds) |
| 22:11:16 | <Jadesheit[m]> | congratulations |
| 22:11:21 | <Jadesheit[m]> | well done! |
| 22:11:54 | × | AlexZenon quits (~alzenon@94.233.241.57) (Ping timeout: 252 seconds) |
| 22:13:13 | → | opticblast joins (~Thunderbi@172.58.82.193) |
| 22:13:37 | <voidzero> | thank you so much! |
| 22:13:41 | × | opticblast quits (~Thunderbi@172.58.82.193) (Client Quit) |
| 22:13:49 | <EvanR> | that's the most inefficient string of multiplications ever |
| 22:14:09 | <voidzero> | I don't have a professor but I'm really glad you guys exist <3 |
| 22:15:06 | × | pagnol quits (~user@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 255 seconds) |
| 22:15:38 | <voidzero> | graybeard sysadmin finally taking the time to learn a proper programming language |
| 22:16:22 | <voidzero> | the other day i worked out a fibonacci function and did this together with my 7 year old son |
| 22:16:34 | <voidzero> | I'll save the foldl until later though :-) |
| 22:17:04 | <voidzero> | EvanR, indeed :) |
| 22:17:37 | <voidzero> | I'm working through the book Haskell Programming From First Principles and am not allowing myself to skip exercises |
| 22:17:51 | <Jadesheit[m]> | please teach your son haskell |
| 22:18:24 | <voidzero> | you bet. It's a lot of fun |
| 22:18:27 | → | Alex_test joins (~al_test@94.233.241.57) |
| 22:18:43 | <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 |
| 22:18:46 | <Jadesheit[m]> | have fun :F |
| 22:18:53 | <Jadesheit[m]> | * have fun :D |
| 22:19:32 | → | AlexZenon joins (~alzenon@94.233.241.57) |
| 22:19:43 | <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. |
| 22:19:58 | <voidzero> | xmonad was fun to figure out to the point where i managed to get a working config file |
| 22:20:09 | <Jadesheit[m]> | voidzero: indeed yeah! |
| 22:21:20 | <voidzero> | My functional programming interest first got piqued when I wrote a 24h audio stream in the Liquidsoap language (https://liquidsoap.info/) |
| 22:21:52 | <Jadesheit[m]> | never heard of that haha |
| 22:21:53 | <voidzero> | it streams audio from a filelist and live hosts can connect to it to stream liveshows |
| 22:22:01 | <Jadesheit[m]> | gotta take a look |
| 22:22:09 | <voidzero> | https://github.com/NoAgenda/noagendastream |
| 22:22:23 | <geekosaur> | fwiw you'll find that Puppet is pretty FP oriented |
| 22:22:50 | <geekosaur> | to the extent that it's highly declarative |
| 22:23:13 | <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. |
| 22:24:22 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds) |
| 22:24:35 | × | j4cc3b quits (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 246 seconds) |
| 22:27:40 | <Reinhilde> | "noagenda" has an agenda. |
| 22:30:45 | <voidzero> | my only interest is to keep the boat afloat, and content wise that's all off topic anyway |
| 22:30:56 | → | bitmapper joins (uid464869@id-464869.lymington.irccloud.com) |
| 22:30:58 | <Reinhilde> | eoe |
| 22:34:27 | → | thegeekinside joins (~thegeekin@189.128.148.159) |
| 22:36:21 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 22:37:37 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1) |
| 22:38:24 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 22:41:21 | → | drvitek joins (~drvitek@2601:85:c300:7940:6d22:5284:fc40:3019) |
| 22:41:51 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 22:44:23 | → | fizbin joins (~fizbin@user/fizbin) |
| 22:46:10 | × | talismanick quits (~talismani@76.133.152.122) (Remote host closed the connection) |
| 22:53:47 | × | trev quits (~trev@user/trev) (Remote host closed the connection) |
| 22:54:58 | → | talismanick joins (~talismani@76.133.152.122) |
| 22:56:46 | → | quazimodo joins (~quazimodo@122-199-39-221.ip4.superloop.com) |
| 23:02:24 | pony | is now known as smol-hors |
| 23:03:47 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 23:06:42 | → | fizbin_ joins (~fizbin@user/fizbin) |
| 23:07:00 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:07:39 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 260 seconds) |
| 23:19:57 | × | beefbambi quits (~beefbambi@183.82.30.144) (Ping timeout: 256 seconds) |
| 23:20:16 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 23:20:17 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 246 seconds) |
| 23:20:28 | × | ubert quits (~Thunderbi@p200300ecdf264e7e72c65d11ee5c445f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 23:20:29 | → | ubert1 joins (~Thunderbi@p200300ecdf264e518eb9d3d0ff313a22.dip0.t-ipconnect.de) |
| 23:22:46 | ubert1 | is now known as ubert |
| 23:37:24 | × | mikoto-chan quits (~mikoto-ch@85-76-117-48-nat.elisa-mobile.fi) (Ping timeout: 260 seconds) |
| 23:38:35 | × | kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving) |
| 23:38:47 | × | Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:41:25 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 23:43:23 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 23:44:23 | × | manwithluck quits (~manwithlu@2a09:bac1:5bc0:20::49:125) (Ping timeout: 260 seconds) |
| 23:46:05 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:47:06 | → | ddellacosta joins (~ddellacos@89.45.224.220) |
| 23:49:23 | × | beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer) |
| 23:49:33 | → | beefbambi joins (~beefbambi@183.82.30.144) |
| 23:56:46 | × | Red_Swan quits (~jared@174-23-134-43.slkc.qwest.net) (Ping timeout: 252 seconds) |
| 23:57:37 | → | Red_Swan joins (~jared@174-23-134-43.slkc.qwest.net) |
All times are in UTC on 2022-12-19.