2021-09-17 00:00:00 +0200 | <ldlework> | kuribas: it's in his pastebin |
2021-09-17 00:00:11 +0200 | <ldlework> | I think SomeData is a catch all for reporting errors |
2021-09-17 00:00:16 +0200 | <ldlework> | the successes are single integers |
2021-09-17 00:00:28 +0200 | <newbie> | SomeData is a catch for all reporting errors |
2021-09-17 00:00:29 +0200 | <ldlework> | the result should either be a Left SomeData a, or a Right [Integer] |
2021-09-17 00:00:46 +0200 | <newbie> | Test does a computation given the "string input" |
2021-09-17 00:00:50 +0200 | <ldlework> | so it feels like all you need is monoid |
2021-09-17 00:01:25 +0200 | <newbie> | And side effects is passed into the [Integer] : 0 = no side effect, 1 = side effect |
2021-09-17 00:01:34 +0200 | jokleinn | (~jokleinn@user/jokleinn) (Quit: WeeChat 3.2) |
2021-09-17 00:02:24 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-17 00:03:01 +0200 | <kuribas> | That sounds more like sequence... |
2021-09-17 00:03:14 +0200 | shailangsa | (~shailangs@host86-186-132-44.range86-186.btcentralplus.com) |
2021-09-17 00:04:03 +0200 | <kuribas> | :t sequence |
2021-09-17 00:04:04 +0200 | <lambdabot> | (Traversable t, Monad m) => t (m a) -> m (t a) |
2021-09-17 00:04:54 +0200 | favonia | (~favonia@user/favonia) |
2021-09-17 00:04:58 +0200 | <kuribas> | you run all the tests, and collect the errors. |
2021-09-17 00:05:27 +0200 | <kuribas> | newbie's description isn't very clear... |
2021-09-17 00:05:35 +0200 | <kuribas> | Why does he need monad here? |
2021-09-17 00:05:35 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-17 00:05:48 +0200 | <kuribas> | Does the result of one test depends on the other test? |
2021-09-17 00:05:55 +0200 | <monochrom> | This is a school assignment right? Could we see the verbatim school assignment, not your interpretation? |
2021-09-17 00:06:15 +0200 | <monochrom> | Because my data shows that students always misinterpret everything on the assignment handout. |
2021-09-17 00:06:30 +0200 | <monochrom> | Or at least those students who actually need help. |
2021-09-17 00:07:11 +0200 | <newbie> | It is my bad, I tried to obfuscate the types and assignment since one of my teachers is admin in here |
2021-09-17 00:07:40 +0200 | <newbie> | I'll try to come up with a better explanation, 1 sec |
2021-09-17 00:08:05 +0200 | <geekosaur> | heh |
2021-09-17 00:08:17 +0200 | <monochrom> | Oh, I don't think they will mind you asking, as long as the answerers, in turn, are careful about what help to provide. |
2021-09-17 00:08:23 +0200 | <monochrom> | err |
2021-09-17 00:08:31 +0200 | <monochrom> | nah, no typo. |
2021-09-17 00:11:35 +0200 | <ProofTechnique> | I barely did my own homework, I'm not about to start giving away answers for other people's 😄 |
2021-09-17 00:11:42 +0200 | <monochrom> | haha |
2021-09-17 00:11:47 +0200 | OscarH | (~OscarH@054449d6.skybroadband.com) (Ping timeout: 245 seconds) |
2021-09-17 00:11:59 +0200 | <hpc> | irc is the original proof of work protocol |
2021-09-17 00:13:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-09-17 00:13:53 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-09-17 00:14:38 +0200 | Erutuon | (~Erutuon@user/erutuon) (Quit: WeeChat 2.8) |
2021-09-17 00:16:16 +0200 | <newbie> | I created a formulation more 1:1 with my assignment |
2021-09-17 00:16:17 +0200 | <newbie> | https://pastebin.com/KPZQDeyN |
2021-09-17 00:17:03 +0200 | <newbie> | Oh lord, bad formatting. This one is better https://pastebin.com/JHKrCSHJ |
2021-09-17 00:17:09 +0200 | wroathe | (~wroathe@c-75-72-98-163.hsd1.mn.comcast.net) |
2021-09-17 00:17:09 +0200 | wroathe | (~wroathe@c-75-72-98-163.hsd1.mn.comcast.net) (Changing host) |
2021-09-17 00:17:09 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-17 00:18:02 +0200 | <newbie> | I have included my working solution using pattern matching - however I wish to avoid that somehow since it seems kinda un-Haskell'y |
2021-09-17 00:18:27 +0200 | <kuribas> | err, what is unhaskelly about it? |
2021-09-17 00:18:44 +0200 | <awpr> | :t first |
2021-09-17 00:18:45 +0200 | <Cajun> | i find guards to be more non-idiomatic than pattern matching |
2021-09-17 00:18:45 +0200 | <lambdabot> | Arrow a => a b c -> a (b, d) (c, d) |
2021-09-17 00:18:48 +0200 | <awpr> | :t fst |
2021-09-17 00:18:49 +0200 | <lambdabot> | (a, b) -> a |
2021-09-17 00:18:50 +0200 | <monochrom> | I bet it means "writing code by hand". |
2021-09-17 00:18:59 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-09-17 00:18:59 +0200 | seventhCrow | (crow@gateway/vpn/protonvpn/seventhcrow) (Remote host closed the connection) |
2021-09-17 00:19:25 +0200 | seventhCrow | (crow@gateway/vpn/protonvpn/seventhcrow) |
2021-09-17 00:19:33 +0200 | <newbie> | My teacher seems to want us to utilize Monads in every possible case |
2021-09-17 00:20:01 +0200 | <monochrom> | Well that's one of the possible misinterpretations I was talking about. |
2021-09-17 00:20:44 +0200 | <monochrom> | I completely never worried about how you changed type names away from the original assignment. I'm sure you didn't goof that part. |
2021-09-17 00:21:10 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 252 seconds) |
2021-09-17 00:21:10 +0200 | <monochrom> | But what your actual job is, every student who seek help always misinterpret that. |
2021-09-17 00:22:40 +0200 | <monochrom> | In particular since the tuple order is (Either SomeError a, [String]) rather than ([String], Either SomeError a), you will not be able to "utilize Monads" to the fullest extent. |
2021-09-17 00:22:55 +0200 | <monochrom> | s/you will not/no one will/ |
2021-09-17 00:23:39 +0200 | <awpr> | it almost looks like it's designed to force you to implement it directly instead of with easy DerivingVia trickery |
2021-09-17 00:24:17 +0200 | <awpr> | ...although maybe if a student knows to use DerivingVia and what via type would get the right result, they should be able to do that :) |
2021-09-17 00:24:55 +0200 | <monochrom> | Concretely, there are two points on why the not-working version is not working. |
2021-09-17 00:25:33 +0200 | <monochrom> | "f (first t)" is a type error after you find out correctly the type of t. It doesn't fit there. |
2021-09-17 00:25:52 +0200 | <newbie> | I see, thank you guys. It is still somewhat hard to comprehend Haskell within the first week of learning it, which is why I wanted to find out if I could do something smarter than what I did |
2021-09-17 00:26:17 +0200 | <kuribas> | newbie: I don't think you're supposed to do something smart. |
2021-09-17 00:26:23 +0200 | <ProofTechnique> | (I'm mostly just mystified by the lack of Functor and Applicative instances) |
2021-09-17 00:26:27 +0200 | <monochrom> | And if you look at the working version, you find that you don't unconditionally do "runTest (f whatever)". You do it only under one condition. |
2021-09-17 00:26:48 +0200 | <monochrom> | In the not-working version, you're doing it unconditionally. |
2021-09-17 00:27:08 +0200 | <awpr> | never hurts to learn by practicing though, even if the assignment is perfectly content with being implemented by direct pattern matching |
2021-09-17 00:27:45 +0200 | <newbie> | The conditional thing actually makes sense |
2021-09-17 00:27:50 +0200 | <kuribas> | awpr: it hurts if they try to do advanced stuff, when they don't grasp the simple stuff. |
2021-09-17 00:28:04 +0200 | <kuribas> | Doing pattern matching is fine. |
2021-09-17 00:28:17 +0200 | jokleinn | (~jokleinn@user/jokleinn) |
2021-09-17 00:28:28 +0200 | <awpr> | depends on what "hurts" means. "my brain hurts" maybe, but if they figure it out after a few hours of trying by choice / for fun, then that's learning |
2021-09-17 00:28:30 +0200 | <newbie> | awpr: Exactly: I already have a working solution for the assignment, so trying to explore other options and learn from that is very nice |
2021-09-17 00:29:43 +0200 | <ProofTechnique> | The only stylistic thing you _could_ do (and you definitely don't _need_ to) is to reorder the cases and replace your `(Left a, x) -> (Left a, x)` with something like `err -> err`, since you don't need to inspect or do anything with any of the components |
2021-09-17 00:30:01 +0200 | <newbie> | At least that is how I learn. Next time I experience a similar problem I will not spend hours wondering about it |
2021-09-17 00:30:30 +0200 | <newbie> | ProofTechnique: Oh ya ofc, thanks : ) |
2021-09-17 00:31:43 +0200 | <kuribas> | newbie: well, the short way would be to use the monad stack. |
2021-09-17 00:32:36 +0200 | <ProofTechnique> | Simply replace all this completely readable pattern matching with an inscrutable transformer stack! |
2021-09-17 00:33:00 +0200 | <ProofTechnique> | That'll show the TA what's what :D |
2021-09-17 00:33:59 +0200 | <kuribas> | ProofTechnique: he wanted to know what's after the manual implementation :-) |
2021-09-17 00:34:28 +0200 | <newbie> | I do not know what that is lol |
2021-09-17 00:35:05 +0200 | <kuribas> | newbie: composition of monads. |
2021-09-17 00:35:19 +0200 | <monochrom> | They just mean there is a way to refactor Env -> (Either SomeError a, [String]) into 3 pieces, and then it won't suck. |
2021-09-17 00:35:54 +0200 | <kuribas> | well, then I can be lazy, and let the compiler infer the instances. |
2021-09-17 00:36:03 +0200 | <newbie> | So a monad stack is utilizing MonadTransformers? |
2021-09-17 00:36:09 +0200 | <kuribas> | yes |
2021-09-17 00:36:49 +0200 | <kuribas> | you "stack" the monad transformers on top of each other, hence "monad stack". |
2021-09-17 00:36:59 +0200 | <monochrom> | My POV is that if you do that, there are 2 annoying newtype wrappers that get into the way, it will still be ugly. |
2021-09-17 00:37:10 +0200 | <kuribas> | monochrom: coerce? |
2021-09-17 00:37:26 +0200 | <newbie> | Ah nice, makes sense |
2021-09-17 00:37:34 +0200 | <monochrom> | Ugh do you teach coerce in a course? Any course? |
2021-09-17 00:37:36 +0200 | <ProofTechnique> | If you want the compiler to write code for you, just ask the nearest Simon to do it instead |
2021-09-17 00:37:44 +0200 | <newbie> | I think I have to work a little more with monads before utilizing Monad Transformers tho |
2021-09-17 00:37:52 +0200 | <kuribas> | monochrom: of course not |
2021-09-17 00:38:51 +0200 | <ProofTechnique> | Oh, that reminds me: Seeing as it's school season again, we should get a list of active courses and their problem sets so we can get ahead of the questions :) |
2021-09-17 00:39:42 +0200 | pfurla_ | pfurla |
2021-09-17 00:40:19 +0200 | <ProofTechnique> | Professors of IRC, post your syllabus so we can prepare maximally cryptic pointfree solutions to homework questions |
2021-09-17 00:40:31 +0200 | <newbie> | :D |
2021-09-17 00:40:34 +0200 | <monochrom> | haha |
2021-09-17 00:41:01 +0200 | <monochrom> | I don't think pointfree is all that hot any more. |
2021-09-17 00:41:02 +0200 | <awpr> | we can insert 0-width spaces to fingerprint our solutions |
2021-09-17 00:41:12 +0200 | <geekosaur> | ContT |
2021-09-17 00:41:15 +0200 | <monochrom> | The rage is with either linear types or type-level tricks. |
2021-09-17 00:41:19 +0200 | <hpc> | zygohistomorphic prepromorphisms? |
2021-09-17 00:41:50 +0200 | <ldlework> | i usually let hlint eta reduce my stuff |
2021-09-17 00:42:01 +0200 | <ldlework> | dunno if it's a good habit yet |
2021-09-17 00:42:32 +0200 | <dsal> | hlint has some good suggestions and some really weird ones. |
2021-09-17 00:42:36 +0200 | <monochrom> | There was once I inserted or delete spaces or puntuations to fingerprint my solutions. |
2021-09-17 00:42:41 +0200 | <dsal> | The trick is to find two people who can agree on either of those categories. |
2021-09-17 00:43:16 +0200 | <monochrom> | I had 6 TAs, 1 of them was leaking my solution to help students cheat, I wanted to find out who. |
2021-09-17 00:43:16 +0200 | <awpr> | "use operator sections" on alphanumeric names is a particularly weird one |
2021-09-17 00:43:20 +0200 | <ProofTechnique> | "It's very simple. Just start with `data family Homework a` ..." |
2021-09-17 00:44:14 +0200 | <monochrom> | So when I sent solutions to TAs for preparation, each TA received a different addition or deletion of spaces or puntuations. |
2021-09-17 00:44:16 +0200 | <ldlework> | awpr: do you ever do that yourself? |
2021-09-17 00:44:25 +0200 | <ldlework> | sometimes I have done (`foo` val) |
2021-09-17 00:44:25 +0200 | <dsal> | I do that some sometimes. |
2021-09-17 00:44:47 +0200 | <awpr> | if HLint bugs me about it I'll generally just do it, but stream of consciousness I tend to end up writing `flip foo val` |
2021-09-17 00:44:52 +0200 | <monochrom> | So when the cheating student submitted my solution obtained through a TA, I was able to identify the TA. |
2021-09-17 00:44:53 +0200 | <dsal> | hlint author hates flip |
2021-09-17 00:45:09 +0200 | <monochrom> | The students and the TA were successfully convicted. |
2021-09-17 00:45:10 +0200 | <ProofTechnique> | Those are some bush league cheaters, sheesh. Imagine copying and pasting like a rube :/ |
2021-09-17 00:45:45 +0200 | <awpr> | sounds like some old spy story where an agency intentionally leaked subtly different information to their agents to find out who was leaking |
2021-09-17 00:45:52 +0200 | <ldlework> | i think sectioning is cool, because flipping is like a "natural need" based on the nature of what we're doing |
2021-09-17 00:45:58 +0200 | <monochrom> | awpr, I think "map (`mod` 7) [a,b,c]" is fairly OK. |
2021-09-17 00:46:02 +0200 | <ldlework> | so it's nice to have a tiny sugar for it |
2021-09-17 00:46:17 +0200 | <ldlework> | yeah that |
2021-09-17 00:46:25 +0200 | kuribas | (~user@ptr-25vy0i9fqiblx2l1e59.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2021-09-17 00:46:27 +0200 | <awpr> | monochrom: yeah, it's perfectly fine IMO, just not sure I see the need to have a linter forbid the alternative for all prefix functions |
2021-09-17 00:46:49 +0200 | <monochrom> | all (`elem` ['a'..'z']) mystring |
2021-09-17 00:46:56 +0200 | <ldlework> | is hlint configurable in that sense? |
2021-09-17 00:46:57 +0200 | <monochrom> | at which point it read like English |
2021-09-17 00:46:59 +0200 | <ldlework> | like eslint |
2021-09-17 00:47:04 +0200 | <monochrom> | at which point it read like COBOL, too |
2021-09-17 00:47:09 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 00:47:19 +0200 | newbie | (~newbie@80-196-109-198-dynamic.dk.customer.tdc.net) (Remote host closed the connection) |
2021-09-17 00:47:20 +0200 | <ProofTechnique> | flip is a subtle poison. I use it, too, but it gets out of hand so fast if you let it :D |
2021-09-17 00:47:23 +0200 | <awpr> | yeah, those uses and plenty of others do look better than with flip, IMO |
2021-09-17 00:47:44 +0200 | <monochrom> | Oh yeah, hlint is opinion, not linter. False advertising. |
2021-09-17 00:48:19 +0200 | <monochrom> | "map (\x -> mod x 7)" is fine. Everyone does not have to code like a smart*ss. |
2021-09-17 00:48:40 +0200 | <ldlework> | i have an irrational aversion to haskell's lambdas |
2021-09-17 00:49:11 +0200 | <ProofTechnique> | 80% of my interaction with hlint is idly writing `fmap foo`, seeing it's not the shape I want, sticking `sequence .` on the front and being chided for forgetting that every single problem reduces to `traverse` |
2021-09-17 00:49:15 +0200 | <ldlework> | for some reason I wish you could either `x -> f x` or `(x, y) -> f x y` |
2021-09-17 00:49:41 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2021-09-17 00:49:49 +0200 | <awpr> | backslash is a lambda letter with a missing leg |
2021-09-17 00:50:00 +0200 | <monochrom> | You will want |->, which is what mathematicians do. |
2021-09-17 00:50:06 +0200 | <ldlework> | yeah but the parser isn't strong enough to not require parens everywhere |
2021-09-17 00:50:14 +0200 | <ldlework> | or grammar or whatever |
2021-09-17 00:50:20 +0200 | <ProofTechnique> | Turn on UnicodeSyntax and ensure that no one will ever work with you. Problem solved |
2021-09-17 00:50:25 +0200 | <ldlework> | haha |
2021-09-17 00:50:30 +0200 | <monochrom> | Why do you have an irrational aversion to parentheses? |
2021-09-17 00:50:42 +0200 | <awpr> | time for Lisp exposure therapy |
2021-09-17 00:50:42 +0200 | <ldlework> | monochrom: just those ones, with the \ it just gets noisy |
2021-09-17 00:50:49 +0200 | <ldlework> | i come from a lisp background! |
2021-09-17 00:50:49 +0200 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) |
2021-09-17 00:51:02 +0200 | <ldlework> | well, i mean, i have lots of lisp experience! |
2021-09-17 00:51:07 +0200 | <monochrom> | "map ((x,y) |-> f x y)" is fine. |
2021-09-17 00:51:19 +0200 | <ldlework> | afterall, it is an irrational aversion |
2021-09-17 00:51:21 +0200 | <monochrom> | "map (x,y) |-> f x y" is the confusing one. You need parentheses. |
2021-09-17 00:51:42 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-09-17 00:51:54 +0200 | <ProofTechnique> | Be a monster and turn on BlockArguments just for `map do \(x, y) -> f x y` |
2021-09-17 00:52:34 +0200 | <awpr> | from a parsing perspective, it might be helpful to have the lambda up front to avoid parsing as an expression and then backtracking. I don't remember if patterns have a separate grammar from expressions, though -- seems like they should with ViewPatterns, AsPatterns, etc. |
2021-09-17 00:52:40 +0200 | <dsal> | Agda manages to let you just use λ |
2021-09-17 00:53:02 +0200 | <ProofTechnique> | Sure, but it's spelled \Gl, which is a lot |
2021-09-17 00:53:08 +0200 | <ldlework> | be like python and just type `lambda` everywhere |
2021-09-17 00:53:18 +0200 | <monochrom> | patterns have to have a separate grammar from expressions. |
2021-09-17 00:53:24 +0200 | <dsal> | I use λ as a parameter in a thing that uses AWS lambda. |
2021-09-17 00:53:30 +0200 | <monochrom> | "f * g" is an expression, but not a pattern. |
2021-09-17 00:53:33 +0200 | <ldlework> | nerd |
2021-09-17 00:54:09 +0200 | <awpr> | I mean, it could parse as a pattern and get rejected by some sanity check, if you really wanted to unify them. but yeah, I agree they should be separate |
2021-09-17 00:55:24 +0200 | <monochrom> | But yeah language designers try to stay within LALR(k) or something for parser efficiency. |
2021-09-17 00:55:30 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-17 00:55:46 +0200 | <ProofTechnique> | The sanity check that rejects it is having a separate grammar :) |
2021-09-17 00:56:24 +0200 | <monochrom> | which is arguably silly for a language that goes on to do exponential-time type inference. |
2021-09-17 00:56:48 +0200 | <monochrom> | Cubic-time parsing is nothing compared to type inference. |
2021-09-17 00:57:33 +0200 | <awpr> | even worse is GHC.Generics generating pathological cases for type inference to deal with :) |
2021-09-17 00:57:42 +0200 | <awpr> | or rather DeriveGeneric |
2021-09-17 00:58:02 +0200 | <ProofTechnique> | I would hope the n is quite a bit smaller in the type inference case than in the parsing case, but then I remember deriving chicanery |
2021-09-17 01:02:37 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-17 01:04:46 +0200 | <ldlework> | anyone know how to use time in hylogen/hylide? |
2021-09-17 01:05:34 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2021-09-17 01:05:54 +0200 | <ldlework> | nm just got it working |
2021-09-17 01:07:21 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-17 01:07:21 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-17 01:07:21 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-17 01:07:30 +0200 | <ProofTechnique> | I have never seen that library before, but it looks very cool |
2021-09-17 01:10:32 +0200 | aegon | (~mike@174.127.249.180) |
2021-09-17 01:11:13 +0200 | <aegon> | is do notation left or right associative in desugaring? bind and >> are left but do is right or am i wrong about right and right is left o_o |
2021-09-17 01:12:06 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 260 seconds) |
2021-09-17 01:12:08 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2021-09-17 01:12:40 +0200 | <awpr> | seems effectively right-associative, in that the stuff after a do-statement is all contained inside the lambda that's given to the first >>= |
2021-09-17 01:13:32 +0200 | <ldlework> | Where `c` is a `Vec4 a a a a` I wonder how to translate `fract(c.xxxw + K.xyzw)` into hylogen |
2021-09-17 01:13:48 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-09-17 01:13:50 +0200 | <awpr> | the left associativity of >>= is a different matter -- it controls what happens when you write `x >>= f >>= g`, namely that it's the only associativity that typechecks that expression |
2021-09-17 01:13:56 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-17 01:13:56 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-17 01:13:56 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-17 01:14:15 +0200 | <ldlework> | aka swizzling |
2021-09-17 01:14:24 +0200 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2021-09-17 01:14:37 +0200 | <awpr> | meanwhile if you have unparenthesized lambdas, associativity doesn't come into play, it's just the parsing of the lambda eating the rest of the expression |
2021-09-17 01:15:06 +0200 | <aegon> | awpr: thats the source of a bunch of accidently quadradic perf problems if i'm understanding hte reading correct though |
2021-09-17 01:15:55 +0200 | <awpr> | having left-associated binds? yeah, it can be slower for some monads, but just moving the parens around doesn't type-check anymore |
2021-09-17 01:17:03 +0200 | <aegon> | ldlework: i'm just seeing hylogen but it looks like there are a bunch of swizzle funcs already defined here https://hackage.haskell.org/package/hylogen-0.1.5.1/docs/Hylogen-Types-Vec.html |
2021-09-17 01:17:10 +0200 | <ldlework> | i just found those! |
2021-09-17 01:17:13 +0200 | <ldlework> | thank you aegon |
2021-09-17 01:17:22 +0200 | <aegon> | np! |
2021-09-17 01:18:27 +0200 | <aegon> | awpr: thanks for the insight, gonna play around with paren places in ghci to see more what you mean |
2021-09-17 01:19:10 +0200 | <awpr> | `x >>= f >>= g` <-> `x >>= (f >=> g)` |
2021-09-17 01:19:43 +0200 | <aegon> | :t (>=>) |
2021-09-17 01:19:44 +0200 | <lambdabot> | Monad m => (a -> m b) -> (b -> m c) -> a -> m c |
2021-09-17 01:19:53 +0200 | <awpr> | <-> `x >>= \y -> f y >>= g` |
2021-09-17 01:20:49 +0200 | <awpr> | tbh I never actually thought about successive >>=s being a potential performance issue until now. will have to keep that in mind and remember to use the fish operator version |
2021-09-17 01:23:27 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-17 01:23:44 +0200 | xsperry | (~as@user/xsperry) (Remote host closed the connection) |
2021-09-17 01:24:08 +0200 | <aegon> | i haven't run into anyone suggesting (>=>) in the posts as a way to guard against it, thats kinda neat |
2021-09-17 01:27:47 +0200 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-09-17 01:30:41 +0200 | retroid_ | (~retro@176.255.22.194) |
2021-09-17 01:31:08 +0200 | <ProofTechnique> | How does that get rid of binds? |
2021-09-17 01:31:30 +0200 | <awpr> | it right-associates them so you don't repeatedly re-traverse the same structure you just built |
2021-09-17 01:31:37 +0200 | retro_ | (~retro@176.255.22.194) (Ping timeout: 252 seconds) |
2021-09-17 01:32:16 +0200 | <awpr> | I think the docs of `Codensity` in `kan-extensions` describe the issue pretty well |
2021-09-17 01:32:42 +0200 | <ProofTechnique> | I've only ever seen this bind performance thing come up in the context of free monads, but I'll go read kan-extensions for the details :) |
2021-09-17 01:33:53 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-17 01:34:20 +0200 | <ProofTechnique> | Oh, lol, the linked paper is exactly "Asymptotic Improvement of Computations over Free Monads" :D |
2021-09-17 01:36:36 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Client Quit) |
2021-09-17 01:38:21 +0200 | <ProofTechnique> | Oh, gosh, GHC 6.6. I think 6.8.3 was the first GHC I used. The years do fly by |
2021-09-17 01:38:23 +0200 | <monochrom> | Yeah it's mainly for free monads that are coded up as an ADT. |
2021-09-17 01:38:47 +0200 | <ldlework> | Looks like Hylogen is abandoned and it only has minimal support. Dang! |
2021-09-17 01:38:50 +0200 | chris | (~chris@81.96.113.213) |
2021-09-17 01:38:54 +0200 | chris | Guest640 |
2021-09-17 01:39:00 +0200 | <monochrom> | But even then I am skeptical about how often it hurts. It is not like you have left recursion all that often. |
2021-09-17 01:39:42 +0200 | <ldlework> | my dreams of fast game-of-life in haskell are dying ^_^ |
2021-09-17 01:40:01 +0200 | <ProofTechnique> | Revive it! |
2021-09-17 01:40:28 +0200 | <ProofTechnique> | I'm very much looking forward to delimited continuations to happen so I can try out eff without Herculean effort |
2021-09-17 01:41:05 +0200 | tdidrfyls^ | (~tdidrfyls@68.101.54.227) |
2021-09-17 01:41:10 +0200 | <ProofTechnique> | Polysemy is still very nice, but eff has that sports car sheen |
2021-09-17 01:42:34 +0200 | MQ-17J | (~MQ-17J@8.21.10.6) (Ping timeout: 252 seconds) |
2021-09-17 01:45:22 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer) |
2021-09-17 01:45:44 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-17 01:46:39 +0200 | <ldlework> | https://github.com/jaredloomis/andromeda |
2021-09-17 01:46:43 +0200 | <ldlework> | this library isn't on hackage |
2021-09-17 01:46:46 +0200 | <ldlework> | how do i install it? |
2021-09-17 01:48:10 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
2021-09-17 01:49:55 +0200 | System123 | (~System123@net-37-179-171-3.cust.vodafonedsl.it) |
2021-09-17 01:50:04 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-09-17 01:50:04 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-09-17 01:50:07 +0200 | allbery_b | geekosaur |
2021-09-17 01:50:29 +0200 | <aegon> | ldlework: with stack you specify the git repo as an external source in your stack.yaml then add the dependency to your package.yaml, with cabal you... |
2021-09-17 01:51:05 +0200 | <geekosaur> | you can also download it and use "cabal install" without naming a package, usually |
2021-09-17 01:51:13 +0200 | <ProofTechnique> | https://cabal.readthedocs.io/en/3.4/cabal-project.html#specifying-packages-from-remote-version-con… |
2021-09-17 01:51:16 +0200 | <ldlework> | i'm using NixOS and the only good info I can find is using cabal |
2021-09-17 01:51:24 +0200 | <geekosaur> | from the directory with the cabal file (or cabal.project file) |
2021-09-17 01:52:03 +0200 | <ProofTechnique> | Idlework: Are you looking to install it in your global package set, or in a project shell? Are you using haskell.nix? |
2021-09-17 01:52:33 +0200 | <aegon> | ldlework: https://cabal.readthedocs.io/en/latest/cabal-project.html#specifying-packages-from-remote-version-… |
2021-09-17 01:52:37 +0200 | <ProofTechnique> | Essentially you just want to write an overlay (or maybe the fancy thing is flakes now) to override `haskellPackages` and add it to the set |
2021-09-17 01:53:01 +0200 | <ProofTechnique> | How to do that nicely depends a little bit on your setup |
2021-09-17 01:55:25 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.242) (Ping timeout: 265 seconds) |
2021-09-17 01:56:52 +0200 | System123 | (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 265 seconds) |
2021-09-17 01:57:10 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-09-17 01:59:04 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-09-17 01:59:40 +0200 | <ldlework> | ProofTechnique: here is the repo I'm working with https://github.com/dustinlacewell/andromeda-hs |
2021-09-17 02:00:03 +0200 | <ldlework> | It's got the andromeda example code in Main.hs, .cabal depending on andromeda, shell.nix, etc |
2021-09-17 02:00:49 +0200 | <ldlework> | after doing `nix-shell` you do `runhaskell Setup.hs configure` |
2021-09-17 02:01:03 +0200 | <ldlework> | which would install cabal deps, then `runhaskell Setup.hs build` to build |
2021-09-17 02:01:28 +0200 | <ProofTechnique> | I expect you'll run into some issues with your package and this other package having the same name |
2021-09-17 02:02:00 +0200 | aegon | (~mike@174.127.249.180) (Quit: leaving) |
2021-09-17 02:03:29 +0200 | <ProofTechnique> | I think changing your `pkgs` in you shell.nix to something like https://pastebin.com/RkJ55SDe (filling in the rev and sha according to whatever `nix-prefetch-git` says) should work |
2021-09-17 02:04:30 +0200 | <ProofTechnique> | Oh, and you may need to be more specific than `haskellPackages` if you're targeting 8.10.7, specifically |
2021-09-17 02:04:30 +0200 | <ldlework> | ProofTechnique: OK I changed the name to androcells and pushed |
2021-09-17 02:04:44 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-09-17 02:04:44 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-09-17 02:04:47 +0200 | allbery_b | geekosaur |
2021-09-17 02:05:03 +0200 | <ProofTechnique> | And then you'll just be able to refer to `pkgs.haskell.packages.ghc8107.andromeda` and all should be hunky-dory |
2021-09-17 02:06:16 +0200 | <ldlework> | ProofTechnique: should I be extending `pkgs.haskell.packages.ghc8107` ? |
2021-09-17 02:06:22 +0200 | <ProofTechnique> | https://pastebin.com/cFNLE6Rh |
2021-09-17 02:06:36 +0200 | tdidrfyls^ | (~tdidrfyls@68.101.54.227) (Remote host closed the connection) |
2021-09-17 02:06:46 +0200 | <ldlework> | i see |
2021-09-17 02:06:55 +0200 | <ProofTechnique> | Yeah, if you do it like this, you can then use `pkgs.haskellPackages` and be guaranteed that all of your packages come from the extended set |
2021-09-17 02:08:25 +0200 | <ProofTechnique> | Looks like `rev` should be `502dfa6703eca9717c7cde0c93959fa0a83e77ed` and `sha256` should be `0ymbfpxlh938zryvw2nab0jls9nmf8jjcnyxbbdl47vaq543chir` |
2021-09-17 02:10:04 +0200 | <ldlework> | ProofTechnique: where am I going wrong here |
2021-09-17 02:10:06 +0200 | <ldlework> | https://gist.github.com/dustinlacewell/8fb9f4c7dca9426fc635d6920152a54e |
2021-09-17 02:10:15 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 02:10:35 +0200 | thyriaen | (~thyriaen@dynamic-078-055-122-076.78.55.pool.telefonica.de) (Quit: Leaving) |
2021-09-17 02:10:43 +0200 | <ProofTechnique> | https://pastebin.com/U2aP1z1B Edited config with all the stuff |
2021-09-17 02:10:47 +0200 | <ProofTechnique> | Uh, not sure |
2021-09-17 02:11:11 +0200 | <ldlework> | yours worked |
2021-09-17 02:11:52 +0200 | <ProofTechnique> | Really? I'm honestly a little stunned :D |
2021-09-17 02:13:29 +0200 | <ldlework> | ProofTechnique: http://logos.ldlework.com/caps/2021-09-17-00-13-26.png |
2021-09-17 02:13:30 +0200 | sneedsfeed | (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Quit: Client closed) |
2021-09-17 02:13:34 +0200 | <ldlework> | \o/ |
2021-09-17 02:14:48 +0200 | <ProofTechnique> | Nice! |
2021-09-17 02:17:07 +0200 | <ldlework> | I also just found http://lambdacube3d.com/ |
2021-09-17 02:25:41 +0200 | arkho | (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Remote host closed the connection) |
2021-09-17 02:27:26 +0200 | favonia | (~favonia@user/favonia) |
2021-09-17 02:32:55 +0200 | proofofkeags_ | (~proofofke@205.209.28.54) (Ping timeout: 268 seconds) |
2021-09-17 02:34:14 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 260 seconds) |
2021-09-17 02:39:16 +0200 | xff0x | (~xff0x@2001:1a81:526d:1c00:6ed0:c2d3:55f8:e793) (Ping timeout: 252 seconds) |
2021-09-17 02:39:42 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 02:40:03 +0200 | xff0x | (~xff0x@2001:1a81:526d:1c00:e52d:fb7a:8e70:ce09) |
2021-09-17 02:44:51 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-09-17 02:47:20 +0200 | favonia | (~favonia@user/favonia) |
2021-09-17 02:56:23 +0200 | <Cajun> | Idlework: are you using that shader library to implement game of life? |
2021-09-17 02:56:23 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
2021-09-17 03:00:05 +0200 | alx741 | (~alx741@181.196.68.9) (Quit: alx741) |
2021-09-17 03:03:45 +0200 | <Cajun> | because its not entirely necessary for GoL if thats the case. heres some example code i found that runs pretty well on my system given its insane size. i cant tell what the framerate is, but its not 60. probably more around 30. https://prnt.sc/1shzok2 |
2021-09-17 03:09:02 +0200 | dragestil | (~quassel@user/dragestil) (Ping timeout: 252 seconds) |
2021-09-17 03:09:02 +0200 | dragestil_ | dragestil |
2021-09-17 03:10:01 +0200 | dragestil_ | (~quassel@user/dragestil) |
2021-09-17 03:10:08 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
2021-09-17 03:10:24 +0200 | <ldlework> | Cajun: my problem is that with Gloss it is slow |
2021-09-17 03:10:31 +0200 | <Cajun> | try GLUT |
2021-09-17 03:11:45 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2.1) |
2021-09-17 03:12:58 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 260 seconds) |
2021-09-17 03:13:06 +0200 | <hololeap> | I have newtype N = N { getN :: TVar T } and I have the function `fmap N . traverse (fmap f . readTVar) . getN` |
2021-09-17 03:13:34 +0200 | <hololeap> | I would like to use optics to reduce the clutter and hopefully remove the `fmap N` and `getN` from that function. how can I do this? |
2021-09-17 03:13:50 +0200 | xff0x | (~xff0x@2001:1a81:526d:1c00:e52d:fb7a:8e70:ce09) (Ping timeout: 268 seconds) |
2021-09-17 03:14:43 +0200 | MQ-17J | (~MQ-17J@8.21.10.6) |
2021-09-17 03:15:14 +0200 | xff0x | (~xff0x@2001:1a81:52ad:c900:2fb9:e85d:6382:ddb8) |
2021-09-17 03:17:21 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-17 03:18:18 +0200 | <c_wraith> | that... type-checks? |
2021-09-17 03:18:43 +0200 | <c_wraith> | I guess it type-checks if f returns TVar T |
2021-09-17 03:19:07 +0200 | <hololeap> | oh, yeah I suppose it doesn't... bad attempt at a simplification |
2021-09-17 03:20:09 +0200 | <hololeap> | newtype Children f a = Children { getChildren :: HashMap ChildName (f a) } |
2021-09-17 03:20:31 +0200 | <hololeap> | fromTVarChildren :: Children TVar a -> STM (Children Identity a) |
2021-09-17 03:20:39 +0200 | <hololeap> | fromTVarChildren = fmap Children . traverse (fmap Identity . readTVar) . getChildren |
2021-09-17 03:20:45 +0200 | <c_wraith> | if you want to mutate TVars in place at locations described by optics, traverseOf_ would apply |
2021-09-17 03:21:34 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-09-17 03:22:14 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 03:22:57 +0200 | <awpr> | looks like `traverse10 readTVar` to me: https://hackage.haskell.org/package/ten-0.1.0.1/docs/Data-Ten-Traversable.html#v:traverse10 |
2021-09-17 03:23:29 +0200 | <awpr> | or `traverse10 (fmap Identity . readTVar)` I guess |
2021-09-17 03:24:23 +0200 | <awpr> | the Generics stuff should be able to derive the instances for that type |
2021-09-17 03:25:54 +0200 | <hololeap> | hm, ok |
2021-09-17 03:25:59 +0200 | dsrt^ | (~dsrt@68.101.54.227) |
2021-09-17 03:27:55 +0200 | juhp_ | (~juhp@bb220-255-204-220.singnet.com.sg) |
2021-09-17 03:28:16 +0200 | <awpr> | granted the right application of 'coerce' would probably do the trick too in this case since it's just a newtype constructor |
2021-09-17 03:28:28 +0200 | neurocyte0 | (~neurocyte@user/neurocyte) |
2021-09-17 03:29:40 +0200 | juhp__ | (~juhp@bb220-255-204-220.singnet.com.sg) |
2021-09-17 03:29:41 +0200 | juhp | (~juhp@bb220-255-204-220.singnet.com.sg) (Read error: Connection reset by peer) |
2021-09-17 03:30:08 +0200 | <awpr> | oh, it doesn't have the right kind for `ten`, my bad. `newtype Children a f` would, but I don't know if that's reasonable for your situation |
2021-09-17 03:30:16 +0200 | <hololeap> | I just wanted to somehow shove the `traverse (fmap Identity . readTVar)` underneath the Children wrapper without the explicit unwrap and "fmapped wrap" |
2021-09-17 03:30:22 +0200 | juhp__ | juhp |
2021-09-17 03:30:32 +0200 | loonycyborg | (~loonycybo@wesnoth/developer/loonycyborg) (Ping timeout: 250 seconds) |
2021-09-17 03:31:01 +0200 | <awpr> | `coerce` can probably do that |
2021-09-17 03:31:06 +0200 | neurocyte | (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds) |
2021-09-17 03:31:06 +0200 | neurocyte0 | neurocyte |
2021-09-17 03:31:38 +0200 | <Axman6> | coerce readTVar should work |
2021-09-17 03:31:45 +0200 | <Axman6> | maybe with some type annotations |
2021-09-17 03:31:56 +0200 | wrengr | wrengr_away |
2021-09-17 03:31:58 +0200 | Guest640 | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-09-17 03:32:02 +0200 | <awpr> | that's for the old oversimplified version of the type |
2021-09-17 03:32:54 +0200 | <hololeap> | no way to do this with optics? my intention was to reduce verbosity, and adding a bunch of type annotations seems like it might increase it |
2021-09-17 03:33:06 +0200 | <hololeap> | mapped :: Functor f => Setter (f a) (f b) a b |
2021-09-17 03:33:25 +0200 | loonycyborg | (~loonycybo@wesnoth/developer/loonycyborg) |
2021-09-17 03:33:25 +0200 | <awpr> | `_Wrapped` maybe |
2021-09-17 03:33:46 +0200 | <awpr> | might have to TH some instances into existence to make that work, though |
2021-09-17 03:33:48 +0200 | <Axman6> | does coerce (traverse (fmap Identity . readTVar)) work? |
2021-09-17 03:33:58 +0200 | <hololeap> | let me try |
2021-09-17 03:33:58 +0200 | juhp_ | (~juhp@bb220-255-204-220.singnet.com.sg) (Ping timeout: 268 seconds) |
2021-09-17 03:34:28 +0200 | sneedsfeed | (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) |
2021-09-17 03:34:32 +0200 | <Axman6> | might need some .... annotations for the type params. hmm, can't remember what those were called |
2021-09-17 03:34:49 +0200 | <awpr> | TypeApplications, or just a signature |
2021-09-17 03:34:56 +0200 | <Axman6> | type roles |
2021-09-17 03:35:31 +0200 | funsafe | (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) (Read error: Connection reset by peer) |
2021-09-17 03:35:37 +0200 | <awpr> | those should be inferred correctly in this case, and they have no power over coercions in the same module that defines the newtype |
2021-09-17 03:35:38 +0200 | <Axman6> | https://downloads.haskell.org/ghc/9.2.1-alpha1/docs/html/users_guide/exts/roles.html |
2021-09-17 03:35:52 +0200 | <Axman6> | hmm, ok |
2021-09-17 03:36:36 +0200 | <Axman6> | % :t coerce (traverse (fmap Identity . readTVar)) |
2021-09-17 03:36:36 +0200 | <yahb> | Axman6: (Traversable t, Coercible b (t (TVar a) -> STM (t (Identity a)))) => b |
2021-09-17 03:36:40 +0200 | <hololeap> | Axman6: http://sprunge.us/Ny5tua |
2021-09-17 03:36:55 +0200 | juhp | (~juhp@bb220-255-204-220.singnet.com.sg) (Ping timeout: 265 seconds) |
2021-09-17 03:37:02 +0200 | funsafe | (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) |
2021-09-17 03:37:13 +0200 | <Axman6> | % :t \x -> coerce (traverse (fmap Identity . readTVar)) x |
2021-09-17 03:37:13 +0200 | <yahb> | Axman6: (Traversable t1, Coercible t2 (t1 (TVar a)), Coercible t3 (STM (t1 (Identity a)))) => t2 -> t3 |
2021-09-17 03:37:28 +0200 | <awpr> | yeah, coerce tends to result in a lot of confusion about what types you want on either side |
2021-09-17 03:38:20 +0200 | <awpr> | you can probably also `makeLenses ''Children` and get an Iso to use like `_getChildren (traverse ...)` |
2021-09-17 03:38:51 +0200 | <Axman6> | yeah, and that implementation should just be coerce anyway |
2021-09-17 03:39:00 +0200 | <Axman6> | that's probably the way to go |
2021-09-17 03:39:07 +0200 | MQ-17J | (~MQ-17J@8.21.10.6) (Ping timeout: 268 seconds) |
2021-09-17 03:39:31 +0200 | <hololeap> | I'm using Optics.Label and OverloadedLabels |
2021-09-17 03:39:51 +0200 | <Axman6> | you'd have something like _Children . traversed . mapped (coerce readTVar) |
2021-09-17 03:40:02 +0200 | Cajun | (~Cajun@user/cajun) (Quit: Client closed) |
2021-09-17 03:40:55 +0200 | <Axman6> | % :t _Wrapped . traversed . mapped (coerce readTVar :: TVar a -> STM (Identity a)) |
2021-09-17 03:40:55 +0200 | <yahb> | Axman6: ; <interactive>:1:24: error:; * Couldn't match type `STM' with `p0 a0'; Expected: f (TVar a) -> p0 a0 (f (Identity a)); Actual: f (TVar a) -> STM (f (Identity a)); * In the second argument of `(.)', namely `mapped (coerce readTVar :: TVar a -> STM (Identity a))'; In the second argument of `(.)', namely `traversed . mapped (coerce readTVar :: TVar a -> STM (Identity a))'; |
2021-09-17 03:40:56 +0200 | Cajun | (~Cajun@user/cajun) |
2021-09-17 03:41:30 +0200 | <Axman6> | % :t _Wrapped . traversed . mapped (fmap Identity readTVar) |
2021-09-17 03:41:30 +0200 | <yahb> | Axman6: ; <interactive>:1:32: error:; * Couldn't match type `Identity' with `p0 a0'; Expected: TVar a -> p0 a0 (STM a); Actual: TVar a -> Identity (STM a); * In the first argument of `mapped', namely `(fmap Identity readTVar)'; In the second argument of `(.)', namely `mapped (fmap Identity readTVar)'; In the second argument of `(.)', namely `traversed . mapped (fmap Identity rea |
2021-09-17 03:42:09 +0200 | <Axman6> | ok, I don't know hwat I'm doing |
2021-09-17 03:42:55 +0200 | <hololeap> | you and me both :p |
2021-09-17 03:43:06 +0200 | <hololeap> | anything past simple getters and setters is over my head |
2021-09-17 03:43:23 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-17 03:44:34 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-09-17 03:46:10 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2021-09-17 03:47:45 +0200 | dragestil_ | (~quassel@user/dragestil) (Ping timeout: 268 seconds) |
2021-09-17 03:47:48 +0200 | chris | (~chris@81.96.113.213) |
2021-09-17 03:47:51 +0200 | chris | Guest1782 |
2021-09-17 03:50:42 +0200 | OscarH | (~OscarH@90.201.86.195) |
2021-09-17 03:52:41 +0200 | Guest1782 | (~chris@81.96.113.213) (Ping timeout: 268 seconds) |
2021-09-17 03:52:50 +0200 | juhp | (~juhp@111.65.68.133) |
2021-09-17 03:52:52 +0200 | pbrisbin | (~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Ping timeout: 265 seconds) |
2021-09-17 03:55:27 +0200 | <Boarders> | Does anyone know an open source repo that makes heavy use of intmap and has extensive benchmarks? |
2021-09-17 03:56:28 +0200 | System123 | (~System123@net-37-179-171-3.cust.vodafonedsl.it) |
2021-09-17 03:58:22 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-17 03:59:53 +0200 | dragestil_ | (~quassel@user/dragestil) |
2021-09-17 04:01:19 +0200 | System123 | (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 268 seconds) |
2021-09-17 04:02:41 +0200 | hololeap | (~hololeap@user/hololeap) (Remote host closed the connection) |
2021-09-17 04:03:42 +0200 | hololeap | (~hololeap@user/hololeap) |
2021-09-17 04:05:14 +0200 | <hololeap> | Boarders: https://github.com/haskell/containers/blob/master/containers-tests/benchmarks/IntMap.hs |
2021-09-17 04:05:15 +0200 | <hololeap> | ? |
2021-09-17 04:06:55 +0200 | <Axman6> | GHC? :) |
2021-09-17 04:07:12 +0200 | <Axman6> | there was a great talk at this year's HIW about GHC's IntMap usage actually! |
2021-09-17 04:08:06 +0200 | jokleinn | (~jokleinn@user/jokleinn) (Ping timeout: 268 seconds) |
2021-09-17 04:08:25 +0200 | <hololeap> | this has all the containers benchmarks: https://github.com/haskell/containers/blob/master/containers-tests/containers-tests.cabal |
2021-09-17 04:09:06 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-09-17 04:18:13 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
2021-09-17 04:20:38 +0200 | td_ | (~td@muedsl-82-207-238-006.citykom.de) (Ping timeout: 260 seconds) |
2021-09-17 04:22:25 +0200 | td_ | (~td@94.134.91.4) |
2021-09-17 04:26:51 +0200 | <awpr> | I don't know whether to be appreciative of QuickCheck or annoyed at it, for informing me I fail to round-trip "\SO\&H" to "\SOH" |
2021-09-17 04:27:07 +0200 | <awpr> | text escaping is... fun |
2021-09-17 04:31:22 +0200 | <awpr> | ooh, juicy tidbit, `instance Show String` uses `ShowS` as something more than just a `DList`, it actually peeks at what comes after it |
2021-09-17 04:31:48 +0200 | <awpr> | > showsPrec "\SO" "H" |
2021-09-17 04:31:49 +0200 | <lambdabot> | error: |
2021-09-17 04:31:49 +0200 | <lambdabot> | • Couldn't match expected type ‘Int’ with actual type ‘[Char]’ |
2021-09-17 04:31:49 +0200 | <lambdabot> | • In the first argument of ‘showsPrec’, namely ‘"\SO"’ |
2021-09-17 04:31:53 +0200 | <awpr> | > show "\SO" "H" |
2021-09-17 04:31:54 +0200 | seventhCrow | (crow@gateway/vpn/protonvpn/seventhcrow) (Remote host closed the connection) |
2021-09-17 04:31:54 +0200 | <lambdabot> | error: |
2021-09-17 04:31:54 +0200 | <lambdabot> | • Couldn't match expected type ‘[Char] -> t’ |
2021-09-17 04:31:54 +0200 | <lambdabot> | with actual type ‘[Char]’ |
2021-09-17 04:32:45 +0200 | seventhCrow | (crow@gateway/vpn/protonvpn/seventhcrow) |
2021-09-17 04:33:22 +0200 | <awpr> | > (GHC.Show.showLitString "\SO" "H", GHC.Show.showLitString "\SO" "S") |
2021-09-17 04:33:24 +0200 | <lambdabot> | error: |
2021-09-17 04:33:24 +0200 | <lambdabot> | Not in scope: ‘GHC.Show.showLitString’ |
2021-09-17 04:33:24 +0200 | <lambdabot> | No module named ‘GHC.Show’ is imported.error: |
2021-09-17 04:33:46 +0200 | <awpr> | huh. oh well |
2021-09-17 04:38:48 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving) |
2021-09-17 04:39:37 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-17 04:39:45 +0200 | pooryorick | (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 265 seconds) |
2021-09-17 04:40:52 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 04:41:11 +0200 | pooryorick | (~pooryoric@87-119-174-173.tll.elisa.ee) |
2021-09-17 04:41:24 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 268 seconds) |
2021-09-17 04:42:10 +0200 | dragestil_ | (~quassel@user/dragestil) (Ping timeout: 265 seconds) |
2021-09-17 04:43:15 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
2021-09-17 04:43:30 +0200 | dragestil_ | (~quassel@user/dragestil) |
2021-09-17 04:44:04 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-09-17 04:44:40 +0200 | xff0x | (~xff0x@2001:1a81:52ad:c900:2fb9:e85d:6382:ddb8) (Ping timeout: 252 seconds) |
2021-09-17 04:45:24 +0200 | xff0x | (~xff0x@2001:1a81:52ad:c900:aed8:d538:dc44:ee0) |
2021-09-17 04:47:12 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 04:47:44 +0200 | hololeap | (~hololeap@user/hololeap) (Quit: Bye) |
2021-09-17 04:57:30 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds) |
2021-09-17 04:59:23 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2021-09-17 05:04:25 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-09-17 05:04:46 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 05:11:58 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
2021-09-17 05:15:02 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-17 05:19:20 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 05:22:00 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
2021-09-17 05:22:05 +0200 | hendursa1 | (~weechat@user/hendursaga) |
2021-09-17 05:23:49 +0200 | xsperry | (~as@user/xsperry) |
2021-09-17 05:26:25 +0200 | waleee | (~waleee@h-98-128-228-119.na.cust.bahnhof.se) (Ping timeout: 252 seconds) |
2021-09-17 05:39:33 +0200 | zebrag | (~chris@user/zebrag) (Remote host closed the connection) |
2021-09-17 05:46:34 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-17 05:51:10 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
2021-09-17 06:01:55 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
2021-09-17 06:07:07 +0200 | juhp | (~juhp@111.65.68.133) (Read error: Connection reset by peer) |
2021-09-17 06:07:38 +0200 | brettgilio | (~brettgili@x-node.gq) (Quit: Ping timeout (120 seconds)) |
2021-09-17 06:08:10 +0200 | brettgilio | (~brettgili@x-node.gq) |
2021-09-17 06:11:33 +0200 | falafel | (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) |
2021-09-17 06:17:21 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 06:21:18 +0200 | falafel | (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 268 seconds) |
2021-09-17 06:27:21 +0200 | falafel | (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) |
2021-09-17 06:34:44 +0200 | seventhCrow | (crow@gateway/vpn/protonvpn/seventhcrow) (Quit: WeeChat 3.2.1) |
2021-09-17 06:36:48 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@2.95.253.167) |
2021-09-17 06:37:04 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@2.95.253.167) (Read error: Connection reset by peer) |
2021-09-17 06:38:28 +0200 | vonfry | (~user@116.236.75.238) |
2021-09-17 06:41:05 +0200 | <Axman6> | @pl (\s -> (,s) <$> ux) |
2021-09-17 06:41:05 +0200 | <lambdabot> | (line 1, column 10): |
2021-09-17 06:41:05 +0200 | <lambdabot> | unexpected ',' |
2021-09-17 06:41:05 +0200 | <lambdabot> | expecting expression |
2021-09-17 06:41:16 +0200 | <Axman6> | @pl (\s -> (\x -> (x,s)) <$> ux) |
2021-09-17 06:41:16 +0200 | <lambdabot> | (<$> ux) . flip (,) |
2021-09-17 06:41:22 +0200 | <Axman6> | gross |
2021-09-17 06:41:38 +0200 | <Axman6> | @pl (\s -> fmap (\x -> (x,s)) ux) |
2021-09-17 06:41:38 +0200 | <lambdabot> | flip fmap ux . flip (,) |
2021-09-17 06:41:43 +0200 | <Axman6> | Also gross |
2021-09-17 06:45:40 +0200 | falafel | (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 240 seconds) |
2021-09-17 06:51:54 +0200 | neo1 | (~neo3@cpe-292712.ip.primehome.com) |
2021-09-17 06:52:18 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
2021-09-17 06:57:26 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.251) |
2021-09-17 07:08:43 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.251) (Ping timeout: 252 seconds) |
2021-09-17 07:11:39 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 07:15:59 +0200 | Cajun | (~Cajun@user/cajun) (Ping timeout: 256 seconds) |
2021-09-17 07:17:15 +0200 | falafel | (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) |
2021-09-17 07:19:30 +0200 | martin02 | (~silas@141.84.69.76) (Ping timeout: 260 seconds) |
2021-09-17 07:21:10 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds) |
2021-09-17 07:21:31 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 268 seconds) |
2021-09-17 07:22:08 +0200 | falafel | (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 268 seconds) |
2021-09-17 07:25:34 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-09-17 07:27:57 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-09-17 07:28:26 +0200 | vysn | (~vysn@user/vysn) |
2021-09-17 07:37:06 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 260 seconds) |
2021-09-17 07:38:15 +0200 | <vaibhavsagar[m]> | Does anyone know why `fail "<errormsg>" o` is valid in GHC pre-8.8? https://nbviewer.jupyter.org/github/vaibhavsagar/notebooks/blob/a7d0a787c9757778505d8458b4e2318fc6… |
2021-09-17 07:38:41 +0200 | vysn | (~vysn@user/vysn) |
2021-09-17 07:38:49 +0200 | <vaibhavsagar[m]> | my colleague thinks it's because `fail` was part of `Monad` then, which means there was a `fail` instance for `((->) r)` |
2021-09-17 07:38:50 +0200 | <awpr> | probably `(->) a` Monad instance? |
2021-09-17 07:39:00 +0200 | <awpr> | yeah, that |
2021-09-17 07:39:05 +0200 | <vaibhavsagar[m]> | it's fixed in 8.8 onwards: https://nbviewer.jupyter.org/github/vaibhavsagar/notebooks/blob/ee7e1756137e6c7f0a5744b0144203b348… |
2021-09-17 07:39:27 +0200 | <vaibhavsagar[m]> | okay, I lost a day or two to it at work since we're on an old GHC |
2021-09-17 07:39:55 +0200 | <vaibhavsagar[m]> | but I've been nudging us to upgrade so more evidence that we should is good I guess |
2021-09-17 07:41:31 +0200 | <vaibhavsagar[m]> | also I'm really proud of that notebook, I used a different version of Aeson than the one that was used to build IHaskell and it still worked because I made some changes to how IHaskell is packaged with Nix just a week ago |
2021-09-17 07:42:52 +0200 | michalz | (~michalz@185.246.204.37) |
2021-09-17 07:43:38 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-09-17 07:45:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-17 07:46:54 +0200 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 260 seconds) |
2021-09-17 07:50:01 +0200 | theang | (~theang@fef109.internetdsl.tpnet.pl) (Ping timeout: 252 seconds) |
2021-09-17 07:50:16 +0200 | theang | (~theang@2a00:f41:5866:e08:671b:b01e:3ccd:22d3) |
2021-09-17 07:52:50 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 07:55:40 +0200 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 240 seconds) |
2021-09-17 08:01:21 +0200 | chele | (~chele@user/chele) |
2021-09-17 08:02:33 +0200 | Akronymus | (~Akronymus@85.118.189.59) |
2021-09-17 08:02:39 +0200 | Akronymus | (~Akronymus@85.118.189.59) () |
2021-09-17 08:05:39 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 265 seconds) |
2021-09-17 08:06:06 +0200 | tomjaguarpaw | (~tom@li367-225.members.linode.com) (Quit: Lost terminal) |
2021-09-17 08:09:01 +0200 | Gurkenglas | (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de) |
2021-09-17 08:12:54 +0200 | son0p | (~ff@181.136.122.143) (Ping timeout: 265 seconds) |
2021-09-17 08:13:22 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-17 08:15:19 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
2021-09-17 08:19:16 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-09-17 08:19:29 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2021-09-17 08:20:13 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-09-17 08:22:37 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-09-17 08:23:39 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-17 08:28:22 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 265 seconds) |
2021-09-17 08:28:33 +0200 | martin02 | (~silas@141.84.69.76) |
2021-09-17 08:29:41 +0200 | Kaiepi | (~Kaiepi@156.34.44.192) (Ping timeout: 252 seconds) |
2021-09-17 08:30:54 +0200 | ubert | (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) |
2021-09-17 08:31:28 +0200 | ubert1 | (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) |
2021-09-17 08:33:36 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-09-17 08:33:40 +0200 | renzhi | (~xp@2607:fa49:6500:b100::5845) (Ping timeout: 240 seconds) |
2021-09-17 08:34:27 +0200 | vonfry | (~user@116.236.75.238) (Quit: ERC (IRC client for Emacs 27.2)) |
2021-09-17 08:38:27 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 08:40:25 +0200 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-09-17 08:43:53 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2021-09-17 08:45:40 +0200 | renzhi | (~xp@2607:fa49:6500:b100::1d9d) |
2021-09-17 08:47:24 +0200 | ephemient | (uid407513@id-407513.lymington.irccloud.com) |
2021-09-17 08:48:52 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-17 09:01:31 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2021-09-17 09:02:34 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-17 09:05:00 +0200 | haykam2 | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-09-17 09:05:04 +0200 | haykam1 | (~haykam@static.100.2.21.65.clients.your-server.de) (Read error: Connection reset by peer) |
2021-09-17 09:05:11 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-09-17 09:05:20 +0200 | lbseale_ | (~lbseale@user/ep1ctetus) |
2021-09-17 09:05:25 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-09-17 09:06:58 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-09-17 09:08:29 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Ping timeout: 265 seconds) |
2021-09-17 09:11:59 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-17 09:13:16 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) |
2021-09-17 09:14:05 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) (Read error: Connection reset by peer) |
2021-09-17 09:14:27 +0200 | kenran | (~kenran@b2b-37-24-119-190.unitymedia.biz) |
2021-09-17 09:16:59 +0200 | <kenran> | How do you usually decide between different forms of encoding errors, like Either MyError a vs MonadError MyError a vs MonadFail vs ...? My problem: I'm writing a function in a library that I will then be using in another project. The project uses polysemy, but I still don't want to just use Polysemy.Error in the library. |
2021-09-17 09:17:20 +0200 | <kenran> | I often stumble over how to best glue together all these different mechanisms for failure in the final project |
2021-09-17 09:17:52 +0200 | <kenran> | There's so much work happening in that regard that it's hard to trust blog posts and such from, like, 2016 |
2021-09-17 09:19:34 +0200 | <kenran> | One concrete question: Is there a tradeoff to using MonadError e over Either e? MonadError looks strictly more powerful + flexible to mee |
2021-09-17 09:20:06 +0200 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-09-17 09:20:07 +0200 | xstill | (~xstill@fimu/xstill) () |
2021-09-17 09:21:17 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-09-17 09:22:28 +0200 | <dminuoso> | MonadError generalizes IO exceptions. |
2021-09-17 09:22:46 +0200 | <dminuoso> | It's not more flexible or powerful, it's orthogonal |
2021-09-17 09:23:03 +0200 | <dminuoso> | Generally the state of "how to do errors" in Haskell is very mixed, there's no general canonical way |
2021-09-17 09:23:46 +0200 | <dminuoso> | MonadFail otoh is the interface that gets invoked on pattern match failures in do-notation |
2021-09-17 09:23:48 +0200 | <dminuoso> | Like: |
2021-09-17 09:24:21 +0200 | <dminuoso> | `do F a <- expr; ...` calls fail if the bind fails to match the pattern `F a` |
2021-09-17 09:24:55 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
2021-09-17 09:25:18 +0200 | <dminuoso> | Sadly MonadFail gets reused for raising errors in monads, an interface that it's inappropriate, especially because the passed String might not even be representable. |
2021-09-17 09:25:25 +0200 | <dminuoso> | For example in Maybe the passed String is simply.... ignored. |
2021-09-17 09:25:41 +0200 | <dminuoso> | And in IO it picks some exception you probably would not want. |
2021-09-17 09:27:09 +0200 | <kenran> | dminuoso: thanks, that explains the MonadFail usage I've seen but not understood. I knew about the pattern matching failures, but I've seen it used as an easy way to get compatible interfaces to lots of stuff |
2021-09-17 09:27:18 +0200 | <dminuoso> | Or actually MonadError is not really a generalization of Exception, sorry that was wrong. Its an odd breed. |
2021-09-17 09:27:21 +0200 | <dminuoso> | MonadThrow generalizes throwIO |
2021-09-17 09:27:57 +0200 | <dminuoso> | kenran: My personal favourite for when there's IO in the mix, is hierarchial IO exceptions. |
2021-09-17 09:28:13 +0200 | <dminuoso> | It's composable and gives fine control over callers in what kind of exceptions they want to capture. |
2021-09-17 09:28:18 +0200 | <kenran> | Like, having a library function return `m Int`, with m having the MonadFail constraint, and then being able to call this in some fromJSON |
2021-09-17 09:28:35 +0200 | <kenran> | dminuoso: that's where I want to to land, just not with IOExceptions but Polysemy.Error, if that makes sense |
2021-09-17 09:28:50 +0200 | <dminuoso> | I dont know Polysemy realyl |
2021-09-17 09:29:18 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-09-17 09:29:34 +0200 | xff0x | (~xff0x@2001:1a81:52ad:c900:aed8:d538:dc44:ee0) (Ping timeout: 252 seconds) |
2021-09-17 09:29:42 +0200 | <kenran> | Polysemy.Error is basically the equivalent of the MonadError in mtl, iiuc. You get throw and catch in the effect monad's context |
2021-09-17 09:30:32 +0200 | xff0x | (~xff0x@2001:1a81:52ad:c900:b704:3c1b:6bea:6e62) |
2021-09-17 09:30:46 +0200 | <kenran> | dminuoso: so just that I get you right: you have some fine-tuned data types for exceptions that you throw in "their" context, and the callers can decide whether to just keep that constraint or "widen" it, or transform it? |
2021-09-17 09:31:01 +0200 | <kenran> | Like, the e in MonadError e changes on the way "up" |
2021-09-17 09:31:11 +0200 | <dminuoso> | kenran: do you know how Java or C++ style exceptions work wrt to class hierarchies? |
2021-09-17 09:31:18 +0200 | <dminuoso> | And being able to "catch some class of exceptions"? |
2021-09-17 09:31:26 +0200 | <kenran> | yeah |
2021-09-17 09:31:31 +0200 | <dminuoso> | We can do exactly the same in Haskell |
2021-09-17 09:31:34 +0200 | <kenran> | ahhh, I see what I missed |
2021-09-17 09:31:38 +0200 | funsafe | (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) (Ping timeout: 268 seconds) |
2021-09-17 09:32:11 +0200 | <kenran> | I was thinking of just one tree of exception types, but that misses the point with "I can catch this one error, but let this other one bubble up" |
2021-09-17 09:32:14 +0200 | <dminuoso> | The reason I like it, is because it's such a simple and yet generic interface, doesn't require me to interface with libraries like mtl to even interact with your library, gives me good control over what I care about.. |
2021-09-17 09:32:23 +0200 | <dminuoso> | But it only does work when there's IO :) |
2021-09-17 09:32:39 +0200 | <dminuoso> | Well, you can still do that with exceptions too |
2021-09-17 09:32:41 +0200 | <dminuoso> | % :t cathces |
2021-09-17 09:32:41 +0200 | <yahb> | dminuoso: ; <interactive>:1:1: error:; * Variable not in scope: cathces; * Perhaps you meant one of these: `catches' (imported from Control.Monad.Error.Lens), `catches' (imported from Control.Exception) |
2021-09-17 09:32:43 +0200 | <dminuoso> | % :t catches |
2021-09-17 09:32:43 +0200 | <yahb> | dminuoso: ; <interactive>:1:1: error:; Ambiguous occurrence `catches'; It could refer to; either `Control.Monad.Error.Lens.catches', imported from `Control.Monad.Error.Lens'; or `Control.Exception.catches', imported from `Control.Exception' |
2021-09-17 09:32:50 +0200 | <dminuoso> | % :t Control.Exception.catches |
2021-09-17 09:32:50 +0200 | <yahb> | dminuoso: IO a -> [Control.Exception.Handler a] -> IO a |
2021-09-17 09:33:01 +0200 | <dminuoso> | Here you can specify a list of exceptions you care about, everything else bubbles through,. |
2021-09-17 09:33:11 +0200 | <kenran> | dminuoso: yeah, that's the problem :D I wonder if it's possible with Polysemy to have multiple Error constraints that I can handle separately. Have to try that |
2021-09-17 09:33:17 +0200 | <dminuoso> | And best of all, you can mix this with what I mentioned above. "Catch this class of exceptions, and that other tree of exceptions, let everything else go through" |
2021-09-17 09:33:29 +0200 | <dminuoso> | The only problem is, unlike polysemy, there's no communication of either in the type system. |
2021-09-17 09:33:43 +0200 | <dminuoso> | But there's no silver bullet in Haskell. |
2021-09-17 09:33:54 +0200 | <kenran> | Right |
2021-09-17 09:34:11 +0200 | <kenran> | The only reasonable goal for me seems to be to get consistent with how we do error handling |
2021-09-17 09:34:19 +0200 | <kenran> | Right now it's a mess of different stuff |
2021-09-17 09:34:38 +0200 | <dminuoso> | I've largely settled on IO exceptions, but then again much of our stuff is IO centric.. |
2021-09-17 09:34:58 +0200 | <dminuoso> | Also, since Im a big fan of MonadUnliftIO, I dont have many other choices... |
2021-09-17 09:35:00 +0200 | <dminuoso> | :p |
2021-09-17 09:35:01 +0200 | ubert | (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-17 09:35:01 +0200 | ubert1 | ubert |
2021-09-17 09:35:20 +0200 | <kenran> | I really like Polysemy so far, it's like mtl-style (which somehow resonates with me, probably from my OO background), but I'm not sure yet whether I really want it to be present in the "pure library code" |
2021-09-17 09:35:37 +0200 | <kenran> | I know some package authors have separate packages for the different paradigms |
2021-09-17 09:36:06 +0200 | <kenran> | For instance co-log, which has co-log-core, co-log (mtl-style), and co-log-polysemy |
2021-09-17 09:36:52 +0200 | <kenran> | Thanks for all the input, really interesting stuff dminuoso |
2021-09-17 09:37:26 +0200 | <dminuoso> | After a long while of Haskell, I've settled on simpler haskell without too many type level tricks - at least on the external interface. |
2021-09-17 09:38:21 +0200 | <dminuoso> | kenran: So if I understand polysemy correctly, one thing that would immediately annoy me is that '[A, B] and '[B, A] would be incompatible |
2021-09-17 09:38:49 +0200 | <dminuoso> | So code doesn't freely compose, as you might have to shuffle the composition order around to make polysemy happy |
2021-09-17 09:39:53 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) |
2021-09-17 09:42:00 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
2021-09-17 09:42:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 09:43:03 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) |
2021-09-17 09:44:55 +0200 | kuribas | (~user@ptr-25vy0i7x8rtrl519tor.18120a2.ip6.access.telenet.be) |
2021-09-17 09:47:32 +0200 | max22- | (~maxime@2a01cb0883359800999b760ae95fc90b.ipv6.abo.wanadoo.fr) |
2021-09-17 09:50:28 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) |
2021-09-17 09:51:35 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:854d:ae90:d2a1:51ab) (Remote host closed the connection) |
2021-09-17 09:52:29 +0200 | <kenran> | dminuoso: that's correct in principle, but the way you actually use it in your domain function it doesn't pose a problem. |
2021-09-17 09:53:03 +0200 | <kenran> | dminuoso: You write your functions like this: Members '[Eff1, PersistFoo, ...] r => Int -> Sem r String |
2021-09-17 09:53:48 +0200 | funsafe | (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) |
2021-09-17 09:53:50 +0200 | <kenran> | And in the Members constraint the order is not important. Once you get to actually interpreting the effects, of course, that's where you have to pay attention to the actual order, so yes, that's the one point where it can be a bit more tricky |
2021-09-17 09:53:58 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-09-17 09:54:47 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-09-17 09:54:51 +0200 | <kenran> | As with everything, one has to pay attention to not have like 7+ effects "active" all the time, which is where I sometimes struggle |
2021-09-17 09:55:23 +0200 | notzmv | (~zmv@user/notzmv) (Read error: Connection reset by peer) |
2021-09-17 09:56:12 +0200 | <kenran> | In general I have that problem with mtl-style too, but I feel like where Polysemy exceeds over encoding your effects as type classes directly is at this point: actually removing/reinterpreting an effect at a certain point in your code without having to choose a concrete type, if that makes sense |
2021-09-17 09:57:00 +0200 | <kenran> | I'm still not experienced enough with it and it's only a vague feeling until now, though. More or less a "let's use it and see where it leads us" |
2021-09-17 09:57:23 +0200 | <kenran> | I love that we're actually encouraged to do soo at this job |
2021-09-17 09:59:24 +0200 | vpan | (~vilius@212.117.1.172) |
2021-09-17 10:01:56 +0200 | ub | (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) |
2021-09-17 10:03:29 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-09-17 10:04:08 +0200 | cfricke | (~cfricke@user/cfricke) |
2021-09-17 10:04:27 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
2021-09-17 10:05:02 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:f81a:6736:1170:5e1c) |
2021-09-17 10:05:55 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-09-17 10:08:43 +0200 | theang | (~theang@2a00:f41:5866:e08:671b:b01e:3ccd:22d3) (Ping timeout: 252 seconds) |
2021-09-17 10:09:09 +0200 | theang | (~theang@fef109.internetdsl.tpnet.pl) |
2021-09-17 10:09:16 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:f81a:6736:1170:5e1c) (Ping timeout: 252 seconds) |
2021-09-17 10:09:18 +0200 | hendursa1 | (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
2021-09-17 10:11:12 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:a20c:3ab6:8175:e3ff) |
2021-09-17 10:11:57 +0200 | <kuribas> | I guess that's why ReaderT r IO is so popular. No need to juggle effects around. |
2021-09-17 10:12:01 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 10:13:35 +0200 | <dminuoso> | Yes, and you can have MonadUnliftIO too. |
2021-09-17 10:14:00 +0200 | <kuribas> | It's funny how we create all these fancy effect systems, and we end up having mutable state and exceptions again :) |
2021-09-17 10:14:14 +0200 | <dminuoso> | Well I certainly understand why people want effect systems. |
2021-09-17 10:14:22 +0200 | <dminuoso> | But in Haskell they feel bolted on more often than not. |
2021-09-17 10:14:25 +0200 | <kuribas> | But being able to "see" the state is already a big advantage IMO. |
2021-09-17 10:14:43 +0200 | <dminuoso> | No effect system in Haskell has really convinced me so far. |
2021-09-17 10:14:44 +0200 | <kuribas> | dminuoso: the way I use the effect systems is encapsulated in functionality. |
2021-09-17 10:15:01 +0200 | <kuribas> | as in, they are an implementation detail of whatever I want to do. |
2021-09-17 10:15:12 +0200 | <kuribas> | Not a big architectural design feature. |
2021-09-17 10:15:35 +0200 | oxide | (~lambda@user/oxide) |
2021-09-17 10:17:09 +0200 | <kenran> | I think I've let the easy testability of polysemy-based code convince me a bit too easily ("changing your interpreter for a test is just using another function", but I've yet to actually use it as much as I'd like :D |
2021-09-17 10:17:44 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-09-17 10:17:44 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-09-17 10:17:47 +0200 | allbery_b | geekosaur |
2021-09-17 10:18:02 +0200 | benin036932301 | (~benin@183.82.205.89) |
2021-09-17 10:18:48 +0200 | <kuribas> | Not having global state is the biggest advantage. |
2021-09-17 10:19:03 +0200 | <kuribas> | or better, "invisible" global state. |
2021-09-17 10:19:17 +0200 | <dminuoso> | It's all a trade off. Sometimes I think people spend way too much time and effort in restructuring with effect systems on the misbelief, that being able to "plug in different interpreters" will yield valuable net results. |
2021-09-17 10:19:35 +0200 | <kenran> | dminuoso: yep, that's definitely true |
2021-09-17 10:19:38 +0200 | <dminuoso> | It feels it comes at the price of readability and maintainability. When you need to become a polysemy expert just to interact and deal with the code, Im not sure much was won. |
2021-09-17 10:21:05 +0200 | <kenran> | Honestly, the same goes for me trying to write mtl/tagless-final style code, too. My experience with polysemy in particular was that it improves upon that style, but if the code I transform is already wrongly based on the (dis)belief you mention, there's definitely nothing won, and time lost |
2021-09-17 10:21:17 +0200 | <dminuoso> | It reminds me how some projects spent endless amount of time on pleasing some coverage tester, convincing themselves that having 100% coverage means there's less bugs. |
2021-09-17 10:21:31 +0200 | juhp | (~juhp@111.65.68.133) |
2021-09-17 10:21:33 +0200 | <dminuoso> | I wonder whether this is just the Haskell-variant of that. |
2021-09-17 10:21:42 +0200 | <kenran> | It might just be |
2021-09-17 10:22:15 +0200 | <kenran> | Lots of the bugs that are not prevented by coverage alone are of the kind that is harder to produce in Haskell when leveraging the type system well |
2021-09-17 10:22:55 +0200 | benin036932301 | (~benin@183.82.205.89) (Ping timeout: 265 seconds) |
2021-09-17 10:23:53 +0200 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
2021-09-17 10:34:54 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-09-17 10:35:54 +0200 | chele | (~chele@user/chele) |
2021-09-17 10:36:07 +0200 | hnOsmium0001 | (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-09-17 10:40:58 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) (Read error: Connection reset by peer) |
2021-09-17 10:41:16 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) |
2021-09-17 10:43:47 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Quit: leaving) |
2021-09-17 10:43:59 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-17 10:44:34 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit) |
2021-09-17 10:44:46 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-17 10:46:06 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit) |
2021-09-17 10:46:18 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-17 10:49:53 +0200 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) |
2021-09-17 10:52:06 +0200 | favonia | (~favonia@user/favonia) |
2021-09-17 10:52:53 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
2021-09-17 10:55:13 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 10:56:05 +0200 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
2021-09-17 10:56:23 +0200 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) |
2021-09-17 10:58:27 +0200 | jespada | (~jespada@2803:9800:9842:7a62:95e0:d2b5:ae88:676) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-09-17 11:00:06 +0200 | fabfianda[m] | (~fabfianda@2001:470:69fc:105::6db) (Quit: You have been kicked for being idle) |
2021-09-17 11:00:54 +0200 | <maerwald> | dminuoso: polysemy is also very slow |
2021-09-17 11:01:09 +0200 | <maerwald> | and has questionable semantics |
2021-09-17 11:01:39 +0200 | <maerwald> | because: effects systems are hard |
2021-09-17 11:01:51 +0200 | <dminuoso> | The real solution is to have software without errors. Then you dont need error effects. |
2021-09-17 11:01:58 +0200 | <maerwald> | and yeah, I think this is hype driven development in haskell |
2021-09-17 11:02:00 +0200 | <dminuoso> | It's why bottom was invented. |
2021-09-17 11:02:05 +0200 | <dminuoso> | Always error free. :-) |
2021-09-17 11:02:18 +0200 | <dminuoso> | "hype driven development" |
2021-09-17 11:02:22 +0200 | <dminuoso> | Interesting expression, had not heard about that |
2021-09-17 11:02:25 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2.1) |
2021-09-17 11:02:34 +0200 | <maerwald> | there are several blog posts about it (I think bashing NoSQL) |
2021-09-17 11:03:31 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-17 11:04:00 +0200 | <dminuoso> | NoSQL is an interesting proposition. I stand by my opinion that it's an emergent technology of folks thinking "Who cares about well-principled databases founded on research and academia, you only live once!" for most people. Who cares about transactional safety. |
2021-09-17 11:04:25 +0200 | <dminuoso> | The fact that MongoDB, not until too long ago crashed and corrupted if the dataset exceeded 4GiB on 32bit systems is just telling.. |
2021-09-17 11:04:40 +0200 | <maerwald> | Afaiu NoSQL was an attempt to solve a very specific performance problem with relational databases. It wasn't intended as general purpose technology |
2021-09-17 11:04:57 +0200 | <maerwald> | but then it got hyped and here we are |
2021-09-17 11:05:11 +0200 | <dminuoso> | Sure, though "NoSQL" as a term that comes from that hype. |
2021-09-17 11:05:20 +0200 | <dminuoso> | I mean memcached is also.. "nosql" |
2021-09-17 11:05:38 +0200 | <dminuoso> | Though its not new and hipster enough |
2021-09-17 11:06:03 +0200 | <maerwald> | there's also microservices in town, which is basically "you could have written a library, but that's too easy" |
2021-09-17 11:06:39 +0200 | <maerwald> | "your library needs a database, a protocol and be part of a kubernetes cluster" |
2021-09-17 11:06:40 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2021-09-17 11:06:41 +0200 | <dminuoso> | One of our hottest postgresql servers serves roughly 5kTX/s.. during the hottest phase of the day. And that's without even trying hard! |
2021-09-17 11:06:50 +0200 | <dminuoso> | Writing. |
2021-09-17 11:06:54 +0200 | <dminuoso> | Not reading. :-) |
2021-09-17 11:07:22 +0200 | <maerwald> | That's the problem with CTOs looking at "what does facebook/google do" |
2021-09-17 11:07:29 +0200 | <maerwald> | they're solving problems you don't have |
2021-09-17 11:08:11 +0200 | <dminuoso> | Of course. I think there's some hope that if you employ the same technologies as google does, you get as large and rich as google. |
2021-09-17 11:08:17 +0200 | <maerwald> | :D |
2021-09-17 11:08:50 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2021-09-17 11:11:04 +0200 | <dminuoso> | It's nothing but an example of cum hoc ergo propter hoc. |
2021-09-17 11:11:32 +0200 | <dminuoso> | (Or maybe its a different fallacy?) |
2021-09-17 11:12:30 +0200 | <maerwald> | I think it's just plain stupidity |
2021-09-17 11:12:52 +0200 | <maerwald> | as plain as white rice (although the latter is more delicious) |
2021-09-17 11:14:11 +0200 | <dminuoso> | White rice is indeed delicious. |
2021-09-17 11:14:22 +0200 | <dminuoso> | Especially if cooked with tahdig. |
2021-09-17 11:14:28 +0200 | <dminuoso> | The only true way to cook rice. |
2021-09-17 11:15:26 +0200 | [exa] | discovers tahdig |
2021-09-17 11:15:57 +0200 | <dminuoso> | [exa]: Good luck on your endaveours, it took me over two years to make perfect tahdig. |
2021-09-17 11:16:13 +0200 | <dminuoso> | And it's not even half as perfect as when my Farsi friends do it. |
2021-09-17 11:16:16 +0200 | <[exa]> | time to rice |
2021-09-17 11:16:31 +0200 | <dminuoso> | :) |
2021-09-17 11:23:18 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-09-17 11:26:21 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:b0fa:b428:27dc:59de) |
2021-09-17 11:27:15 +0200 | vaucouleur_ | (~vaucouleu@176.124.42.130) |
2021-09-17 11:27:46 +0200 | vaucouleur__ | (~vaucouleu@176.124.42.130) |
2021-09-17 11:30:25 +0200 | fef | (~thedawn@user/thedawn) |
2021-09-17 11:30:35 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) (Ping timeout: 265 seconds) |
2021-09-17 11:30:54 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:b0fa:b428:27dc:59de) (Ping timeout: 260 seconds) |
2021-09-17 11:31:46 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) |
2021-09-17 11:32:06 +0200 | vaucouleur_ | (~vaucouleu@176.124.42.130) (Ping timeout: 268 seconds) |
2021-09-17 11:33:00 +0200 | vaucouleur__ | (~vaucouleu@176.124.42.130) (Ping timeout: 265 seconds) |
2021-09-17 11:34:41 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
2021-09-17 11:38:32 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 11:39:18 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 260 seconds) |
2021-09-17 11:40:09 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2021-09-17 11:42:39 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2021-09-17 11:42:57 +0200 | wonko | (~wjc@62.115.229.50) |
2021-09-17 11:52:02 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) (Quit: Ping timeout (120 seconds)) |
2021-09-17 11:53:33 +0200 | neurocyte | (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat) |
2021-09-17 11:54:04 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) |
2021-09-17 11:58:53 +0200 | neurocyte0 | (~neurocyte@185.238.253.211) |
2021-09-17 11:58:53 +0200 | neurocyte0 | (~neurocyte@185.238.253.211) (Changing host) |
2021-09-17 11:58:53 +0200 | neurocyte0 | (~neurocyte@user/neurocyte) |
2021-09-17 11:59:27 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
2021-09-17 12:00:48 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) |
2021-09-17 12:02:48 +0200 | arkanoid | (~arkanoid@2-238-151-49.ip244.fastwebnet.it) (Quit: WeeChat 2.8) |
2021-09-17 12:08:46 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 265 seconds) |
2021-09-17 12:11:36 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 12:13:12 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-09-17 12:16:53 +0200 | jespada | (~jespada@host244.190-3-30.dynamic.telmex.net.ar) |
2021-09-17 12:19:33 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-09-17 12:20:10 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 12:25:07 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2021-09-17 12:25:30 +0200 | thornAvery | (~thornAver@2401:c080:1800:4346:5400:3ff:fe2c:c8f8) |
2021-09-17 12:26:03 +0200 | <thornAvery> | anyone got experience with `XMPP`, its failing to build (i think because haskell98 fails too) and im wondering whether its worth figuring out or if i should use something else |
2021-09-17 12:27:57 +0200 | <maerwald> | xmpp? |
2021-09-17 12:29:00 +0200 | __monty__ | (~toonn@user/toonn) |
2021-09-17 12:29:56 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) |
2021-09-17 12:30:01 +0200 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2021-09-17 12:30:39 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2021-09-17 12:31:12 +0200 | zaquest | (~notzaques@5.128.210.178) |
2021-09-17 12:32:12 +0200 | <thornAvery> | maerwald: https://hackage.haskell.org/package/XMPP |
2021-09-17 12:34:21 +0200 | burnsidesLlama | (~burnsides@client-8-81.eduroam.oxuni.org.uk) |
2021-09-17 12:35:24 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-09-17 12:37:06 +0200 | burnside_ | (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
2021-09-17 12:38:40 +0200 | enicar | (~enikar@user/enikar) |
2021-09-17 12:39:07 +0200 | enicar | (~enikar@user/enikar) (Client Quit) |
2021-09-17 12:41:09 +0200 | burnsidesLlama | (~burnsides@client-8-81.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds) |
2021-09-17 12:41:09 +0200 | ksu | (~ksu@user/prtr) (Ping timeout: 265 seconds) |
2021-09-17 12:50:00 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 12:55:21 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2021-09-17 12:57:57 +0200 | juhp | (~juhp@111.65.68.133) (Read error: Connection reset by peer) |
2021-09-17 13:00:48 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) (Quit: Ping timeout (120 seconds)) |
2021-09-17 13:00:57 +0200 | alx741 | (~alx741@181.196.68.9) |
2021-09-17 13:02:11 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) |
2021-09-17 13:04:12 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-17 13:04:21 +0200 | rawles | (~o@user/rawles) |
2021-09-17 13:04:40 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 240 seconds) |
2021-09-17 13:08:17 +0200 | leah2 | (~leah@vuxu.org) (Ping timeout: 250 seconds) |
2021-09-17 13:08:55 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
2021-09-17 13:10:31 +0200 | AlexNoo_ | (~AlexNoo@178.34.163.108) |
2021-09-17 13:12:34 +0200 | Alex_test | (~al_test@178.34.162.211) (Ping timeout: 265 seconds) |
2021-09-17 13:13:01 +0200 | AlexZenon | (~alzenon@178.34.162.211) (Ping timeout: 268 seconds) |
2021-09-17 13:14:02 +0200 | AlexNoo | (~AlexNoo@178.34.162.211) (Ping timeout: 260 seconds) |
2021-09-17 13:18:04 +0200 | Alex_test | (~al_test@178.34.163.108) |
2021-09-17 13:18:30 +0200 | AlexZenon | (~alzenon@178.34.163.108) |
2021-09-17 13:22:07 +0200 | AlexNoo_ | AlexNoo |
2021-09-17 13:27:57 +0200 | leah2 | (~leah@vuxu.org) |
2021-09-17 13:27:59 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-09-17 13:33:10 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds) |
2021-09-17 13:33:26 +0200 | Cajun | (~Cajun@user/cajun) |
2021-09-17 13:36:04 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
2021-09-17 13:37:07 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-09-17 13:37:20 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2021-09-17 13:40:59 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 268 seconds) |
2021-09-17 13:43:36 +0200 | tcard | (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving) |
2021-09-17 13:44:47 +0200 | benin036932301 | (~benin@183.82.205.89) |
2021-09-17 13:44:50 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 260 seconds) |
2021-09-17 13:48:24 +0200 | tcard | (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) |
2021-09-17 13:49:01 +0200 | jinsun | (~quassel@user/jinsun) (Read error: Connection reset by peer) |
2021-09-17 13:49:49 +0200 | benin036932301 | (~benin@183.82.205.89) (Ping timeout: 252 seconds) |
2021-09-17 13:50:31 +0200 | jinsun | (~quassel@user/jinsun) |
2021-09-17 13:53:13 +0200 | Phantastes | (~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) |
2021-09-17 13:54:36 +0200 | vpan | (~vilius@212.117.1.172) (Quit: Leaving.) |
2021-09-17 13:59:52 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-09-17 14:00:35 +0200 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
2021-09-17 14:00:42 +0200 | __monty__ | (~toonn@user/toonn) (Ping timeout: 260 seconds) |
2021-09-17 14:00:53 +0200 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) |
2021-09-17 14:02:58 +0200 | max22- | (~maxime@2a01cb0883359800999b760ae95fc90b.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds) |
2021-09-17 14:09:16 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2021-09-17 14:09:55 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 14:12:51 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-09-17 14:16:10 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2021-09-17 14:19:22 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-17 14:21:41 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds) |
2021-09-17 14:22:48 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-09-17 14:27:51 +0200 | dsrt^ | (~dsrt@68.101.54.227) (Ping timeout: 268 seconds) |
2021-09-17 14:29:05 +0200 | yaroot | (~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat) |
2021-09-17 14:29:58 +0200 | yaroot | (~yaroot@6.3.30.125.dy.iij4u.or.jp) |
2021-09-17 14:31:01 +0200 | dsrt^ | (~dsrt@68.101.54.227) |
2021-09-17 14:31:15 +0200 | dsrt^ | (~dsrt@68.101.54.227) (Remote host closed the connection) |
2021-09-17 14:37:25 +0200 | __monty__ | (~toonn@user/toonn) |
2021-09-17 14:38:21 +0200 | <ProofTechnique> | maerwald: (on microservices) I'm working on exactly such a platform right now, and I've set it as a team principle that all our services are just libraries with a thin executable wrapper that depends on the library. I don't want our business logic to ever understand anything about the system, it just needs to transform data |
2021-09-17 14:38:58 +0200 | <maerwald> | ProofTechnique: why do you have microservices in the first place? |
2021-09-17 14:39:39 +0200 | <ProofTechnique> | Because an architect said so, and because we need to replace the tangled Groovy monolith we're currently using :D |
2021-09-17 14:39:52 +0200 | <maerwald> | sounds like a poor choice then |
2021-09-17 14:41:13 +0200 | <ProofTechnique> | The main nice thing is that it's a lot easier to onboard _other people's_ services. As long as they can read the auth headers we decorate requests with, they can ignore authn/authz logic in their own code |
2021-09-17 14:42:01 +0200 | kimjetwav | (~user@2607:fea8:235f:9730:162d:fa69:3f15:a6a5) (Remote host closed the connection) |
2021-09-17 14:42:37 +0200 | <ProofTechnique> | As compared to "make someone unfamiliar with the monolith hack their new functionality into it and make the trashball worse" |
2021-09-17 14:42:52 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 14:43:26 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-17 14:44:17 +0200 | <ProofTechnique> | And it has been significantly easier to get an active-active configuration working consistently across our environments without a bunch of bookkeeping |
2021-09-17 14:47:07 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 245 seconds) |
2021-09-17 14:47:20 +0200 | <ProofTechnique> | In good news, if we ever need to collapse down some of the services into beefier ones, it's just shuffling library imports :) |
2021-09-17 14:48:01 +0200 | <dminuoso> | Microservices is that other thing that people adopt for no good reason, and later dont even realize that they're regretting it.. |
2021-09-17 14:48:28 +0200 | <dminuoso> | While most of the hype has passed, it's still a very popular practice. |
2021-09-17 14:49:19 +0200 | <kuribas> | people knowing what to regret would be an advancement for many teams :) |
2021-09-17 14:49:33 +0200 | <ProofTechnique> | I'm being a little facetious, we do have good reasons (that are very boring), I just like to blame the architect because their initial recommendation was "just do it as a bunch of lambdas" :D |
2021-09-17 14:49:58 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) |
2021-09-17 14:50:33 +0200 | <kuribas> | ProofTechnique: if the services are just libraries, then why not pack it into a single executable? |
2021-09-17 14:51:11 +0200 | <ldlework> | dminuoso: I have found that microservice regret is a function of a team's infrastructure/orchestration prowess. |
2021-09-17 14:51:55 +0200 | <dminuoso> | ldlework: And what kind of function is that? |
2021-09-17 14:52:57 +0200 | <ldlework> | It's just to say, that the more handedness (in knowledge or automation) in orchestration, the less associated pain with microservices there is. |
2021-09-17 14:53:27 +0200 | <ldlework> | Developers seem fine making services and making them use each other's APIs. It's the operational complexity that usually degrades returns (in my experience). |
2021-09-17 14:53:42 +0200 | max22- | (~maxime@2a01cb0883359800445667b961f4f8f5.ipv6.abo.wanadoo.fr) |
2021-09-17 14:53:45 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
2021-09-17 14:53:56 +0200 | <dminuoso> | ldlework: that's a myth. some of the biggest issues of microservices dont relate to orchestration. |
2021-09-17 14:54:29 +0200 | <ldlework> | OK, maybe you have some research paper, I only have a couple decades of experience to go off. |
2021-09-17 14:54:34 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 14:54:37 +0200 | <ProofTechnique> | Multiple languages across teams, multiple on-prem and cloud resources that need consistent access patterns, and we don't have any dedicated ops people since I shifted into product development :D |
2021-09-17 14:54:58 +0200 | <dminuoso> | Not sure what that snarky comment was supposed to convey, but okay. |
2021-09-17 14:55:18 +0200 | <ldlework> | dminuoso: not sure what an offhanded rejection of someone else's premise as "myth" was supposed to convey, but okay. |
2021-09-17 14:55:28 +0200 | <ProofTechnique> | And there's just decades of legacy that needs to be enclosed so that we don't have to think so damn hard about it just to barf JSON at each other all over the place |
2021-09-17 14:56:18 +0200 | <ProofTechnique> | At the end of the day, it's not my money, so I just write good software and automation and don't worry too much about how it actually gets run |
2021-09-17 14:58:03 +0200 | <kuribas> | I think service architecture is good, but you want to maximise service size, not minimize it. |
2021-09-17 14:58:38 +0200 | <kuribas> | Unless you have needs that *require* it. |
2021-09-17 14:58:47 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 245 seconds) |
2021-09-17 14:59:07 +0200 | <maerwald> | ProofTechnique: there are very few reasons for microservices, technically |
2021-09-17 14:59:21 +0200 | <maerwald> | all of them have nothing to do with architecture |
2021-09-17 14:59:59 +0200 | <maerwald> | I know of only 2 good ones: 1. you need to scale microservices differently (e.g. one needs more CPU, the other ram, the other better latency, ...) |
2021-09-17 15:00:34 +0200 | pbrisbin | (~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) |
2021-09-17 15:00:42 +0200 | <maerwald> | 2. someone wants to verify your microservice formally/semi-formally (happens in online casino business for the RNG... it has to be a microservice) |
2021-09-17 15:01:28 +0200 | <ProofTechnique> | We do need to scale them differently, so box ticked :) |
2021-09-17 15:02:12 +0200 | <dminuoso> | Microservices are usually not a technical solution to a problem, but an emergent cultural phenomenon in companies. |
2021-09-17 15:02:29 +0200 | <dminuoso> | They tend to be modelled after the organization |
2021-09-17 15:02:55 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 15:03:59 +0200 | <ldlework> | There's different ways of looking at things depending on what you are aiming to optimize for. In the reductio of optimizing for scaling, you'd segregate your overall system specficially by utilization. But concerns abound you end up balancing what you're optimizing for. Microservices sounds like a paradigm in which you blindly optimize for concerns that demand microserivces, but really it is the |
2021-09-17 15:04:01 +0200 | <ldlework> | study of small unit services so there is something known to say in cases in which small services are the answer to the optimizations you're looking for. |
2021-09-17 15:04:09 +0200 | <kuribas> | we rejected some candidates because in the interview they asked us why we didn't grow with the time, and used cubernetes :) |
2021-09-17 15:04:27 +0200 | <maerwald> | dminuoso: true, someone once said the architecture is merely a reflection of the communication |
2021-09-17 15:04:36 +0200 | <kuribas> | We use decade old unix technology, and it still works fine :) |
2021-09-17 15:04:56 +0200 | <gehmehgeh> | kuribas: I'm looking for job, can I apply? :D |
2021-09-17 15:05:08 +0200 | <dminuoso> | maerwald: And there's a lot of merit in it with microservices. Each team can monitor its own services, responsible for their deployment, alerting, defined interfaces, etc. |
2021-09-17 15:05:22 +0200 | <dminuoso> | But then again, this can as easily happen inside a given program |
2021-09-17 15:05:26 +0200 | <ProofTechnique> | For my part, if we didn't do it this way then I wouldn't be able to write services in Haskell :D |
2021-09-17 15:05:29 +0200 | <maerwald> | dminuoso: yeah... and deployment is SO MUCH FUN |
2021-09-17 15:05:30 +0200 | <dminuoso> | Where you have some defined module structure how some other part will interface. |
2021-09-17 15:05:38 +0200 | <ldlework> | ProofTechnique: heh |
2021-09-17 15:05:40 +0200 | <maerwald> | because suddenly the entire armada of microservices need to be in sync |
2021-09-17 15:05:41 +0200 | <kuribas> | gehmehgeh: well, currently we don't need backend developers, only a senior devops guy. |
2021-09-17 15:05:43 +0200 | <maerwald> | BOOM |
2021-09-17 15:05:54 +0200 | <ldlework> | > function of orchestration prowess |
2021-09-17 15:05:56 +0200 | <lambdabot> | <hint>:1:10: error: parse error on input ‘of’ |
2021-09-17 15:05:57 +0200 | ldlework | shrugs |
2021-09-17 15:05:59 +0200 | acidjnk | (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) |
2021-09-17 15:06:01 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.2.1) |
2021-09-17 15:06:05 +0200 | <maerwald> | then you end up doing multi-stage deployments and all sorts of things |
2021-09-17 15:06:10 +0200 | <dminuoso> | ldlework: At what benefit, though? |
2021-09-17 15:06:17 +0200 | <kuribas> | gehmehgeh: and a junior one. |
2021-09-17 15:06:22 +0200 | <dminuoso> | You drive up complexity, introduce additional angles in which the entirety of your service can fail.. |
2021-09-17 15:06:26 +0200 | <ldlework> | I feel like I just gave a generalized principle for understanding that |
2021-09-17 15:06:49 +0200 | <dminuoso> | Optimizing for scaling is a problem most software applications dont have. |
2021-09-17 15:06:55 +0200 | <ldlework> | Yes, if you have priorities, you will have to pay for them with costs elsewhere. |
2021-09-17 15:07:34 +0200 | <kuribas> | well, scaling on a single system is good enough for most applications. |
2021-09-17 15:08:07 +0200 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-09-17 15:08:22 +0200 | <ldlework> | Again, treating microservices as a dogmatic paradigm where all you are allowed to do is make microservices, rather than a series of worked out ideas for working with unit services when you happen to need them is a mistake. |
2021-09-17 15:09:22 +0200 | <maerwald> | and there go 80% of your Go programming opportunities :D |
2021-09-17 15:09:31 +0200 | <ProofTechnique> | lol |
2021-09-17 15:09:32 +0200 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2021-09-17 15:09:33 +0200 | <kuribas> | I read about this haskell company that migrated the code from distributed scala running on a several nodes, to a single haskell node, and they saw an *improvement* in performance. |
2021-09-17 15:09:54 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-17 15:09:55 +0200 | <ldlework> | maerwald: heh yeah, that's not to say some people arnt out there treating it like a paradigm |
2021-09-17 15:10:08 +0200 | <maerwald> | like scrum |
2021-09-17 15:10:13 +0200 | <maerwald> | imagine you do both |
2021-09-17 15:10:18 +0200 | <maerwald> | microservices and scrum |
2021-09-17 15:10:58 +0200 | <ProofTechnique> | .oO(I don't have to imagine) |
2021-09-17 15:10:59 +0200 | <dminuoso> | We have one microservice oriented stack here, but that's done because this particular stack interfaces with at least three separate network regions, and we want high fault taulerance against network failures. So we split it up to have locally running service that could provide local services while the network was down. |
2021-09-17 15:11:11 +0200 | <dminuoso> | Not done out of any religion or scaling, but just out of a strict technical requirement. |
2021-09-17 15:11:31 +0200 | <ldlework> | kuribas: sure, horizontal scaling isn't some universal optimization |
2021-09-17 15:13:24 +0200 | fresheyeball | (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) |
2021-09-17 15:14:59 +0200 | <ldlework> | JS is adding a pipeline operator to the language |
2021-09-17 15:15:15 +0200 | <sshine> | besides ->? :-P |
2021-09-17 15:15:24 +0200 | <ldlework> | |> |
2021-09-17 15:15:32 +0200 | <sshine> | JS# |
2021-09-17 15:15:37 +0200 | <ldlework> | actually |
2021-09-17 15:15:42 +0200 | <ldlework> | instead of F# semantics |
2021-09-17 15:15:48 +0200 | <ldlework> | where it just applies a value |
2021-09-17 15:15:56 +0200 | <ldlework> | they are going with a whacky expression based one |
2021-09-17 15:16:00 +0200 | <ldlework> | where the lhs is bound to ^ |
2021-09-17 15:16:03 +0200 | <ProofTechnique> | We have a couple of tiny glue services that didn't really "fit" anywhere else and basically just amount to slightly fancy proxies around garbage legacy systems that we want to quarantine, but the majority are mid-to-large size units that don't logically share any functionality beyond "reads our auth headers". I expect things will evolve over time and we'll coalesce things as we observe more of how everything actually interacts |
2021-09-17 15:16:07 +0200 | <ldlework> | so you can do things with it |
2021-09-17 15:16:38 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-09-17 15:17:01 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) |
2021-09-17 15:17:11 +0200 | <ldlework> | ProofTechnique: this conversation reminds me of some funny video about microservices where a developer is trying to explain to a product manager how some change is no small ask |
2021-09-17 15:17:30 +0200 | <ldlework> | https://www.youtube.com/watch?v=y8OnoxKotPQ |
2021-09-17 15:18:04 +0200 | <ProofTechnique> | I love that video :D |
2021-09-17 15:18:19 +0200 | <ldlework> | cracks me up everytime |
2021-09-17 15:20:06 +0200 | <ldlework> | "you think you know what it takes to tell the user their birthday... you know nothing!!" |
2021-09-17 15:20:19 +0200 | <ProofTechnique> | When someone started drawing a diagram to explain a new service they wanted to onboard, I stopped them right there and said "okay, but why does this need to be five moving pieces instead of one?" and now they've rewritten it to just run in a container. A logical unit of work should not require a chain of 3 lambdas and an API gateway just to puke JSON |
2021-09-17 15:20:39 +0200 | <ProofTechnique> | (And now they get multi-region deploys for free, just because I'm nice) |
2021-09-17 15:22:37 +0200 | xsperry | (~as@user/xsperry) (Ping timeout: 252 seconds) |
2021-09-17 15:23:46 +0200 | <ldlework> | ProofTechnique: it's possible to get to the point where a collection of containers, at the level of analysis relevant to ops, is a single logical unit. |
2021-09-17 15:24:41 +0200 | <ldlework> | (or a collection of AWS CF artifacts, or whatever else) |
2021-09-17 15:26:22 +0200 | <ProofTechnique> | If you knew this team, you would not give the benefit of the doubt :D |
2021-09-17 15:27:28 +0200 | <ProofTechnique> | (Also AWS API Gateways have _no_ good story for multi-region other than "just deploy a second one, lol", so that was a big operational no) |
2021-09-17 15:28:09 +0200 | xsperry | (~as@user/xsperry) |
2021-09-17 15:29:26 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-09-17 15:31:20 +0200 | fresheyeball | (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
2021-09-17 15:32:25 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 15:33:13 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 265 seconds) |
2021-09-17 15:35:16 +0200 | ubert | (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-17 15:35:16 +0200 | ub | ubert |
2021-09-17 15:36:00 +0200 | ubert1 | (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) |
2021-09-17 15:37:30 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
2021-09-17 15:41:54 +0200 | byorgey | (~byorgey@155.138.238.211) (Quit: leaving) |
2021-09-17 15:41:58 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 260 seconds) |
2021-09-17 15:43:36 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-09-17 15:44:31 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-09-17 15:48:28 +0200 | xsperry | (~as@user/xsperry) (Ping timeout: 252 seconds) |
2021-09-17 15:51:38 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-09-17 15:56:16 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-09-17 15:57:20 +0200 | kimjetwav | (~user@2607:fea8:235f:9730:162d:fa69:3f15:a6a5) |
2021-09-17 15:58:22 +0200 | lbseale_ | (~lbseale@user/ep1ctetus) (Ping timeout: 252 seconds) |
2021-09-17 15:58:52 +0200 | burnside_ | (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-09-17 15:59:21 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
2021-09-17 16:02:10 +0200 | ub | (~Thunderbi@178.115.57.167.wireless.dyn.drei.com) |
2021-09-17 16:02:49 +0200 | xsperry | (~as@user/xsperry) |
2021-09-17 16:03:26 +0200 | ubert | (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2021-09-17 16:03:26 +0200 | ub | ubert |
2021-09-17 16:03:52 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
2021-09-17 16:03:54 +0200 | ubert1 | (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2021-09-17 16:03:56 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-09-17 16:04:09 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-17 16:04:09 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-17 16:04:09 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-17 16:04:32 +0200 | hiruji | (~hiruji@user/hiruji) (Client Quit) |
2021-09-17 16:04:43 +0200 | lbseale_ | (~lbseale@user/ep1ctetus) |
2021-09-17 16:05:28 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-09-17 16:05:40 +0200 | alx741 | (~alx741@181.196.68.9) (Ping timeout: 260 seconds) |
2021-09-17 16:06:17 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-09-17 16:10:25 +0200 | favonia | (~favonia@user/favonia) |
2021-09-17 16:11:39 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-09-17 16:13:05 +0200 | fef | (~thedawn@user/thedawn) (Quit: Leaving) |
2021-09-17 16:13:07 +0200 | Phantastes | (~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) (Quit: Client closed) |
2021-09-17 16:14:08 +0200 | Phantastes | (~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) |
2021-09-17 16:18:04 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection) |
2021-09-17 16:18:24 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) |
2021-09-17 16:18:24 +0200 | alx741 | (~alx741@186.178.108.187) |
2021-09-17 16:24:40 +0200 | zebrag | (~chris@user/zebrag) |
2021-09-17 16:25:57 +0200 | cawfee | (~root@2406:3003:2077:2758::babe) (Quit: WeeChat 3.2.1) |
2021-09-17 16:27:34 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-09-17 16:27:43 +0200 | <ldlework> | :O http://lambdacube3d.com/editor.html |
2021-09-17 16:31:07 +0200 | kenran | (~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version) |
2021-09-17 16:31:29 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
2021-09-17 16:35:55 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
2021-09-17 16:36:02 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2021-09-17 16:36:48 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) |
2021-09-17 16:37:08 +0200 | hiruji | (~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-09-17 16:37:44 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 16:38:34 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection) |
2021-09-17 16:38:41 +0200 | <ldlework> | ProofTechnique: https://hydra.nixos.org/job/nixpkgs/trunk/haskellPackages.lambdacube-engine.x86_64-linux/all |
2021-09-17 16:38:53 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) |
2021-09-17 16:39:49 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 16:42:22 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2021-09-17 16:45:01 +0200 | jess | (~jess@libera/staff/jess) |
2021-09-17 16:46:41 +0200 | tdammers | (~tdammers@77.109.72.177.res.static.edpnet.net) (Ping timeout: 265 seconds) |
2021-09-17 16:50:00 +0200 | hnOsmium0001 | (uid453710@id-453710.hampstead.irccloud.com) |
2021-09-17 16:51:22 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-09-17 16:55:31 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2021-09-17 16:57:16 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Ping timeout: 252 seconds) |
2021-09-17 17:01:59 +0200 | celeste | (~celeste@wsip-70-182-89-66.ok.ok.cox.net) |
2021-09-17 17:02:08 +0200 | celeste | __celeste |
2021-09-17 17:03:33 +0200 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2021-09-17 17:04:40 +0200 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) |
2021-09-17 17:05:04 +0200 | p_____ | (~dyeplexer@user/dyeplexer) |
2021-09-17 17:05:12 +0200 | p_____ | (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
2021-09-17 17:05:58 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-17 17:07:34 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:a20c:3ab6:8175:e3ff) (Quit: WeeChat 2.8) |
2021-09-17 17:07:54 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-09-17 17:10:10 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2021-09-17 17:12:06 +0200 | benin036932301 | (~benin@183.82.205.89) |
2021-09-17 17:12:29 +0200 | zmt00 | (~zmt00@user/zmt00) |
2021-09-17 17:13:11 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) (Read error: Connection reset by peer) |
2021-09-17 17:17:07 +0200 | benin036932301 | (~benin@183.82.205.89) (Ping timeout: 245 seconds) |
2021-09-17 17:19:42 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 17:23:38 +0200 | cawfee | (~root@2406:3003:2077:2758::babe) |
2021-09-17 17:28:37 +0200 | yauhsien_ | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 17:28:37 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
2021-09-17 17:30:25 +0200 | tdammers | (~tdammers@77.109.72.177.res.static.edpnet.net) |
2021-09-17 17:34:37 +0200 | yauhsien_ | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2021-09-17 17:34:55 +0200 | xff0x | (~xff0x@2001:1a81:52ad:c900:b704:3c1b:6bea:6e62) (Ping timeout: 260 seconds) |
2021-09-17 17:35:34 +0200 | mortemeur | (~mortemeur@pool-173-76-107-201.bstnma.fios.verizon.net) |
2021-09-17 17:36:25 +0200 | <monochrom> | On haskell-cafe, I think I lost my respect for Michael Turner when he reported that he didn't understand "(TTree -> TTree -> Tree) -> TTree -> TTree -> [TTree]", he only understood it after using a type alias for the "(TTree -> TTree -> Tree)". |
2021-09-17 17:37:51 +0200 | <Hecate> | I am resisting from posting on this thread |
2021-09-17 17:37:54 +0200 | <Hecate> | this is a hell thread |
2021-09-17 17:37:59 +0200 | slack1256 | (~slack1256@static-132-147-34-179.fl.cpe.atlanticbb.net) |
2021-09-17 17:38:10 +0200 | <monochrom> | I can respect using a few type aliases or defining a few component types in a very much more complex scenerio, but this is not one of the complex scenerios at all. |
2021-09-17 17:38:19 +0200 | <geekosaur> | AntC isn't exactly helping |
2021-09-17 17:38:25 +0200 | vysn | (~vysn@user/vysn) |
2021-09-17 17:38:56 +0200 | __celeste | (~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Remote host closed the connection) |
2021-09-17 17:39:04 +0200 | <slack1256> | On emacs + LSP, what is the M-x command name for searching a project for calls to a specific function? Currently I am using grep/ag but maybe LSP does that too? |
2021-09-17 17:39:04 +0200 | <monochrom> | On top of that, can you guess the name Turner chose for (TTree -> TTree -> Tree)? It's "Order". I have no idea why "order" makes sense for that. |
2021-09-17 17:39:13 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
2021-09-17 17:39:19 +0200 | __celeste | (~celeste@wsip-70-182-89-66.ok.ok.cox.net) |
2021-09-17 17:39:43 +0200 | <Clint> | fascinating |
2021-09-17 17:40:13 +0200 | <Hecate> | again, this is a hell thread |
2021-09-17 17:40:14 +0200 | <Hecate> | do not post |
2021-09-17 17:40:18 +0200 | <Hecate> | do not read |
2021-09-17 17:40:22 +0200 | __celeste | (~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Remote host closed the connection) |
2021-09-17 17:40:45 +0200 | __celeste | (~celeste@wsip-70-182-89-66.ok.ok.cox.net) |
2021-09-17 17:40:49 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2) |
2021-09-17 17:41:20 +0200 | <monochrom> | Turner asks "am I translating Haskell to C/C++"? My heart say yes, you're translating to the C/C++ culture, in which people feel that every function parameter type "needs" a typedef. |
2021-09-17 17:41:44 +0200 | xff0x | (~xff0x@2001:1a81:52ad:c900:b704:3c1b:6bea:6e62) |
2021-09-17 17:43:26 +0200 | <monochrom> | I would have lost less respect if he chose a more apt name, e.g., along the line of "TTreeCombiner". At least that's closer to the nature of TTree -> TTree -> Tree. |
2021-09-17 17:43:46 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 260 seconds) |
2021-09-17 17:45:03 +0200 | <janus> | what is a hell thread? urban dictionary gives a definition that doesn't make sense |
2021-09-17 17:45:21 +0200 | <monochrom> | "Order" is a very unhelpful name for that one, in fact very misleading, we say that "less than", "greater than or equal to" are "orders", not this. |
2021-09-17 17:45:47 +0200 | <monochrom> | So much for someone who keep asking for more "plain English" and then goes on to show how broken it is. |
2021-09-17 17:46:34 +0200 | <monochrom> | Oh, I think you have to take apart "hell" and "thread", understand each individually, and then just combine :) |
2021-09-17 17:46:39 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-09-17 17:46:42 +0200 | <monochrom> | Maybe "thread from hell" helps. |
2021-09-17 17:46:55 +0200 | <monochrom> | or fix the grammar, "hellish thread". |
2021-09-17 17:47:02 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 17:47:14 +0200 | <janus> | ah all right, i was overthinking it |
2021-09-17 17:47:35 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
2021-09-17 17:47:55 +0200 | <Hecate> | janus: yeah, it's a bad place |
2021-09-17 17:48:23 +0200 | <monochrom> | But yeah I'm not posting. |
2021-09-17 17:48:44 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 17:51:02 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
2021-09-17 17:51:47 +0200 | <monochrom> | My other angle is that Kmett started in a similar but worse initial condition too. Decades of C++ before trying Haskell. And he started way earlier, meaning even worse tutorials and books. |
2021-09-17 17:52:39 +0200 | <monochrom> | And yet he went on to understand everything and surpass it. Look at how much category-theoretic libraries he churns out that it is our turn to not understand! |
2021-09-17 17:52:59 +0200 | <geekosaur> | I think comparing most newcomers to Haskell can't very ewll be compared to Kmett, though |
2021-09-17 17:53:36 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
2021-09-17 17:54:07 +0200 | <monochrom> | You know, I'm very tempted to just plot a line between those two data points and conclude: You need worse tutorials to learn Haskell better. |
2021-09-17 17:54:40 +0200 | <monochrom> | Either that, or conclude that the old, "worse" tutorials such as the Gentle Introduction is actually better. |
2021-09-17 17:55:11 +0200 | <monochrom> | It may be that it is today's hand-holding tutorials that are worse. |
2021-09-17 17:55:16 +0200 | <ldlework> | I really think HFFP is a great way to go for people who have coded for a long time in non-functional languages. |
2021-09-17 17:55:21 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 17:55:29 +0200 | <ldlework> | It felt very much like brick-laying, which is what I appreciate from pedagogy in other domains. |
2021-09-17 17:55:46 +0200 | <ldlework> | It didn't assume I was a category theorist, just someone capable of understanding a new formal system. |
2021-09-17 17:56:22 +0200 | <monochrom> | I think Turner was following and complaining about HFFP when he said "talking down to me". (But I think he will neither confirm nor deny.) |
2021-09-17 17:57:05 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-09-17 17:57:14 +0200 | <ldlework> | huh, i wonder what passages made him feel that way |
2021-09-17 17:57:17 +0200 | mortemeur | (~mortemeur@pool-173-76-107-201.bstnma.fios.verizon.net) (Read error: Connection reset by peer) |
2021-09-17 17:57:27 +0200 | <monochrom> | This is wher AntC may be right, as much as you say that he's unhelpful. |
2021-09-17 17:57:39 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 17:57:59 +0200 | <ldlework> | Even if HFFP is not the best possible articulation of the approach, I think it's pedagogical structure is sound |
2021-09-17 17:58:00 +0200 | <geekosaur> | AntC's main problem is not his understanding but his presentation |
2021-09-17 17:58:09 +0200 | <monochrom> | No, I suspect not about any passage, but the whole plan of "start from square 1". |
2021-09-17 17:58:29 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2021-09-17 17:58:58 +0200 | <ldlework> | it seems contradictory to want an accessible pedagogy but interpret an assumption of nothing as condescension |
2021-09-17 17:59:01 +0200 | nctcf^ | (~nctcf@68.101.54.227) |
2021-09-17 17:59:24 +0200 | <monochrom> | Right? There are humble, modest people who recognize that they should start from square 1, so they are thankful when you do that to them. |
2021-09-17 17:59:28 +0200 | <ldlework> | I feel for Turner, but am really glad it jived with me. |
2021-09-17 17:59:32 +0200 | <ldlework> | yes! |
2021-09-17 17:59:53 +0200 | <monochrom> | And then there are proud people who deny that they should start from square 1, so they will hate you for doing that to them. |
2021-09-17 18:01:10 +0200 | <monochrom> | Turner did, for multiple times, remind us that he has so many decades of programming experience. |
2021-09-17 18:01:18 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) |
2021-09-17 18:01:23 +0200 | <monochrom> | I think someone who speaks like that is the proud kind. |
2021-09-17 18:01:57 +0200 | <janus> | someone who has a 12 line signature... |
2021-09-17 18:02:03 +0200 | <monochrom> | And of course, I should remind you that he never actually said it was HFFP, he never said which works he tried. |
2021-09-17 18:02:13 +0200 | <ldlework> | There is this nice video on youtube "Learn Haskell in One Video" and all it does is teach the core ML side of Haskell. |
2021-09-17 18:02:49 +0200 | <c_wraith> | I had about 20 years of experience programming when I first picked up haskell. And it was *hard*, but I loved it. Because I love learning new things. |
2021-09-17 18:02:54 +0200 | <lbseale_> | ldlework: that is a great video |
2021-09-17 18:03:05 +0200 | <lbseale_> | it was my starting point |
2021-09-17 18:03:22 +0200 | benin036932301 | (~benin@183.82.205.89) |
2021-09-17 18:03:26 +0200 | <c_wraith> | But if you don't come at it as "time to learn something new", it can be really frustrating to be expected to learn something actually new |
2021-09-17 18:03:39 +0200 | lbseale_ | lbseale |
2021-09-17 18:04:18 +0200 | <janus> | why even try to cater to people with that much experience, they are a tiny part of the market and they are not disadvantaged |
2021-09-17 18:04:45 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-17 18:04:54 +0200 | <ldlework> | i actually did try to give haskell a real go in the past a few times, but the jargon made me sleepy. HFFP's introduction with LC made me really get into the mood that I'm just learning a new formal system (pattern matching essentially) and that things like Functors and Monoids are just gonna be some algebraic laws (generic patterns). |
2021-09-17 18:05:11 +0200 | <monochrom> | And here is the thing. Two of his complaints are: "materials that assume I already know much", and "materials that talk down to me". See the paradox there? Even hypocrisy? |
2021-09-17 18:05:22 +0200 | <ldlework> | Then I got over the fact that they have opaque names, and just listened to what the author was telling me they are. |
2021-09-17 18:05:37 +0200 | proofofkeags_ | (~proofofke@205.209.28.54) |
2021-09-17 18:05:56 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2021-09-17 18:06:50 +0200 | <monochrom> | IMO when someone harps "plain English" so much, this is why. They are expecting the unsolvable, and they just assume that jargon is the problem, "plain English" can solve it. |
2021-09-17 18:07:04 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-17 18:07:30 +0200 | <ldlework> | I think that also, once HFFP got to Semigroups and was like "semigroups are like the generalization of addition" (or something to that effect) I was re-energized again with confidence that the opaque sounding typeclasses were just gonna be some general patterns, where the idea behind it is not all that complicated. |
2021-09-17 18:08:10 +0200 | benin036932301 | (~benin@183.82.205.89) (Ping timeout: 252 seconds) |
2021-09-17 18:08:42 +0200 | <ldlework> | I was actually excited to know what they were at that point. |
2021-09-17 18:09:38 +0200 | <janus> | think i will write a mail telling Turner that he must read Software Foundations first, since it is the foundation ;) |
2021-09-17 18:10:47 +0200 | <monochrom> | Ugh hahaha but please don't troll him! |
2021-09-17 18:11:04 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 252 seconds) |
2021-09-17 18:12:22 +0200 | rond_ | (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) |
2021-09-17 18:13:50 +0200 | <janus> | wow, Software Foundations has 6 volumes now! amazing |
2021-09-17 18:14:05 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 18:14:05 +0200 | <monochrom> | Wait what? Oh noes. |
2021-09-17 18:14:16 +0200 | <monochrom> | Is it competing with HFFP for length?! |
2021-09-17 18:15:04 +0200 | <monochrom> | Maybe I should adopt volume 2 as my textbook and curriculum. |
2021-09-17 18:15:47 +0200 | TPBP | (~TPBP@2001:67c:2628:647:12::83) |
2021-09-17 18:15:58 +0200 | <monochrom> | The course is named "principles of programming languages". My long-standing concern is "the class average is too high". I need something to make it harder. >:) |
2021-09-17 18:16:12 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection) |
2021-09-17 18:16:20 +0200 | <monochrom> | OK, the other long-standing concern is I teach too much Haskell. |
2021-09-17 18:16:44 +0200 | <monochrom> | Well, this solution fixes both! |
2021-09-17 18:17:28 +0200 | <monochrom> | And yeah I haven't harped Hoare triples as an approach to semantics for a long time. Maybe it's time to do it. |
2021-09-17 18:17:52 +0200 | econo | (uid147250@user/econo) |
2021-09-17 18:18:34 +0200 | <monochrom> | (Hoare triples are widely harped as one way to prove your program correct, not one way to define what the language means. It can do both, and Hoare certainly proposed both.) |
2021-09-17 18:19:38 +0200 | <raehik> | how do I package some data files (used in hspec tests) with a Stack+Cabal package? |
2021-09-17 18:19:43 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-17 18:20:06 +0200 | <janus> | i certainly would have been happy if i had had a Coq-based course available in uni instead of working with custom tools |
2021-09-17 18:20:07 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
2021-09-17 18:20:26 +0200 | <raehik> | I find recommendations for 'extra-source-files: folder/*' but, Stack appears to only allow files. No folders |
2021-09-17 18:21:19 +0200 | chris | (~chris@81.96.113.213) |
2021-09-17 18:21:23 +0200 | chris | Guest6232 |
2021-09-17 18:21:39 +0200 | <janus> | raehik: ** (double star) wild cards were added in cabal 2.4, are you using a stack based on that? |
2021-09-17 18:21:47 +0200 | <sm> | got a link ? |
2021-09-17 18:21:56 +0200 | <c_wraith> | Hoare triples kind of make it clear how tough it is to program based on mutability. |
2021-09-17 18:22:26 +0200 | <janus> | sm: https://cabal.readthedocs.io/en/3.4/cabal-package.html#pkg-field-data-files |
2021-09-17 18:22:29 +0200 | <raehik> | janus: I'm on Stack 2.7 / Cabal 3.6. I tried double star too on Stack, but it complains still. Cabal might be OK with one or both |
2021-09-17 18:22:44 +0200 | <sm> | that doc is for cabal files, janus |
2021-09-17 18:23:06 +0200 | <sm> | stack files have their own doc |
2021-09-17 18:23:15 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2021-09-17 18:23:37 +0200 | <janus> | sm: right, but doesn't stack use cabal for lots? i would assume that fields named similarily would have similar underpinnings |
2021-09-17 18:24:03 +0200 | <sm> | ok, if it's actually in your .cabal file you're on the right track. In that case I'd guess your stack needs upgrading |
2021-09-17 18:24:18 +0200 | <raehik> | I was especially confused because I'm using stack to generate my cabal file. And when I tried 'data/*', 'data/**', the generated Cabal file didn't include them |
2021-09-17 18:24:43 +0200 | <raehik> | the Stack side says "nothing found for this entry" and scrubs it from the similarly named Cabal filed |
2021-09-17 18:24:48 +0200 | <raehik> | s/filed/field |
2021-09-17 18:26:11 +0200 | <raehik> | (oops, I've been talking about Stack -- I mean hpack, that uses package.yaml) |
2021-09-17 18:26:19 +0200 | <sm> | hehe |
2021-09-17 18:26:36 +0200 | <sm> | and I've been mixing up raehik and janus |
2021-09-17 18:26:46 +0200 | <sm> | but we'll get there |
2021-09-17 18:27:25 +0200 | <raehik> | sm: hahaha no worries I was following |
2021-09-17 18:27:33 +0200 | <sm> | study the appropriate doc and all will make sense 🤞 |
2021-09-17 18:28:00 +0200 | <c_wraith> | yeah, hpack is a totally different thing. It generates cabal files, but that doesn't mean it supports all of cabal's ways of doing things |
2021-09-17 18:30:45 +0200 | chisui | (~chisui@200116b8686a18002a976267586344a5.dip.versatel-1u1.de) |
2021-09-17 18:32:21 +0200 | <raehik> | mmmmm sm you were right. it feels silly but I have to do 'extra-source-files: data/**/*' ... |
2021-09-17 18:33:06 +0200 | <janus> | raehik: it is the same in zsh, what did you expect? that ** would also match files? |
2021-09-17 18:33:06 +0200 | <raehik> | but I admit, it's more powerful and only feels silly because my mind has been rotted by poorly defined globbing and regexes |
2021-09-17 18:33:20 +0200 | <raehik> | janus: pretty much yes x) |
2021-09-17 18:33:49 +0200 | <janus> | raehik: they are useful, i'd recommend enabling them in the shell |
2021-09-17 18:34:22 +0200 | <janus> | saves you from using `find -type f -iname '*blabla*'` all over the place |
2021-09-17 18:37:44 +0200 | <janus> | though cabal doesn't support that feature, so maybe it is dangerous of me to compare them... |
2021-09-17 18:38:04 +0200 | <janus> | "** wildcards can only appear as the final path component before the file name (e.g., data/**/images/*.jpg is not allowed). If a ** wildcard is used, then the file name must include a * wildcard (e.g., data/**/README.rst is not allowed)." |
2021-09-17 18:39:02 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-09-17 18:39:10 +0200 | MQ-17J | (~MQ-17J@8.21.10.6) |
2021-09-17 18:39:21 +0200 | <raehik> | meh, the hpack readme defines it well enough |
2021-09-17 18:39:38 +0200 | <raehik> | it was surprising primarily because the same field name is treated differently in hpack & cabal |
2021-09-17 18:43:22 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 252 seconds) |
2021-09-17 18:49:19 +0200 | acidjnk | (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2021-09-17 18:49:56 +0200 | acidjnk | (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) |
2021-09-17 18:51:31 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-17 18:52:09 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) |
2021-09-17 18:53:48 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 265 seconds) |
2021-09-17 18:56:06 +0200 | Skyfire | (~pyon@user/pyon) (Ping timeout: 260 seconds) |
2021-09-17 18:57:18 +0200 | cheater | (~Username@user/cheater) |
2021-09-17 19:02:08 +0200 | parafactual | (~celeste@wsip-70-182-89-66.ok.ok.cox.net) |
2021-09-17 19:02:30 +0200 | __celeste | (~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Ping timeout: 265 seconds) |
2021-09-17 19:02:44 +0200 | rond_ | (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed) |
2021-09-17 19:03:31 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection) |
2021-09-17 19:03:55 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) |
2021-09-17 19:07:26 +0200 | TPBP | (~TPBP@2001:67c:2628:647:12::83) (Quit: Client closed) |
2021-09-17 19:09:09 +0200 | Guest70 | (~Guest70@p200300f7770495091b8e7aac2bb6dd42.dip0.t-ipconnect.de) |
2021-09-17 19:09:46 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 19:10:00 +0200 | Guest70 | (~Guest70@p200300f7770495091b8e7aac2bb6dd42.dip0.t-ipconnect.de) () |
2021-09-17 19:13:07 +0200 | chisui | (~chisui@200116b8686a18002a976267586344a5.dip.versatel-1u1.de) (Quit: Client closed) |
2021-09-17 19:15:15 +0200 | <ldlework> | Anyone know how to make blank-canvas accept remote traffic? |
2021-09-17 19:15:16 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-17 19:16:16 +0200 | tfeb | (~tfb@109.249.185.23) |
2021-09-17 19:17:00 +0200 | Guest6232 | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-09-17 19:18:45 +0200 | tfeb | tfb |
2021-09-17 19:18:46 +0200 | <ldlework> | figured it out |
2021-09-17 19:22:06 +0200 | mousey | (~sky@gateway/tor-sasl/mousey) |
2021-09-17 19:22:40 +0200 | <awpr> | I would be highly amused if the cellular automata thing turned out to be way faster by sending everything over a socket and rendering with canvas, compared to a natural implementation with Gloss |
2021-09-17 19:23:37 +0200 | <ldlework> | hehe |
2021-09-17 19:24:38 +0200 | tfb | (~tfb@109.249.185.23) (Quit: died) |
2021-09-17 19:25:49 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-17 19:26:55 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 260 seconds) |
2021-09-17 19:27:03 +0200 | <ldlework> | i feel like i've been teased with haskell GLSL eDSLs lol |
2021-09-17 19:28:59 +0200 | <ldlework> | lambdacube looks like the best one, but it uses a very old haskell and very old dependencies that don't work on Nix anymore |
2021-09-17 19:32:34 +0200 | chris | (~chris@81.96.113.213) |
2021-09-17 19:32:35 +0200 | chris | Guest3188 |
2021-09-17 19:32:48 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection) |
2021-09-17 19:37:19 +0200 | Guest3188 | (~chris@81.96.113.213) (Ping timeout: 252 seconds) |
2021-09-17 19:37:21 +0200 | vicfred | (~vicfred@user/vicfred) |
2021-09-17 19:38:20 +0200 | <cdsmith> | How would you feel if a library you wanted to use required a GHC plugin? Asking because I'm thinking of making HMock depend on https://hackage.haskell.org/package/if-instance. It would let me offer both good error messages (if there's a Show instance) and a more general API (by not requiring Show). |
2021-09-17 19:39:08 +0200 | <dminuoso> | Requiring a GHC plugin is an *very* high threshold. |
2021-09-17 19:39:35 +0200 | <dminuoso> | Unless this was crucial to the core functionality of it, I'd stay clear of it. |
2021-09-17 19:40:20 +0200 | <cdsmith> | Yeah. Maybe I can get away with a general API that requires Show and then an alternate package using the plugin |
2021-09-17 19:40:52 +0200 | parafactual | (~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Ping timeout: 245 seconds) |
2021-09-17 19:41:42 +0200 | <cdsmith> | This is for the explainable predicates. They are essentially (a -> Bool), except with the ability to explain why or why not. Right now, a lot of them require Show instances on a. I don't like that. |
2021-09-17 19:44:19 +0200 | System123 | (~System123@net-37-179-171-3.cust.vodafonedsl.it) |
2021-09-17 19:51:25 +0200 | max22- | (~maxime@2a01cb0883359800445667b961f4f8f5.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
2021-09-17 19:54:39 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
2021-09-17 20:01:54 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-09-17 20:02:36 +0200 | tlaxkit | (~hexchat@170.253.35.150) |
2021-09-17 20:03:12 +0200 | _xft0 | (~jaroslawj@185.234.208.208.r.toneticgroup.pl) |
2021-09-17 20:04:55 +0200 | slack1256 | (~slack1256@static-132-147-34-179.fl.cpe.atlanticbb.net) (Ping timeout: 252 seconds) |
2021-09-17 20:06:14 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2021-09-17 20:06:22 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection) |
2021-09-17 20:06:29 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-09-17 20:09:26 +0200 | sneedsfeed | (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Quit: Client closed) |
2021-09-17 20:10:50 +0200 | Phantastes | (~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) (Quit: Phantastes) |
2021-09-17 20:15:56 +0200 | parafactual | (~celeste@wsip-70-182-89-66.ok.ok.cox.net) |
2021-09-17 20:18:58 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-17 20:20:56 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
2021-09-17 20:23:37 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-09-17 20:24:04 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2021-09-17 20:26:36 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 20:30:16 +0200 | OutreEE | (~OutreEE@modemcable105.60-176-173.mc.videotron.ca) |
2021-09-17 20:31:28 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 268 seconds) |
2021-09-17 20:31:28 +0200 | aji | (~alex@prickle.ajitek.net) (Ping timeout: 268 seconds) |
2021-09-17 20:31:46 +0200 | aji | (~alex@prickle.ajitek.net) |
2021-09-17 20:31:47 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-17 20:31:56 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-09-17 20:32:07 +0200 | wrengr_away | (~wrengr@56.72.82.34.bc.googleusercontent.com) (Remote host closed the connection) |
2021-09-17 20:32:50 +0200 | TranquilEcho | (~grom@user/tranquilecho) |
2021-09-17 20:34:42 +0200 | ralu | (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 245 seconds) |
2021-09-17 20:34:56 +0200 | ralu | (~ralu@static.211.245.203.116.clients.your-server.de) |
2021-09-17 20:37:38 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
2021-09-17 20:37:38 +0200 | dyeplexer | (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
2021-09-17 20:38:29 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-09-17 20:39:07 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
2021-09-17 20:40:37 +0200 | theang | (~theang@fef109.internetdsl.tpnet.pl) (Ping timeout: 265 seconds) |
2021-09-17 20:40:48 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-17 20:40:48 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-17 20:40:48 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-17 20:41:06 +0200 | theang | (~theang@2a00:f41:5858:653e:e8e3:df9b:74cb:6565) |
2021-09-17 20:41:14 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
2021-09-17 20:43:20 +0200 | tlaxkit | (~hexchat@170.253.35.150) (Quit: Leaving) |
2021-09-17 20:43:52 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
2021-09-17 20:45:31 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-09-17 20:47:30 +0200 | Cajun | (~Cajun@user/cajun) (Quit: Client closed) |
2021-09-17 20:48:15 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
2021-09-17 20:50:00 +0200 | wrengr | (~wrengr@136.247.83.34.bc.googleusercontent.com) |
2021-09-17 20:52:05 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
2021-09-17 20:52:56 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-17 20:55:20 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-17 20:55:24 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 21:00:42 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-09-17 21:02:34 +0200 | yauhsien | (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2021-09-17 21:06:50 +0200 | MQ-17J | (~MQ-17J@8.21.10.6) (Ping timeout: 268 seconds) |
2021-09-17 21:09:21 +0200 | MQ-17J | (~MQ-17J@8.21.10.6) |
2021-09-17 21:12:02 +0200 | kenran | (~kenran@200116b82ba3ca004cc511249199c36d.dip.versatel-1u1.de) |
2021-09-17 21:12:43 +0200 | aegon | (~mike@174.127.249.180) |
2021-09-17 21:15:07 +0200 | tlaxkit | (~hexchat@170.253.35.150) |
2021-09-17 21:20:24 +0200 | theang | (~theang@2a00:f41:5858:653e:e8e3:df9b:74cb:6565) (Ping timeout: 268 seconds) |
2021-09-17 21:21:06 +0200 | theang | (~theang@fef109.internetdsl.tpnet.pl) |
2021-09-17 21:22:14 +0200 | tinhatcat | (~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) |
2021-09-17 21:23:11 +0200 | oxide | (~lambda@user/oxide) (Quit: oxide) |
2021-09-17 21:25:07 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
2021-09-17 21:25:27 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-17 21:27:45 +0200 | parafactual | (~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Remote host closed the connection) |
2021-09-17 21:28:30 +0200 | tinhatcat | (~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) (Quit: Leaving) |
2021-09-17 21:28:42 +0200 | <ProofTechnique> | cdsmith: Would IfCxt work for your purposes, or have you been down that road and found it not a good fit (it may also be bit-rotted)? |
2021-09-17 21:28:54 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-17 21:31:42 +0200 | wonko | (~wjc@62.115.229.50) (Ping timeout: 245 seconds) |
2021-09-17 21:34:01 +0200 | tinhatcat | (~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) |
2021-09-17 21:36:36 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2021-09-17 21:37:31 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-09-17 21:40:45 +0200 | <drewolson> | anyone have a good reference project that uses github actions to build a test a stack project, with a cache, and produce artifacts? |
2021-09-17 21:49:26 +0200 | <sm> | there is a better reference project somewhere, but hledger is a battle-tested one |
2021-09-17 21:52:16 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection) |
2021-09-17 21:59:08 +0200 | <dsal> | drewolson: Do you mean you want downloadable binaries from your project? I do that for docs and stuff, but the binaries don't seem to stick around. |
2021-09-17 21:59:17 +0200 | <dsal> | My github actions push binaries into cachix and I use them from there. |
2021-09-17 21:59:28 +0200 | <drewolson> | yes, i want the most recent build to have a downloadable binary |
2021-09-17 21:59:36 +0200 | <drewolson> | i was able to do this on gitlab with a very simple config |
2021-09-17 21:59:43 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
2021-09-17 21:59:54 +0200 | <maerwald> | I use cabal |
2021-09-17 22:00:01 +0200 | <maerwald> | but is pretty much the same |
2021-09-17 22:00:04 +0200 | <drewolson> | https://gist.github.com/drewolson/d052e54c306b6147c5a7f0e0f58cff15 |
2021-09-17 22:00:42 +0200 | <maerwald> | https://github.com/hasufell/stack2cabal/blob/master/.github/workflows/release.yaml |
2021-09-17 22:00:57 +0200 | <dsal> | drewolson: This does it: https://github.com/dustin/waitforsocket/blob/master/.github/workflows/haskell.yml |
2021-09-17 22:01:03 +0200 | <maerwald> | this gives you fully static binaries on linux |
2021-09-17 22:01:31 +0200 | <maerwald> | slightly outdated though |
2021-09-17 22:01:48 +0200 | <maerwald> | ghcup is now pre-installed in all environments I think |
2021-09-17 22:02:05 +0200 | <drewolson> | thanks |
2021-09-17 22:02:41 +0200 | <dsal> | I don't actually use these bins, so maerwald's probably produces something more usable. Mine does much less. I primarily just want stuff in cachix and to know if my tests have broken. |
2021-09-17 22:07:38 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-09-17 22:07:42 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-09-17 22:07:45 +0200 | _xft0 | (~jaroslawj@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal) |
2021-09-17 22:09:07 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds) |
2021-09-17 22:10:02 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 22:11:00 +0200 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-09-17 22:20:22 +0200 | chisui | (~chisui@200116b8686a1800fa65b73f3e7c071d.dip.versatel-1u1.de) |
2021-09-17 22:22:13 +0200 | hololeap | (~hololeap@user/hololeap) |
2021-09-17 22:24:04 +0200 | bradyt | (~bradyt@user/bradyt) |
2021-09-17 22:24:20 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-09-17 22:26:55 +0200 | michalz | (~michalz@185.246.204.37) (Remote host closed the connection) |
2021-09-17 22:27:09 +0200 | <bradyt> | i hate bash |
2021-09-17 22:27:13 +0200 | <bradyt> | and zsh |
2021-09-17 22:28:01 +0200 | <bradyt> | i want to append to a cli call like 0-4, 5-9, 10-14, 14-19, ... |
2021-09-17 22:28:11 +0200 | <bradyt> | so call the command multiple times |
2021-09-17 22:28:25 +0200 | <bradyt> | maybe passing in other arguments |
2021-09-17 22:28:42 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-17 22:28:42 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-17 22:28:42 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-17 22:29:01 +0200 | tinhatcat | (~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) (Quit: Leaving) |
2021-09-17 22:29:06 +0200 | <bradyt> | seems easier to do with haskell. time to learn some haskell shell thing? |
2021-09-17 22:29:22 +0200 | _xft0 | (~jaroslawj@185.234.208.208.r.toneticgroup.pl) |
2021-09-17 22:29:49 +0200 | <geekosaur> | maybe. there's several |
2021-09-17 22:30:46 +0200 | <geekosaur> | you have a few options: https://hackage.haskell.org/package/shh - https://hackage.haskell.org/package/shelly - https://hackage.haskell.org/package/turtle - https://hackage.haskell.org/package/shell-conduit |
2021-09-17 22:31:04 +0200 | tlaxkit | (~hexchat@170.253.35.150) (Ping timeout: 252 seconds) |
2021-09-17 22:31:16 +0200 | <bradyt> | hmm, how to compare |
2021-09-17 22:31:44 +0200 | <geekosaur> | were it me I'd just do it in shell, but then I've been doing shell since 1981 |
2021-09-17 22:32:42 +0200 | <bradyt> | maybe i'll just create a project and hard-code it as a Main.hs |
2021-09-17 22:32:56 +0200 | <bradyt> | probably start with "just do it in haskell" |
2021-09-17 22:32:57 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 268 seconds) |
2021-09-17 22:33:20 +0200 | <bradyt> | i keep wanting this 0-4, 5-9 thing pretty often |
2021-09-17 22:33:37 +0200 | <bradyt> | and haskell seems like the most pleasant way to do |
2021-09-17 22:34:07 +0200 | <carbolymer> | be prepared for some boilerplate tho |
2021-09-17 22:34:17 +0200 | pavonia | (~user@user/siracusa) |
2021-09-17 22:34:39 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.246) |
2021-09-17 22:37:24 +0200 | <bradyt> | `main = callCommand "echo hello"` seemed to work |
2021-09-17 22:37:46 +0200 | <bradyt> | M-x compile RET ghc Main.hs && ./Main RET |
2021-09-17 22:38:07 +0200 | <bradyt> | lol, now i have to remember how to write haskell |
2021-09-17 22:38:29 +0200 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) |
2021-09-17 22:38:33 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds) |
2021-09-17 22:38:41 +0200 | tlaxkit | (~hexchat@170.253.35.150) |
2021-09-17 22:38:46 +0200 | <bradyt> | main = do, ... do haust, ... |
2021-09-17 22:38:55 +0200 | Ram-Z | (~Ram-Z@li1814-254.members.linode.com) (Quit: ZNC - http://znc.in) |
2021-09-17 22:39:35 +0200 | pbrisbin | (~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Quit: WeeChat 3.2) |
2021-09-17 22:39:46 +0200 | <geekosaur> | "hast". unless it's "haßt" |
2021-09-17 22:39:59 +0200 | <geekosaur> | they were deliberately ambiguous |
2021-09-17 22:41:10 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2021-09-17 22:42:11 +0200 | Ram-Z | (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) |
2021-09-17 22:44:16 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-09-17 22:44:58 +0200 | System12_ | (~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) |
2021-09-17 22:45:48 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-09-17 22:47:19 +0200 | tlaxkit | (~hexchat@170.253.35.150) (Quit: Leaving) |
2021-09-17 22:48:40 +0200 | System123 | (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 252 seconds) |
2021-09-17 22:49:21 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-09-17 22:51:51 +0200 | Cajun | (~Cajun@user/cajun) |
2021-09-17 22:53:00 +0200 | <dibblego> | funny, I typically start with shell, then regret it, and go to .hs — and I am there right now |
2021-09-17 22:53:56 +0200 | kuribas | (~user@ptr-25vy0i7x8rtrl519tor.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2021-09-17 22:55:42 +0200 | fendor_ | (~fendor@78-2-181-45.adsl.net.t-com.hr) |
2021-09-17 22:56:21 +0200 | kenran | (~kenran@200116b82ba3ca004cc511249199c36d.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
2021-09-17 22:57:34 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-17 22:57:35 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-17 22:57:35 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-17 23:00:35 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-17 23:01:38 +0200 | <sm> | sadly I often start with hs, then regret it and go to bash |
2021-09-17 23:02:14 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
2021-09-17 23:02:18 +0200 | <sm> | of the haskell shell things, don't miss the one in Shake (cmd), it's excellent and you also have shake's dependency engine there if needed |
2021-09-17 23:02:48 +0200 | <sm> | also, is oil shell usable yet ? |
2021-09-17 23:02:55 +0200 | <monochrom> | OK so I finally broke my oath and posted to the hell thread. |
2021-09-17 23:03:02 +0200 | vysn | (~vysn@user/vysn) |
2021-09-17 23:03:07 +0200 | <geekosaur> | I generally have a pretty good idea of which language fits best beforehand these days. of course it's taken me decades to develop that to the point where I don't find myself switching languages mid-project |
2021-09-17 23:03:19 +0200 | <monochrom> | But it is only because to put the "some people are visual learners" myth to death. Cf https://www.youtube.com/watch?v=rhgwIhB58PA |
2021-09-17 23:03:28 +0200 | awpr | fetches popcorn to read the hell thread |
2021-09-17 23:03:36 +0200 | <sm> | also bradyt, python ? I found it best recently for something where neither bash nor hs was a fit |
2021-09-17 23:04:00 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
2021-09-17 23:04:19 +0200 | <monochrom> | That's all. I am not a conservative who says "the status quo is just fine". :) |
2021-09-17 23:04:32 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-09-17 23:04:48 +0200 | notzmv | (~zmv@user/notzmv) |
2021-09-17 23:05:05 +0200 | <geekosaur> | I'm also prone to use perl still but that's the price of being an Olde Phart :þ |
2021-09-17 23:05:32 +0200 | <geekosaur> | (and I still don't like python much) |
2021-09-17 23:06:59 +0200 | <sm> | I like the sound of the starlark variant. No good for system scripting though |
2021-09-17 23:13:16 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 23:14:36 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
2021-09-17 23:14:49 +0200 | <awpr> | I released a library last night with automatic deriving of pretty Haskell-value-syntax printing of any Generics-compatible type, incl. configurable syntax highlighting, optional unicode escaping, and smart line wrapping of long strings -- see https://hackage.haskell.org/package/portray-prettyprinter and https://hackage.haskell.org/package/portray |
2021-09-17 23:15:43 +0200 | geekosaur | wonders suddenly where hackagebot ended up after we left freenode |
2021-09-17 23:17:58 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-17 23:18:40 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 240 seconds) |
2021-09-17 23:20:24 +0200 | zfnmxt | (~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host) |
2021-09-17 23:20:24 +0200 | zfnmxt | (~zfnmxtzfn@user/zfnmxt) |
2021-09-17 23:23:14 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-09-17 23:23:28 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Excess Flood) |
2021-09-17 23:23:31 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) |
2021-09-17 23:23:38 +0200 | <awpr> | oh right, and automatically-derived structural diffs for better comparisons in tests, in `portray-diff` |
2021-09-17 23:23:46 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-09-17 23:24:17 +0200 | <carbolymer> | monochrom: which thread? |
2021-09-17 23:24:36 +0200 | <Boarders> | could someone tell me how to rely on a particular version of a library from github with cabal? Thanks! |
2021-09-17 23:24:51 +0200 | <sclv> | trying to understand the doctest ecosystem and i'm curious -- why do doctest runners prefer to use ghci instead of just emitting a proper executable to be run? |
2021-09-17 23:24:54 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
2021-09-17 23:24:56 +0200 | <sclv> | is there any special reason? |
2021-09-17 23:25:05 +0200 | <carbolymer> | dibblego: yeah, that what I usually do, then I look at the monster that came out from rewriting shell into haskell and I'm not sure that was the best way |
2021-09-17 23:25:28 +0200 | <monochrom> | The one that started as "Haskell's "historical futurism" needs better writing, not better tools" but now the subject line has mutated to several different variants. |
2021-09-17 23:25:32 +0200 | fiddlerwoaroof | (~fiddlerwo@user/fiddlerwoaroof) (Ping timeout: 245 seconds) |
2021-09-17 23:25:45 +0200 | <sclv> | context: i'm working on cabal's doctest support and it seems like a huge amount of the weird irritating complexity of doctest systems all stems from this choice to run doctests interactively |
2021-09-17 23:25:53 +0200 | <monochrom> | Or more simply, look for Michael Turner (original poster) :) |
2021-09-17 23:26:11 +0200 | <sclv> | michael turner is a ridiculous troll |
2021-09-17 23:27:01 +0200 | <sclv> | also yeah i was watching that talk and thinking "ok, this interactive experience with the compiler you're describing... that's the repl. you're describing the repl" |
2021-09-17 23:27:02 +0200 | fiddlerwoaroof | (~fiddlerwo@user/fiddlerwoaroof) |
2021-09-17 23:27:14 +0200 | <carbolymer> | monochrom: is this on discourse or where? |
2021-09-17 23:27:19 +0200 | <sclv> | haskell cafe |
2021-09-17 23:27:35 +0200 | <carbolymer> | right |
2021-09-17 23:27:37 +0200 | fr33domlover | (~fr33domlo@angeley.es) (Ping timeout: 245 seconds) |
2021-09-17 23:27:44 +0200 | <monochrom> | That reminds me, I haven't checked discourse today! :) |
2021-09-17 23:27:46 +0200 | <Boarders> | one thing I am amazed about is rust still doesn't have a repl |
2021-09-17 23:27:54 +0200 | fr33domlover | (~fr33domlo@angeley.es) |
2021-09-17 23:28:17 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2021-09-17 23:28:27 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-09-17 23:30:13 +0200 | <sclv> | again -- could really appreciate any reports from people familiar with haskell's doctest tools about why the ghci-based approach seems preferred? |
2021-09-17 23:38:25 +0200 | <Boarders> | what's the best way to compare two benchmark runs with criterion? |
2021-09-17 23:38:32 +0200 | System12_ | (~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) (Ping timeout: 268 seconds) |
2021-09-17 23:38:43 +0200 | <bradyt> | there |
2021-09-17 23:38:45 +0200 | <bradyt> | http://ix.io/3zcq/hs |
2021-09-17 23:38:53 +0200 | <bradyt> | so then i do `Main | less -R` |
2021-09-17 23:39:26 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-09-17 23:40:09 +0200 | <bradyt> | oh that `print x` is not needed |
2021-09-17 23:40:14 +0200 | System123 | (~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) |
2021-09-17 23:42:19 +0200 | System12_ | (~System123@net-37-179-171-3.cust.vodafonedsl.it) |
2021-09-17 23:43:15 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-17 23:45:54 +0200 | System123 | (~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) (Ping timeout: 260 seconds) |
2021-09-17 23:46:03 +0200 | Boarders | (sid425905@id-425905.lymington.irccloud.com) () |
2021-09-17 23:46:22 +0200 | Boarders | (sid425905@id-425905.lymington.irccloud.com) |
2021-09-17 23:46:24 +0200 | <Melvar> | With cabal, is there any tutorial on putting a non-fixed set of autogenerated modules into `exposed-modules` using a custom setup? Because it looks like `build-type: Configure` does not support this. |
2021-09-17 23:46:54 +0200 | <sclv> | you'll need to use Custom |
2021-09-17 23:46:58 +0200 | <sclv> | but _please_ don't do that! please! |
2021-09-17 23:47:01 +0200 | <Melvar> | Or at least an intro to Cabal-the-library, or what the hooks system actually means. |
2021-09-17 23:47:10 +0200 | <sclv> | its completely recommended against |
2021-09-17 23:48:11 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 268 seconds) |
2021-09-17 23:48:22 +0200 | wroathe | (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) |
2021-09-17 23:48:23 +0200 | wroathe | (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Changing host) |
2021-09-17 23:48:23 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-17 23:49:06 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-09-17 23:50:31 +0200 | <sclv> | if you want to see how to do it, here's a simple example https://github.com/kowainik/autopack -- but again, i'm going to urge you super strongly to never release a package that does this (i.e. only use this for proprietary packages at most). the exposed-modules is used directly for hackage, so doing this will make the hackage docs very useless, and generally make your package a Bad Citizen. |
2021-09-17 23:50:32 +0200 | <sclv> | and depending on why you want this, there is almost certainly a better way. |
2021-09-17 23:50:32 +0200 | <Melvar> | Okay then. The only alternative I see is to write a package.yaml and invoke hpack after generating the modules, because I do not want to write code to insert modules into the cabal file. |
2021-09-17 23:50:47 +0200 | <sclv> | ok, then write the package.yaml and invoke hpack |
2021-09-17 23:51:05 +0200 | <sclv> | or just write some code once and for all to generate the module names, then paste them into the cabal file |
2021-09-17 23:51:05 +0200 | <sm> | Boarders, quick and dirty but I like quickbench ! |
2021-09-17 23:51:53 +0200 | <sclv> | cabal files are designed to be a full interface manifest, which is why they don't expose wildcarding or the like |
2021-09-17 23:51:57 +0200 | <sclv> | for modules in particular |
2021-09-17 23:52:27 +0200 | <sm> | sclv: doctests are ghci commands, how might compiling them work ? |
2021-09-17 23:52:30 +0200 | <Melvar> | The actual problem: I have written a toy wayland library, and have now written a scanner for it which is obliged to generate one module per interface because there are otherwise name clashes. |
2021-09-17 23:52:55 +0200 | <sclv> | sm: i mean they're just a snippet of code, that generates a result that is shown, and then they compare the result vs the expected result |
2021-09-17 23:53:03 +0200 | <sclv> | so like... they'd turn into standard spec tests or the like? |
2021-09-17 23:53:04 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 252 seconds) |
2021-09-17 23:53:47 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-17 23:54:23 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-17 23:54:26 +0200 | <sclv> | Melvar: if you control the generation, I'd suggest just using better name munging :-) |
2021-09-17 23:54:27 +0200 | <ProofTechnique> | Boarders: I think Rust had a repl in the very early days |
2021-09-17 23:54:44 +0200 | <sclv> | sm: unless its common to have doctests using `:t` or `:i` or the like?? is it? |
2021-09-17 23:55:28 +0200 | <ProofTechnique> | It was called `rusti` or something like that |
2021-09-17 23:55:39 +0200 | <Melvar> | sclv: I don’t *want* to have hungarian notation on every request and event constructor, that’s what namespacing and qualification are for. |
2021-09-17 23:55:43 +0200 | <sm> | it sounds interesting. Some compilation delay but maybe a speedup overall ? that would be very welcome |
2021-09-17 23:56:11 +0200 | <sclv> | my main motivation is it eliminates the hardest part of the doctest runners, which is trying to match options to ghci etc perfectly |
2021-09-17 23:56:11 +0200 | <bradyt> | oops, more like x <- readProcess "task" ["status:pending", "count"] "" |
2021-09-17 23:56:22 +0200 | <sclv> | but also i'd imagine that its overall equally efficient |
2021-09-17 23:56:27 +0200 | <sclv> | if not moreso |
2021-09-17 23:56:29 +0200 | <sm> | i'd guess few projects use ghci commands in their doctests |
2021-09-17 23:56:41 +0200 | <ProofTechnique> | I guess there's also https://github.com/google/evcxr, now |
2021-09-17 23:56:54 +0200 | <sclv> | i wonder if its just a holdover from the python mentality doctests evolved from |
2021-09-17 23:57:54 +0200 | <sm> | currently doctests start too slowly too use, for me |
2021-09-17 23:58:02 +0200 | <Boarders> | I am trying to depend on this fork of containers: https://github.com/Boarders/containers - but the cabal file is in the subdirectory containers, does anyone know where the url of cabal.project should point to pick it up? |
2021-09-17 23:58:10 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-09-17 23:59:20 +0200 | <ProofTechnique> | https://cabal.readthedocs.io/en/3.4/cabal-project.html#specifying-packages-from-remote-version-con… Boarders |
2021-09-17 23:59:21 +0200 | <Boarders> | sm: I haven't tried quickbench, I'll have to see |
2021-09-17 23:59:37 +0200 | <ProofTechnique> | Same url, just specify subdir |
2021-09-17 23:59:56 +0200 | <Boarders> | thank you ProofTechnique (I have such a hard time finding stuff in the cabal docs, idk why) |