2021-08-21 00:00:16 +0200 | oldsk00l_ | (~znc@ec2-3-124-242-227.eu-central-1.compute.amazonaws.com) |
2021-08-21 00:00:23 +0200 | <ixlun> | Ahhhh, so that's what forall means? it means that if 'a' or 'm' is used in the below code, it refers to the 'a' or 'm' in the type signature of the function? |
2021-08-21 00:00:46 +0200 | oldsk00l | (~znc@ec2-18-170-87-228.eu-west-2.compute.amazonaws.com) (Ping timeout: 252 seconds) |
2021-08-21 00:00:57 +0200 | <monochrom> | "forall" is a reserved word that also has meanings under other extensions. |
2021-08-21 00:01:29 +0200 | <monochrom> | So the inventor of this extension decides to hitchhike this reserved word. |
2021-08-21 00:01:46 +0200 | <monochrom> | and it works beatifully, there is no conflict. |
2021-08-21 00:02:01 +0200 | kenran | (~kenran@200116b82b157f00af733520c5a4c898.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
2021-08-21 00:02:03 +0200 | <ixlun> | So it's using forall in the context of scopedtypevariables? |
2021-08-21 00:02:07 +0200 | <monochrom> | The need to add some syntax is because backward compatibility. |
2021-08-21 00:02:13 +0200 | <hpc> | one could even say forall has only one meaning, and multiple applications of that meaning |
2021-08-21 00:02:22 +0200 | <hpc> | since it's really just bringing a new type variable into scope |
2021-08-21 00:04:14 +0200 | <ixlun> | Nice. Always wondered why I saw forall peppered on bits of haskell code. |
2021-08-21 00:04:39 +0200 | <hpc> | if you want to go down a fun mathematical rabbit hole, https://en.wikipedia.org/wiki/Universal_quantification |
2021-08-21 00:08:09 +0200 | <ixlun> | Thanks for the link. That's defiantly one to look at! Anyway code is working great now. Thanks for the help all! |
2021-08-21 00:12:40 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-21 00:16:40 +0200 | oxide_ | (~lambda@user/oxide) (Quit: oxide_) |
2021-08-21 00:17:59 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-21 00:21:03 +0200 | jess | (~jess@libera/staff/jess) () |
2021-08-21 00:22:52 +0200 | Megant | (megant@user/megant) |
2021-08-21 00:27:36 +0200 | son0p | (~ff@181.136.122.143) (Remote host closed the connection) |
2021-08-21 00:28:33 +0200 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) |
2021-08-21 00:29:22 +0200 | Megant | (megant@user/megant) (Ping timeout: 252 seconds) |
2021-08-21 00:37:40 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-08-21 00:37:45 +0200 | <Cajun> | and for RankNTypes, doesnt it allow you to restrict a type variable from "escaping" like ST does? whats the other use(s) (if there are any) of it in RankNTypes? |
2021-08-21 00:38:19 +0200 | alphabeta | (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) |
2021-08-21 00:38:32 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 250 seconds) |
2021-08-21 00:39:06 +0200 | kilolympus | (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Ping timeout: 258 seconds) |
2021-08-21 00:39:56 +0200 | <monochrom> | To actually write rank-n types at all. |
2021-08-21 00:40:45 +0200 | <monochrom> | How else can "(∀r. r -> (r -> r) -> r) -> Natural" be expressed. |
2021-08-21 00:41:03 +0200 | MQ-17J | (~MQ-17J@2607:fb90:8824:bf5d:8f75:f298:534b:ce5e) (Read error: Connection reset by peer) |
2021-08-21 00:41:25 +0200 | MQ-17J | (~MQ-17J@8.6.144.209) |
2021-08-21 00:41:48 +0200 | <Cajun> | well what does that express about `r` that isnt already? |
2021-08-21 00:41:54 +0200 | <monochrom> | interpreter :: (∀a. MyFunctor a -> IO a) -> Free MyFunctor a -> IO a |
2021-08-21 00:42:33 +0200 | <monochrom> | (∀r. r -> (r -> r) -> r) -> Natural ≠ ∀r. (r -> (r -> r) -> r) -> Natural |
2021-08-21 00:43:34 +0200 | <Cajun> | in that interpreter line, the qualified `a` /~ the outside `a`, correct? |
2021-08-21 00:43:43 +0200 | <monochrom> | right |
2021-08-21 00:46:20 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9557dc14868c6ad3e278.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2021-08-21 00:47:41 +0200 | norias | (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
2021-08-21 00:47:51 +0200 | norias | (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Client Quit) |
2021-08-21 00:51:11 +0200 | <Cajun> | so whats the purpose of `ExplicitForAll`? does it behave like `ScopedTypeVariables`? i dont see why it would be useful to have `forall`s where it is implicit, or when it would be useful to abuse the `forall-or-nothing` rule |
2021-08-21 00:52:07 +0200 | <geekosaur> | just to be complete, I think, so both RankNTypes and ScopedTypeVariables can "depend on" it |
2021-08-21 00:52:10 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-08-21 00:52:36 +0200 | <Cajun> | oh well that makes sense |
2021-08-21 00:52:39 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-21 00:53:20 +0200 | <monochrom> | I was not the author of ExplicitForAll, I don't know their purpose. |
2021-08-21 00:53:54 +0200 | <monochrom> | But my philosophy is that implicit quantification has always been a source of confusion, not a source of simplification. |
2021-08-21 00:54:32 +0200 | <monochrom> | Implicit forall is why people mistake induction for circular logic. |
2021-08-21 00:55:51 +0200 | <Cajun> | i believe anything that almost entirely leaves the realm of computer science-y stuff (like quantification imo) is when it trips up people the most, but thats coming from little experience |
2021-08-21 00:56:23 +0200 | <geekosaur> | and ExplicitForalls doesn't mean you always have to write them, it just makes forall a keyword, so it's kinda confusingly named |
2021-08-21 00:57:29 +0200 | Megant | (~kaitsu@user/megant) |
2021-08-21 00:57:37 +0200 | chisui | (~chisui@200116b86875540094408e56d6769020.dip.versatel-1u1.de) |
2021-08-21 00:57:51 +0200 | <monochrom> | Who draws the line between "inside CS" and "outside CS"? CS emphatically has never existed in isolation, unlike pure math. |
2021-08-21 00:57:57 +0200 | <sclv> | explicitforall _enables_ explicit foralls. it used to be that you needed an extension such as scopedtypevariables or gadts to enable that syntax |
2021-08-21 00:58:32 +0200 | <sclv> | it was weird that multiple extensions enabled a piece of syntax as a side effect, but no single extension _just_ enabled that syntax. so they made an extension to _just_ enable that syntax. |
2021-08-21 00:58:49 +0200 | <monochrom> | Any concept that clarifies programming and/or helps programming is fair game. (And who draws the line between "is programming" and "is not programming"?) |
2021-08-21 00:59:07 +0200 | <sclv> | quantification is very computer sciency |
2021-08-21 00:59:20 +0200 | <sclv> | its a key part of any rich type system |
2021-08-21 00:59:49 +0200 | <Cajun> | i guess you can really view it either way, but coming from Java it never felt like an intrinsically programming-related thing, so thats where im coming from with that |
2021-08-21 01:00:45 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
2021-08-21 01:01:22 +0200 | <monochrom> | "I see you have a list-reverse function. Does it work no matter what my element type is?" is a fair question. The "no matter what" is quantification right there. This is a rank-1-type question. It is a fair question whether you have static or dynamic typing. A user of the reverse function in Scheme gets to ask that same question. |
2021-08-21 01:02:57 +0200 | <monochrom> | "I see you have a foo function that wants me to give you another function as a parameter. Does it want my function to be polymorphic? Or is it OK if I give a monomorphic function?" Now you have a rank-2-type question. |
2021-08-21 01:04:20 +0200 | <monochrom> | Polymorphism brings up quantification. |
2021-08-21 01:04:34 +0200 | benin036932 | (~benin@183.82.178.142) (Ping timeout: 252 seconds) |
2021-08-21 01:05:22 +0200 | <monochrom> | You can play name games and take the stance of "'functor' is an alien math word, change it to 'mappable'; 'quantification' is an alien math word, change it to 'morphable'". |
2021-08-21 01:05:37 +0200 | <monochrom> | That doesn't mean you can avoid the substance. |
2021-08-21 01:06:43 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-21 01:06:47 +0200 | <monochrom> | In fact I'm pretty convinced that such name games are just manifesting people's not-invented-here sour-grape attitude. |
2021-08-21 01:06:48 +0200 | Megant | (~kaitsu@user/megant) (Ping timeout: 268 seconds) |
2021-08-21 01:07:24 +0200 | <Cajun> | makes sense, im not trying to make the argument it isnt computer-sciency, it was just how i thought of it. always seemed like something from another field being applied in a useful manner elsewhere while retaining the same name (for consistency) |
2021-08-21 01:08:09 +0200 | <monochrom> | If another community has already invented the same idea, if they got there first, why not adopt their names too so we can open up more opportunities for cross-discipline conversations? Sounds like the more hip thing to do. |
2021-08-21 01:08:59 +0200 | <monochrom> | For this reason when I read "any time you leave the CS realm" I think "so you're talking about echo chambers". |
2021-08-21 01:09:01 +0200 | <Cajun> | yeah changing the names wouldnt be a good idea, doesnt change monad from being a term with a vacuous meaning to anyone without a math background :P |
2021-08-21 01:09:11 +0200 | <Cajun> | that wikipedia page is scary |
2021-08-21 01:12:50 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-21 01:14:14 +0200 | Guest59 | (~Guest59@2a02:6b64:708f:0:44ea:d3ef:31bb:9f74) |
2021-08-21 01:19:29 +0200 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 248 seconds) |
2021-08-21 01:24:01 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-21 01:24:43 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 258 seconds) |
2021-08-21 01:26:33 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-21 01:30:28 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:1d3f:e608:d1ad:6d58) (Ping timeout: 258 seconds) |
2021-08-21 01:31:43 +0200 | Guest59 | (~Guest59@2a02:6b64:708f:0:44ea:d3ef:31bb:9f74) (Quit: Client closed) |
2021-08-21 01:34:40 +0200 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 240 seconds) |
2021-08-21 01:39:33 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
2021-08-21 01:40:43 +0200 | chisui | (~chisui@200116b86875540094408e56d6769020.dip.versatel-1u1.de) (Ping timeout: 246 seconds) |
2021-08-21 01:42:43 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:6057:8486:da6d:d017) |
2021-08-21 01:44:23 +0200 | lavaman | (~lavaman@98.38.249.169) (Read error: Connection reset by peer) |
2021-08-21 01:44:23 +0200 | awschnap | (~lavaman@98.38.249.169) |
2021-08-21 01:44:24 +0200 | favonia | (~favonia@user/favonia) |
2021-08-21 01:47:26 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:6057:8486:da6d:d017) (Ping timeout: 250 seconds) |
2021-08-21 01:48:56 +0200 | dolio | (~dolio@130.44.130.54) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-08-21 01:54:39 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:6057:8486:da6d:d017) |
2021-08-21 01:54:46 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 01:54:52 +0200 | dolio | (~dolio@130.44.130.54) |
2021-08-21 01:55:17 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-08-21 01:56:07 +0200 | Axma67744 | (~Axman6@user/axman6) |
2021-08-21 01:58:17 +0200 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 256 seconds) |
2021-08-21 01:59:10 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 240 seconds) |
2021-08-21 02:00:01 +0200 | Axman6 | (~Axman6@user/axman6) |
2021-08-21 02:01:07 +0200 | Axma67744 | (~Axman6@user/axman6) (Ping timeout: 256 seconds) |
2021-08-21 02:06:33 +0200 | fresheyeball | (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) |
2021-08-21 02:07:21 +0200 | dajoer | (~david@user/gvx) |
2021-08-21 02:09:03 +0200 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 256 seconds) |
2021-08-21 02:09:24 +0200 | gianfranco | (~gianfranc@181.28.82.192) |
2021-08-21 02:09:43 +0200 | <gianfranco> | is this chat room active? |
2021-08-21 02:11:46 +0200 | <lechner> | sometimes |
2021-08-21 02:14:01 +0200 | <hpc> | technically since this chat room is only active in the moment when a message is sent, it is only infinitessimally active |
2021-08-21 02:14:23 +0200 | <lechner> | which means never |
2021-08-21 02:14:27 +0200 | <lechner> | Hi, I don't mean to open up old wounds, but why is RecordDotSyntax better than lenses? Does it finally remove the accessors from the file-level name space? |
2021-08-21 02:15:20 +0200 | <monochrom> | RecordDotSyntax is not better. |
2021-08-21 02:15:45 +0200 | <monochrom> | RecordHashSyntax would be better. SML and OCaml already do it. |
2021-08-21 02:16:31 +0200 | <monochrom> | But I'm pretty sure either way it doesn't take away existing syntax such as accessors. |
2021-08-21 02:16:51 +0200 | <monochrom> | OK, I haven't checked, I can't be sure. |
2021-08-21 02:17:04 +0200 | <monochrom> | You can see how much I care. |
2021-08-21 02:17:11 +0200 | <lechner> | i am just catching up to the group. there is no agenda |
2021-08-21 02:17:25 +0200 | <lechner> | is it an optional language featkre? |
2021-08-21 02:17:25 +0200 | <gianfranco> | oh ok |
2021-08-21 02:17:32 +0200 | <lechner> | feature? |
2021-08-21 02:17:40 +0200 | <gianfranco> | I saw this room featured on haskell.org lol |
2021-08-21 02:18:18 +0200 | <lechner> | what were you doing on haskell.org? |
2021-08-21 02:18:25 +0200 | <xsperry> | what would RecordHashSyntax do differently? just replace . character with #? |
2021-08-21 02:18:31 +0200 | <monochrom> | Yes. |
2021-08-21 02:18:48 +0200 | <gianfranco> | I'm new to haskell |
2021-08-21 02:18:59 +0200 | <gianfranco> | was looking for documentation mainly |
2021-08-21 02:19:07 +0200 | <lechner> | me too |
2021-08-21 02:19:42 +0200 | <lechner> | check out What I wish I knew about Haskell |
2021-08-21 02:19:54 +0200 | <lechner> | monochrom: why is it better? (I may agree) |
2021-08-21 02:20:22 +0200 | gianfranco | (~gianfranc@181.28.82.192) (Quit: Client closed) |
2021-08-21 02:20:51 +0200 | <Clint> | he wants . to have only two meanings instead of three |
2021-08-21 02:20:57 +0200 | <monochrom> | But lens has other powers that even real record systems cannot dream of. I would not forget about lens. |
2021-08-21 02:21:38 +0200 | <lechner> | Clint: was that dot an inside joke? |
2021-08-21 02:22:06 +0200 | reumeth | (~reumeth@user/reumeth) (Ping timeout: 250 seconds) |
2021-08-21 02:22:35 +0200 | <Lycurgus> | real record systems |
2021-08-21 02:22:48 +0200 | <monochrom> | You don't want "f.g" to not mean "f . g" |
2021-08-21 02:22:53 +0200 | gianfranco | (~gianfranc@181.28.82.192) |
2021-08-21 02:23:21 +0200 | <Clint> | lechner: i don't think so? |
2021-08-21 02:23:22 +0200 | <Lycurgus> | gianfranco, there is a beginners channel |
2021-08-21 02:23:24 +0200 | <lechner> | is see. it was an explicit "." |
2021-08-21 02:23:37 +0200 | <Lycurgus> | #haskell-beginners i think |
2021-08-21 02:23:56 +0200 | <monochrom> | One can get used to it, sure. One can write a parser for it, sure. But this is one of those times I get to say "can ≠ should". |
2021-08-21 02:23:59 +0200 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) |
2021-08-21 02:24:35 +0200 | <monochrom> | #haskell-beginners is centered around a book, not around the notion of beginner. False advertising. |
2021-08-21 02:25:30 +0200 | <monochrom> | And recently a learner's blog, featured in HWN, did roast the book I think. |
2021-08-21 02:25:53 +0200 | <Lycurgus> | well multiple off topic side channels, multiple newbies wouldn surprise |
2021-08-21 02:26:29 +0200 | <monochrom> | "With a book, you can’t just open a browser window and just start typing. Well, technically, you could. I read one during my 3 months of emersion that was over 1000 pages and could’ve been easily 300 pages if they had a good editor who was also a functional programmer (also known as a unicorn)." |
2021-08-21 02:26:42 +0200 | benin036932 | (~benin@183.82.178.142) |
2021-08-21 02:26:50 +0200 | <monochrom> | There is only one 1000-page Haskell book. That one. |
2021-08-21 02:26:53 +0200 | <monochrom> | https://cscalfani.medium.com/why-is-learning-functional-programming-so-damned-hard-bfd00202a7d1 |
2021-08-21 02:27:08 +0200 | retro_ | (~retro@5ec19a54.skybroadband.com) |
2021-08-21 02:27:45 +0200 | Lycurgus | is in the arduous process of going thru all his physical books to decide which to schlep and which to toss |
2021-08-21 02:28:12 +0200 | <lechner> | keep the ones you like |
2021-08-21 02:28:20 +0200 | silver_ | (~silver@37.214.31.4) |
2021-08-21 02:28:36 +0200 | <monochrom> | I used to think, the book's purpose is to be slow-paced, step-by-step, so it may warrant 1000 pages, maybe it's a benefit. I haven't really checked myself. |
2021-08-21 02:29:23 +0200 | <monochrom> | By now, seeing someone who had struggled during learning Haskell, now reporting what worked and what didn't, and the 1000-page book was one of the didn'ts and is roasted like this, well, that changes my mind. |
2021-08-21 02:29:26 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
2021-08-21 02:29:53 +0200 | retroid_ | (~retro@5ec19a54.skybroadband.com) (Ping timeout: 258 seconds) |
2021-08-21 02:30:03 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 268 seconds) |
2021-08-21 02:30:07 +0200 | <Lycurgus> | i was gonna give away my great books my dad gave me in 6th grade and the 15th edition of brittanica but then i found their value was about $2K |
2021-08-21 02:31:06 +0200 | <Lycurgus> | i don't think you can learn something like haskell any other way than doing |
2021-08-21 02:31:28 +0200 | <lechner> | i am not sure even that works |
2021-08-21 02:31:38 +0200 | <Lycurgus> | langs in general except for the super simple immersion is the way |
2021-08-21 02:32:01 +0200 | <Lycurgus> | well yeah hs and cl have that in common |
2021-08-21 02:32:11 +0200 | <Lycurgus> | haskell more than lisp |
2021-08-21 02:32:46 +0200 | <Lycurgus> | most langs don't dare not have fixed largely unchanging baselines |
2021-08-21 02:33:19 +0200 | <monochrom> | It is a human nature to assume that every need is to be resolved by more consumption. |
2021-08-21 02:33:51 +0200 | <monochrom> | If someone doesn't understand monads, they think "what more should I read/watch", not "what more should I practice". |
2021-08-21 02:34:16 +0200 | <monochrom> | If someone feels sick, they think "what should I eat to cure it", not "what should I stop eating to cure it". |
2021-08-21 02:35:00 +0200 | <lechner> | one night with Haskell will make a strong man humble |
2021-08-21 02:35:07 +0200 | <Lycurgus> | that seems to be an idee fix with you, but I think in general there's a greater diversity |
2021-08-21 02:35:13 +0200 | <monochrom> | Cease the means of consumption. |
2021-08-21 02:35:27 +0200 | <Lycurgus> | there will be people who's first lang is hs |
2021-08-21 02:35:52 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds) |
2021-08-21 02:35:59 +0200 | <Lycurgus> | under the right circumstances it will seem natural and easy to them |
2021-08-21 02:36:46 +0200 | <lechner> | to those who do not drop out? |
2021-08-21 02:36:53 +0200 | <Lycurgus> | also people with a really wide experience rather than the usual algol-like suspects are not gonna try to force haskell into earlier experiences |
2021-08-21 02:37:48 +0200 | <Lycurgus> | for example say a strong music theory major |
2021-08-21 02:37:56 +0200 | <Lycurgus> | have seen that |
2021-08-21 02:38:17 +0200 | <lechner> | but a haskell army? |
2021-08-21 02:39:17 +0200 | <Lycurgus> | needs to some other kinda collective |
2021-08-21 02:39:36 +0200 | <Lycurgus> | vanguard oder |
2021-08-21 02:39:54 +0200 | <lechner> | or a secret cabal? |
2021-08-21 02:40:21 +0200 | <Lycurgus> | :) |
2021-08-21 02:40:52 +0200 | <Cajun> | monochrom: it may be difficult for someone who doesnt understand monads to think of a way to use it that doesnt involve what the book has already given them. i found reading from more sources that offered other views to quaint my understanding until it finally clicked. you need to know enough about them before you can use them to learn more about |
2021-08-21 02:40:53 +0200 | <Cajun> | them, essentially. at least this is my experience |
2021-08-21 02:42:15 +0200 | <monochrom> | But I was not criticizing that. |
2021-08-21 02:43:02 +0200 | <Cajun> | ah it was just a statement not a point of discussion, this is what happens when i stumble into a convo :P |
2021-08-21 02:43:16 +0200 | gianfranco | (~gianfranc@181.28.82.192) (Quit: Client closed) |
2021-08-21 02:43:27 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2021-08-21 02:46:26 +0200 | <monochrom> | Either question you ask, you will have to find someone to answer, or Google for an answer. You can't answer either question yourself. I grant that. |
2021-08-21 02:46:58 +0200 | <monochrom> | But there is still a difference between googling for more "intuition, analogies" and googling for more examples. |
2021-08-21 02:48:01 +0200 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 248 seconds) |
2021-08-21 02:48:13 +0200 | <monochrom> | Especially if, after seeing the beginning of an example, you go "hold on, don't show my all your code yet, let me try to write some of it myself, then compare with yours". Now that's respectable practicing. |
2021-08-21 02:48:37 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-21 02:49:15 +0200 | <Cajun> | i like to predict whats next/predict the result of a function before seeing it, its quick enough never to be a pain because it doesnt require writing/rewriting lines of code |
2021-08-21 02:49:28 +0200 | <monochrom> | Yes that too. |
2021-08-21 02:50:38 +0200 | <Cajun> | although i do entirely agree that googling the "right" and "wrong" thing is an inconvenience. its also doesnt help many sources use the same examples (Maybe monad, Identity monad) which doesnt always help too much |
2021-08-21 02:50:56 +0200 | <Cajun> | (seeing the same example multiple times doesnt help too much, to clarify) |
2021-08-21 02:58:36 +0200 | Lycurgus | thinks the most cogent explanation of what a hs monad is "a mechanism haskell uses to effect referential transparency" |
2021-08-21 03:01:27 +0200 | <Lycurgus> | s/is/is is/ |
2021-08-21 03:02:08 +0200 | <lechner> | i am not sure i would use the words transparency and monad in the same sentence |
2021-08-21 03:02:31 +0200 | <Lycurgus> | sounds like a criticism |
2021-08-21 03:02:46 +0200 | <lechner> | of monads, maybe |
2021-08-21 03:03:05 +0200 | <lechner> | or just a case of cynical friday |
2021-08-21 03:03:16 +0200 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) |
2021-08-21 03:03:23 +0200 | <Cajun> | i liked the explanation given on that one stack overflow page <https://stackoverflow.com/questions/44965/what-is-a-monad> |
2021-08-21 03:04:00 +0200 | <Cajun> | lechner: why not cynical sunday, rolls off the tongue better :P |
2021-08-21 03:04:49 +0200 | <monochrom> | You know what, "monad" is also vacuous for mathematicians. You have to have seen the definition, or else you couldn't even start to guess. |
2021-08-21 03:05:30 +0200 | <lechner> | Cajun: based on some primitive stastistics, cases pile up on fridays |
2021-08-21 03:05:41 +0200 | <monochrom> | whereas for example "Minkowski transfrom" is somewhat guessable, "ah, a function defined by Minkowski in some paper" |
2021-08-21 03:05:51 +0200 | <Lycurgus> | it's like 'functor' except more so, monads are ancient |
2021-08-21 03:06:07 +0200 | <Lycurgus> | functors are 20th century |
2021-08-21 03:06:15 +0200 | <lechner> | Cajun: also, which one of the 46 (!) answers? |
2021-08-21 03:06:18 +0200 | <monochrom> | And you know what, "computation builder" is just as vacuous. |
2021-08-21 03:06:44 +0200 | <Cajun> | lechner: the top one |
2021-08-21 03:07:08 +0200 | <monochrom> | "chain" is a good word though. I wouldn't object "computation chainer" if you're pressed for a 5-second elevator pitch. |
2021-08-21 03:07:30 +0200 | <Cajun> | monochom: yeah it still doesnt mean much, but at least you know it does something (some kind of computation in some way by "building" the chain of binds) rather than just "monad" |
2021-08-21 03:07:47 +0200 | <Cajun> | yeah i like computation chainer better, makes more sense |
2021-08-21 03:08:29 +0200 | <monochrom> | But only for a 5-second pitch. |
2021-08-21 03:09:03 +0200 | <monochrom> | For 30 seconds, "chain" is still suboptimal. It's just a whee bit better than "build". |
2021-08-21 03:09:06 +0200 | <lechner> | to me, a monad sequences operations. is that right? |
2021-08-21 03:09:46 +0200 | <Cajun> | i like thinking of it as a chain but sequence is probably more in line with how it looks (feeds from top to bottom in sequence) |
2021-08-21 03:10:03 +0200 | <Lycurgus> | a less pretentious term would have been more fortunate in retrospect but I guess it was already set out by saunders maclane et al |
2021-08-21 03:10:08 +0200 | <monochrom> | In "f . g", f and g are computations too, "." "builds" and "chains" too. Yet "." only gives you an arrow, not a monad. It is "$" who gives you a monad (the Identity monad). |
2021-08-21 03:10:40 +0200 | <monochrom> | But "chain" is a whee bit better than "build" because <|> also builds, but not chains. |
2021-08-21 03:10:51 +0200 | <lechner> | i meant: impose an order of evaluation |
2021-08-21 03:11:23 +0200 | <lechner> | or is that wrong? |
2021-08-21 03:11:33 +0200 | <Cajun> | Lycurgus: i recall simon peyton jones mentioning that the biggest regret is the scary name they gave monads rather than something more warm and cozy. its in some talk somewhere |
2021-08-21 03:11:46 +0200 | <monochrom> | The 30-second pitch I now use is "callback-style programming". |
2021-08-21 03:12:17 +0200 | <Lycurgus> | Cajun, yeah i think i know the one you mean |
2021-08-21 03:12:34 +0200 | <lechner> | monads are asynchronous? |
2021-08-21 03:13:14 +0200 | <monochrom> | Generally whatever story you come up with, you need to fight the confirmation bias. Programmers have proved to be undesirably susceptible to the confirmation bias. |
2021-08-21 03:13:49 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
2021-08-21 03:14:05 +0200 | <monochrom> | Don't just ask yourself "do all monad examples fit my story?". Also ask yourself "how about examples of non-monads? if they also fit my story, then my story is bunk". |
2021-08-21 03:14:42 +0200 | <c_wraith> | monads are joining-precisely-the-way-I'm-thinking things |
2021-08-21 03:18:12 +0200 | <monochrom> | This is why 99.9% of wordings I've seen are all bunk. "monad as computation" - there are parser types (clearly computations, no?) that are not monads, only arrows or alternatives. "monad as container" - ZipList is a non-monad container, again only applicative. "builds" - <|> also builds. "chains" - >>> also chains. |
2021-08-21 03:18:40 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
2021-08-21 03:18:52 +0200 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 250 seconds) |
2021-08-21 03:19:08 +0200 | <c_wraith> | my first intuition for monads was actually "makes do blocks work how you'd expect" |
2021-08-21 03:19:56 +0200 | <c_wraith> | which is... very circular. |
2021-08-21 03:21:07 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-08-21 03:21:30 +0200 | <monochrom> | I think it is on the right track, under the following condition... |
2021-08-21 03:21:49 +0200 | <Cajun> | the thing that really put my head through a loop was functions like "get" that dont take parameters (in do notation at least. doesnt it effectively take the rest of the computation as the parameter?) |
2021-08-21 03:22:14 +0200 | <monochrom> | Have you seen https://wiki.haskell.org/Monad_laws ? Especially the do-notation versions of the laws? |
2021-08-21 03:22:16 +0200 | <c_wraith> | Yeah, there's a post on Dan Piponi's blog about how you can look at monads as doing that. |
2021-08-21 03:22:46 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-08-21 03:23:10 +0200 | <monochrom> | If your "how do blocks works" includes expecting the equivalence of those various ways of writing do-blocks, then you already know monads. |
2021-08-21 03:23:33 +0200 | <c_wraith> | yeah, those were part of my mental model of do blocks. |
2021-08-21 03:24:28 +0200 | Teacup | (~teacup@user/teacup) (Quit: Teacup) |
2021-08-21 03:26:51 +0200 | Teacup | (~teacup@user/teacup) |
2021-08-21 03:30:52 +0200 | t0zy | (~t0zy@49.207.220.61) (Ping timeout: 252 seconds) |
2021-08-21 03:31:07 +0200 | t0zy | (~t0zy@49.207.193.1) |
2021-08-21 03:33:35 +0200 | t0zy | (~t0zy@49.207.193.1) (Read error: Connection reset by peer) |
2021-08-21 03:35:56 +0200 | t0zy | (~t0zy@49.207.193.1) |
2021-08-21 03:39:24 +0200 | <monochrom> | In the case of State and its "get", I have had weaker students, but still very wise, who didn't understand it, but they were wise because they thought up "I think it would help if you and I together expand 'runState foo 5' by hand to see why 'get >>= ...' isn't given a parameter there so where does the parameter come from?" |
2021-08-21 03:39:40 +0200 | <monochrom> | It's very brutal, but it worked. |
2021-08-21 03:40:59 +0200 | <Cajun> | what like entirely desugar it? |
2021-08-21 03:41:07 +0200 | <monochrom> | Yes. |
2021-08-21 03:41:20 +0200 | <c_wraith> | be the compiler. inline. simplify. |
2021-08-21 03:41:34 +0200 | <monochrom> | runState (get >>= \x -> put (x+1) >> get >>= \y -> return y) 5 |
2021-08-21 03:41:44 +0200 | <monochrom> | evaluate by hand. |
2021-08-21 03:42:13 +0200 | <Cajun> | i wish i didnt know about do notation until i *actually* understood monads |
2021-08-21 03:42:17 +0200 | <monochrom> | brutal, but it explicitly shows 5 goes to the 1st get, 5+1 goes to the 2nd get. |
2021-08-21 03:42:40 +0200 | <monochrom> | Oh yeah that too, another of my trick is to never mention do-notation. |
2021-08-21 03:43:22 +0200 | <Cajun> | do you teach haskell in uni? |
2021-08-21 03:43:40 +0200 | xff0x | (~xff0x@2001:1a81:5207:3100:686a:e8fd:47a9:633d) (Ping timeout: 240 seconds) |
2021-08-21 03:43:45 +0200 | <arahael> | whats this "allow newer" thing in cabal.project that adamCS mentioned last night (probably this morning for most of you here...) |
2021-08-21 03:43:48 +0200 | <Cajun> | since you mentioned having students |
2021-08-21 03:44:17 +0200 | <c_wraith> | arahael: it allows cabal to ignore upper bounds when solving the package constraints. |
2021-08-21 03:44:31 +0200 | <adamCS> | arahuel: It lets cabal ignore the upper bounds...What c_wraith said. |
2021-08-21 03:44:37 +0200 | <monochrom> | So many of my students are very good, they don't need this expansion to see, they can imagine it just after seeing the definitions of get, >>=, runState, etc. A few are weaker, but only weaker at this level of abstractions and jumps, they just need to see a concrete session of running it through. |
2021-08-21 03:44:43 +0200 | <adamCS> | arahael: ^ |
2021-08-21 03:44:54 +0200 | <c_wraith> | arahael: you can enable it for all packages, or specific ones that you know can have newer versions. |
2021-08-21 03:45:16 +0200 | <monochrom> | What I am still impressed is that they know what they need, they just need my help to ensure that they do it right. |
2021-08-21 03:45:49 +0200 | <monochrom> | Yes. |
2021-08-21 03:45:52 +0200 | xff0x | (~xff0x@2001:1a81:523e:7200:987e:5abc:19e1:66f6) |
2021-08-21 03:45:57 +0200 | <lechner> | haskell needs a teacher |
2021-08-21 03:46:03 +0200 | <c_wraith> | Yeah, being willing to actually do the work is way more than I saw from the weaker students when I was at college |
2021-08-21 03:46:47 +0200 | <arahael> | c_wraith: that sounds *possibly* what i want, assuming it works with monadfail. I'll check out the docs. |
2021-08-21 03:47:02 +0200 | <arahael> | adamCS: thanks :) that gives another option! |
2021-08-21 03:47:08 +0200 | <adamCS> | arahael: You can do "allow-newer: base" which allows cabal to ignore the upper bound on base in any other package or "allow-newer: diagrams:base" which only allows it in diagrams, e.g., |
2021-08-21 03:47:45 +0200 | t0zy | (~t0zy@49.207.193.1) (Read error: Connection reset by peer) |
2021-08-21 03:47:57 +0200 | <Cajun> | ive heard haskell being taught to freshmen and alternatively being taught to upperclassmen (who have already taken an imperative programming course) and the latter being more effective at teaching the language |
2021-08-21 03:48:51 +0200 | t0zy | (~t0zy@49.207.193.1) |
2021-08-21 03:48:54 +0200 | <yushyin> | arahael: https://cabal.readthedocs.io/en/3.4/cabal-project.html?#cfg-field-allow-newer |
2021-08-21 03:49:50 +0200 | <lechner> | Cajun: selection bias? |
2021-08-21 03:50:15 +0200 | <arahael> | adamCS: that sounds like what i want! so basically unless it actually has an api breakage, it should probably work and i'll find out once it builds (or fails to build). |
2021-08-21 03:50:25 +0200 | <arahael> | yushyin: thanks - already on it! |
2021-08-21 03:50:34 +0200 | <adamCS> | arahael: Yep. |
2021-08-21 03:50:47 +0200 | <yushyin> | arahael: good! ;) |
2021-08-21 03:50:48 +0200 | <Cajun> | lechner: huh? i meant that ive read teaching HS/FP to people who have programming knowledge bears more fruits than teaching a freshman with limited experience in programming |
2021-08-21 03:51:26 +0200 | <adamCS> | arahael: Using the more specific version can help you remember which packages might need updating and is a little more controlled, but I usually just start throwing stuff in there until it compiles or I get a compiler error. |
2021-08-21 03:51:27 +0200 | awschnap | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-21 03:51:31 +0200 | <monochrom> | Hrm, I guess I can see a sweet spot. |
2021-08-21 03:51:46 +0200 | <lechner> | Cajun: did all of the freshmen take the advanced class? |
2021-08-21 03:52:07 +0200 | <monochrom> | We already know what happens to teaching to people who boast "40 years in the industry". |
2021-08-21 03:52:32 +0200 | <arahael> | adamCS: yeah, i've a lot of dependencies, this is a personal side project afterall, so i'll probably do it for specific dependencies. |
2021-08-21 03:52:41 +0200 | <monochrom> | OTOH a clean slate who hasn't become comfortable with induction thinking is also a lost cause. |
2021-08-21 03:52:51 +0200 | <Cajun> | im not sure, i read it in `Masterminds of Programming Conversations with the Creators of Major Programming Languages ` |
2021-08-21 03:52:57 +0200 | <Cajun> | lechner: ^ |
2021-08-21 03:53:29 +0200 | <monochrom> | OTOOH a very naive kid who haven't thought of questioning the validity of recursion is also fine >:) |
2021-08-21 03:53:54 +0200 | <lechner> | Cajun: okay, thanks! |
2021-08-21 03:56:02 +0200 | <arahael> | monochrom: why would you question recursion, though? ;) |
2021-08-21 03:56:04 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2) |
2021-08-21 03:56:42 +0200 | <monochrom> | I know right? Why would anyone? >:) |
2021-08-21 03:59:16 +0200 | <Cajun> | monochrom: well the reason stated was because they find the supposed power of side effects: "The reason is that students quickly conclude that FLs are toy languages, |
2021-08-21 03:59:16 +0200 | <Cajun> | since, after all, they were used in their intro classes, mostly on toy examples. And once |
2021-08-21 03:59:17 +0200 | <Cajun> | they discover the “power” of side effects, many of them never turn back. What a shame!" |
2021-08-21 03:59:31 +0200 | <Cajun> | the formatted of that really got messed up :P |
2021-08-21 03:59:37 +0200 | <Cajun> | formatting* |
2021-08-21 03:59:51 +0200 | alx741 | (~alx741@181.196.68.120) (Quit: alx741) |
2021-08-21 04:01:32 +0200 | <Cajun> | and then this: "It seems to me that the best things about FP aren’t often appreciated by beginners. It’s only after you’ve programmed for awhile that the benefits become apparent." |
2021-08-21 04:03:26 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 04:05:07 +0200 | sleblanc | (~sleblanc@user/sleblanc) |
2021-08-21 04:05:27 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 245 seconds) |
2021-08-21 04:05:32 +0200 | supersven | (uid501114@charlton.irccloud.com) (Ping timeout: 245 seconds) |
2021-08-21 04:05:39 +0200 | supersven | (uid501114@id-501114.charlton.irccloud.com) |
2021-08-21 04:05:53 +0200 | <monochrom> | I guess then Paul Hudak's approach would work well for them. HIs book has effects (making pictures, sounds, animations) at early, middle, late points. |
2021-08-21 04:05:57 +0200 | angerman | (sid209936@charlton.irccloud.com) (Ping timeout: 245 seconds) |
2021-08-21 04:06:11 +0200 | andreas3- | (andreas303@ip227.orange.bnc4free.com) (Ping timeout: 252 seconds) |
2021-08-21 04:06:17 +0200 | <monochrom> | The problem is he's dead, his library suffers bit rot. |
2021-08-21 04:06:24 +0200 | angerman | (sid209936@id-209936.charlton.irccloud.com) |
2021-08-21 04:06:44 +0200 | elcaro | (~anonymous@45.32.191.75) (Ping timeout: 252 seconds) |
2021-08-21 04:06:50 +0200 | andreas303 | (andreas303@ip227.orange.bnc4free.com) |
2021-08-21 04:07:12 +0200 | nrr | (sid20938@id-20938.tooting.irccloud.com) (Ping timeout: 256 seconds) |
2021-08-21 04:07:21 +0200 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) |
2021-08-21 04:07:25 +0200 | alx741 | (~alx741@181.196.68.120) |
2021-08-21 04:07:29 +0200 | elcaro | (~anonymous@45.32.191.75) |
2021-08-21 04:07:46 +0200 | mrckndt | (~mrckndt@user/mrckndt) (Ping timeout: 256 seconds) |
2021-08-21 04:07:58 +0200 | nrr | (sid20938@id-20938.tooting.irccloud.com) |
2021-08-21 04:07:58 +0200 | mrckndt | (~mrckndt@user/mrckndt) |
2021-08-21 04:08:02 +0200 | slep | (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) (Ping timeout: 245 seconds) |
2021-08-21 04:08:15 +0200 | slep | (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) |
2021-08-21 04:09:55 +0200 | <Cajun> | bit rot is such a scary sounding term ): |
2021-08-21 04:20:48 +0200 | alx741 | (~alx741@181.196.68.120) (Quit: alx741) |
2021-08-21 04:22:34 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 250 seconds) |
2021-08-21 04:24:27 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2021-08-21 04:26:40 +0200 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-08-21 04:29:06 +0200 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) |
2021-08-21 04:32:23 +0200 | keutoi | (~keutoi@157.47.6.137) |
2021-08-21 04:32:54 +0200 | zebrag | (~chris@user/zebrag) |
2021-08-21 04:38:22 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 04:41:18 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-08-21 04:41:25 +0200 | td_ | (~td@94.134.91.77) (Ping timeout: 268 seconds) |
2021-08-21 04:42:41 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 248 seconds) |
2021-08-21 04:42:41 +0200 | td_ | (~td@muedsl-82-207-238-079.citykom.de) |
2021-08-21 04:44:46 +0200 | drsocks | (~aaashutos@113.199.143.57) |
2021-08-21 04:45:40 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2021-08-21 04:53:54 +0200 | drsocks | (~aaashutos@113.199.143.57) (Quit: Konversation terminated!) |
2021-08-21 05:06:04 +0200 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
2021-08-21 05:06:20 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-21 05:08:44 +0200 | notzmv | (~zmv@user/notzmv) |
2021-08-21 05:09:10 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 05:09:12 +0200 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) |
2021-08-21 05:11:14 +0200 | <sm> | it is a scourge! |
2021-08-21 05:11:48 +0200 | <sm> | found in all climates! |
2021-08-21 05:15:58 +0200 | blankhart | (~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net) (Quit: WeeChat 2.9) |
2021-08-21 05:19:14 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-21 05:19:32 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-21 05:19:56 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 05:25:16 +0200 | MQ-17J | (~MQ-17J@8.6.144.209) (Ping timeout: 252 seconds) |
2021-08-21 05:25:16 +0200 | otto_s | (~user@p5de2f5f0.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-08-21 05:27:03 +0200 | otto_s | (~user@p5de2f4c7.dip0.t-ipconnect.de) |
2021-08-21 05:28:08 +0200 | cawfee | (~root@2406:3003:2077:2758::babe) (Ping timeout: 258 seconds) |
2021-08-21 05:32:46 +0200 | Guest43 | (~Guest43@2001:8003:33f0:c100:b87b:9892:523:f338) |
2021-08-21 05:37:55 +0200 | dsrt^ | (~dsrt@209.65.131.194) (Ping timeout: 252 seconds) |
2021-08-21 05:48:54 +0200 | Guest43 | (~Guest43@2001:8003:33f0:c100:b87b:9892:523:f338) (Quit: Client closed) |
2021-08-21 05:51:07 +0200 | sleblanc | (~sleblanc@user/sleblanc) (Ping timeout: 252 seconds) |
2021-08-21 05:51:44 +0200 | mei | (~mei@user/mei) |
2021-08-21 05:53:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-08-21 05:55:45 +0200 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 248 seconds) |
2021-08-21 05:56:00 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-08-21 06:00:24 +0200 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) |
2021-08-21 06:04:27 +0200 | venue | (~venue@user/venue) (Quit: adios) |
2021-08-21 06:08:43 +0200 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 252 seconds) |
2021-08-21 06:11:09 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-21 06:11:47 +0200 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) |
2021-08-21 06:26:43 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 06:31:16 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 252 seconds) |
2021-08-21 06:39:22 +0200 | sus | (thelounge@user/zeromomentum) (Quit: the lounge - https://webirc.envs.net) |
2021-08-21 06:42:06 +0200 | sus | (thelounge@user/zeromomentum) |
2021-08-21 06:45:56 +0200 | auri | (~admin@fsf/member/auri) (Quit: auri) |
2021-08-21 06:46:19 +0200 | auri | (~quassel@fsf/member/auri) |
2021-08-21 06:46:19 +0200 | auri | (~quassel@fsf/member/auri) (Client Quit) |
2021-08-21 06:46:45 +0200 | auri | (~quassel@fsf/member/auri) |
2021-08-21 06:50:01 +0200 | Guest43 | (~Guest43@2001:8003:33f0:c100:b87b:9892:523:f338) |
2021-08-21 06:52:56 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds) |
2021-08-21 07:05:19 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-08-21 07:29:04 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-08-21 07:29:33 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-08-21 07:32:56 +0200 | MidAutumnMoon | (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge) |
2021-08-21 07:33:28 +0200 | MidAutumnMoon | (~MidAutumn@user/midautumnmoon) |
2021-08-21 07:37:46 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-08-21 07:43:38 +0200 | Guest43 | (~Guest43@2001:8003:33f0:c100:b87b:9892:523:f338) (Quit: Client closed) |
2021-08-21 07:44:00 +0200 | Guest46 | (~Guest46@2001:8003:33f0:c100:b87b:9892:523:f338) |
2021-08-21 07:44:01 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 07:46:09 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-08-21 07:48:01 +0200 | silver_ | (~silver@37.214.31.4) (Read error: Connection reset by peer) |
2021-08-21 07:48:10 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2021-08-21 07:50:12 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-21 07:58:03 +0200 | dsrt^ | (~dsrt@209.65.131.194) |
2021-08-21 08:02:55 +0200 | Megant | (megant@user/megant) |
2021-08-21 08:08:17 +0200 | radw | (~radw@user/radw) (Ping timeout: 252 seconds) |
2021-08-21 08:11:28 +0200 | Guest46 | (~Guest46@2001:8003:33f0:c100:b87b:9892:523:f338) (Quit: Client closed) |
2021-08-21 08:14:20 +0200 | mousey | (~skymouse@gateway/tor-sasl/mousey) (Ping timeout: 244 seconds) |
2021-08-21 08:17:29 +0200 | mei | (~mei@user/mei) (Quit: mei) |
2021-08-21 08:18:34 +0200 | mei | (~mei@user/mei) |
2021-08-21 08:20:11 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-08-21 08:22:12 +0200 | ubert | (~Thunderbi@178.115.47.86.wireless.dyn.drei.com) |
2021-08-21 08:22:54 +0200 | mousey | (~skymouse@gateway/tor-sasl/mousey) |
2021-08-21 08:24:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-08-21 08:25:05 +0200 | <hsek[m]> | What's a bit rot |
2021-08-21 08:29:13 +0200 | aman | (~aman@user/aman) |
2021-08-21 08:33:30 +0200 | <pavonia> | When a bit deteriorates such that you can't tell if it is a 0 or 1 anymore |
2021-08-21 08:38:52 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
2021-08-21 08:39:25 +0200 | jespada | (~jespada@90.254.247.46) (Ping timeout: 252 seconds) |
2021-08-21 08:41:49 +0200 | jespada | (~jespada@90.254.247.46) |
2021-08-21 08:47:17 +0200 | dave_uy | (~dave_uy@108.61.193.26) (Quit: The Lounge - https://thelounge.chat) |
2021-08-21 08:48:09 +0200 | vysn | (~vysn@user/vysn) |
2021-08-21 08:48:14 +0200 | dave_uy | (~dave_uy@108.61.193.26) |
2021-08-21 08:52:05 +0200 | phma | (phma@2001:5b0:2144:518:c685:6b7:63c5:83c0) |
2021-08-21 08:59:07 +0200 | ubert | (~Thunderbi@178.115.47.86.wireless.dyn.drei.com) (Quit: ubert) |
2021-08-21 08:59:21 +0200 | ubert | (~Thunderbi@178.115.47.86.wireless.dyn.drei.com) |
2021-08-21 09:00:36 +0200 | notzmv | (~zmv@user/notzmv) |
2021-08-21 09:02:28 +0200 | <arahael> | How do I specify "allow-newer" in my cabal file? It doesn't matter where I stick it, it doesn't appear to have any impact? |
2021-08-21 09:02:53 +0200 | <arahael> | (If I specify it on the command line, eg, `cabal build --allow-newer`, it does have an impact.) |
2021-08-21 09:03:48 +0200 | ubert | (~Thunderbi@178.115.47.86.wireless.dyn.drei.com) (Ping timeout: 250 seconds) |
2021-08-21 09:03:49 +0200 | <arahael> | I've been trying to specify: allow-newer: base |
2021-08-21 09:03:58 +0200 | <maerwald> | that should work |
2021-08-21 09:04:12 +0200 | <arahael> | maerwald: In the global scope? |
2021-08-21 09:04:16 +0200 | <maerwald> | yeah |
2021-08-21 09:04:23 +0200 | <arahael> | cabal-version: 3.4? |
2021-08-21 09:04:42 +0200 | <maerwald> | sure |
2021-08-21 09:04:49 +0200 | <sclv> | it goes in cabal.project |
2021-08-21 09:04:53 +0200 | <arahael> | Wierd it has no impact whatsoever, it still dies because something has an upper-bound of 4.14 for base. |
2021-08-21 09:04:58 +0200 | <sclv> | Not in foo.cabal |
2021-08-21 09:05:01 +0200 | <arahael> | Oooh... |
2021-08-21 09:05:18 +0200 | <maerwald> | oh |
2021-08-21 09:05:30 +0200 | <maerwald> | yeah, documentation clearly says it's cabal.project |
2021-08-21 09:05:30 +0200 | <arahael> | What's the difference between foo.cabal and cabal.foo? |
2021-08-21 09:05:37 +0200 | <sclv> | the cabal file specifies the package. the project file is build options for the package |
2021-08-21 09:05:42 +0200 | <arahael> | maerwald: My interpretation was "the project's cabal file". |
2021-08-21 09:06:24 +0200 | <sclv> | cabal.project files aren’t part of a tgz sdist of the package. they’re just build settings for development |
2021-08-21 09:07:27 +0200 | <maerwald> | sclv: well, you can make them part of it :p |
2021-08-21 09:07:50 +0200 | <arahael> | sclv: And if there's no cabal.project at all, I guess it just uses defaults? |
2021-08-21 09:08:04 +0200 | <maerwald> | `packages: .` I think |
2021-08-21 09:08:09 +0200 | <arahael> | I'm about to create a cabal.project containing only the one line: allow-newer: all |
2021-08-21 09:09:09 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 09:09:09 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-08-21 09:09:55 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-08-21 09:10:53 +0200 | Guest|58 | (~Guest|58@131.226.66.188) |
2021-08-21 09:11:18 +0200 | <arahael> | Weird day of dev. Clean kitchen. Research headsets (as a deaf dude, that's... Not common). Tiny bit of haskell research. Carry wood downstairs. Tiny bit of haskell research. Make lunch. Walk to shops. Headphones research. Tiny bit of headphone research. Tiny bit of *actual haskell dev* - allow-newer fiddling. ETc. :) |
2021-08-21 09:11:48 +0200 | Guest|58 | (~Guest|58@131.226.66.188) (Client Quit) |
2021-08-21 09:13:10 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 240 seconds) |
2021-08-21 09:13:15 +0200 | <arahael> | Nice. allow-newer works nicely. Now I should probably restrict it to the one package that actually needs the hack. |
2021-08-21 09:15:04 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 250 seconds) |
2021-08-21 09:20:31 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 09:23:04 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-21 09:30:38 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-21 09:32:38 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
2021-08-21 09:34:37 +0200 | <mastarija> | Is there a way to create a constraint that "excludes" a certain type class? e.g. `instance ( Not ( Monoid a ) ) => SomeClass ( MyType a ) where ...` |
2021-08-21 09:35:25 +0200 | <mastarija> | So basically, my function / instance is valid for everything that isn't a `Monoid` |
2021-08-21 09:36:07 +0200 | <maerwald> | what is "everything"? |
2021-08-21 09:36:34 +0200 | <mastarija> | Any 'a' |
2021-08-21 09:36:40 +0200 | <maerwald> | you've defined instances for all classes from all of hackage? |
2021-08-21 09:37:15 +0200 | <mastarija> | Not sure what you are asking. I'm talking about types, not classes |
2021-08-21 09:37:18 +0200 | <int-e> | This is incompatible with the open nature of type classes; adding a Monoid instance could invalidate type inference decisions that were made in a different module when that instance wasn't yet visible. |
2021-08-21 09:37:35 +0200 | <tomsmeding> | mastarija: impossible, but you _can_ get a constraint that says "a is match one any of this list of types" |
2021-08-21 09:37:38 +0200 | <maerwald> | mastarija: you're talking about classes |
2021-08-21 09:37:58 +0200 | <mastarija> | So I want to make an instance for any "type" that doesn't have this particular instance |
2021-08-21 09:38:01 +0200 | <tomsmeding> | s/a is/a doesn't/ |
2021-08-21 09:38:23 +0200 | <maerwald> | you make instances of classes, not types |
2021-08-21 09:38:26 +0200 | <tomsmeding> | _why_ do you want this constraint? so that you can have a different one that only works for Monoid? |
2021-08-21 09:38:34 +0200 | <mastarija> | maerwald, true |
2021-08-21 09:38:41 +0200 | <int-e> | There are closed type families though, which trade openness for the power of negation (among other things). |
2021-08-21 09:38:51 +0200 | <maerwald> | so you don't know what classes you have, how are you gonna make instances? |
2021-08-21 09:39:41 +0200 | <tomsmeding> | if so, class C a where yourfunction :: ... ; instance {-# OVERLAPPABLE #-} C a where yourfunction = yourdefinition ; instance {-# OVERLAPPING #-} Monoid a => C a where yourfunction = error "no" |
2021-08-21 09:39:51 +0200 | <tomsmeding> | maerwald: any _type_ that doesn't implement Monoid |
2021-08-21 09:39:55 +0200 | <mastarija> | maerwald, I have a class I want to make an instance of, but I can make it only if the type I'm working with isn't a Monoid. |
2021-08-21 09:40:14 +0200 | <int-e> | as far as existing mechanisms for type classes go... this sounds like incoherent instances territory, which is the scary kind of overloaded instances. |
2021-08-21 09:40:17 +0200 | <tomsmeding> | note that overlapping instances do work, kind of, but they're finicky I believe |
2021-08-21 09:40:20 +0200 | <arahael> | I'm way out of my depth here, but why not... Ignore the Monoid instance? |
2021-08-21 09:40:25 +0200 | <mastarija> | This is just an example. But as int-e said, open world comes into play |
2021-08-21 09:41:09 +0200 | <mastarija> | Dunno, I had a thought, so I asked :D |
2021-08-21 09:41:35 +0200 | <maerwald> | tomsmeding: ah, I think they wanted to make instances for every non-Monoid class :D |
2021-08-21 09:41:38 +0200 | <tomsmeding> | mastarija: please don't do this unless you know exactly what you want and it's this :p |
2021-08-21 09:41:59 +0200 | <mastarija> | I kind of do |
2021-08-21 09:42:20 +0200 | <mastarija> | But it wasn't well formed yet |
2021-08-21 09:43:04 +0200 | <tomsmeding> | oh right, this kind of overlapping instances (like I gave in my C example) can give rise to incoherence (different typeclass dictionaries being used for the same type in the same program) |
2021-08-21 09:43:34 +0200 | <tomsmeding> | if you use the class C in a polymorphic context where it isn't known yet whether there will be a Monoid instance available for the concrete type in the end |
2021-08-21 09:43:41 +0200 | <mastarija> | yes I guessed this would happen |
2021-08-21 09:43:55 +0200 | <mastarija> | but you know, if I'm careful maybe it'll work :D |
2021-08-21 09:44:05 +0200 | <tomsmeding> | mastarija: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/instances.html#extension-Over… |
2021-08-21 09:44:29 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-08-21 09:44:34 +0200 | <mastarija> | Oh.. that's deprecated now |
2021-08-21 09:44:55 +0200 | <tomsmeding> | I believe you can use the pragmas without enabling the extension |
2021-08-21 09:45:14 +0200 | <mastarija> | yes, just noticed that in the docs :D |
2021-08-21 09:45:18 +0200 | <mastarija> | good to know |
2021-08-21 09:46:32 +0200 | <tomsmeding> | oh my instances are _too_ overlapping :p |
2021-08-21 09:46:43 +0200 | <tomsmeding> | of course this will not work |
2021-08-21 09:47:11 +0200 | <tomsmeding> | ghc decides which instance to use without looking at the constraints of instances; then after it has chosen one, it looks at the constraints and adds them to the set of things it needs to solve |
2021-08-21 09:47:36 +0200 | <tomsmeding> | since these two instances will have the same "right-hand side" (namely C a), ghc can never choose |
2021-08-21 09:48:07 +0200 | <mastarija> | can't it just pick the first one :P |
2021-08-21 09:48:13 +0200 | <tomsmeding> | then it would always pick the first one |
2021-08-21 09:48:20 +0200 | <tomsmeding> | which would defeat the point of having the second one :p |
2021-08-21 09:51:48 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-08-21 09:54:42 +0200 | cawfee | (~root@2406:3003:2077:2758::babe) |
2021-08-21 09:55:34 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9557dc14868c6ad3e278.dip0.t-ipconnect.de) |
2021-08-21 09:56:08 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-08-21 09:56:33 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 09:57:38 +0200 | reumeth | (~reumeth@user/reumeth) |
2021-08-21 10:00:25 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-08-21 10:01:52 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds) |
2021-08-21 10:04:54 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-08-21 10:06:05 +0200 | hendursa1 | (~weechat@user/hendursaga) |
2021-08-21 10:07:08 +0200 | kenran | (~kenran@200116b82bfa730075b97161738401b4.dip.versatel-1u1.de) |
2021-08-21 10:08:00 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
2021-08-21 10:17:16 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-08-21 10:17:30 +0200 | Megant | (megant@user/megant) (Ping timeout: 268 seconds) |
2021-08-21 10:17:39 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-21 10:21:13 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-08-21 10:32:56 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-08-21 10:33:12 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 10:36:31 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-21 10:36:48 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:eb83:919c:c248:eabe) |
2021-08-21 10:37:34 +0200 | kenran | (~kenran@200116b82bfa730075b97161738401b4.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
2021-08-21 10:37:40 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
2021-08-21 10:40:10 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 240 seconds) |
2021-08-21 10:40:58 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 252 seconds) |
2021-08-21 10:44:09 +0200 | arahael | likes Haskell. :) |
2021-08-21 10:46:55 +0200 | MoC | (~moc@user/moc) |
2021-08-21 10:47:09 +0200 | tomsmeding | too :) |
2021-08-21 10:47:44 +0200 | <arahael> | The community here is awesome, the language is awesome, and there's lots of good stuff, even if the learning curve for those of us who usually develop in non-haskell projects is initially high. :) |
2021-08-21 10:48:03 +0200 | <arahael> | And it's _great_ for refactorability. Never found another language that lets you fearlessly refactor quite so well. |
2021-08-21 10:49:17 +0200 | <tomsmeding> | rust - fearless concurrency; haskell - fearless refactoring |
2021-08-21 10:50:46 +0200 | <arahael> | Heh, actually isn't Haskell good for fearless concurrency, too? |
2021-08-21 10:51:21 +0200 | <arahael> | Rust is on my list of langugages to really learn - already done the rustlings course which is pretty awesome, and I like the language, but ultimately still prefer Haskell for various reasons. |
2021-08-21 10:51:42 +0200 | dsrt^ | (~dsrt@209.65.131.194) (Ping timeout: 250 seconds) |
2021-08-21 10:52:26 +0200 | <arahael> | (Though that might depend on what I'm doing with it. Just right now, I'm doing a web service with haskell) |
2021-08-21 10:53:26 +0200 | <tomsmeding> | indeed haskell is also very good at fearless concurrency :) |
2021-08-21 10:58:33 +0200 | dsrt^ | (~dsrt@209.65.131.194) |
2021-08-21 11:00:08 +0200 | <arahael> | Main thing I might pick Rust for is perhaps simpler build tooling, eg, to build a library where I know I can pretty easily produce something for windows, linux, ios, etc, without needing a 16-GB docker image just to build (as is the case for iOS with haskell today, iirc |
2021-08-21 11:00:10 +0200 | <arahael> | ) |
2021-08-21 11:01:19 +0200 | <int-e> | . o O ( rust = cargo cult ) |
2021-08-21 11:01:27 +0200 | <tomsmeding> | heh |
2021-08-21 11:01:28 +0200 | <arahael> | (Eg, with reflex-frp, their docker image needs 16 GB of RAM for doing haskell stuff for iOS, which, incidentially, is the maximum memory you can get on any apple laptop) |
2021-08-21 11:01:31 +0200 | <arahael> | int-e: ha. |
2021-08-21 11:02:10 +0200 | <tomsmeding> | just use swap ;) |
2021-08-21 11:02:23 +0200 | <arahael> | At work I use Swift. Not a /bad/ language - it's actually much better than most other options used in enterprise projects. But blegh, there's so much I wish was better. |
2021-08-21 11:02:34 +0200 | <arahael> | tomsmeding: Ha. Swap. |
2021-08-21 11:03:23 +0200 | <tomsmeding> | but yeah the cross-compilation story of haskell is suboptimal still |
2021-08-21 11:04:08 +0200 | <tomsmeding> | though I haven't actually tried it myself, neither with haskell nor with rust, so I only know second/third-hand experiences |
2021-08-21 11:07:01 +0200 | <arahael> | Rust has a series of "platforms" they officially support in a fairly organised structure. iOS is "second tier", which means supported, just not actively tested in CI systems. |
2021-08-21 11:07:28 +0200 | <arahael> | Not doing template-haskell makes certain things much simpler, I would expect. |
2021-08-21 11:07:38 +0200 | <tomsmeding> | presumably, yes |
2021-08-21 11:13:08 +0200 | <tomsmeding> | rust's procedural macros run on a custom-specified VM in the compiler, which is much easier to port (i.e. no work) than template haskell is (which I believe actually compile to native code because it can call FFI and whatnot?) |
2021-08-21 11:14:34 +0200 | <arahael> | That's awesome. |
2021-08-21 11:14:44 +0200 | <tomsmeding> | which of the two :p |
2021-08-21 11:15:08 +0200 | <tomsmeding> | alaso note that "custom-specified VM" is cool-speak for "interpreter" |
2021-08-21 11:15:41 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-21 11:18:08 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:eb83:919c:c248:eabe) (Ping timeout: 250 seconds) |
2021-08-21 11:20:01 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:eb83:919c:c248:eabe) |
2021-08-21 11:20:13 +0200 | averell | (~averell@user/averell) (Quit: .) |
2021-08-21 11:20:43 +0200 | kuribas | (~user@ptr-25vy0i7pvnvbb3ckill.18120a2.ip6.access.telenet.be) |
2021-08-21 11:23:31 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:eb83:919c:c248:eabe) (Remote host closed the connection) |
2021-08-21 11:28:42 +0200 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2021-08-21 11:32:49 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 11:33:00 +0200 | <arahael> | tomsmeding: Rusts. :) |
2021-08-21 11:33:15 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2021-08-21 11:33:20 +0200 | <arahael> | And yeah, even so, as an interpreter, it's nifty that it's effectively a constrained environment that the compiler can specify. |
2021-08-21 11:34:15 +0200 | <tomsmeding> | arahael: while spelunking through the rustc source code I found this unrelated thing https://doc.rust-lang.org/nightly/nightly-rustc/src/rustc_expand/proc_macro_server.rs.html#813 |
2021-08-21 11:34:44 +0200 | <arahael> | ... |
2021-08-21 11:34:45 +0200 | notzmv | (~zmv@user/notzmv) (Read error: Connection reset by peer) |
2021-08-21 11:34:47 +0200 | <arahael> | actix-web? |
2021-08-21 11:34:52 +0200 | <tomsmeding> | https://github.com/rust-lang/rust/issues/74616 |
2021-08-21 11:35:18 +0200 | <tomsmeding> | similar to the microsoft hacks that have been written about on the internet :p |
2021-08-21 11:35:27 +0200 | pbrisbin | (~patrick@pool-108-16-214-93.phlapa.fios.verizon.net) (Ping timeout: 245 seconds) |
2021-08-21 11:35:32 +0200 | <tomsmeding> | where the windows kernel has compatibility hacks for specific programs |
2021-08-21 11:35:47 +0200 | biberu | (~biberu@user/biberu) |
2021-08-21 11:36:12 +0200 | ubert | (~Thunderbi@77.119.170.32.wireless.dyn.drei.com) |
2021-08-21 11:36:18 +0200 | <arahael> | I fear that's going to be a dark hole. |
2021-08-21 11:37:36 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-21 11:38:01 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 11:38:16 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 268 seconds) |
2021-08-21 11:39:25 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 11:41:51 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-21 11:42:35 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
2021-08-21 11:43:16 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds) |
2021-08-21 11:45:53 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 11:46:13 +0200 | random-jellyfish | (~random-je@user/random-jellyfish) (Ping timeout: 246 seconds) |
2021-08-21 11:47:30 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2021-08-21 11:48:28 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 250 seconds) |
2021-08-21 11:50:16 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-08-21 11:54:36 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
2021-08-21 11:56:43 +0200 | nschoe | (~quassel@2a01:e0a:8e:a190:dc3:57c7:ad61:19ea) |
2021-08-21 11:57:47 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 11:59:30 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-21 12:00:53 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-21 12:02:44 +0200 | <tomsmeding> | https://mail.haskell.org/pipermail/haskell-cafe/2021-August/134351.html |
2021-08-21 12:06:14 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 12:10:22 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
2021-08-21 12:14:06 +0200 | <arahael> | That sucks, I'm currently an iOS dev, actually, but I'm not really happy with how difficult xcode makes things. |
2021-08-21 12:14:40 +0200 | oldsk00l_ | (~znc@ec2-3-124-242-227.eu-central-1.compute.amazonaws.com) (Remote host closed the connection) |
2021-08-21 12:18:48 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds) |
2021-08-21 12:21:06 +0200 | michalz | (~michalz@185.246.204.55) (Remote host closed the connection) |
2021-08-21 12:26:11 +0200 | ubert1 | (~Thunderbi@77.119.170.32.wireless.dyn.drei.com) |
2021-08-21 12:30:57 +0200 | ubert1 | (~Thunderbi@77.119.170.32.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
2021-08-21 12:34:40 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-08-21 12:35:27 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 12:36:21 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 12:38:33 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 12:38:58 +0200 | Megant | (megant@user/megant) |
2021-08-21 12:39:31 +0200 | wallymathieu | (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
2021-08-21 12:44:15 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
2021-08-21 12:51:50 +0200 | wallymathieu | (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-08-21 12:52:36 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 250 seconds) |
2021-08-21 12:54:19 +0200 | vysn | (~vysn@user/vysn) |
2021-08-21 12:54:42 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-08-21 12:55:27 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-08-21 12:56:55 +0200 | severen | (~severen@202.36.179.72) |
2021-08-21 12:58:04 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
2021-08-21 13:00:44 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 13:01:04 +0200 | alx741 | (~alx741@181.196.68.120) |
2021-08-21 13:05:10 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 250 seconds) |
2021-08-21 13:07:41 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 13:08:35 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 13:09:16 +0200 | AlexNoo_ | (~AlexNoo@94.233.241.255) |
2021-08-21 13:12:33 +0200 | AlexZenon | (~alzenon@94.233.241.41) (Ping timeout: 248 seconds) |
2021-08-21 13:12:33 +0200 | Alex_test | (~al_test@94.233.241.41) (Ping timeout: 248 seconds) |
2021-08-21 13:12:47 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-08-21 13:13:22 +0200 | AlexNoo | (~AlexNoo@94.233.241.41) (Ping timeout: 272 seconds) |
2021-08-21 13:14:58 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 13:15:28 +0200 | dipankar | (~dipankar@50.35.187.85) |
2021-08-21 13:15:31 +0200 | benin036932 | (~benin@183.82.178.142) (Ping timeout: 252 seconds) |
2021-08-21 13:15:55 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 13:16:51 +0200 | Alex_test | (~al_test@94.233.241.255) |
2021-08-21 13:17:01 +0200 | AlexZenon | (~alzenon@94.233.241.255) |
2021-08-21 13:24:25 +0200 | benin036932 | (~benin@183.82.178.142) |
2021-08-21 13:24:49 +0200 | NieDzejkob | (~quassel@195.149.98.3) (Ping timeout: 248 seconds) |
2021-08-21 13:24:52 +0200 | Megant | (megant@user/megant) (Ping timeout: 252 seconds) |
2021-08-21 13:26:13 +0200 | NieDzejkob | (~quassel@195.149.98.3) |
2021-08-21 13:30:20 +0200 | Megant | (megant@user/megant) |
2021-08-21 13:34:58 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b9557dc14868c6ad3e278.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2021-08-21 13:36:10 +0200 | nschoe | (~quassel@2a01:e0a:8e:a190:dc3:57c7:ad61:19ea) (Ping timeout: 240 seconds) |
2021-08-21 13:41:11 +0200 | ubert | (~Thunderbi@77.119.170.32.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-08-21 13:42:33 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 13:43:46 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 13:46:11 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 13:46:37 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 13:49:06 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 13:51:16 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-08-21 13:51:30 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 13:51:55 +0200 | AndrewYu | (~andrew@user/andrewyu) (Quit: Leaving) |
2021-08-21 13:57:21 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 248 seconds) |
2021-08-21 13:58:28 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 250 seconds) |
2021-08-21 13:59:51 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-08-21 14:14:56 +0200 | p0lyph3m | (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Read error: Connection reset by peer) |
2021-08-21 14:15:10 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-21 14:26:55 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-08-21 14:33:01 +0200 | nschoe | (~quassel@2a01:e0a:8e:a190:7c9d:d6d2:278b:44a9) |
2021-08-21 14:33:41 +0200 | AlexNoo_ | AlexNoo |
2021-08-21 14:37:17 +0200 | dipankar | (~dipankar@50.35.187.85) (Quit: Connection closed) |
2021-08-21 14:37:21 +0200 | severen | (~severen@202.36.179.72) (Ping timeout: 248 seconds) |
2021-08-21 14:38:01 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-08-21 14:38:05 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
2021-08-21 14:39:50 +0200 | favonia | (~favonia@user/favonia) |
2021-08-21 14:41:56 +0200 | notzmv | (~zmv@user/notzmv) |
2021-08-21 14:45:16 +0200 | hendursa1 | (~weechat@user/hendursaga) (Quit: hendursa1) |
2021-08-21 14:45:40 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-08-21 14:47:07 +0200 | chris | (~chris@81.96.113.213) |
2021-08-21 14:47:12 +0200 | chris | Guest9404 |
2021-08-21 14:48:02 +0200 | mousey | (~skymouse@gateway/tor-sasl/mousey) (Ping timeout: 244 seconds) |
2021-08-21 14:48:44 +0200 | leitz | (~LeamHall@cpe-173-172-58-72.tx.res.rr.com) |
2021-08-21 14:49:39 +0200 | <leitz> | Sorry to bother, but is there a general "Functional Programming" IRC channel? I'm just learning, but not using a regular FP language. |
2021-08-21 14:51:51 +0200 | skykanin | (~skykanin@115.81-166-221.customer.lyse.net) |
2021-08-21 14:53:17 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-21 14:54:55 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 14:59:20 +0200 | <tomsmeding> | not that I know of; if it's sufficiently functional, you may have luck just asking here, or perhaps on #haskell-offtopic depending on the exact question :) |
2021-08-21 15:08:49 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 15:09:06 +0200 | oxide | (~lambda@user/oxide) |
2021-08-21 15:10:37 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 15:12:52 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
2021-08-21 15:14:56 +0200 | burnside_ | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 15:14:56 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-21 15:18:08 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 15:18:08 +0200 | burnside_ | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-21 15:18:18 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-08-21 15:18:57 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds) |
2021-08-21 15:22:04 +0200 | nschoe | (~quassel@2a01:e0a:8e:a190:7c9d:d6d2:278b:44a9) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-08-21 15:30:17 +0200 | nate1 | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
2021-08-21 15:32:24 +0200 | goepsilongo | (~goepsilon@2603-7000-ab00-62ed-0d8f-34df-93a6-03c1.res6.spectrum.com) |
2021-08-21 15:32:53 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-21 15:35:13 +0200 | nate1 | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2021-08-21 15:36:11 +0200 | alphabeta | (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Quit: Quitting IRC :() |
2021-08-21 15:36:24 +0200 | alphabeta | (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) |
2021-08-21 15:36:26 +0200 | alphabeta | (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Client Quit) |
2021-08-21 15:36:44 +0200 | kilolympus | (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) |
2021-08-21 15:36:49 +0200 | tubogram | (~tubogram@user/tubogram) (Quit: See ya later!) |
2021-08-21 15:38:46 +0200 | tubogram | (~tubogram@user/tubogram) |
2021-08-21 15:39:15 +0200 | <Lycurgus> | leitz, probably doesn't make sense since there are strongly contrasting notions of what constitutes FP |
2021-08-21 15:39:44 +0200 | <leitz> | tomsmeding, I'll ask over in offtopic, more a general thoughts thing. |
2021-08-21 15:39:55 +0200 | <Lycurgus> | from langs like haskell to commonlisp both of which have channels of those names |
2021-08-21 15:40:14 +0200 | <Lycurgus> | representing the ends of the spectrum |
2021-08-21 15:40:54 +0200 | <Lycurgus> | lisp is the old FP |
2021-08-21 15:41:07 +0200 | <Lycurgus> | the old notion |
2021-08-21 15:41:15 +0200 | <hsek[m]> | Where was the `cabal` proposal for Stackage intregration? Can't seem to find it |
2021-08-21 15:42:28 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds) |
2021-08-21 15:42:28 +0200 | keutoi | (~keutoi@157.47.6.137) (Ping timeout: 268 seconds) |
2021-08-21 15:42:54 +0200 | <hsek[m]> | Ah I found it. https://github.com/haskell/cabal/issues/7556 |
2021-08-21 15:42:58 +0200 | <leitz> | Lycurgus, I'm studying "Grokking Simplicity" and it's giving me a lot of good ideas about how to code better using a functional programming mindset. |
2021-08-21 15:43:10 +0200 | <Lycurgus> | notions, partisans, and no unity |
2021-08-21 15:44:02 +0200 | <Lycurgus> | leitz, ah |
2021-08-21 15:44:03 +0200 | keutoi | (~keutoi@106.208.52.196) |
2021-08-21 15:44:04 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 15:44:49 +0200 | <Lycurgus> | there is #lisp corresponding the old ##lisp at freenode, a distant match but prolly closest |
2021-08-21 15:48:32 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds) |
2021-08-21 15:48:54 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-08-21 15:50:46 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-08-21 15:52:52 +0200 | jess | (~jess@libera/staff/jess) |
2021-08-21 15:55:40 +0200 | tubogram | (~tubogram@user/tubogram) (Quit: See ya later!) |
2021-08-21 15:56:05 +0200 | mcglk | (~mcglk@131.191.49.120) (Read error: Connection timed out) |
2021-08-21 15:56:57 +0200 | mcglk | (~mcglk@131.191.49.120) |
2021-08-21 15:57:57 +0200 | tubogram | (~tubogram@user/tubogram) |
2021-08-21 15:58:50 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 16:00:31 +0200 | Lycurgus | (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
2021-08-21 16:01:08 +0200 | tubogram | (~tubogram@user/tubogram) (Client Quit) |
2021-08-21 16:05:10 +0200 | shapr | (~user@pool-108-28-144-11.washdc.fios.verizon.net) |
2021-08-21 16:07:23 +0200 | tubogram | (~tubogram@user/tubogram) |
2021-08-21 16:08:47 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Quit: Leaving) |
2021-08-21 16:09:06 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 16:09:52 +0200 | shriekingnoise | (~shrieking@186.137.144.80) (Ping timeout: 252 seconds) |
2021-08-21 16:14:19 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2) |
2021-08-21 16:14:39 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 16:15:00 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 16:15:51 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
2021-08-21 16:17:34 +0200 | Guest96 | (~Guest96@p1256008-ipoe.ipoe.ocn.ne.jp) |
2021-08-21 16:18:14 +0200 | Guest96 | (~Guest96@p1256008-ipoe.ipoe.ocn.ne.jp) (Quit: Client closed) |
2021-08-21 16:19:18 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds) |
2021-08-21 16:19:45 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 16:20:19 +0200 | keutoi | (~keutoi@106.208.52.196) (Ping timeout: 252 seconds) |
2021-08-21 16:20:45 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 16:27:28 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 16:27:31 +0200 | MoC | (~moc@user/moc) (Quit: Konversation terminated!) |
2021-08-21 16:29:31 +0200 | wallymathieu | (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
2021-08-21 16:30:21 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
2021-08-21 16:31:17 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 16:32:00 +0200 | keutoi | (~keutoi@106.208.52.196) |
2021-08-21 16:33:45 +0200 | burnside_ | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 16:33:46 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-21 16:36:01 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 244 seconds) |
2021-08-21 16:36:16 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
2021-08-21 16:43:10 +0200 | <_bin> | Does anyone know what the `(..)` syntax in an import means? Specifically, `import Colog.Core (LogAction (..), (<&), logStringStdout)`. |
2021-08-21 16:43:37 +0200 | <Clint> | _bin: yes |
2021-08-21 16:44:13 +0200 | <Clint> | it means to import everything "within" LogAction |
2021-08-21 16:44:22 +0200 | <Clint> | i'm sure there's a better word for that |
2021-08-21 16:44:56 +0200 | <tomsmeding> | if LogAction is a class, that imports LogAction as well as the methods of the class; if it's a datatype, it imporst the datatype as well as the constructors of that datatype |
2021-08-21 16:45:08 +0200 | <tomsmeding> | importing just 'LogAction' would only import that one name |
2021-08-21 16:45:28 +0200 | <_bin> | Clint, tomsmeding: Thanks, that helps. |
2021-08-21 16:47:11 +0200 | neo | (~neo3@cpe-292712.ip.primehome.com) |
2021-08-21 16:47:15 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-08-21 16:47:17 +0200 | fresheyeball | (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
2021-08-21 16:48:48 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-08-21 16:48:57 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 16:49:14 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-21 16:50:45 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine) |
2021-08-21 16:52:58 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 16:52:58 +0200 | burnside_ | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-21 16:53:01 +0200 | nuncanada | (~dude@181.213.52.63) |
2021-08-21 16:53:37 +0200 | nuncanada | (~dude@181.213.52.63) (Remote host closed the connection) |
2021-08-21 16:53:43 +0200 | tomsmeding | (~tomsmedin@tomsmeding.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-08-21 16:54:09 +0200 | Skyfire | (~pyon@user/pyon) (Remote host closed the connection) |
2021-08-21 16:54:17 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 16:54:27 +0200 | Skyfire | (~pyon@user/pyon) |
2021-08-21 16:56:38 +0200 | burnside_ | (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
2021-08-21 16:56:42 +0200 | burnside_ | (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection) |
2021-08-21 16:57:54 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-08-21 16:59:22 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
2021-08-21 17:02:37 +0200 | tomsmeding | (~tomsmedin@tomsmeding.com) |
2021-08-21 17:05:04 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 17:08:50 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 17:10:37 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-08-21 17:12:28 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 17:13:02 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 250 seconds) |
2021-08-21 17:15:14 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-21 17:15:19 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 252 seconds) |
2021-08-21 17:17:20 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 17:23:49 +0200 | Guest9404 | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-21 17:24:35 +0200 | chris | (~chris@81.96.113.213) |
2021-08-21 17:24:39 +0200 | chris | Guest1299 |
2021-08-21 17:26:35 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 17:29:04 +0200 | Guest1299 | (~chris@81.96.113.213) (Ping timeout: 252 seconds) |
2021-08-21 17:30:10 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
2021-08-21 17:31:09 +0200 | dajoer | (~david@user/gvx) (Quit: leaving) |
2021-08-21 17:32:32 +0200 | reumeth | (~reumeth@user/reumeth) (Ping timeout: 250 seconds) |
2021-08-21 17:33:32 +0200 | ystael | (~ystael@user/ystael) (Quit: Lost terminal) |
2021-08-21 17:35:46 +0200 | ystael | (~ystael@user/ystael) |
2021-08-21 17:36:01 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 248 seconds) |
2021-08-21 17:37:30 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 244 seconds) |
2021-08-21 17:38:40 +0200 | Jack | (~Jack@node-1w7jra24ayur83r37n177ovv8.ipv6.telus.net) |
2021-08-21 17:41:30 +0200 | bitmapper | (uid464869@id-464869.tooting.irccloud.com) |
2021-08-21 17:46:58 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 17:48:22 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 17:49:26 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-08-21 17:51:29 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 248 seconds) |
2021-08-21 17:52:54 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
2021-08-21 17:54:53 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 17:56:55 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 268 seconds) |
2021-08-21 17:58:04 +0200 | Guest|60 | (~Guest|60@181.171.68.90) |
2021-08-21 17:58:07 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-21 17:58:19 +0200 | Guest|60 | (~Guest|60@181.171.68.90) (Client Quit) |
2021-08-21 17:58:40 +0200 | econo | (uid147250@user/econo) |
2021-08-21 18:05:21 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 18:05:23 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2021-08-21 18:06:23 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 18:08:21 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 18:09:59 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-21 18:10:01 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
2021-08-21 18:11:12 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 18:11:32 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-21 18:11:34 +0200 | hololeap | (~hololeap@user/hololeap) |
2021-08-21 18:14:09 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 18:14:52 +0200 | nate1 | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
2021-08-21 18:19:21 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 18:20:12 +0200 | azeem | (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 250 seconds) |
2021-08-21 18:21:00 +0200 | azeem | (~azeem@176.200.245.90) |
2021-08-21 18:22:58 +0200 | keutoi | (~keutoi@106.208.52.196) (Ping timeout: 252 seconds) |
2021-08-21 18:23:31 +0200 | aman | (~aman@user/aman) (Ping timeout: 252 seconds) |
2021-08-21 18:24:39 +0200 | benin036932 | (~benin@183.82.178.142) (Ping timeout: 268 seconds) |
2021-08-21 18:25:01 +0200 | keutoi | (~keutoi@223.238.95.231) |
2021-08-21 18:25:20 +0200 | aman | (~aman@user/aman) |
2021-08-21 18:37:55 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-08-21 18:38:20 +0200 | azeem | (~azeem@176.200.245.90) (Read error: Connection reset by peer) |
2021-08-21 18:38:45 +0200 | azeem | (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) |
2021-08-21 18:42:33 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 18:47:10 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-08-21 18:50:48 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 18:52:19 +0200 | vpan | (~vilius@212.117.1.172) |
2021-08-21 18:55:29 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
2021-08-21 18:56:57 +0200 | __monty__ | (~toonn@user/toonn) |
2021-08-21 18:59:24 +0200 | goepsilongo_ | (~goepsilon@2603-7000-ab00-62ed-c9e0-8f19-de85-1d2f.res6.spectrum.com) |
2021-08-21 19:00:40 +0200 | goepsilongo | (~goepsilon@2603-7000-ab00-62ed-0d8f-34df-93a6-03c1.res6.spectrum.com) (Ping timeout: 240 seconds) |
2021-08-21 19:05:19 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 252 seconds) |
2021-08-21 19:06:31 +0200 | mdunnio | (~mdunn@205.178.28.97) |
2021-08-21 19:09:56 +0200 | <Athas> | What is the simplest Haskell library for writing a very simple TUI, with a few input fields and such? |
2021-08-21 19:10:07 +0200 | <Athas> | I know of Brick, which can be used for anything, but is there something simpler? |
2021-08-21 19:10:35 +0200 | mestre | (~mestre@191.177.175.57) |
2021-08-21 19:10:44 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2021-08-21 19:11:14 +0200 | HarveyPwca | (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Quit: Leaving) |
2021-08-21 19:11:16 +0200 | <sm> | Athas: there's wizards |
2021-08-21 19:11:17 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) |
2021-08-21 19:12:02 +0200 | Guest2172 | (~Guest21@2a02:8109:a080:6368:d5d2:328b:373c:5b57) |
2021-08-21 19:12:35 +0200 | <Guest2172> | Could somebody help me regarding my haskell homework? |
2021-08-21 19:13:13 +0200 | <sm> | if you want positioned input fields, it's brick or make your own with vty or ansi-terminal I think |
2021-08-21 19:14:01 +0200 | <sm> | @where paste, Guest2172 |
2021-08-21 19:14:01 +0200 | <lambdabot> | I know nothing about paste,. |
2021-08-21 19:14:17 +0200 | <sm> | @where paste |
2021-08-21 19:14:17 +0200 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2021-08-21 19:14:27 +0200 | <Guest2172> | Ah. Gimme a sec |
2021-08-21 19:14:55 +0200 | son0p | (~ff@181.136.122.143) |
2021-08-21 19:15:09 +0200 | <Athas> | sm: that looks interesting! |
2021-08-21 19:15:19 +0200 | <Athas> | I have no opinion on positioning. |
2021-08-21 19:15:34 +0200 | <Guest2172> | https://paste.tomsmeding.com/ctfNt47T this good? |
2021-08-21 19:15:42 +0200 | <sm> | i use wizards for hledger add, it's great |
2021-08-21 19:16:13 +0200 | <sm> | that's good Guest2172, what are you stuck on ? |
2021-08-21 19:16:55 +0200 | <Guest2172> | Basically where to start. My mind can't think Haskell at all |
2021-08-21 19:17:17 +0200 | <sm> | is there a simpler problem you could tackle first ? |
2021-08-21 19:17:40 +0200 | <Guest2172> | There are a few, yea. Was just thinking that one would end up being easy |
2021-08-21 19:18:01 +0200 | <Guest2172> | There's a multi-part one that I started, give me a second |
2021-08-21 19:18:25 +0200 | <sm> | or maybe the first couple at project euler or exercism.io would get you warmed up |
2021-08-21 19:19:05 +0200 | <Guest2172> | I am warmed up a bit, have been trying to work through these the entire day |
2021-08-21 19:19:12 +0200 | mestre | (~mestre@191.177.175.57) (Quit: leaving) |
2021-08-21 19:19:28 +0200 | mestre | (~mestre@191.177.175.57) |
2021-08-21 19:19:29 +0200 | <Guest2172> | https://paste.tomsmeding.com/e8D0Jsqv |
2021-08-21 19:20:43 +0200 | <Guest2172> | I don't really get how I'm supposed to get StockL out of the definition at the top |
2021-08-21 19:22:07 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 19:22:27 +0200 | <__monty__> | Do you understand why your solution for countF works? |
2021-08-21 19:23:44 +0200 | <Guest2172> | Partially. |
2021-08-21 19:24:23 +0200 | <sm> | good answer :) |
2021-08-21 19:24:45 +0200 | <maerwald> | can someone explain to me how Data.Char.isLower is implemented? It ends up like an boscure ffi call it seems to https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/base/cbits/WCsubst.c which I don't understand |
2021-08-21 19:24:49 +0200 | <Guest2172> | I am assuming that the Item datatype is acting like a lookup table when Single_Apple is mentioned |
2021-08-21 19:25:04 +0200 | <sm> | it looks like you know how to get the list of items, now you need a way to look up one item in that list |
2021-08-21 19:26:22 +0200 | <sm> | hint: there's a function in Prelude called lookup |
2021-08-21 19:26:40 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-08-21 19:28:18 +0200 | <monochrom> | or you could write your own recursion. it's a good exercise anyway, even if you throw it away afterwards |
2021-08-21 19:28:43 +0200 | <monochrom> | unless you have no idea how to work with a list |
2021-08-21 19:28:55 +0200 | <monochrom> | in which case more needs for more fingering exercises |
2021-08-21 19:29:33 +0200 | <Guest2172> | I do know how to work a list, dw |
2021-08-21 19:29:42 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-08-21 19:29:56 +0200 | <monochrom> | It takes zero understanding to say "StockL is some kind of database". Every random person on the street knows that much. |
2021-08-21 19:30:39 +0200 | <Guest2172> | Yea, I'm just dumb when it comes to Haskell |
2021-08-21 19:31:02 +0200 | <Guest2172> | Give me Python, c or c++ and I'll do just fine. Give me Haskell and I literally can't think |
2021-08-21 19:31:23 +0200 | <sm> | it takes time to rewire the brain for it |
2021-08-21 19:31:35 +0200 | <sm> | soon it'll be easy |
2021-08-21 19:32:18 +0200 | <Clint> | maerwald: looks like it's just checking an autogenerated lookup table for a flag |
2021-08-21 19:32:35 +0200 | <maerwald> | yeah, I'm screwed |
2021-08-21 19:32:37 +0200 | <sm> | Have you read a lot of (simple) haskell code ? this can help a lot I think |
2021-08-21 19:34:03 +0200 | <__monty__> | Guest2172: Could you say in a sentence or two how countF works? I think it'll help with a misunderstanding in your commented out countL. |
2021-08-21 19:34:34 +0200 | pbrisbin | (~patrick@174-081-116-011.res.spectrum.com) |
2021-08-21 19:35:00 +0200 | pavonia | (~user@user/siracusa) |
2021-08-21 19:37:47 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-08-21 19:38:02 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
2021-08-21 19:38:49 +0200 | <Guest2172> | countF takes in a variable of type StockF, and parses that to getStockF, which acts as a lookup for those items. |
2021-08-21 19:41:14 +0200 | <Guest2172> | Is that correct? |
2021-08-21 19:41:47 +0200 | <Guest2172> | __monty__ |
2021-08-21 19:42:52 +0200 | <pavonia> | maerwald: What are you trying to do? |
2021-08-21 19:43:18 +0200 | <maerwald> | pavonia: toUpper for Word16, similar to the word8 package |
2021-08-21 19:43:33 +0200 | neo | (~neo3@cpe-292712.ip.primehome.com) (Quit: Leaving) |
2021-08-21 19:43:53 +0200 | neo | (~neo3@cpe-292712.ip.primehome.com) |
2021-08-21 19:46:09 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-21 19:50:00 +0200 | wallymathieu | (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: Textual IRC Client: www.textualapp.com) |
2021-08-21 19:50:34 +0200 | <tomsmeding> | maerwald: https://hackage.haskell.org/package/base-4.15.0.0/docs/src/GHC-Unicode.html says that the implementation uses libunicode if that's available |
2021-08-21 19:50:46 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 250 seconds) |
2021-08-21 19:51:29 +0200 | <dsal> | Guest2172: I don't think I'd phrase it that way. |
2021-08-21 19:51:36 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-21 19:51:44 +0200 | <Guest2172> | I just can't think haskell |
2021-08-21 19:52:12 +0200 | <__monty__> | Guest2172: Not quite. You're saying `getStockF` is the function that takes an item and returns a count? |
2021-08-21 19:52:25 +0200 | <__monty__> | What is `x`? |
2021-08-21 19:53:02 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-08-21 19:53:19 +0200 | <Guest2172> | `x` is StockF f |
2021-08-21 19:54:06 +0200 | <__monty__> | Yes, and StockF f is a record, with one field called `getStockF`. |
2021-08-21 19:54:34 +0200 | <__monty__> | This field is also a function that extracts the value of the field from such a record. |
2021-08-21 19:55:05 +0200 | <tomsmeding> | maerwald: oh but a comment later on claims that the WCsubst.c functions are used unconditionally? |
2021-08-21 19:55:52 +0200 | <__monty__> | So `getStockF x` is just the value of the similarly named field. |
2021-08-21 19:56:27 +0200 | <maerwald> | yeah, I think there's no way I can have toLower on Word16 reasonably without converting to Char |
2021-08-21 19:56:43 +0200 | <maerwald> | for Word8 it's straight forward |
2021-08-21 19:56:51 +0200 | <Guest2172> | So if I were to write them down exactly the same, getStockL x would give me the list, right? |
2021-08-21 19:56:59 +0200 | <__monty__> | Guest2172: It's clearer if you make it less pointfree. `countF x i = (getStockF x) i`, you see? So what's wrong with your proposed countL? |
2021-08-21 19:57:02 +0200 | <__monty__> | Yes, exactly. |
2021-08-21 19:57:16 +0200 | <__monty__> | So passing a list to `getStockL` wouldn't work. |
2021-08-21 19:57:40 +0200 | <__monty__> | Now that you know how to get the list you should be able to implement countL. |
2021-08-21 19:58:25 +0200 | severen | (~severen@202.36.179.72) |
2021-08-21 19:58:46 +0200 | <pavonia> | maerwald: You could also filter the Unicode database files yourself and create a static mapping. The format is quite simple |
2021-08-21 19:59:26 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 250 seconds) |
2021-08-21 20:00:41 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-21 20:00:58 +0200 | <Guest2172> | I am confused how I should apply both getStockL and lookup though. getStockL x gives me the list, and somehow I'm supposed to use lookup to get the second element in that list |
2021-08-21 20:01:14 +0200 | bitmapper | (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-21 20:01:28 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 20:01:56 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-08-21 20:02:52 +0200 | <maerwald> | my property tests say that `toUpper = charToWord16 . C.toUpper . word16ToChar` is safe, because Data.Char.toUpper never goes beyond Word16 maxBound :p |
2021-08-21 20:02:56 +0200 | <maerwald> | that's luck |
2021-08-21 20:04:16 +0200 | <tomsmeding> | maerwald: what it ends up doing is a binary search in the allchars[] list starting on line 303; the entries are {starting codepoint, number of points in block, rule of this block}. The rules are defined directly above the allchars table, where the first item in the {} is the category, which is a bitwise OR of some of the GENCAT_?? defines, which are all distinct, single bits |
2021-08-21 20:04:37 +0200 | <maerwald> | yeah, pretty sure I don't wanna understand it :p |
2021-08-21 20:04:45 +0200 | <tomsmeding> | and it tests if the category has the GENCAT_LL bit set :) |
2021-08-21 20:05:04 +0200 | nate1 | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds) |
2021-08-21 20:06:05 +0200 | <tomsmeding> | it divides up the codepoints 0 to 65535 in 2719 blocks of the same category |
2021-08-21 20:06:40 +0200 | <tomsmeding> | this would be very easy to convert to whatever format you want it in, but at that point you can also generate it from the official UnicodeData.txt file :p |
2021-08-21 20:06:45 +0200 | <__monty__> | Guest2172: You can just apply a function to the value `f (getStockL x)`. |
2021-08-21 20:06:57 +0200 | pbrisbin | (~patrick@174-081-116-011.res.spectrum.com) (Ping timeout: 248 seconds) |
2021-08-21 20:07:19 +0200 | <__monty__> | Guest2172: I'd try implementing the recursion though, it's good practice. |
2021-08-21 20:07:48 +0200 | <tomsmeding> | maerwald: pretty sure that toUpper-closedness is not luck; 0000-FFFF is the so-called Basic Multilingual Plane and is a closed set of stuff |
2021-08-21 20:07:57 +0200 | <maerwald> | oh |
2021-08-21 20:08:17 +0200 | <tomsmeding> | maerwald: https://en.wikipedia.org/wiki/Unicode#Code_planes_and_blocks (I'm not recalling this from memory or something :p) |
2021-08-21 20:09:05 +0200 | <maerwald> | yeah, it def performs worse than the hand-written 'toLower' of Word8 |
2021-08-21 20:09:26 +0200 | <tomsmeding> | heh you can compress that table in WCsubst.c quite a bit if you allow for a slightly more complicated lookup function |
2021-08-21 20:09:37 +0200 | <maerwald> | 41.10 μs vs 7.613 μs |
2021-08-21 20:10:11 +0200 | <tomsmeding> | lots of alternating rule22 and rule23, which is just the same but then uppercase/lowercase |
2021-08-21 20:10:28 +0200 | mestre | (~mestre@191.177.175.57) (Quit: leaving) |
2021-08-21 20:10:37 +0200 | <maerwald> | well, good enough |
2021-08-21 20:10:41 +0200 | keutoi | (~keutoi@223.238.95.231) (Quit: leaving) |
2021-08-21 20:10:43 +0200 | mestre | (~mestre@191.177.175.57) |
2021-08-21 20:10:56 +0200 | <tomsmeding> | and that binary search is also inefficient in general, because of the use of the bsearch C library function, which is fine but not inlined (because C) so the comparison function is an indirect function call |
2021-08-21 20:12:01 +0200 | <tomsmeding> | in other words, if you want a really efficient implementation of isLower for Word16, you can do a bit better than ghc's current impl :) |
2021-08-21 20:12:24 +0200 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2021-08-21 20:13:11 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 268 seconds) |
2021-08-21 20:13:48 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-21 20:14:34 +0200 | <tomsmeding> | wait, that isLower calls u_iswlower which is an _unsafe_ FFI call |
2021-08-21 20:14:36 +0200 | azeem | (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 250 seconds) |
2021-08-21 20:15:50 +0200 | markpythonicbtc | (~textual@2601:647:5a00:35:697a:eb38:2e9e:dc30) |
2021-08-21 20:16:48 +0200 | azeem | (~azeem@176.200.245.90) |
2021-08-21 20:17:16 +0200 | <maerwald> | hmm... if you want to deal with UTF-16LE ShortByteString on a BE platform, then `pack :: [Word16] -> ShortByteString` will give you a surprise |
2021-08-21 20:17:45 +0200 | <tomsmeding> | endianness yay |
2021-08-21 20:18:01 +0200 | <maerwald> | Word16 appears to be BE interpreted by the primitives like writeWord16Array# |
2021-08-21 20:18:11 +0200 | <maerwald> | and so it performs alignment based on platform |
2021-08-21 20:18:50 +0200 | markpythonicbtc | (~textual@2601:647:5a00:35:697a:eb38:2e9e:dc30) (Client Quit) |
2021-08-21 20:18:51 +0200 | zaquest | (~notzaques@5.128.210.178) |
2021-08-21 20:19:07 +0200 | <tomsmeding> | probably the most efficient implementation |
2021-08-21 20:20:14 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 250 seconds) |
2021-08-21 20:20:14 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-08-21 20:21:09 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-08-21 20:25:15 +0200 | <kuribas> | I am trying vscode again after a few months "the haskell server crashed 5 times in the last 3 minutes". |
2021-08-21 20:25:26 +0200 | <kuribas> | Is this really what I should recommend to my team? |
2021-08-21 20:25:40 +0200 | aman | (~aman@user/aman) (Ping timeout: 240 seconds) |
2021-08-21 20:26:07 +0200 | <janus> | kuribas: who said you should recommend it to anyone? |
2021-08-21 20:26:13 +0200 | markpythonicbtc | (~textual@2601:647:5a00:35:697a:eb38:2e9e:dc30) |
2021-08-21 20:26:24 +0200 | <kuribas> | janus: many people recommend the LSP. |
2021-08-21 20:26:36 +0200 | <monochrom> | I think you can try for yourself again. |
2021-08-21 20:27:04 +0200 | <kuribas> | It's nice when it works. But it never works (for me). |
2021-08-21 20:27:44 +0200 | aman | (~aman@user/aman) |
2021-08-21 20:27:51 +0200 | <janus> | doesn't work for me either when you have hundreds of modules. i thought it was just because of that |
2021-08-21 20:28:13 +0200 | <janus> | what kinda problem are you having? memory usage? if so, it's probably just because it was developed and tested on small projects |
2021-08-21 20:28:27 +0200 | azeem | (~azeem@176.200.245.90) (Read error: Connection reset by peer) |
2021-08-21 20:28:30 +0200 | meinside_ | (uid24933@id-24933.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-21 20:29:07 +0200 | <janus> | high latency, high memory usage, leaking memory, those are the problems i had with v1.1 |
2021-08-21 20:29:43 +0200 | azeem | (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) |
2021-08-21 20:29:53 +0200 | <kuribas> | janus: idk |
2021-08-21 20:30:21 +0200 | <kuribas> | I just cannot say to the team, haskell is great, but you have to debug the tooling... |
2021-08-21 20:30:36 +0200 | <janus> | how can you not know what kinda problem you're having? how do you even know you're having a problem if you don't know how to describe it? |
2021-08-21 20:30:58 +0200 | <kuribas> | janus: the problem I have is "the haskell server crashed 5 times in the last 3 minutes" |
2021-08-21 20:30:59 +0200 | t0zy | (~t0zy@49.207.193.1) (Remote host closed the connection) |
2021-08-21 20:31:00 +0200 | <monochrom> | I think "crashed" was already said. |
2021-08-21 20:31:12 +0200 | <janus> | right, it probably crashed because of the OOM killer |
2021-08-21 20:31:16 +0200 | t0zy | (~t0zy@49.207.193.1) |
2021-08-21 20:31:57 +0200 | <janus> | but it's just my guess of course, based on the problems i had |
2021-08-21 20:32:02 +0200 | <kuribas> | Perhaps, I have a module which is using TH to compile a large amount of code. |
2021-08-21 20:32:10 +0200 | <kuribas> | but it works fine in emacs. |
2021-08-21 20:32:12 +0200 | <kuribas> | (without LSP) |
2021-08-21 20:33:16 +0200 | <kuribas> | anything else that might work? maybe intellij? |
2021-08-21 20:34:16 +0200 | <monochrom> | My students seem to be fine with vscode, but it's probably because of 2 factors. 1. My course doesn't have TH, or lots of code. 2. I think most of them are still not using HLS or LSP. |
2021-08-21 20:34:44 +0200 | <monochrom> | Does intellij even know of Haskell? |
2021-08-21 20:34:59 +0200 | <kuribas> | monochrom: well, isn't it then nothing more than a glorified text editor with syntax highlighing? |
2021-08-21 20:35:05 +0200 | <janus> | you can get far just with Telescope (a Ctrl-P like for Neovim). it allows you to quickly jump to another module. and you can use ripgrep from neovim also, allowing you to quickly search for the word under the cursor |
2021-08-21 20:35:11 +0200 | <kuribas> | monochrom: or do they use another plugin? |
2021-08-21 20:35:25 +0200 | <janus> | you can also use CoCSearch to do a global replace with context, that is pretty cool |
2021-08-21 20:35:30 +0200 | <monochrom> | I think my students don't insist on anything more. |
2021-08-21 20:35:30 +0200 | <kuribas> | monochrom: yes, there are intellij plugins for haskell. |
2021-08-21 20:36:01 +0200 | <janus> | kuribas: check out this screenshot : https://github.com/neoclide/coc.nvim/issues/1080 |
2021-08-21 20:36:22 +0200 | <janus> | you see the context of the searched term across all files, and then you can replace it accordingly |
2021-08-21 20:36:50 +0200 | <janus> | if you do a global replace in the CoC buffer/window (dunno terminology) , it automatically applies it in each file |
2021-08-21 20:37:05 +0200 | <janus> | kinda like a perl pie++ http://technosophos.com/2009/05/21/perl-pie-if-you-only-learn-how-do-one-thing-perl-it.html |
2021-08-21 20:37:17 +0200 | <kuribas> | janus: what I want at least is to visualise type errors. |
2021-08-21 20:37:47 +0200 | <janus> | ah, ok, i don't have that, never seemed like a big problem to jump to the line number from the error message |
2021-08-21 20:38:27 +0200 | Guest2172 | (~Guest21@2a02:8109:a080:6368:d5d2:328b:373c:5b57) (Quit: Client closed) |
2021-08-21 20:38:36 +0200 | <janus> | the line number is in the error message, then it is two chars to open Telescope, couple of chars to type parts of the file name (fuzzy search), couple of chars to jump to the line |
2021-08-21 20:39:19 +0200 | <monochrom> | Why is that not called Microscope? :) |
2021-08-21 20:39:23 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal) |
2021-08-21 20:40:04 +0200 | <janus> | what i do is i have a terminal running in neovim on the right, which contains the compilation loop or ghcid. so you won't need to switch windows |
2021-08-21 20:40:22 +0200 | <tomsmeding> | kuribas: that "using TH to compile a large amount of code" sounds heavily suspect; HLS had lots of trouble with TH in the past, and it's for sure not completely resolved yet |
2021-08-21 20:41:16 +0200 | <tomsmeding> | but in a project I work on, which has ~130 modules, it works fine and it doesn't crash on me -- though I don't actually work on the modules that define or use TH, it's just elsewhere in the project |
2021-08-21 20:41:54 +0200 | <tomsmeding> | also: having C code in the project makes things finicky; it can work fine, but you have to first compile the project fully first, and only then start up HLS |
2021-08-21 20:42:07 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 252 seconds) |
2021-08-21 20:43:04 +0200 | <kuribas> | tomsmeding: what do you use? |
2021-08-21 20:43:25 +0200 | <tomsmeding> | HLS in neovim, since a few days with the new neovim 0.5 built-in LSP support, but before that using ALE |
2021-08-21 20:43:36 +0200 | <kuribas> | ALE? |
2021-08-21 20:43:57 +0200 | <tomsmeding> | vim plugin that, among other things, has a bare-bones (but solid) LSP implementation |
2021-08-21 20:44:50 +0200 | gentauro_ | (~gentauro@95.166.247.26) |
2021-08-21 20:46:24 +0200 | <maerwald> | tomsmeding: TH, big modules, hsc files, ... |
2021-08-21 20:47:35 +0200 | <Drew[m]> | ghcup-hs's source currently crashes my HLS server when I try to open up the contents of the /app folder. There is TH and CPP in those modules and I've chalked it up to those |
2021-08-21 20:48:54 +0200 | <Drew[m]> | maerwald: does that happen for you too? |
2021-08-21 20:49:09 +0200 | <maerwald> | yeah |
2021-08-21 20:49:16 +0200 | <hololeap> | isn't there another library that does the same thing as this? https://github.com/hdgarrood/qq-literals |
2021-08-21 20:49:18 +0200 | <maerwald> | especially the Main module |
2021-08-21 20:49:23 +0200 | <maerwald> | it's big and has quasiquotes |
2021-08-21 20:50:02 +0200 | <hololeap> | I want to parse literals and throw compile errors if they are incorrect |
2021-08-21 20:50:54 +0200 | <hololeap> | someone recommended a library for this once, but I can't remember the name of it |
2021-08-21 20:51:51 +0200 | <monochrom> | Would it be https://hackage.haskell.org/package/string-qq ? https://hackage.haskell.org/package/string-quote ? |
2021-08-21 20:52:09 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
2021-08-21 20:52:43 +0200 | <monochrom> | I don't know the difference, or why the author made both. |
2021-08-21 20:53:42 +0200 | <janus> | from looking at the docs, it seems the difference is "that the leading newline is trimmed and carriage returns stripped." |
2021-08-21 20:53:45 +0200 | <hololeap> | no, it wasn't either of those. it had a much more fleshed-out interface and it gave an example in the readme for checking for odd numbers |
2021-08-21 20:53:51 +0200 | <hololeap> | (or something like that) |
2021-08-21 20:55:28 +0200 | jamestmartin | (james@jtmar.me) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
2021-08-21 20:56:07 +0200 | <janus> | would it be possible to find it via hoogle? i am not too familiar, but it sounds like it should be "(String -> a) -> QQ a" or something? |
2021-08-21 20:58:01 +0200 | jamestmartin | (james@jtmar.me) |
2021-08-21 20:59:51 +0200 | <hololeap> | I remember it had a typeclass that handled conversion to QQ |
2021-08-21 21:00:56 +0200 | kuribas | (~user@ptr-25vy0i7pvnvbb3ckill.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2021-08-21 21:01:47 +0200 | <tomsmeding> | maerwald: Drew[m]: working HLS for me in app/ghcup/Main.hs https://tomsmeding.com/ss/get/tomsmeding/JOKELd |
2021-08-21 21:01:58 +0200 | <tomsmeding> | ghc 8.10.6 with my self-compiled HLS |
2021-08-21 21:02:34 +0200 | <Drew[m]> | hmm |
2021-08-21 21:02:43 +0200 | <Drew[m]> | I'll give that a go at some point |
2021-08-21 21:03:53 +0200 | <tomsmeding> | hololeap: https://hackage.haskell.org/package/validated-literals |
2021-08-21 21:03:55 +0200 | <hololeap> | sweet, I found it by searching through my IRC logs: https://hackage.haskell.org/package/validated-literals |
2021-08-21 21:04:00 +0200 | <hololeap> | lol |
2021-08-21 21:04:02 +0200 | tomsmeding | high-fives hololeap |
2021-08-21 21:04:05 +0200 | <tomsmeding> | that timing was perfect |
2021-08-21 21:04:15 +0200 | <hololeap> | yes it was :) |
2021-08-21 21:04:57 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Remote host closed the connection) |
2021-08-21 21:05:09 +0200 | Guest2130 | (~Guest21@2a02:8109:a080:6368:d5d2:328b:373c:5b57) |
2021-08-21 21:05:21 +0200 | <Guest2130> | Got a question in terms of record fields |
2021-08-21 21:05:24 +0200 | <tomsmeding> | (I just searched for 'literal' on hackage and went through the not-even-all-that-long list of 85 packages) |
2021-08-21 21:05:37 +0200 | <tomsmeding> | also written by a #haskell regular :) |
2021-08-21 21:06:07 +0200 | <maerwald> | tomsmeding: see those sweet quasi quotes in the code? :d |
2021-08-21 21:06:26 +0200 | <maerwald> | nice is when your quasi quotes starts with # on the second line |
2021-08-21 21:06:49 +0200 | <maerwald> | most tools will think it's CPP and then mess up |
2021-08-21 21:06:59 +0200 | <tomsmeding> | not my vim :p |
2021-08-21 21:07:10 +0200 | <maerwald> | well, I think even hlint fails here |
2021-08-21 21:07:16 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-08-21 21:07:18 +0200 | <Guest2130> | https://paste.tomsmeding.com/oKfOX56s |
2021-08-21 21:07:43 +0200 | <Guest2130> | Can anyone look at this and tell me how I might be able to do this better? |
2021-08-21 21:08:08 +0200 | <Guest2130> | It can't match expected type CSStudent, with DBTreeO CSStudent |
2021-08-21 21:08:27 +0200 | <Guest2130> | I know I'm on the verge of the solution, just not sure what the last part is |
2021-08-21 21:08:45 +0200 | <tomsmeding> | Guest2130: what line is that error on? |
2021-08-21 21:08:57 +0200 | <tomsmeding> | ah I see it |
2021-08-21 21:09:27 +0200 | <Guest2130> | Yea, it's the last line |
2021-08-21 21:09:32 +0200 | <tomsmeding> | I'd expect the error to be pretty clear in this case (allowing for the general situation where it takes some time before you get used to ghc's errors) |
2021-08-21 21:09:43 +0200 | <tomsmeding> | last line? |
2021-08-21 21:09:51 +0200 | <tomsmeding> | oh right yes |
2021-08-21 21:09:53 +0200 | <Guest2130> | Did I send the wrong snippet? |
2021-08-21 21:10:09 +0200 | <tomsmeding> | no you didn't |
2021-08-21 21:10:25 +0200 | <monochrom> | I am unsympathetic. This doesn't look like you are even aware that you have to code up an elaborate search algorithm. |
2021-08-21 21:10:50 +0200 | <Guest2130> | I don't have to make anything elaborate, is the thing |
2021-08-21 21:10:57 +0200 | <__monty__> | Guest2130: Look at the types of `students` and `sid`. |
2021-08-21 21:12:12 +0200 | vpan | (~vilius@212.117.1.172) (Quit: Leaving.) |
2021-08-21 21:12:13 +0200 | <monochrom> | The DBTreeO type is a pretty elaborate tree. I would think that looking for a node that has the thing you want is not going to be just a 1-liner, much less a 5-worder. |
2021-08-21 21:14:13 +0200 | <Drew[m]> | <Drew[m]> "I'll give that a go at some poin" <- Just got to compile a small handful of dependencies first... |
2021-08-21 21:14:13 +0200 | <Drew[m]> | https://paste.tomsmeding.com/zzR5f9id |
2021-08-21 21:14:48 +0200 | <tomsmeding> | Drew[m]: get a better PC, you surely didn't think you could be productive in haskell without a 20-core machine |
2021-08-21 21:15:48 +0200 | <tomsmeding> | Drew[m]: do you already have a HLS for 8.10.6? note that that particular ghc version doesn't have a released HLS yet as far as I know |
2021-08-21 21:16:42 +0200 | <Drew[m]> | I don't have HLS for 8.10.6 but I'm willing to compile it from source if it'll fix this one thing |
2021-08-21 21:17:02 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 21:17:32 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 21:17:42 +0200 | <Drew[m]> | But that's just me recompiling ghcup |
2021-08-21 21:18:03 +0200 | <tomsmeding> | well HLS also has a bunch of dependencies, that's why I asked :p |
2021-08-21 21:18:22 +0200 | <maerwald> | Drew[m]: why are you compiling ghcup from source anyway? |
2021-08-21 21:20:22 +0200 | jacks2 | (~bc8167eb@217.29.117.252) |
2021-08-21 21:20:27 +0200 | jacks2 | (~bc8167eb@217.29.117.252) () |
2021-08-21 21:21:10 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2021-08-21 21:23:09 +0200 | <tomsmeding> | oh hey, I tried again using ghc 9.0.1 and a downloaded HLS binary, and suddenly I see my friend again that I hadn't seen for almost a year at this point |
2021-08-21 21:23:17 +0200 | <tomsmeding> | that friend being "allocatestack.c:384: advise_stack_range: Assertion `freesize < size' failed." |
2021-08-21 21:23:47 +0200 | <tomsmeding> | previously the fix for that seemed to be a build on my own machine |
2021-08-21 21:23:54 +0200 | tomsmeding | compiles HLS |
2021-08-21 21:24:11 +0200 | <Drew[m]> | <maerwald> "Drew: why are you compiling..." <- I'm poking and prodding that large Main.hs file you mentioned |
2021-08-21 21:24:23 +0200 | oxide | (~lambda@user/oxide) (Quit: oxide) |
2021-08-21 21:31:34 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-21 21:31:34 +0200 | azeem | (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Read error: Connection reset by peer) |
2021-08-21 21:32:43 +0200 | mei | (~mei@user/mei) (Ping timeout: 252 seconds) |
2021-08-21 21:33:49 +0200 | neo | (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 252 seconds) |
2021-08-21 21:34:30 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-21 21:36:34 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer) |
2021-08-21 21:38:03 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-08-21 21:39:30 +0200 | <tomsmeding> | Drew[m]: maerwald: yep, self-compiled HLS with ghc 9.0.1 works with ghcup's app/ghcup/Main.hs :) |
2021-08-21 21:40:21 +0200 | <tomsmeding> | it's slow though, but it works (feedback after making a change takes like 1sec or something) |
2021-08-21 21:40:43 +0200 | <Drew[m]> | Oh neat I'll just recompile all these dependencies with 9.0.1 |
2021-08-21 21:40:54 +0200 | <Drew[m]> | 😱 |
2021-08-21 21:41:01 +0200 | <tomsmeding> | :D |
2021-08-21 21:41:19 +0200 | <tomsmeding> | like, I could send you my binary but that probably wouldn't help :p |
2021-08-21 21:41:22 +0200 | <maerwald> | I have no idea how the dep footprint got so bad, but yeah |
2021-08-21 21:41:45 +0200 | <tomsmeding> | Drew[m]: didn't 8.10.6 work for you? |
2021-08-21 21:41:52 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2021-08-21 21:42:17 +0200 | <Drew[m]> | It probably will and I will probably just use that |
2021-08-21 21:42:29 +0200 | <Drew[m]> | But that's les humourous |
2021-08-21 21:42:40 +0200 | <Drew[m]> | less* |
2021-08-21 21:43:10 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
2021-08-21 21:43:59 +0200 | <Drew[m]> | The long first-time compile is not something that normally bothers me since usually I'm not constantly switching compiler version |
2021-08-21 21:44:28 +0200 | <Drew[m]> | It's just that trying to fix the HLS issue has been making me do it an awful lot recently |
2021-08-21 21:44:30 +0200 | <maerwald> | I am for libraries, testing between 8.0.2 and 9.0.1 |
2021-08-21 21:44:32 +0200 | Lord_of_Life_ | Lord_of_Life |
2021-08-21 21:44:51 +0200 | <maerwald> | with stack it's a little tedious, because it locks you into old Cabal versions |
2021-08-21 21:45:10 +0200 | <maerwald> | then you can't use modern cabal features on old resolvers |
2021-08-21 21:45:31 +0200 | <maerwald> | but 8.0.2 works fine with new Cabal |
2021-08-21 21:48:19 +0200 | <Drew[m]> | I started on 9.0.1, then thought maybe HLS would be more likely to work on an older version so switched to 8.10.6, not realizing it didn't have a HLS release for it yet... |
2021-08-21 21:48:19 +0200 | <Drew[m]> | So then I switched to 8.10.5, and that didn't fix it. |
2021-08-21 21:48:25 +0200 | <Drew[m]> | Then I realized I hadn't put -haddock in my cabal config properly, because I hadn't commented out a certain line... so I had to fix that... ofc meaning literally everything must recompile. |
2021-08-21 21:48:28 +0200 | azeem | (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) |
2021-08-21 21:48:45 +0200 | <Drew[m]> | So even if I was to switch back to 9.0.1 where I originally built it, it'll have to rebuild anyway |
2021-08-21 21:48:55 +0200 | notzmv | (~zmv@user/notzmv) |
2021-08-21 21:49:09 +0200 | <Drew[m]> | not fun |
2021-08-21 21:49:15 +0200 | <maerwald> | wasn't there a thing to view the depgraph of haskell packages to figure out what's the biggest culprit? |
2021-08-21 21:49:46 +0200 | <tomsmeding> | maerwald: well there's 'cabal-plan dot | dot -Tpng -o graph.png' but not sure whether that will help immensely (I already tried) |
2021-08-21 21:49:53 +0200 | gentauro_ | (~gentauro@95.166.247.26) (Ping timeout: 248 seconds) |
2021-08-21 21:49:58 +0200 | <maerwald> | I want stats |
2021-08-21 21:50:07 +0200 | <maerwald> | like: direct dependencies and their trans |
2021-08-21 21:50:18 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-08-21 21:57:08 +0200 | <tomsmeding> | maerwald: https://paste.tomsmeding.com/zfQgpGdD direct dependencies of the ghcup library and the ghcup main executable, prefixed with the number of direct dependencies those have |
2021-08-21 21:57:39 +0200 | <tomsmeding> | but perhaps a more useful measure is "how many deps do I save if I remove dependency X" |
2021-08-21 21:57:45 +0200 | <maerwald> | yeah |
2021-08-21 21:58:43 +0200 | <maerwald> | but then you have to know "how many deps do I save if I remove dependency X and Y" |
2021-08-21 21:59:32 +0200 | <maerwald> | well, aeson and yaml probably can't be removed |
2021-08-21 21:59:47 +0200 | <maerwald> | surprised there's no light aeson package |
2021-08-21 22:00:05 +0200 | <maerwald> | monad-logger pulls in all this conduit nonsense |
2021-08-21 22:02:48 +0200 | <maerwald> | meh, and zip as well |
2021-08-21 22:05:06 +0200 | juhp | (~juhp@128.106.188.220) (Ping timeout: 250 seconds) |
2021-08-21 22:05:34 +0200 | neo | (~neo3@cpe-292712.ip.primehome.com) |
2021-08-21 22:06:24 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-21 22:08:18 +0200 | juhp | (~juhp@128.106.188.220) |
2021-08-21 22:09:42 +0200 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-08-21 22:11:04 +0200 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2021-08-21 22:11:27 +0200 | <maerwald> | is there a light alternative to monad-logger? |
2021-08-21 22:11:43 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2021-08-21 22:12:11 +0200 | skykanin | (~skykanin@115.81-166-221.customer.lyse.net) (Quit: WeeChat 3.2) |
2021-08-21 22:12:52 +0200 | <monochrom> | Yesterday someone asked "Any recommendation on logging frameworks? co-log and katip appear to be two common ones, but I'm not sure as to why one or the other is better." |
2021-08-21 22:13:10 +0200 | <maerwald> | I'm interested in smalles dep footprint |
2021-08-21 22:13:13 +0200 | <monochrom> | No one answered. But perhaps you could also consider those two mentioned. |
2021-08-21 22:13:29 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 22:13:48 +0200 | <hpc> | syslog, if you don't care about windows? |
2021-08-21 22:13:55 +0200 | <maerwald> | I do |
2021-08-21 22:13:57 +0200 | mastarija | (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving) |
2021-08-21 22:14:56 +0200 | <maerwald> | https://hackage.haskell.org/package/hslogger |
2021-08-21 22:15:22 +0200 | <maerwald> | most of hvrs stuff is unmaintained though... |
2021-08-21 22:16:48 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-21 22:17:44 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-08-21 22:17:49 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 252 seconds) |
2021-08-21 22:20:10 +0200 | superbil | (~superbil@1-34-176-171.HINET-IP.hinet.net) (Ping timeout: 240 seconds) |
2021-08-21 22:20:45 +0200 | xlei | (znc@pool-68-129-84-118.nycmny.fios.verizon.net) (Read error: Connection reset by peer) |
2021-08-21 22:23:09 +0200 | jtomas_ | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
2021-08-21 22:23:45 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 22:25:46 +0200 | jtomas | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Ping timeout: 268 seconds) |
2021-08-21 22:28:08 +0200 | <hololeap> | I'm getting a GHC crash: http://sprunge.us/ui6BdB here is the repo I'm working on: https://github.com/hololeap/gemport |
2021-08-21 22:28:51 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
2021-08-21 22:30:05 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-21 22:30:52 +0200 | <geekosaur> | is /tmp by any chance mounted noexec? |
2021-08-21 22:30:58 +0200 | <hololeap> | yeah |
2021-08-21 22:31:42 +0200 | <hololeap> | does TemplateHaskell execute something in /tmp? |
2021-08-21 22:31:42 +0200 | <geekosaur> | you'll need to set TMPDIR to point somewhere that allows executables, then |
2021-08-21 22:32:11 +0200 | <geekosaur> | yes, well, it maps executable pages from on-the-fly built shared objects in /tmp |
2021-08-21 22:32:25 +0200 | <geekosaur> | which is the same thing under the hood |
2021-08-21 22:32:41 +0200 | <hololeap> | is TMPDIR an environment variable? |
2021-08-21 22:33:00 +0200 | <geekosaur> | yes |
2021-08-21 22:33:33 +0200 | shapr | (~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 258 seconds) |
2021-08-21 22:33:42 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-08-21 22:33:46 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-08-21 22:33:57 +0200 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-21 22:34:18 +0200 | <maerwald> | POSIX sanctioned |
2021-08-21 22:34:25 +0200 | <hololeap> | ok, thanks for the quick response geekosaur |
2021-08-21 22:34:30 +0200 | burnsidesLlama | (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
2021-08-21 22:34:36 +0200 | <maerwald> | https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html |
2021-08-21 22:34:44 +0200 | xlei | (znc@pool-68-129-84-118.nycmny.fios.verizon.net) |
2021-08-21 22:36:26 +0200 | <maerwald> | also, how do haskellers test their code on big endian? |
2021-08-21 22:39:16 +0200 | jtomas_ | (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
2021-08-21 22:39:20 +0200 | burnsidesLlama | (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 268 seconds) |
2021-08-21 22:39:57 +0200 | <tomsmeding> | do haskellers test their code? |
2021-08-21 22:40:37 +0200 | <maerwald> | if the input strings are filenames, you BETTER :D |
2021-08-21 22:41:12 +0200 | <monochrom> | tmpfs being noexec by default also tripped me when I set up a docker container to mark student assignments :) |
2021-08-21 22:41:20 +0200 | acidjnk_new | (~acidjnk@p200300d0c72b954921d359bc9986b356.dip0.t-ipconnect.de) |
2021-08-21 22:41:25 +0200 | <tomsmeding> | maerwald: if you're willing to drop one arbitrary dependency from both ghcup:exe and ghcup:lib, the one that removes most packages from the full dependency graph is monad-logger at 12 packages less |
2021-08-21 22:41:38 +0200 | <tomsmeding> | if you're willing to drop two, take monad-logger and zip, at 25 packages less |
2021-08-21 22:41:42 +0200 | <maerwald> | yep |
2021-08-21 22:42:34 +0200 | <tomsmeding> | but probably dropping zip is not really an option :p |
2021-08-21 22:42:59 +0200 | <maerwald> | it is |
2021-08-21 22:43:07 +0200 | <maerwald> | https://hackage.haskell.org/package/LibZip-1.0.1 |
2021-08-21 22:43:18 +0200 | <tomsmeding> | oooh |
2021-08-21 22:43:20 +0200 | <maerwald> | but I will have to create a bundled C version of https://hackage.haskell.org/package/bindings-libzip |
2021-08-21 22:43:24 +0200 | <tomsmeding> | look at that dep list |
2021-08-21 22:43:29 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-08-21 22:43:57 +0200 | <maerwald> | https://hackage.haskell.org/package/hslogger also looks feasible, but less ergonomic |
2021-08-21 22:44:19 +0200 | <tomsmeding> | oh if you're willing to drop three packages, monad-logger, zip and string-interpolate give 36 less transitive deps :) |
2021-08-21 22:44:21 +0200 | <maerwald> | it uses a global MVar, which is kinda gross |
2021-08-21 22:44:26 +0200 | <tomsmeding> | (that took ~2min to compute) |
2021-08-21 22:44:36 +0200 | <maerwald> | https://hackage.haskell.org/package/hslogger-1.3.1.0/docs/src/System.Log.Logger.html#logTree |
2021-08-21 22:44:39 +0200 | <janus> | hslogger is abandoned, good to migrate away from it |
2021-08-21 22:44:43 +0200 | <maerwald> | to what |
2021-08-21 22:44:57 +0200 | <janus> | i don't know :( |
2021-08-21 22:45:10 +0200 | <tomsmeding> | just... you know, away :) |
2021-08-21 22:45:17 +0200 | <maerwald> | tomsmeding: oh, but string-interpolate I use heavily |
2021-08-21 22:45:23 +0200 | <tomsmeding> | yeah |
2021-08-21 22:45:44 +0200 | tomsmeding | wrote some gross haskell code to compute this |
2021-08-21 22:46:08 +0200 | <monochrom> | NP-hard problems call for gross code that takes 2 minutes to run :) |
2021-08-21 22:46:25 +0200 | <maerwald> | tomsmeding: I think haskell-src-meta might be a bad apple here |
2021-08-21 22:48:49 +0200 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) |
2021-08-21 22:50:20 +0200 | <maerwald> | https://hackage.haskell.org/package/fast-logger |
2021-08-21 22:51:13 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds) |
2021-08-21 22:51:37 +0200 | <tomsmeding> | maerwald: yeah, 7 of the 11 deps that dropping string-interpolate gives you (if you're already dropping monad-logger and zip) come from haskell-src-meta; the other 3 are from text-conversions |
2021-08-21 22:52:05 +0200 | <sm> | haskell-src-meta is on my bad apple list |
2021-08-21 22:52:15 +0200 | neo | (~neo3@cpe-292712.ip.primehome.com) (Remote host closed the connection) |
2021-08-21 22:52:29 +0200 | <sm> | and so are most of the string interpolating libs, I forget why |
2021-08-21 22:52:35 +0200 | <maerwald> | tomsmeding: I opened https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/212 |
2021-08-21 22:53:52 +0200 | <tomsmeding> | yay |
2021-08-21 22:54:43 +0200 | tomsmeding | is going to bed |
2021-08-21 22:54:56 +0200 | <maerwald> | I can't find a single quasi quoter without haskell-src-meta |
2021-08-21 22:55:13 +0200 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 252 seconds) |
2021-08-21 22:56:56 +0200 | <sm> | ...maybe that was why |
2021-08-21 22:59:14 +0200 | <tomsmeding> | maerwald: if I'm not mistaken, the only use of haskell-src-meta in string-interpolate is here: https://gitlab.com/williamyaoh/string-interpolate/-/blob/master/src/lib/Data/String/Interpolate.hs… |
2021-08-21 22:59:27 +0200 | <tomsmeding> | where toExp is from this instance: https://hackage.haskell.org/package/haskell-src-meta-0.8.7/docs/src/Language.Haskell.Meta.Syntax.T… |
2021-08-21 23:00:02 +0200 | <tomsmeding> | oh right that references lots of other stuff too |
2021-08-21 23:00:06 +0200 | tomsmeding | is really going now |
2021-08-21 23:00:14 +0200 | <maerwald> | cheers |
2021-08-21 23:01:26 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2021-08-21 23:04:55 +0200 | oldsk00l | (~znc@ec2-52-58-63-152.eu-central-1.compute.amazonaws.com) |
2021-08-21 23:05:05 +0200 | <amesgen[m]> | String interpolators use haskell-src-meta in order to convert quoted text to TH Exps: https://gitlab.haskell.org/ghc/ghc/-/issues/19148 |
2021-08-21 23:05:49 +0200 | <amesgen[m]> | Interpolators like neat-interpolation don't use haskell-src-meta, but they only support interpolating variables and not arbitrary expressions. |
2021-08-21 23:07:02 +0200 | cheater1__ | (~Username@user/cheater) |
2021-08-21 23:07:04 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 250 seconds) |
2021-08-21 23:07:06 +0200 | cheater1__ | cheater |
2021-08-21 23:07:35 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-08-21 23:08:27 +0200 | <sm> | amesgen++, informative |
2021-08-21 23:08:30 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 23:13:10 +0200 | sm[i] | (~user@plaintextaccounting/sm) |
2021-08-21 23:15:02 +0200 | <maerwald[m]> | QuasiQuoters are just convenience, so we can certainly do without. It's just tedious work |
2021-08-21 23:17:04 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-21 23:17:04 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-21 23:17:07 +0200 | allbery_b | geekosaur |
2021-08-21 23:17:15 +0200 | sm[i]_ | (~user@li229-222.members.linode.com) (Ping timeout: 258 seconds) |
2021-08-21 23:17:39 +0200 | sm[i] | (~user@plaintextaccounting/sm) (Remote host closed the connection) |
2021-08-21 23:18:41 +0200 | <sm> | yes, it's a pity |
2021-08-21 23:19:20 +0200 | sm[i] | (~user@plaintextaccounting/sm) |
2021-08-21 23:19:46 +0200 | <sclv> | i wonder if there's enough parsing now exposed by ghc to obviate the need for haskell-src-meta |
2021-08-21 23:20:00 +0200 | <sclv> | if not, maybe that would be good to fix :-) |
2021-08-21 23:20:35 +0200 | <sclv> | Like we really just want a function `String -> UntypedTH` directly in ghc.exts or the like |
2021-08-21 23:20:48 +0200 | silver_ | (~silver@37.214.30.4) |
2021-08-21 23:21:30 +0200 | <Guest2130> | Can someone help me maybe understand where I'm going wrong with this lookup? Or point me in the right direction to get it working? |
2021-08-21 23:22:23 +0200 | <Guest2130> | I am trying to get to the list in this benWalker = Student "Ben Walker" 19 Halifax [(SOFT, 62), (EASY, 42), (FULL, 62)] |
2021-08-21 23:22:23 +0200 | <sm> | Guest2130, what's your latest code ? |
2021-08-21 23:22:52 +0200 | <Guest2130> | It's literally just `lookup EASY x` |
2021-08-21 23:23:04 +0200 | <Guest2130> | x being benWalker |
2021-08-21 23:23:07 +0200 | <sclv> | `getList (Student _ _ _ l) = l` |
2021-08-21 23:23:13 +0200 | <monochrom> | Use "pattern matching" as taught in your class. |
2021-08-21 23:23:22 +0200 | <Guest2130> | Oh, pattern matching works here? |
2021-08-21 23:23:40 +0200 | <sclv> | pattern match on Student -- its a data constructor, you can pattern match out of any data constructor |
2021-08-21 23:23:43 +0200 | <maerwald[m]> | monochrom: your class? :D |
2021-08-21 23:23:44 +0200 | <monochrom> | and sclv just showed what it looks like. |
2021-08-21 23:23:52 +0200 | <monochrom> | No. Gladly. |
2021-08-21 23:23:57 +0200 | <sclv> | jumped the gun, didn't realize how socratic we were trying to be :-) |
2021-08-21 23:25:06 +0200 | <monochrom> | My class, I would have told them "pattern matching is your only option for working with algebraic data types" and they would not need to ask here. |
2021-08-21 23:25:31 +0200 | <monochrom> | Right? During May-June no one came here asking like this. |
2021-08-21 23:25:35 +0200 | <Guest2130> | Online teaching had been a bitch to us this year sadly |
2021-08-21 23:25:46 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
2021-08-21 23:25:53 +0200 | <monochrom> | And you think my class didn't suffer just as much online teaching? |
2021-08-21 23:26:24 +0200 | o1lo01ol1o | (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
2021-08-21 23:26:30 +0200 | <monochrom> | To be sure, to be fair, the other angle is that students have the tendency to ignore course material and listen to Google and stackoverflow. |
2021-08-21 23:27:06 +0200 | <monochrom> | I would be really surprised if the course material had not shown examples like this. |
2021-08-21 23:29:09 +0200 | <monochrom> | BTW said tendency had been amply observed long before COVID-19. In fact for over two decades. |
2021-08-21 23:29:27 +0200 | <monochrom> | So, even predated SARS. |
2021-08-21 23:30:28 +0200 | <maerwald[m]> | Some course material is worse than SO, though. I had a prof who thought teaching a new language is best achieved by exposing the student to ALL pitfalls. That was a nightmare for C++ and ruby. |
2021-08-21 23:31:02 +0200 | <monochrom> | "Is that vaccination?" meme |
2021-08-21 23:31:59 +0200 | <monochrom> | BTW I wouldn't complain about stackoverflow if it were right. |
2021-08-21 23:33:32 +0200 | <monochrom> | I had a midterm test question, the correct answer was right there in my lecture slides staring at you. Stackoverflow had the wrong answer, probably still does. I had students who gave the Stackoverflow answer. |
2021-08-21 23:33:41 +0200 | wroathe | (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) |
2021-08-21 23:34:40 +0200 | <monochrom> | This one: https://stackoverflow.com/questions/36428098/c-how-to-check-if-my-input-bufferstdin-is-empty?rq=1 |
2021-08-21 23:34:55 +0200 | <monochrom> | fseek in stdin?! Excuse me?! What were they smoking? |
2021-08-21 23:35:02 +0200 | <monochrom> | s/ in / on / |
2021-08-21 23:37:16 +0200 | <monochrom> | And notice how the incorrect fseek solution got 2 votes, the correct "you must attempt reading before you can know" solution got 0 votes. |
2021-08-21 23:37:40 +0200 | superbil | (~superbil@1-34-176-171.HINET-IP.hinet.net) |
2021-08-21 23:40:17 +0200 | jgeerds | (~jgeerds@55d4b311.access.ecotel.net) |
2021-08-21 23:41:33 +0200 | <monochrom> | Low quality courses regarding Haskell exist but AFAIK are low quality in a different way from C++ ones. |
2021-08-21 23:42:40 +0200 | <monochrom> | Haskell ones would not be low quality for forgetting to teach you algebraic data types and pattern matching. |
2021-08-21 23:43:59 +0200 | <monochrom> | The more likely kinds of low quality comes in: having too much faith in your recursion ability, having too much faith in your ability to understand advanced abstractions and generalizations. |
2021-08-21 23:44:20 +0200 | <monochrom> | Telling you too early about laws and proofs. |
2021-08-21 23:47:06 +0200 | <monochrom> | The one I was most badly-impressed by was about 5-10 years ago there was a homework question for implementing a list function that would end all list functions. |
2021-08-21 23:47:44 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-21 23:47:44 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-21 23:47:47 +0200 | allbery_b | geekosaur |
2021-08-21 23:47:56 +0200 | <c_wraith> | closer to 10 years ago, IIRC |
2021-08-21 23:48:13 +0200 | <monochrom> | It took like 10 parameters (OK, 5) and based on the parameters you give you can obtain foldr, foldl, unfoldr, map, map-reduce, everything. And this is why it takes 5 parameters. |
2021-08-21 23:48:44 +0200 | <monochrom> | So, going overboard with abstraction and generalization. |
2021-08-21 23:49:24 +0200 | <monochrom> | And by today's standard a very misguided, ad-hoc one, too. We now understand that foldMap is the correct sweet spot. |
2021-08-21 23:49:52 +0200 | sagax | (~sagax@213.138.71.146) |
2021-08-21 23:51:41 +0200 | <monochrom> | I'm an old-geezer now, it all seemed like just yesterday to me. :) |
2021-08-21 23:52:22 +0200 | <monochrom> | Anyone still remember CP/M? (OK I'll stop now haha.) |
2021-08-21 23:53:19 +0200 | <sm> | yes, never used it though |
2021-08-21 23:53:35 +0200 | derelict | (~derelict@user/derelict) (Quit: WeeChat 3.2) |
2021-08-21 23:53:49 +0200 | <c_wraith> | I remember people telling me how much better than DOS it was. |