Home liberachat/#haskell: Logs Calendar

Logs on 2022-03-08 (liberachat/#haskell)

00:01:31 <worldhelloworld> scanr helped a bit with coming up with the definition, but for dropWhile finding it difficult .... been 3 days now lol
00:02:20 liz_ joins (~liz@2a00:23c5:9680:501:b62e:99ff:fee4:47fa)
00:04:59 <Axman6> worldhelloworld: so, acc can be a function, it doesn't have to be another list, so you can pass arguments to it. if you could pass in whether you've finished dropping and then not drop any more that might work
00:05:27 <Axman6> (this isn't a function I've written myself, at least not for a very long time so not too sure about that)
00:07:04 <worldhelloworld> @Axman6 `acc` is the accumulator - the one which holds the result after successive operations in fold ..... it's already inside the anonymous function .... not sure what you mean
00:07:04 <lambdabot> Unknown command, try @list
00:07:30 worldhelloworld1 joins (uid543174@id-543174.helmsley.irccloud.com)
00:07:43 <geekosaur> try not thinking of it as an accumulator but as a state which sometimes gets used as an accumulator
00:08:46 <Axman6> yes, acc can have any type you want
00:08:55 <liz_> :t foldr
00:08:56 <lambdabot> Foldable t => (a -> b -> b) -> b -> t a -> b
00:09:11 <Axman6> % :t foldr @[]
00:09:11 <yahb> Axman6: (a -> b -> b) -> b -> [a] -> b
00:09:47 <liz_> so b can be any type you like, including a function
00:10:37 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
00:12:56 <geekosaur> it can also for example be a tuple, if you need to carry around moe than one thing
00:13:09 <geekosaur> *more
00:13:50 <liz_> i sometimes use tuples for simple state which is then discarded by whatever function is using the fold
00:16:30 <liz_> i had an [Int] -> [Int] fold that used a tuple, bin2int = fst $ foldr (\b (n,pow) -> (n+b*pow,2*pow)) (0,1)
00:18:28 <worldhelloworld> I am not sure how to think of it in terms of state tbh - I don't think the hutton book has such examples that I can remember
00:20:51 <worldhelloworld> but if one were to think in terms of accumulators, just for curiosity, is the dropWhile easy to grasp? Or am I struggling more than normal? Just trying to gauge my understanding
00:20:54 lavaman joins (~lavaman@98.38.249.169)
00:21:44 <janus> what are people's opinions on upgrading packages in anticipation of the release of a dependency? for example, does it make sense to make a package compatible with ghc 9.2 even though it relies on cryptonite?
00:22:08 <janus> i could appreciate the argument that since it hasn't actaully been run, one shouldn't claim compatibility
00:23:20 <hpc> if you think only in terms of the semantics of the version numbers, it's a valid thing to do
00:23:27 <hpc> i personally wouldn't do it, for the very reason you mention
00:23:59 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
00:24:02 <janus> for cryptonite, there are PRs open that patch cryptonite to make it compatible. but when i see people overriding dependencies in comitted code, it makes me cringe
00:24:33 × InstX1_ quits (~Liam@2601:6c4:4080:3f80:b5e9:14a0:500e:3e39) (Ping timeout: 250 seconds)
00:24:34 <hpc> maybe you can test against those PRs?
00:24:36 <janus> i don't like comitting references to "replaced" dependencies because that code becomes stale as soon as the "real" upgrade happens
00:25:08 <hpc> if the PRs would be a minor version bump i think you're in the clear
00:25:26 <janus> hpc: what do you mean by testing? i am referring to stuff like this https://github.com/aesiniath/http-streams/pull/130/files
00:25:31 <hpc> and if it breaks after you can make your own updates to fix it
00:26:05 <hpc> build it yourself with those PRs merged in, and test against that
00:26:12 <hpc> however you test your package
00:26:42 <janus> right, i also think that it is a useful compromise to test with source-repository-package, but *not* commit that override
00:26:43 <hpc> a "what-if" build of the dependencies, as it were
00:27:18 <janus> my problem is that the PR description then becomes more complicated, since you have to explain to the repo owner how to 'override' the dependency and the anticipation and so on...
00:27:43 <hpc> only if they want to use those PRs
00:28:09 <hpc> otherwise the constraints of the released cryptonite package prevent using 9.2 anyway i assume?
00:28:49 <hpc> so pre-loosening the constraints doesn't break things in the now
00:28:51 <janus> yeah, the currently released cryptonite is unbuildable on 9.2 due to it's dependency on memory/foundation
00:28:56 <hpc> and this testing is just to prove it won't break things in the future
00:29:26 × jgeerds quits (~jgeerds@55d4548e.access.ecotel.net) (Read error: Connection reset by peer)
00:29:35 <janus> it becomes even more involved with CI integration, because i speculate that some people don't want to merge code that isn't being exercised in CI
00:29:39 jgeerds joins (~jgeerds@55d4548e.access.ecotel.net)
00:29:53 <janus> so they wouldn't merge a bytestring bump that allows 0.11 until 9.2 is exercised on CI...
00:32:26 niekvandepas joins (~niekvande@77-161-122-185.fixed.kpn.net)
00:33:02 <janus> hpc: what do you mean by "only if they want to use those PRs"? let's say the PR allows bytestring 0.11. would 'using the PR' mean compiling with GHC 9.2? and you're saying it could be allowed by the bounds even though overriden dependencies are not committed?
00:34:10 <worldhelloworld> The way that book describes fold is in two ways 1) Replacing the cons operator by the function 2) The accumulator value method , taking the head and processing recursively ....... Is there another way to think about folds?
00:34:30 × unyu quits (~pyon@user/pyon) (Quit: WeeChat 3.4)
00:34:33 <hpc> janus: it would mean they did the same thing you did
00:34:50 <hpc> doing their own build of that dependency with some stuff changed from what's on hackage
00:35:24 alMalsamo is now known as lumberjack123
00:36:08 <hpc> (which you don't need to support in your package, they're taking on the making-it-work burden themselves when they do that)
00:37:18 × niekvandepas quits (~niekvande@77-161-122-185.fixed.kpn.net) (Ping timeout: 272 seconds)
00:37:23 tommd joins (~tommd@97-120-41-123.ptld.qwest.net)
00:38:23 <monochrom> There is no other way. In fact the second way is just a lousier way to say the first.
00:39:04 <hpc> worldhelloworld: the first way generalizes way better too
00:39:06 <hpc> :t maybe
00:39:07 <lambdabot> b -> (a -> b) -> Maybe a -> b
00:39:19 <hpc> worldhelloworld: maybe is just "replacing the Just" and "replacing the Nothing"
00:39:25 <hpc> :t either
00:39:26 <lambdabot> (a -> c) -> (b -> c) -> Either a b -> c
00:39:28 <hpc> etc
00:39:40 <monochrom> The first way though still has the problem of leaving it ambiguous what happens to infinite list.
00:40:18 <hpc> it's not ambiguous
00:40:39 <hpc> it just does whatever an infinite chain of that function would do
00:40:45 <monochrom> Well, I was being charitable.
00:40:53 <hpc> :P
00:41:03 <Axman6> worldhelloworld: is this homework?
00:41:07 × ishutin quits (~ishutin@92-249-150-139.static.digikabel.hu) (Ping timeout: 272 seconds)
00:41:20 <Axman6> the dropWhile thing
00:41:33 <monochrom> Read literally, it implies that if you have infinitely many cons, then there is infinitely much work to be done.
00:41:37 <worldhelloworld> @axman6 - no trying to solve it for myself, got done with Uni way back
00:41:37 <lambdabot> Unknown command, try @list
00:41:52 <Axman6> ok, great, means we can be a bit more helpful
00:42:13 <monochrom> which is incompatible with how things unfold (pun!) in Haskell
00:42:17 ishutin joins (~ishutin@92-249-193-65.pool.digikabel.hu)
00:43:09 <hpc> monochrom: that is only the case strictly speaking (more pun!)
00:43:33 <worldhelloworld> the problem I have trying to conceptualise fold with replacing cons (:) operator is how does one know which side of the cons operator goes where in ... say an anonymous function (\a b -> do something)
00:43:57 <hpc> worldhelloworld: give that lambda a name - say, f
00:44:10 <hpc> worldhelloworld: now you have your list, a : (b : c)
00:44:11 <Axman6> @msg lambdabot > let everySecond xs = (foldr (\a acc keep -> if keep then a : acc (not keep) else acc (not keep)) (\_keep -> []) xs) True in everySecond [1..10]
00:44:12 <lambdabot> Not enough privileges
00:44:14 <Axman6> uh
00:44:23 <monochrom> x:xs = (:) x xs. Replace that (:) there. Not ambiguous.
00:44:29 <hpc> worldhelloworld: after you fold, it becomes a `f` (b `f` c)
00:44:38 <Axman6> Well good thing I got that right on the first try!
00:44:45 <Axman6> > let everySecond xs = (foldr (\a acc keep -> if keep then a : acc (not keep) else acc (not keep)) (\_keep -> []) xs) True in everySecond [1..10]
00:44:46 <lambdabot> [1,3,5,7,9]
00:44:53 <monochrom> Therefore, after replacement, (\a b -> do something) x xs. You do the math.
00:45:11 unyu joins (~pyon@user/pyon)
00:45:23 <Axman6> worldhelloworld: here's an example of using foldr where acc is a function
00:45:49 <Axman6> :t foldr `asAppliedTo` (\a acc keep -> if keep then a : acc (not keep) else acc (not keep))
00:45:50 <lambdabot> Foldable t => (a -> (Bool -> [a]) -> Bool -> [a]) -> (Bool -> [a]) -> t a -> Bool -> [a]
00:46:11 <monochrom> Err "x:xs" is a bad example.
00:46:12 <Axman6> % :t foldr @[] `asAppliedTo` (\a acc keep -> if keep then a : acc (not keep) else acc (not keep)) -- to make the type a little simpler
00:46:12 <yahb> Axman6: ; <interactive>:1:11: error: Variable not in scope: asAppliedTo :: ((a0 -> b0 -> b0) -> b0 -> [a0] -> b0) -> (a1 -> (Bool -> [a1]) -> Bool -> [a1]) -> t
00:46:42 <monochrom> x : y : z : [] = (:) x ((:) y ((:) z [])). Replace all those (:)s there.
00:47:02 <Axman6> urgh - mniip can we get asAppliedTo, asTypeOf etc added to yahb? they're so useful in here
00:47:39 <monochrom> (\a b -> do something) x ((\a b -> do something) y ((\a b -> do something) z ???))...) where ??? is whatever replaces [].
00:48:31 <dibblego> (:) is right-associative, add parens if it helps
00:48:43 <hpc> worldhelloworld: by the way, take all of these examples and put them into a file and format it
00:49:02 <hpc> irc is not an ideal medium for these sorts of code snippets
00:49:26 GIngeh joins (~GIngeh@203.62.28.64)
00:49:27 <hpc> (formatting will probably include breaking out parts of it and giving them names)
00:49:28 <worldhelloworld> good idea ... my brain is unable to process it right now
00:49:44 <hpc> (names make all code better, even if they're just a b c)
00:50:59 <worldhelloworld> yea, easier to understand for the mental model
00:51:02 <GIngeh> @pl (\target -> listToMaybe . map (\[x,y] -> (x,y)) . filter (\x -> sum x == target) . combinations 2)
00:51:02 <lambdabot> (line 1, column 33):
00:51:02 <lambdabot> unexpected "["
00:51:02 <lambdabot> expecting pattern
00:52:16 <GIngeh> @pl \target -> listToMaybe . map (\ [x,y] -> (x,y)) . filter (\x -> sum x == target) . combinations 2
00:52:16 <lambdabot> (line 1, column 33):
00:52:16 <lambdabot> unexpected "["
00:52:16 <lambdabot> expecting pattern
00:52:49 cynomys joins (~cynomys@user/cynomys)
00:53:25 × cynomys quits (~cynomys@user/cynomys) (Client Quit)
00:53:36 <geekosaur> you can't really make that part pointfree
00:53:37 <Axman6> > let everySecond xs = (foldr (\a acc keep -> if keep then a : acc (not keep) else acc (not keep)) (\_keep -> []) {- <- this is acc -} xs {- <- this provedes each a -}) True {- <- this is the inital keep -} in everySecond [1..10] -- worldhelloworldthis might be useful to study, with comments added now
00:53:39 <lambdabot> [1,3,5,7,9]
00:54:10 <worldhelloworld> It's funny because i picked up the recursive cases really fast, but folds just got to me
00:54:19 <worldhelloworld> hmm will note it down
00:54:31 <Axman6> @pl \target -> listToMaybe . map (\ xs -> (xs!!0,xs!!1)) . filter (\x -> sum x == target) . combinations 2 -- hack for pl?
00:54:31 <lambdabot> ((listToMaybe . map (liftM2 (,) (!! 0) (!! 1))) .) . (. combinations 2) . filter . (. sum) . (==)
00:55:03 vysn joins (~vysn@user/vysn)
00:55:04 <geekosaur> maybe hork instead of hack :þ
00:55:12 <liz_> lambdabot can do eta reduction? :o
00:55:20 <geekosaur> then again hat describes most of pl's output
00:56:04 <Axman6> worldhelloworld: the thing to take note of is the function we give to foldr here is taking three things: the current value in the list, what to do next, and some state that is uses, and passes on, to decide what to do with this particular a
00:56:09 <monochrom> If you understand recursion, you can understand foldr by using recursion to reinvent it yourself.
00:56:39 <hpc> to some extent, foldr /is/ recursion for lists
00:56:43 <Axman6> liz_: pl is short for pointless, a pun on making things pointfree, because it often doesn't improve code at all
00:57:02 <GIngeh> oh lord
00:57:04 <hpc> but that's a whole other thing ;)
00:57:06 <GIngeh> yeah I'm not gonna bother trying to use that
00:57:08 <Axman6> hpc: to some extent, or it is univeral?
00:57:11 <dibblego> > foldr (++) [] [[1,2,3], [4,5,6]] -- insert (++) in every (:) and [] in []
00:57:12 <lambdabot> [1,2,3,4,5,6]
00:57:22 <worldhelloworld> @monochrom thanks for making me feel I don't even understand recursion :P
00:57:22 <lambdabot> Unknown command, try @list
00:57:23 <hpc> Axman6: to the entire extent :P
00:57:29 <Axman6> :)
00:57:50 GIngeh is now known as Gingeh
00:57:59 × Gingeh quits (~GIngeh@203.62.28.64) (Quit: Client closed)
00:58:22 <geekosaur> we call it "pl" ("pointless") for a reason :)
00:58:32 <hpc> worldhelloworld: if it makes you feel better, the entire field of math doesn't even understand real numbers
00:58:34 <geekosaur> and even so that's one of ts cleaner outputs
00:58:41 <geekosaur> *its
00:58:51 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
00:58:54 <geekosaur> oh they left already
00:59:00 meinside joins (uid24933@id-24933.helmsley.irccloud.com)
00:59:17 <liz_> it sounds very funny then
00:59:22 alp joins (~alp@user/alp)
00:59:31 <hpc> you're further in the weeds here than hardly any programmer ever gets
00:59:43 <hpc> but they're really cool weeds
00:59:50 <monochrom> Hell I think most people understand recursion less than they think.
01:00:04 <jackdk> I understand recursion as much as I understand recursion
01:00:23 <monochrom> I recently proved that well-founded induction justifies well-founded recursive definitions.
01:00:29 cynomys joins (~cynomys@user/cynomys)
01:00:34 <worldhelloworld> hpc not sure what that means about real numbers, but I presume it must be something fancy
01:01:09 <monochrom> I think I found out that no matter how you dice it, some kind of choice axiom is needed.
01:01:13 <worldhelloworld> monochrom am I a case in point?
01:01:14 yauhsien joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
01:01:14 machinedgod joins (~machinedg@24.105.81.50)
01:01:47 <geekosaur> you have more justification than "most people", I suspect
01:01:50 <hpc> worldhelloworld: just that fundamental math is deceptively tricky
01:02:01 × cynomys quits (~cynomys@user/cynomys) (Client Quit)
01:02:06 <Axman6> > let takeEnd n0 xs = fst $ foldr (\a (ys,n) -> if n <= 0 then (ys, n) else (a:ys, n-1)) ([],n0) xs in takeEnd 3 [1..10]
01:02:09 <lambdabot> [8,9,10]
01:02:09 <worldhelloworld> fair enough
01:02:10 × Tuplanolla quits (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.)
01:02:10 cynomys joins (~cynomys@user/cynomys)
01:02:12 <monochrom> I checked a set theory textbook, it handwaved away the involvement of choice, as in, it avoided saying that choice is needed.
01:02:20 × burnsidesLlama quits (~burnsides@rrcs-76-81-82-250.west.biz.rr.com) (Remote host closed the connection)
01:02:28 <monochrom> I feel like the authors were not aware.
01:02:43 <liz_> in my experience, the axiom of choice only comes up in extremely rigorous texts
01:02:57 <monochrom> By extension, if certain authors of a certain set theory textbook were not aware, perhaps a lot of mathematicians neither.
01:03:03 × cynomys quits (~cynomys@user/cynomys) (Client Quit)
01:03:18 <hpc> worldhelloworld: there's a joke that real analysis should be called complex analysis due to how difficult it is and how many problems aren't solvable
01:03:30 cynomys joins (~cynomys@user/cynomys)
01:03:39 <hpc> worldhelloworld: and complex numbers should be called rational numbers because they have so many fewer edge cases
01:03:42 <hpc> etc etc
01:03:52 <hpc> (the whole numeric hierarchy gets renamed)
01:03:53 <worldhelloworld> haha that sounds funny, even though I'm unable to understand the depths of it
01:04:00 <liz_> complex analysis is no cakewalk either though x_x
01:04:27 <hpc> heh, yeah
01:04:33 × cynomys quits (~cynomys@user/cynomys) (Client Quit)
01:04:52 <Axman6> hypercomplex analysis
01:05:15 <hpc> my formal learning ended just before linear algebra
01:05:31 <hpc> partially due to bad teachers and partially due to bad teaching
01:05:48 × yauhsien quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
01:05:49 <worldhelloworld> how did you manage to be self taught as much?
01:06:02 <hpc> i wasn't able to independently figure out what the actual fundamental stuff was, and all the classes ever did was drill how to solve eigenvectors and such
01:06:12 <liz_> i have a masters degree in maths and i still struggle with real/complex analysis a lot
01:06:34 <hpc> worldhelloworld: when i started college i tried learning python after being stuck with java all through HS
01:06:44 <hpc> quickly realized i was too stupid for python, and learned haskell instead
01:06:55 <hpc> it was way easier, ghc does a lot of thinking for me
01:07:01 <geekosaur> this sounds like me :þ
01:07:02 <hpc> then i just followed the concepts
01:07:20 <hpc> people say things here, i google them, follow wikipedia links, mess with them in ghci, and ask questions
01:07:41 <worldhelloworld> I, unfortunately, learned python a bit, now I am trying to unlearn it to learn haskell - it's more difficult
01:07:59 <hpc> yeah, try unlearning java sometime, it's even harder
01:08:12 mvk joins (~mvk@2607:fea8:5cc3:7e00::45ee)
01:08:15 <worldhelloworld> :)
01:08:19 <hpc> it took me a month to get to an irc bot that could echo back what i sent it
01:08:20 <geekosaur> except I have some baggage like never quite trusting myself at math because of some horrific early "schooling"
01:08:47 <liz_> this is interesting to hear about, because my introduction to haskell was quite formal; a professor recommended it to me while we were discussing semigroup theory
01:09:08 <hpc> and then it barely worked at that, i think the early versions could only run for a few days at a time before getting memory-killed
01:09:42 Sgeo_ joins (~Sgeo@user/sgeo)
01:10:10 <monochrom> I recommend "Linear Algebra Done Right" for a non-computational, putting-the-algebra-back-into-linear-algebra explanation of linear algebra.
01:10:36 <hpc> 3b1b was what finally got linear algebra's concepts in my head
01:10:43 <hpc> but by then it was too late to feel like anything but work
01:10:47 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:10:48 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
01:10:53 × jgeerds quits (~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 272 seconds)
01:11:04 <worldhelloworld> monochrom - how approachable is it for someone out of touch with academics?
01:11:35 <worldhelloworld> hpc whats 3b1b?
01:11:48 <hpc> https://www.youtube.com/c/3blue1brown
01:11:57 <monochrom> For example, transpose is really defined by an adjunction. <T v, w> = <v, (transpose T) w>
01:11:57 <worldhelloworld> oh that channel - got it
01:12:12 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 240 seconds)
01:12:40 <monochrom> It also has a no-matrix proof that eigenthings exist.
01:12:51 <monochrom> Hell, no-determinant too.
01:13:11 <hpc> ooh, nice
01:13:17 <hpc> i hated calculating those
01:13:24 <hpc> even computers hate calculating thoses
01:13:44 da39a3ee5e6b4b0d joins (~textual@171.5.29.46)
01:13:56 <hpc> it's like the math version doing lines on the chalkboarad for detention
01:14:48 <worldhelloworld> I'm afraid I havent read as much as you guys, couldn't even read Gilbert Strang .... but someday
01:15:00 <hpc> i haven't read gilbert strang :P
01:15:36 <worldhelloworld> I assumed it's a good book so many/most must have
01:16:49 <liz_> if you ever wanted to dip your toes in more formal theory, then
01:16:53 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:16:54 <liz_> whoops, mispressed enter
01:17:26 <liz_> I. N. Herstein's "Topics in Algebra" has good sections on vector spaces and linear transformations
01:18:37 <worldhelloworld> Interesting .... I am too rusty, that sounds like something rigourous, hopefully in due time
01:18:41 <worldhelloworld> thanks though
01:22:17 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
01:25:07 × alp quits (~alp@user/alp) (Remote host closed the connection)
01:25:29 alp joins (~alp@user/alp)
01:28:08 <romesrf> night everyone
01:28:12 × romesrf quits (~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4)
01:29:02 <worldhelloworld> nighty
01:29:37 × kimjetwav quits (~user@2607:fea8:2363:8f00:3065:9fc7:d58e:fc3e) (Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
01:30:04 kimjetwav joins (~user@2607:fea8:2363:8f00:3065:9fc7:d58e:fc3e)
01:30:44 × DNH quits (~DNH@2a02:8108:1100:16d8:598a:8b0b:9405:6e26) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:34:01 × da39a3ee5e6b4b0d quits (~textual@171.5.29.46) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:35:35 × alp quits (~alp@user/alp) (Ping timeout: 268 seconds)
01:45:16 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
01:45:33 img joins (~img@user/img)
01:46:07 × tommd quits (~tommd@97-120-41-123.ptld.qwest.net) (Ping timeout: 256 seconds)
02:00:45 × unyu quits (~pyon@user/pyon) (Quit: brb)
02:01:10 × gentauro quits (~gentauro@user/gentauro) (Ping timeout: 256 seconds)
02:01:54 × kimjetwav quits (~user@2607:fea8:2363:8f00:3065:9fc7:d58e:fc3e) (Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
02:02:29 kimjetwav joins (~user@2607:fea8:2363:8f00:3065:9fc7:d58e:fc3e)
02:03:22 unyu joins (~pyon@user/pyon)
02:03:48 justsomeguy joins (~justsomeg@user/justsomeguy)
02:07:30 da39a3ee5e6b4b0d joins (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e)
02:07:45 gentauro joins (~gentauro@user/gentauro)
02:17:16 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
02:18:36 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
02:21:50 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8)
02:23:44 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
02:23:44 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
02:23:44 wroathe joins (~wroathe@user/wroathe)
02:25:12 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
02:34:02 × worldhelloworld quits (~c1utt4r@vmi275462.contaboserver.net) (Ping timeout: 256 seconds)
02:34:20 x_kuru joins (~xkuru@user/xkuru)
02:35:19 niekvandepas joins (~niekvande@77-161-122-185.fixed.kpn.net)
02:37:06 caildddddt^ joins (~cailddddd@50.232.121.75)
02:37:30 cheater1__ joins (~Username@user/cheater)
02:37:34 × little_mac quits (~little_ma@2601:410:4300:3ce0:4154:7a97:7f52:6596) (Remote host closed the connection)
02:37:39 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 272 seconds)
02:37:39 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
02:37:45 cheater1__ is now known as cheater
02:37:51 little_mac joins (~little_ma@2601:410:4300:3ce0:8cff:8f3a:46d8:f6ed)
02:38:34 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
02:41:06 × liz quits (~liz@2a00:23c5:9680:501:f2d5:bfff:fe6a:5af4) (Remote host closed the connection)
02:41:42 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
02:41:58 × niekvandepas quits (~niekvande@77-161-122-185.fixed.kpn.net) (Ping timeout: 256 seconds)
02:48:03 aeka` joins (~aeka@pool-100-4-208-71.albyny.fios.verizon.net)
02:48:06 × aeka quits (~aeka@user/hiruji) (Ping timeout: 260 seconds)
02:49:00 × neurocyte0917090 quits (~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
02:51:57 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
02:52:11 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
02:55:53 merijn joins (~merijn@c-001-002-007.client.esciencecenter.eduvpn.nl)
02:57:54 × aeka` quits (~aeka@pool-100-4-208-71.albyny.fios.verizon.net) (Ping timeout: 260 seconds)
03:04:44 × Unicorn_Princess quits (~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection)
03:08:07 × kimjetwav quits (~user@2607:fea8:2363:8f00:3065:9fc7:d58e:fc3e) (Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
03:08:17 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 256 seconds)
03:08:22 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
03:09:46 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
03:25:06 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
03:28:08 geekosaur joins (~geekosaur@xmonad/geekosaur)
03:28:26 × merijn quits (~merijn@c-001-002-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
03:34:20 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Remote host closed the connection)
03:34:37 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
03:41:37 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
03:42:53 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
03:44:05 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
03:48:50 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
03:51:37 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
03:52:25 emf joins (~emf@c-73-97-137-43.hsd1.wa.comcast.net)
03:53:02 × emf quits (~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Client Quit)
03:54:41 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Remote host closed the connection)
03:55:00 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
03:55:01 emf joins (~emf@c-73-97-137-43.hsd1.wa.comcast.net)
03:55:18 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
03:55:36 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
03:59:17 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
03:59:46 emf_ joins (~emf@2620:10d:c090:400::5:8ba5)
04:01:28 × emf quits (~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Ping timeout: 250 seconds)
04:02:27 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
04:02:44 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
04:02:59 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50)
04:05:56 geekosaur joins (~geekosaur@xmonad/geekosaur)
04:10:02 Erutuon joins (~Erutuon@user/erutuon)
04:11:55 mbuf joins (~Shakthi@122.174.51.86)
04:17:46 × da39a3ee5e6b4b0d quits (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:20:07 × liz_ quits (~liz@2a00:23c5:9680:501:b62e:99ff:fee4:47fa) (Quit: Leaving)
04:20:16 niekvandepas joins (~niekvande@77-161-122-185.fixed.kpn.net)
04:24:52 × niekvandepas quits (~niekvande@77-161-122-185.fixed.kpn.net) (Ping timeout: 250 seconds)
04:25:17 × mvk quits (~mvk@2607:fea8:5cc3:7e00::45ee) (Ping timeout: 240 seconds)
04:28:36 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
04:29:04 × kayvank quits (~user@52-119-115-185.PUBLIC.monkeybrains.net) (Ping timeout: 256 seconds)
04:33:17 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
04:35:13 × caildddddt^ quits (~cailddddd@50.232.121.75) (Remote host closed the connection)
04:36:13 × wroathe quits (~wroathe@user/wroathe) (Quit: leaving)
04:36:51 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
04:36:51 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
04:36:51 wroathe joins (~wroathe@user/wroathe)
04:43:47 kayvank joins (~user@52-119-115-185.PUBLIC.monkeybrains.net)
04:46:39 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
04:53:45 × worldhelloworld1 quits (uid543174@id-543174.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
04:59:40 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
05:00:02 da39a3ee5e6b4b0d joins (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e)
05:10:10 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
05:12:37 × aweinstock quits (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (Ping timeout: 240 seconds)
05:13:26 × fryguybob quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Ping timeout: 272 seconds)
05:14:34 fryguybob joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
05:14:42 aweinstock joins (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com)
05:23:35 × kaph quits (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 272 seconds)
05:25:10 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
05:28:35 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
05:33:56 bahamas joins (~lucian@84.232.140.52)
05:35:40 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
05:40:34 × ajb quits (~ajb@cupid.whatbox.ca) (Quit: bye)
05:41:26 × res0nat0r08 quits (~Fletch@dia.whatbox.ca) (Quit: The Lounge - https://thelounge.chat)
05:41:48 coot joins (~coot@213.134.190.95)
05:45:39 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
05:45:47 kaph joins (~kaph@151.47.91.217)
05:46:02 jpds joins (~jpds@gateway/tor-sasl/jpds)
05:49:47 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
05:52:25 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
05:52:53 azimut joins (~azimut@gateway/tor-sasl/azimut)
05:53:15 nattiestnate joins (~nate@202.138.250.13)
05:59:24 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
06:01:02 × nattiestnate quits (~nate@202.138.250.13) (Quit: WeeChat 3.4)
06:01:12 × emf_ quits (~emf@2620:10d:c090:400::5:8ba5) (Quit: emf_)
06:02:43 zincy_ joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com)
06:02:48 kaph_ joins (~kaph@151.47.91.217)
06:03:33 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
06:03:38 × kaph quits (~kaph@151.47.91.217) (Read error: Connection reset by peer)
06:07:21 × zincy_ quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Ping timeout: 256 seconds)
06:09:14 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:13:20 × bahamas quits (~lucian@84.232.140.52) (Ping timeout: 256 seconds)
06:13:26 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
06:13:45 azimut joins (~azimut@gateway/tor-sasl/azimut)
06:15:26 deadmarshal_ joins (~deadmarsh@95.38.114.14)
06:19:40 kaph__ joins (~kaph@151.35.204.82)
06:22:25 × kaph__ quits (~kaph@151.35.204.82) (Read error: Connection reset by peer)
06:22:29 × kaph_ quits (~kaph@151.47.91.217) (Ping timeout: 272 seconds)
06:30:24 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Remote host closed the connection)
06:30:42 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
06:32:37 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
06:35:00 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Remote host closed the connection)
06:35:17 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
06:39:07 × zebrag quits (~chris@user/zebrag) (Remote host closed the connection)
06:43:55 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Remote host closed the connection)
06:44:13 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
06:58:42 niekvandepas joins (~niekvande@77-161-122-185.fixed.kpn.net)
06:59:11 × deadmarshal_ quits (~deadmarsh@95.38.114.14) (Quit: ZNC 1.8.2 - https://znc.in)
06:59:34 deadmarshal_ joins (~deadmarsh@95.38.114.14)
07:00:23 res0nat0r08 joins (~Fletch@dia.whatbox.ca)
07:03:27 × niekvandepas quits (~niekvande@77-161-122-185.fixed.kpn.net) (Ping timeout: 256 seconds)
07:06:51 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
07:09:24 × akurilin_ quits (uid322841@id-322841.ilkley.irccloud.com) (Quit: Connection closed for inactivity)
07:17:03 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
07:18:05 × beka quits (~beka@104.193.170.240) (Remote host closed the connection)
07:18:33 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
07:18:43 beka joins (~beka@104.193.170.240)
07:18:46 × FragByte quits (~christian@user/fragbyte) (Quit: Quit)
07:19:24 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
07:20:45 FragByte joins (~christian@user/fragbyte)
07:21:36 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
07:22:28 gehmehgeh joins (~user@user/gehmehgeh)
07:23:11 fendor joins (~fendor@178.115.53.79.wireless.dyn.drei.com)
07:23:51 jakalx parts (~jakalx@base.jakalx.net) ()
07:30:22 × mbuf quits (~Shakthi@122.174.51.86) (Quit: Leaving)
07:30:34 jakalx joins (~jakalx@base.jakalx.net)
07:32:04 yauhsien joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
07:32:59 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
07:41:11 alp joins (~alp@user/alp)
07:44:39 × x_kuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
07:47:50 michalz joins (~michalz@185.246.204.93)
07:55:03 mncheck joins (~mncheck@193.224.205.254)
07:56:28 × deadmarshal_ quits (~deadmarsh@95.38.114.14) (Ping timeout: 256 seconds)
08:00:47 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
08:00:48 acidjnk joins (~acidjnk@p200300d0c7049f27690562e0ba62f824.dip0.t-ipconnect.de)
08:02:44 deadmarshal_ joins (~deadmarsh@95.38.114.14)
08:03:39 zeenk joins (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
08:18:27 jespada joins (~jespada@85.255.234.169)
08:19:57 × mncheck quits (~mncheck@193.224.205.254) (Quit: Leaving)
08:20:40 mncheck joins (~mncheck@193.224.205.254)
08:25:15 × drdo quits (~drdo@roach0.drdo.eu) (Quit: Ping timeout (120 seconds))
08:25:28 drdo joins (~drdo@roach0.drdo.eu)
08:29:43 lortabac joins (~lortabac@2a01:e0a:541:b8f0:3240:c699:b7eb:e5b0)
08:30:25 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
08:31:35 × little_mac quits (~little_ma@2601:410:4300:3ce0:8cff:8f3a:46d8:f6ed) (Remote host closed the connection)
08:34:28 × yauhsien quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
08:35:12 yauhsien joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
08:35:52 × lumberjack123 quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
08:36:09 lumberjack123 joins (~alMalsamo@gateway/tor-sasl/almalsamo)
08:36:24 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
08:37:23 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:45:28 × pranshukhandal quits (pranshukha@envs.net) (Quit: the lounge - https://webirc.envs.net)
08:45:28 × sus quits (zero@user/zeromomentum) (Quit: the lounge - https://webirc.envs.net)
08:46:03 Topsi joins (~Tobias@dyndsl-095-033-088-239.ewe-ip-backbone.de)
08:48:06 machinedgod joins (~machinedg@24.105.81.50)
08:48:23 sus joins (zero@user/zeromomentum)
08:48:24 pranshukhandal joins (~ghost@envs.net)
08:49:38 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
08:50:17 jgeerds joins (~jgeerds@55d4548e.access.ecotel.net)
08:53:58 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
08:58:01 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
09:00:06 × kadoban quits (~kadoban@user/kadoban) (Quit: You have been kicked for being idle)
09:00:31 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
09:00:33 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
09:01:00 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
09:03:28 krappix joins (~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr)
09:06:07 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
09:09:35 × ptrcmd quits (~ptrcmd@user/ptrcmd) (Remote host closed the connection)
09:11:05 ptrcmd joins (~ptrcmd@user/ptrcmd)
09:11:34 ccntrq joins (~Thunderbi@2a01:c22:9102:c100:80c3:8f62:e3ae:6455)
09:12:47 DNH joins (~DNH@2a02:8108:1100:16d8:598a:8b0b:9405:6e26)
09:18:10 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:19:11 × ishutin quits (~ishutin@92-249-193-65.pool.digikabel.hu) (Ping timeout: 272 seconds)
09:20:14 ishutin joins (~ishutin@87-97-30-219.pool.digikabel.hu)
09:21:28 kuribas joins (~user@ptr-25vy0i8r77cynr1cb5v.18120a2.ip6.access.telenet.be)
09:21:32 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
09:22:11 <kuribas> Does correctness and simplicity even go together?
09:22:54 <kuribas> I have been looking to solve this problem: in lisp (clojure) we can put a specification in data, then create the functionality by interpreting the data (for example a specification of an API).
09:22:58 × da39a3ee5e6b4b0d quits (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:23:23 <kuribas> Doing this in haskell is easy. The problem is proving consistency.
09:23:53 <kuribas> You'll end up with something like servant, which is hardly simple...
09:24:23 <kuribas> Or you need to use GADTs to have stronger consistency garantees.
09:24:36 <kuribas> And hashmaps are easy to work with in clojure, records in haskell aren't very flexible.
09:26:51 da39a3ee5e6b4b0d joins (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e)
09:27:05 <kuribas> The thing is, doing these things is all possible, but doing it with "simple" haskell seems nearly impossible.
09:31:50 <kuribas> Or maybe better to not "prove" consistency, but write a lot of tests?
09:32:31 <kuribas> probably "not consistent haskell" is still better than clojure.
09:33:30 × jespada quits (~jespada@85.255.234.169) (Ping timeout: 268 seconds)
09:38:13 <kuribas> I found two solutions: higher kinded records, manipulating them using generic "magic".
09:38:34 <kuribas> Or going to idris, where types can be data, and data can be types. That makes manipulating types much easier.
09:42:57 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab) (Remote host closed the connection)
09:43:46 × yauhsien quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Remote host closed the connection)
09:44:07 romesrf joins (~romes@44.190.189.46.rev.vodafone.pt)
09:45:25 <romesrf> good morning
09:47:04 cosimone joins (~user@93-47-229-38.ip115.fastwebnet.it)
09:47:13 × krappix quits (~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr) (Ping timeout: 256 seconds)
09:47:24 <kuribas> morning
09:48:32 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
09:48:39 yauhsien joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
09:51:40 worldhelloworld joins (~c1utt4r@vmi275462.contaboserver.net)
09:52:46 jespada joins (~jespada@148.252.132.235)
09:53:42 ehammarstrom_ joins (~ehammarst@62-20-203-39-no182.tbcn.telia.com)
09:53:47 × yauhsien quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
09:54:01 × ehammarstrom quits (~ehammarst@62-20-203-39-no182.tbcn.telia.com) (Ping timeout: 256 seconds)
09:54:03 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
09:56:57 alt-romes joins (~romes@44.190.189.46.rev.vodafone.pt)
09:58:27 kaph joins (~kaph@151.37.169.201)
09:59:38 × romesrf quits (~romes@44.190.189.46.rev.vodafone.pt) (Ping timeout: 252 seconds)
10:00:01 agumonkey joins (~user@88.163.231.79)
10:01:24 × mncheck quits (~mncheck@193.224.205.254) (Remote host closed the connection)
10:03:57 phma joins (phma@2001:5b0:210b:8f48:791b:849d:7db1:84dd)
10:05:07 × kaph quits (~kaph@151.37.169.201) (Ping timeout: 256 seconds)
10:05:44 yauhsien joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
10:10:44 mncheck joins (~mncheck@193.224.205.254)
10:13:15 × da39a3ee5e6b4b0d quits (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:14:37 ProfSimm joins (~ProfSimm@87.227.196.109)
10:14:41 da39a3ee5e6b4b0d joins (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e)
10:16:13 × da39a3ee5e6b4b0d quits (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e) (Client Quit)
10:16:45 da39a3ee5e6b4b0d joins (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e)
10:18:25 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
10:20:24 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
10:25:11 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
10:26:11 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 245 seconds)
10:27:10 × yauhsien quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Remote host closed the connection)
10:30:27 __monty__ joins (~toonn@user/toonn)
10:30:51 × jespada quits (~jespada@148.252.132.235) (Ping timeout: 268 seconds)
10:32:55 Erutuon joins (~Erutuon@user/erutuon)
10:33:02 Unicorn_Princess joins (~Unicorn_P@46-54-248-191.static.kate-wing.si)
10:34:19 jespada joins (~jespada@148.252.132.235)
10:36:28 yauhsien joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
10:36:50 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 256 seconds)
10:41:22 × yauhsien quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
10:43:21 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab)
10:44:49 × da39a3ee5e6b4b0d quits (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:47:24 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab) (Ping timeout: 240 seconds)
10:51:01 × agumonkey quits (~user@88.163.231.79) (Ping timeout: 256 seconds)
10:52:56 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
10:55:56 × DNH quits (~DNH@2a02:8108:1100:16d8:598a:8b0b:9405:6e26) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:56:34 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
10:57:24 DNH joins (~DNH@2a02:8108:1100:16d8:598a:8b0b:9405:6e26)
10:57:28 rembo10 joins (~rembo10@main.remulis.com)
10:57:30 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
10:58:51 worldhelloworld1 joins (uid543174@id-543174.helmsley.irccloud.com)
10:58:53 × alt-romes quits (~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4)
10:59:12 romesrf joins (~romes@44.190.189.46.rev.vodafone.pt)
10:59:36 × worldhelloworld quits (~c1utt4r@vmi275462.contaboserver.net) (Quit: Leaving)
10:59:50 worldhelloworld joins (~c1utt4r@vmi275462.contaboserver.net)
11:01:56 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 240 seconds)
11:01:56 adanwan_ joins (~adanwan@gateway/tor-sasl/adanwan)
11:04:30 dsamperi joins (~dsamperi@2603-7000-3b42-5400-bdd9-2653-5498-c104.res6.spectrum.com)
11:05:13 × dsamperi quits (~dsamperi@2603-7000-3b42-5400-bdd9-2653-5498-c104.res6.spectrum.com) (Client Quit)
11:06:51 × worldhelloworld quits (~c1utt4r@vmi275462.contaboserver.net) (Ping timeout: 272 seconds)
11:08:35 mc47 joins (~mc47@xmonad/TheMC47)
11:10:28 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
11:10:32 srk joins (~sorki@user/srk)
11:10:42 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
11:12:57 yauhsien joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
11:13:56 × yauhsien quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Remote host closed the connection)
11:14:45 <tomsmeding_> kuribas: proving correctness is always hard
11:14:50 tomsmeding_ is now known as tomsmeding
11:15:06 <tomsmeding> or at least, nobody has found a way yet to easily prove correctness of nontrivial programs
11:15:26 <kuribas> perhaps correctness is a vague name
11:15:33 <kuribas> I prefer "consistency".
11:15:43 <tomsmeding> s/correctness/any nontrivial behavioural property/
11:15:58 <kuribas> As in, I have a (API) specification, and I want to ensure the program implements this specification.
11:16:05 <tomsmeding> same thing
11:16:23 <kuribas> Or a database schema, and the SQL is correct WRT to that schema.
11:16:38 <tomsmeding> that is easier, because sql is a more limited language than haskell
11:17:20 <kuribas> It's subtly different, because I don't prove the program implements the business logic correctly.
11:17:26 <kuribas> I just prove it is consisten with itself.
11:17:32 <kuribas> Though possible wrong.
11:17:52 fendor_ joins (~fendor@178.165.181.170.wireless.dyn.drei.com)
11:17:56 <tomsmeding> it's still a nontrivial property about the behaviour of the program
11:18:04 <kuribas> yeah
11:18:19 <tomsmeding> "In computability theory, Rice's theorem states that all non-trivial semantic properties of programs are undecidable."
11:18:38 <tomsmeding> it's hard, and humans have the impressive ability to write proofs for some of those properties
11:18:43 <tomsmeding> but we haven't found a way yet to make that much easier
11:18:55 <kuribas> Still, is it so hard to prove, this server implements this API specification?
11:19:04 <kuribas> servant does it, but clumsily.
11:19:20 <tomsmeding> in general, yes; if your program has specific structure that you can exploit (e.g. in the types), then that helps
11:19:55 <tomsmeding> in particular, with a strong enough type system, you can encode the proof in the types, so that any total program that has that type does the right thing
11:20:15 <tomsmeding> which is a fairly extreme case of "if your program has specific structure, it's easier"
11:20:28 × fendor quits (~fendor@178.115.53.79.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
11:20:34 <tomsmeding> PL people very much like the approach, but it's not the only approach
11:20:58 <kuribas> What I like to aim for is not "correct" business logic, but transparent and consistent business logic.
11:21:24 <kuribas> In a sense that what business logic the program implements is easy to see from the code.
11:21:29 <tomsmeding> you also have stuff like Why3, where you (write the program in their dialect of ocaml and) annotate pre- and post-conditions and loop invariants, and it tries to use an SMT solver to prove stuff
11:21:31 vglfr joins (~vglfr@88.155.96.35)
11:21:50 <tomsmeding> true, maybe "correct" is a too-loaded term for this
11:22:02 <tomsmeding> but for me, what you say falls into the same bucket
11:22:15 <kuribas> Right, but that's "after the fact" proving.
11:22:24 <tomsmeding> whether the specification is external, or if it's another part of your program, same thing
11:22:24 <kuribas> You write some code or algorithm, then you prove it correct.
11:22:28 <tomsmeding> yes
11:22:42 <kuribas> It seems easier to make something correct by construction.
11:22:46 <tomsmeding> as distinct from the dependent-types encode-the-proof-in-the-type-system approach
11:24:09 <kuribas> Technically haskell is a subset of dependent-types.
11:24:12 <tomsmeding> my point is, your observation that it's hard is not surprising :p
11:24:12 <tomsmeding> yes
11:24:13 <Hecate> hohai
11:24:42 <kuribas> "Integer" is just a proposition that the value behaves like a mathematical integer
11:24:56 <tomsmeding> Hecate: hi :)
11:26:03 aeka joins (~aeka@pool-100-4-208-71.albyny.fios.verizon.net)
11:26:10 <kuribas> And the HM inference engine just proofs that it does.
11:26:26 <kuribas> tomsmeding: yeah, I guess it's non-trivial.
11:26:30 <Hecate> are we on the propositions as types / programs as proof discussion?
11:26:36 <Hecate> tomsmeding: hello you :)
11:26:51 <kuribas> tomsmeding: it's just, clojure doesn't feel very satisfying, though there good ideas in there.
11:27:51 <tomsmeding> Hecate: this started the discussion https://ircbrowse.tomsmeding.com/day/lchaskell/today?id=463224#trid463224
11:28:02 <Hecate> > Does correctness and simplicity even go together?
11:28:04 <lambdabot> <hint>:1:50: error:
11:28:04 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
11:28:05 <Hecate> oh oh oh
11:28:07 <Hecate> good question
11:28:10 <Hecate> I have a short answer
11:28:13 <Hecate> no and yes
11:28:38 <Hecate> no: Being correct implies that you need to forgo a simplistic world view and take care of the sharp edges of your model
11:29:05 <Hecate> yes: Having correct foundations mean that you have to do less work in your program to maintain correctness
11:29:27 <Hecate> also read: Complexity has to live somewhere: https://ferd.ca/complexity-has-to-live-somewhere.html
11:29:47 Rembane builds house for complexity
11:30:18 × jgeerds quits (~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 260 seconds)
11:30:39 <Hecate> following this aphorism, we can indeed state that correctness is complex to nail, but having it live in your compiler rather than as an external library or, worse, to be manually verified by the user, makes thing simpler for downstream users
11:31:09 <Hecate> now if you truly want a yes XOR no answer, you need to ask the question of costs and benefits
11:31:27 <Hecate> at which scale of users is it more economic to have correctness upstreamed?
11:31:45 <Hecate> if you're five cave dwellers using a lisp interpreter written in Forth, maybe not
11:32:07 <Hecate> if you're 200k people around the globe and your language promotes correctness of thinking and implementation, then yeah sure
11:32:51 <Hecate> any question? :p
11:33:28 <maerwald> I never had the impression that Haskell promotes correctness. Correctness is usually something rather low-level that only in a few domains coincides with the type system.
11:33:58 <maerwald> So not only is "simplicity" underspecified, but so is "correctness"
11:34:41 <maerwald> what promotes correctness is usually the compiler, not the language, or the base libraries
11:34:41 <Hecate> maerwald: on my side, I'd say that the expressivity of Haskell and some of its type-level feature enable you to achieve more correctness when representing a business domain
11:35:06 <Hecate> for example, the ability to have Word16 for port numbers instead of Integer
11:35:06 <Hecate> :)
11:35:20 <Franciman> Hecate: maybe you can subsume your no, yes answer by talking about correctness with respect to a model
11:35:28 <maerwald> Hecate: expressivity introduces complexity, too
11:35:43 <Franciman> now if the model is to be accurate of reality, then it is going to probably be very wild and hard
11:36:02 <Hecate> Franciman: ah well, the best questions attract the best answers, and general questions usually attract "it depends" as an answer :)
11:36:04 <maerwald> so the most correct way to build something is usually not a turing complete language
11:36:11 <maerwald> but the *most* restrictive way
11:36:17 <Hecate> maerwald: everything introduces complexity, see https://ferd.ca/complexity-has-to-live-somewhere.html
11:36:32 <Hecate> I don't think this is a valid deterrent :p
11:36:52 <maerwald> the more you constrain expressivity, the less ways of expressing the wrong thing you have
11:37:15 <Hecate> but then you deport complexity elsewhere, downstream
11:37:19 <maerwald> but that means you want your primitives to express something meaningful, but not have many of those primitives
11:37:31 <maerwald> so you could say horizontal vs vertical complexity
11:37:37 <c_wraith> the solution must be as complex as the problem, yes. But that puts a lower bound on complexity that little software approaches.
11:37:48 <Hecate> that's why I don't like the argument of building "simple", "minimal" language. It just means a tonne of boilerplate downstream while the compiler authors are wanking over their LoC count
11:37:59 <c_wraith> Most software has a lot of complexity it doesn't need to
11:38:37 worldhelloworld joins (~c1utt4r@vmi275462.contaboserver.net)
11:38:50 <maerwald> There are only two ways to build correct systems: 1. DSL that carry proofs, 2. everything else with manual proofs
11:39:05 <maerwald> both things exist
11:39:27 <maerwald> and Haskell is only used in the first and to a lesser degree
11:40:54 <Hecate> yeah I'm not saying Haskell produces correct programs by construction
11:41:01 <Hecate> it's not a prover
11:41:03 <Hecate> but it help
11:41:04 yauhsien joins (~Yau-Hsien@61-231-43-120.dynamic-ip.hinet.net)
11:41:05 <Hecate> *helps
11:41:09 <kuribas> maerwald: correctness automatically implies less "wiggle room".
11:41:19 <kuribas> I guess that's why a lot of people don't like it.
11:41:55 <maerwald> Hecate: depends on the domain
11:42:04 <kuribas> It gives you the feeling you have less flexibility.
11:42:14 <kuribas> But I think the flexibility is just different, not less.
11:42:21 <maerwald> I have more confidence in rust, when doing low-level stuff with posix APIs
11:42:54 <maerwald> but rust is so verbose, my fingers hurt afterwards
11:44:13 × vglfr quits (~vglfr@88.155.96.35) (Ping timeout: 272 seconds)
11:44:18 <maerwald> Haskell is just more pleasure to code
11:44:18 yauhsien_ joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
11:44:28 <maerwald> and pleasure is more important than correctness to me
11:44:52 <maerwald> pleasure also affects productivity
11:45:16 × lumberjack123 quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
11:45:48 <tomsmeding> maerwald: s/correctness/proven correctness/ ?
11:47:14 <maerwald> tomsmeding: hmm...
11:47:22 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
11:47:39 <maerwald> I mean, typescripts type system isn't really *correct*, yet it's pleasure (unless you hit those few corner cases)
11:49:10 × glguy quits (x@libera/staff/glguy) (Read error: Connection reset by peer)
11:49:13 <maerwald> I rarely need proven correctness
11:49:29 glguy joins (x@libera/staff/glguy)
11:50:31 <tomsmeding> isn't typescript's type system more like "as long as you don't do x,y,z dumb thing, it's type-safe"?
11:50:36 <maerwald> yeah
11:50:48 <maerwald> which is fine most of the time
11:50:49 <tomsmeding> it's a partial correctness proof then
11:50:50 <tomsmeding> yeah
11:51:17 <tomsmeding> as long as you don't use unsafeCoerce and friends, Haskell is also pretty strong
11:51:58 <tomsmeding> the existence of ways to still make bugs doesn't make measures to prevent lots of bugs bad
11:52:42 <maerwald> I'm not satisfied with IO stuff in Haskell. It's either naive (most of base), has odd custom abstractions (process package) or incomplete bindings (unix package)
11:53:20 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
11:54:14 <maerwald> other languages have more thoughtful stdlibs
11:54:49 <maerwald> that's the "correctness" I care about
11:55:20 <tomsmeding> because your non-IO code is clear enough that you don't need any extra assurance?
11:55:35 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
11:57:59 <maerwald> IO is the hardest
11:58:06 <tomsmeding> in your application domain
11:58:21 <maerwald> I've not yet seen a domain where it isn't
11:58:26 <tomsmeding> compilers?
11:58:34 <tomsmeding> I know, unimaginative example
11:59:02 <tomsmeding> a compiler doesn't do a lot of interesting IO, barring TH handling in GHC I guess
11:59:47 <maerwald> tomsmeding: What happens when you compile a file?
12:00:07 <tomsmeding> you read the file, read some more files, and write an output file
12:00:08 <maerwald> first you read it, then you produce artifacts, what if you ctrl+c during that... will the object file be deleted?
12:00:10 <maerwald> etc. etc.
12:00:25 <maerwald> you see this happening with cabal breaking it's dist-newstyle/ dir
12:00:42 <tomsmeding> true, there is more stuff than a simple programmer would see at first glance
12:01:00 <tomsmeding> but I think it's less complex than ghc's simplification engine
12:01:40 <tomsmeding> and producing broken compilation artifacts if someone ^C's the compilation is annoying, but not as destructive as quiet miscompilation
12:05:23 <tomsmeding> (but of course, I'm biased)
12:05:57 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
12:06:23 lambdabot joins (~lambdabot@silicon.int-e.eu)
12:06:23 × lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host)
12:06:23 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
12:07:48 × int-e quits (~noone@int-e.eu) (Remote host closed the connection)
12:08:28 <maerwald> the RTS is all IO, allocation, primops, ...
12:09:15 int-e joins (~noone@int-e.eu)
12:13:15 <tomsmeding> also true, so there's both
12:13:21 × jinsun__ quits (~jinsun@user/jinsun) (Ping timeout: 272 seconds)
12:13:49 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
12:13:59 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
12:16:00 <maerwald> another example... if you look at the ouroboros consensus protocol of cardano, it's all very heavy type level Haskell code. But what's really difficult is that all this blockchain foo is distributed IO actions
12:16:27 <maerwald> and very few people can reason about it
12:21:21 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
12:21:36 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
12:23:03 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
12:25:54 × anon04088520 quits (~anon04088@host-92-19-98-150.as13285.net) (Ping timeout: 256 seconds)
12:25:54 × jespada quits (~jespada@148.252.132.235) (Read error: Connection reset by peer)
12:27:13 LiaoTao_ joins (~LiaoTao@gateway/tor-sasl/liaotao)
12:27:29 agumonkey joins (~user@88.163.231.79)
12:27:36 × LiaoTao quits (~LiaoTao@gateway/tor-sasl/liaotao) (Ping timeout: 240 seconds)
12:33:00 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
12:33:59 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
12:34:40 thevishy joins (~Nishant@49.37.242.151)
12:38:35 anon04088520 joins (~anon04088@host-92-19-98-150.as13285.net)
12:45:32 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab)
12:47:59 bahamas joins (~lucian@84.232.140.52)
12:49:37 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab) (Ping timeout: 240 seconds)
12:50:00 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
12:50:20 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
12:52:36 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
12:55:35 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
12:56:27 × Kaipi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection)
12:59:23 jgeerds joins (~jgeerds@55d4548e.access.ecotel.net)
12:59:29 Kaipi joins (~Kaiepi@156.34.47.253)
12:59:46 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
13:02:25 Inst joins (~Liam@2601:6c4:4080:3f80:112d:add3:9747:500f)
13:05:25 anon04088520 parts (~anon04088@host-92-19-98-150.as13285.net) ()
13:06:00 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:09:13 <ProfSimm> FP is flawed because immutability of a piece of state or code is an assumption that's always wrong in the long term.
13:10:21 × bahamas quits (~lucian@84.232.140.52) (Ping timeout: 272 seconds)
13:12:11 × yauhsien_ quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Remote host closed the connection)
13:14:00 <hpc> that's like saying types are flawed because in the long term everything's a string
13:14:49 yauhsien_ joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
13:14:54 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
13:15:16 jinsun joins (~jinsun@user/jinsun)
13:15:28 <ProfSimm> hpc: yes. Except I wouldn't say string.
13:15:47 <ProfSimm> hpc: in the long term everything's an actor.
13:16:23 <hpc> and all the world's a staging environment? :D
13:17:48 <maerwald> everything's an actor suspiciously sounds like Java
13:18:12 <hpc> actors are more a smalltalk thing
13:18:18 <hpc> in java everything's a bean
13:18:23 <hpc> and in erlang everything's a process
13:19:34 × gnyeki quits (~gnyeki@user/gnyeki) (Quit: leaving)
13:20:28 × yauhsien_ quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
13:20:42 <ProfSimm> hpc: I'd say Erlang's the most apt implementation of actors we have so far.
13:20:50 <ProfSimm> Process = actor.
13:21:05 <hpc> probably yeah
13:21:16 <ProfSimm> That said Erlang processes are internally functional
13:21:28 <ProfSimm> But they're small so it's kinda manageable
13:22:45 gnyeki joins (~gnyeki@user/gnyeki)
13:23:00 <ProfSimm> Something I don't understand
13:23:10 <ProfSimm> Functional programming often uses CSP in compilers
13:23:19 <ProfSimm> But how does functional reduction work in CPS
13:23:23 <ProfSimm> CPS sorry not CSP
13:23:42 <ProfSimm> If CPS is all about calling things, what are we "reducing"
13:24:44 da39a3ee5e6b4b0d joins (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e)
13:26:50 <kuribas> ProfSimm: you change the state, but don't mutate it.
13:27:07 <kuribas> ProfSimm: you just update it.
13:27:15 <kuribas> ProfSimm: it's the same result, but without mutation.
13:31:26 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
13:34:02 ChaiTRex joins (~ChaiTRex@user/chaitrex)
13:35:47 × chenqisu1 quits (~chenqisu1@183.217.201.47) (Ping timeout: 252 seconds)
13:35:56 soxen joins (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
13:36:16 boborygmy joins (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
13:37:34 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
13:37:45 × da39a3ee5e6b4b0d quits (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:38:11 <ProfSimm> kuribas: change and mutate mean the same thing
13:38:36 Pickchea joins (~private@user/pickchea)
13:41:18 <kuribas> ProfSimm: change by replacing it.
13:41:31 <kuribas> Using a state monad or IORef.
13:41:36 <kuribas> But you don't mutate the contents.
13:41:52 <kuribas> It actually make concurrency much easier.
13:42:43 × acidjnk quits (~acidjnk@p200300d0c7049f27690562e0ba62f824.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
13:42:59 jespada joins (~jespada@148.252.132.235)
13:44:50 <ProfSimm> kuribas: replacing it implies you're taking something from a place, and putting something else in its place
13:44:55 <ProfSimm> kuribas: you mutated the place
13:45:34 <kuribas> For IORef yes.
13:45:38 <kuribas> For State, no.
13:45:54 <kuribas> The effect is the same though.
13:46:31 <kuribas> Especially in a concurrent setting, not mutating the content is an important distinction.
13:47:05 <ProfSimm> kuribas: creating a copy with a change is not the same as changing.
13:47:23 <ProfSimm> kuribas: also in concurrent setting you can still mutate, just use linear types
13:47:39 <kuribas> linear types are overrated.
13:47:41 <ProfSimm> kuribas: the abstractions Haskell provides is a bit like a way to avoid implementing linear types
13:48:01 <kuribas> at least when I tried them in idris.
13:48:40 <ProfSimm> kuribas: are they. a linear typeis mutable. If you have a continuous block of memory of 2MB and you want one byte changed in it, you just change it. How you do that in Haskell
13:49:05 <kuribas> you don't.
13:49:11 <ProfSimm> Great
13:49:29 <ProfSimm> Well in that case linear types are not overrated :)
13:49:42 <kuribas> Or use a vector with ST.
13:49:51 <kuribas> Or whatever suits the problem.
13:49:54 <ProfSimm> Doesn't match the requirements
13:50:06 <ProfSimm> Rust uses linear types, and it's both concurrently safe, and can write kernel code.
13:50:11 <kuribas> I don't know your requirements.
13:50:25 <ProfSimm> kuribas: well it was: block of 2MB memory, change a byte
13:50:35 <kuribas> I know that on a SSD, changing one byte will copy 4MBs of data.
13:50:53 <ProfSimm> I think you mean 4k
13:50:55 <kuribas> ProfSimm: that's an impementation detail, not a requirement.
13:51:00 <merijn> I mean, you just use "Ptr Word8" and IO
13:51:02 <ProfSimm> That's because storage devices are block devices
13:51:05 <kuribas> right, 4k.
13:51:41 <merijn> ProfSimm: I mean, you can literally just use the same approach as C and allocate a pointer to 2MB of bytes and update any arbitrary byte
13:51:45 <kuribas> ProfSimm: change one byte in 2MB of memory is not a requirement, it's one possible solution for some problems.
13:51:54 <ProfSimm> kuribas: however SSD doesn't map its contents linearly, it's about locality
13:52:29 <kuribas> So first, I'd like to know what problem you need to solve. And as merijn says, if needed you can just use IO.
13:52:33 <ProfSimm> kuribas: the problem is locality in general
13:53:01 <ProfSimm> Replacing Earth when you have to turn on the light is not pragmatic. Even if you reuse most parts
13:53:33 <kuribas> I'd say, the problem in general if making programs which are easy to reason about, easy to maintain, etc...
13:54:02 <ProfSimm> Working with Lenses is not easy to reason about.
13:54:05 <kuribas> So if you need to optimize for performance, I'd first look for architectural and algorithmic changes.
13:54:36 <kuribas> Optimizing cache locality is onely a late change.
13:55:09 <kuribas> However, speaking generally. For some problems (matrix operations, linear algebra) it could be important.
13:55:25 × jgeerds quits (~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 256 seconds)
13:56:57 <kuribas> ProfSimm: I'd go for immutability by default, only if it is really not possible, use mutation.
13:57:07 × xff0x quits (~xff0x@dslb-094-222-029-254.094.222.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
13:57:47 <kuribas> Just responding to your "FP is flawed" argument, I don't mean immutable works for every problem.
13:57:54 <ProfSimm> kuribas: sure
13:58:08 <kuribas> But often we make immutable abstractions which actually mutate "under the hood", like bytestrings.
13:58:13 <kuribas> or bytestring builders.
13:58:30 <kuribas> You use them as if they are immutable, but under the hood they just fill buffers mutably.
13:58:33 <ProfSimm> kuribas: I think immutability is a "local assumption" that's wrong in a wider scale. So a language should basically allow this recursive approach to immutability.
13:59:28 <ProfSimm> kuribas: i.e. "in this moment right now, x y z are immutable" then you get out of this context, they're linear and mutable, but a b c are immutable. You get out in a wider context, a b c are linear and mutable.
13:59:36 <ProfSimm> kuribas: so you can kinda work at the right level
14:00:18 <ProfSimm> Haskell implements half of that
14:00:29 <ProfSimm> Hides the other half in the runtime, and IO and what not
14:00:40 <ProfSimm> If it make it explicit, I think it'd be even more powerful
14:01:39 <kuribas> I don't know, I have yet to see the advantage of linear types. But I heared they work well in rust, which is on my list of languages to learn :)
14:01:56 <kuribas> I guess affine types they are called?
14:02:56 off^ joins (~off@50.232.121.75)
14:02:59 <kuribas> however rust is not haskell, haskell is not rust
14:03:10 kadoban joins (~kadoban@user/kadoban)
14:03:21 yauhsien_ joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
14:03:28 <ProfSimm> kuribas: yes affine means used at most once, linear exactly once. But it's the same idea.
14:03:54 <ProfSimm> kuribas: in Rust you can make a single mutable borrow, OR multiple immutable borrows. The latter half is kinda like Haskell
14:04:00 ystael joins (~ystael@user/ystael)
14:04:14 <ProfSimm> kuribas: but if you get back your immutable borrows, now you can mutate the thing, before you reshare it immutably.
14:04:23 <ProfSimm> kuribas: it's kinda like State/IO if you squint
14:04:25 <kuribas> right
14:04:26 <ProfSimm> But made explicit
14:07:22 neurocyte0917090 joins (~neurocyte@IP-045014190241.dynamic.medianet-world.de)
14:07:22 × neurocyte0917090 quits (~neurocyte@IP-045014190241.dynamic.medianet-world.de) (Changing host)
14:07:22 neurocyte0917090 joins (~neurocyte@user/neurocyte)
14:07:58 × worldhelloworld quits (~c1utt4r@vmi275462.contaboserver.net) (Ping timeout: 272 seconds)
14:09:15 xff0x joins (~xff0x@dslb-094-222-029-254.094.222.pools.vodafone-ip.de)
14:11:32 <ProfSimm> kuribas: rust is not haskell, and rust does a lot of things i wish Haskell doesn't, but I feel there's core idea that could scale from the kernel to math proofs to scripting. If we get it right, we won't need 1000 languages
14:12:41 bahamas joins (~lucian@84.232.140.52)
14:13:24 × jespada quits (~jespada@148.252.132.235) (Read error: Connection reset by peer)
14:15:12 jespada joins (~jespada@148.252.132.235)
14:17:17 × bahamas quits (~lucian@84.232.140.52) (Ping timeout: 256 seconds)
14:18:17 <geekosaur> uh
14:18:40 <geekosaur> ob https://xkcd.com/927/
14:19:54 <maerwald> that's the most prominent fallacy of programmers talking about programming languages... they only talk about technical properties
14:20:29 <geekosaur> and in any case different languages often make meeting specific requirements easier while making others harder. for example, Ive worked with real time control languages, they workvery wellfor that but areless than idea for generalcomputation
14:21:10 <geekosaur> something like matlab or octave is very good for matrix related math but lousy for anything else
14:21:31 <geekosaur> similarly r/s and plotting/charts/data relationships
14:22:18 <geekosaur> sql's a great database access language but worthless for anything else; conversely anything other than just packaging up an sql query to access a databaseis painful in other languages
14:23:04 × lbseale quits (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
14:23:29 <maerwald> it's like saying english is the best language, because it has the most words
14:24:23 <geekosaur> pl/I tried to be a do-everything language. it was less than successful
14:24:27 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
14:25:43 × neurocyte0917090 quits (~neurocyte@user/neurocyte) (Ping timeout: 272 seconds)
14:26:57 <kuribas> geekosaur: well, hasure thinks SQL is great for graphql APIs
14:27:44 <maerwald> I think we should accept that even programming languages have cultural context and that personal preferences of ergonomics and pleasure may be far more important than technical properties
14:27:52 <geekosaur> ^
14:28:17 <geekosaur> and corporate preferences and contexts
14:28:58 <ProfSimm> maerwald: I'd be fine if English became the only language
14:29:08 <ProfSimm> maerwald: in fact, I strongly would prefer it
14:29:24 <geekosaur> lotsof others would disagree
14:29:30 <ProfSimm> They're wrong.
14:30:30 <ProfSimm> geekosaur: a good language would permit DSLs for specific purposes.
14:30:45 <kuribas> ProfSimm: Ik geef de voorkeur aan nederlands :)
14:31:10 <ProfSimm> geekosaur: imagine the world if you could only write libraries in C, because only C supports the C ABI
14:31:15 <geekosaur> that was PL/I-think
14:31:17 <geekosaur> it failed
14:31:37 <geekosaur> hey, that was largely true for a couple decades
14:31:48 × off^ quits (~off@50.232.121.75) (Remote host closed the connection)
14:32:01 <ProfSimm> geekosaur: so we're happy now when many languages use the same ABI right
14:32:20 <ProfSimm> geekosaur: I wanna move the bar up. Everyone uses the same basic language, and everything is a DSL in it
14:32:28 <geekosaur> because of the historical accident that C compilers were for a while moe readily available to programmers than expensive then-"mainstream" languages
14:32:49 <geekosaur> again, that was PL/I-think
14:33:28 <geekosaur> you end up with a huge ungainly language that's nearly impossible to compile and get reasonable performance out of
14:33:41 <geekosaur> (this might even sound familiar to some people…)
14:34:25 kongsheng joins (~kongsheng@71.28.228.142)
14:36:12 <kongsheng> Hello. I have a mathematical model which consists of a semigroup (or magma). It's a set with a binary operation defined by a table. What kind of background reading do I need to code this in haskell? I know absolutely nothing about programming computers.
14:36:37 × euandreh quits (~euandreh@2804:14c:33:9fe5:7f03:8b0:a81c:56d7) (Ping timeout: 240 seconds)
14:36:43 jinsun__ joins (~jinsun@user/jinsun)
14:37:06 <romesrf> how can I ask for a function type here?
14:39:24 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 240 seconds)
14:42:13 <romesrf> auto reply: geekosaur answered elsewhere, it's just :t
14:42:15 <romesrf> :t id
14:42:16 <lambdabot> a -> a
14:44:08 × jespada quits (~jespada@148.252.132.235) (Read error: Connection reset by peer)
14:47:18 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab)
14:47:31 jespada joins (~jespada@148.252.132.235)
14:51:24 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab) (Ping timeout: 240 seconds)
14:52:44 bahamas joins (~lucian@84.232.140.52)
14:54:25 × shailangsa quits (~shailangs@host86-186-133-59.range86-186.btcentralplus.com) (Remote host closed the connection)
14:57:00 × bahamas quits (~lucian@84.232.140.52) (Ping timeout: 240 seconds)
15:00:21 <siers> what are some cool uses of bijections/invertible functions? I suppose you could compose a bunch of them together to achieve something quite magical
15:02:30 × yauhsien_ quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Remote host closed the connection)
15:03:02 × alp quits (~alp@user/alp) (Ping timeout: 240 seconds)
15:03:08 yauhsien_ joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
15:03:48 × ishutin quits (~ishutin@87-97-30-219.pool.digikabel.hu) (Ping timeout: 252 seconds)
15:04:03 <siers> % :t (1, "x", [()]) -- I think this should work, romesrf
15:04:03 <yahb> siers: Num a => (a, String, [()])
15:04:45 <siers> if you meant in IRC, specifically
15:05:27 ishutin joins (~ishutin@87-97-82-131.pool.digikabel.hu)
15:05:54 × CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
15:07:24 × yauhsien_ quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
15:07:42 <kuribas> kongsheng: the interesting question is, what do you want to do with it?
15:07:57 <kuribas> why do you want to code it?
15:09:20 <kuribas> haskell has a Semigroup typeclass
15:10:38 <kongsheng> kuribas: I want to start with a set {x,y} as well as a binary operation that is defined by a table. The binary operation is not associative by nature. I want to code it because the semigroup represents a thing in the real world, and I need a framework for testing whether the abstract mathematics works physically.
15:11:41 <kuribas> isn't a semigroup supposed to be associative?
15:12:30 <kongsheng> OH! Sorry! I am actually starting with something called a Magma instead of a semigroup.
15:12:39 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
15:12:41 <kongsheng> Dang.
15:12:47 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
15:14:00 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
15:17:30 <kongsheng> Basically, what I want to do is start with a set {x,y} and this binary operation. I need an operator * to represent the binary operation. So I can symbolically do things like x*y*x*x etc. I am building a second function which depends on the first. The third function depends on the first two. The operators are ~ and +. So then I can build
15:17:31 <kongsheng> expressions like x*y + ~x*y + ~x*~y. Given one of these expressions. I want to instantiate an object where the set {x,y} has been made more concrete with {0,1}. Then I need to build expressions i.e. ~(x*y + ~x*~*y) but have an option to evaluate them with the instantiated, concrete set.
15:18:51 <kongsheng> But the problem is that I know nothing about haskell or programming, and my initial set with binary operation is non-associative.
15:18:52 <sclv> so a magma has no laws to verify
15:19:25 <kongsheng> The only law is that the operation remained closed, I think. That must be checked.
15:19:27 <sclv> the rest is straightforward if you know haskell, but i don't think its something that you can learn how to do if you don't really learn the language first
15:19:44 × nisstyre quits (~wes@user/nisstyre) (Quit: WeeChat 3.2.1)
15:20:11 <sclv> if you encode your magma as a datatype (rather than just associating it to some subset of the naturals) then it will be definitionally closed
15:20:32 <sclv> and even otherwise, its easy enough to read off by hand from the "multiplication table" if it is
15:20:43 <kongsheng> Cool. I can probably do it in Mathematica but I don't have the money and would rather keep this study as Haskell as possible since it has theoretical underpinnings to Computer Science.
15:21:36 <siers> sclv, what do you mean by "associating it to some subset of the naturals"?
15:21:51 <kongsheng> Yea I see what  you mean. I kind of want to build a skeleton Magma and then build a particular Magma with my binary operation and set.
15:22:01 <kongsheng> But hey thanks for giving me some ideas.
15:22:19 <sclv> so the most straightforward thing in haskell is to not do that, but to define a specific datatype for each particular magma
15:22:28 <sclv> or semigroup, or monoid
15:22:33 <sclv> and again -- doing it for a magma seems pointless
15:22:34 <siers> Wouldn't a typeclass for the magma be appropriate? I assume not, otherwise you (sclv) would've suggested it.
15:22:56 <kongsheng> Ok. So use datatype logic instead of Object Oriented logic?
15:23:21 <sclv> then, as siers suggested, you can make that datatype an instance of the appropriate typeclass
15:23:51 <sclv> then you auto-derive some insteances and can use something like https://hackage.haskell.org/package/quickcheck-classes-0.6.5.0/docs/Test-QuickCheck-Classes.html to generate and run testcases for the properties you want
15:24:06 <kongsheng> Hmm, maybe I don't need a skeleton framework at all, since like you said, all I have to do is check closure by the mult table.
15:24:18 <sclv> but again, doing things this way requires knowing some haskell, otherwise you will get confused very quickly
15:24:51 <kongsheng> Cool. I will do some reading and some more headwork.
15:26:30 <kongsheng> The mathematics is more primitive than Boolean algebra and Logic, but my research group is trying to find out if we can start with this particular Magma and reach a turing complete device.
15:26:47 <sclv> this isn't working with a general AST of your expressions btw, just letting you evaluate them directly
15:27:46 <sclv> if you want to build an expression syntax tree to programmatically manipulate them, then you can do that too. there are lots of examples of this. the first i found on a google (idk if its good or not, just the first i found on a google) is something like https://john.cs.olemiss.edu/~hcc/csci450/ELIFP/Ch42/42_Abstract_Syntax.html
15:28:02 <shapr> > let ones = 1 : ones in take 5 ones
15:28:03 <lambdabot> [1,1,1,1,1]
15:28:05 <kongsheng> ok thank you. I am writing all this down by the way.
15:31:06 <kuribas> kongsheng: you can try macsyma, which is a free mathematica alternative.
15:31:30 <kuribas> kongsheng: if you want to prove mathematical things, a dependently typed language could be better, like agda or idris.
15:32:17 × Inst quits (~Liam@2601:6c4:4080:3f80:112d:add3:9747:500f) (Ping timeout: 240 seconds)
15:33:28 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
15:33:58 yauhsien_ joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
15:34:25 bahamas joins (~lucian@84.232.140.52)
15:35:17 jz99_ joins (~jz99@pa49-186-65-17.pa.vic.optusnet.com.au)
15:35:18 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
15:35:42 Inst joins (~Liam@2601:6c4:4080:3f80:8c26:e871:cea5:bbc0)
15:36:40 × shapr quits (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Read error: Connection reset by peer)
15:36:47 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 252 seconds)
15:37:09 × jz99_ quits (~jz99@pa49-186-65-17.pa.vic.optusnet.com.au) (Remote host closed the connection)
15:37:42 <sclv> if they don't even know haskell yet, sending them down the road to a dependently typed language is Not Good Advice
15:37:54 shapr joins (~user@pool-173-73-44-186.washdc.fios.verizon.net)
15:38:18 × yauhsien_ quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
15:38:31 <kuribas> sclv: why not? There is a lot of DT teaching material which is self contained.
15:38:44 <kuribas> Do DT languages assume haskell knowledge?
15:38:47 <sclv> i won't argue. i'll just say that it requires a lot more ramp up
15:38:57 <sclv> this person said they had virtually no programming background full stop
15:39:17 <sclv> and they were looking to do computational checks not proofs
15:39:32 <kuribas> I don't disagree, but I thought that idris or agda are more mathy...
15:40:28 <sclv> they're suited for being proof assistants. doing symbolic computation and generated verification is very much in the haskell wheelhouse
15:40:43 <sclv> not all maths is formal theorem proving!!!
15:41:23 <juri_> not all math is formal theorem proving.. yet.
15:41:39 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds)
15:41:58 <siers> what kind of symbolic computation is haskell good at? how does that work even
15:42:04 <siers> or what is meant by that
15:42:41 <geekosaur> > foldr (*) z [a,b,c] -- looks symbolic to me :þ
15:42:42 <lambdabot> a * (b * (c * z))
15:42:46 <sclv> i mean that haskell is an excellent language for creating and manipulating ASTs -- what is commonly known as "computer algebra"
15:44:57 <siers> geekosaur, hm
15:45:06 <kuribas> surprising no CAS are written in haskell.
15:45:41 <geekosaur> @hackage simple-reflect -- siers
15:45:41 <lambdabot> https://hackage.haskell.org/package/simple-reflect -- siers
15:46:12 <siers> nice
15:46:24 <kuribas> that cannot even rewrite or simplify expressions.
15:47:12 <geekosaur> true, but it shows the possibilities. and I'd suspect something more capable could be written. I have no idea why it hasn't yet, unlessit's just that it already exists elsewhere
15:47:17 <siers> how was 1+2*(3+4) captured?
15:47:28 <siers> yeah, the examples within illustrate what was meant by symbolic computation
15:48:00 <polyphem> geekosaur: is that term rewriting (foldr example) possible also in ghci or is it a lambdabot feature ?
15:48:17 × ec_ quits (~ec@gateway/tor-sasl/ec) (Quit: ec_)
15:48:23 <kuribas> polyphem: it's just a library
15:48:31 <geekosaur> see the hackage library I pointed to
15:48:45 <geekosaur> \you could install it, import Debug.SimpleReflect into ghci, and go nuts
15:49:03 <geekosaur> you do need to use a few tricks to keep it from getting confused though
15:49:16 <geekosaur> > foldr (*) (0::Expr) [a,b,c,d]
15:49:17 <lambdabot> a * (b * (c * (d * 0)))
15:49:29 <siers> what's Expr?
15:49:31 <geekosaur> well I should have used 1 but then (*) is a placeholder
15:49:35 <geekosaur> it just looks nicer infix
15:49:40 <siers> ah, just some data type that implements Num?
15:49:48 <geekosaur> Expr is the type simple-reflect uses internally to do this
15:49:59 <geekosaur> it implenments Num and a number of other typeclasses
15:50:01 <siers> how does it load 0 into Expr?
15:50:14 <siers> by some function by implementing Num?
15:50:23 <geekosaur> that just means it has a Num instance, so fromInteger works
15:50:32 <polyphem> how does it not freak out , with all those free (undefined) variables
15:50:46 <siers> that's probably lambdabot magic
15:50:47 <polyphem> s/variables/bindings/ :)
15:51:00 <geekosaur> (remember that any literal number has `fromInteger` or `fromRational` wrapped around it automatically to allow it to be any Num or Fractional instance as appropriate
15:51:11 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
15:51:19 <geekosaur> there's no lambdabot magic there, just the Expr type
15:51:43 <geekosaur> and the library binding all the single letter names to Expr or related types
15:51:46 <geekosaur> :t a
15:51:47 <lambdabot> Expr
15:51:47 <siers> geekosaur, I knew what implementing Num means :P but right, obviously it's fromInteger
15:51:50 <geekosaur> :t f
15:51:51 <lambdabot> FromExpr a => a
15:51:52 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
15:52:00 <siers> I just thought there's more to it, but no
15:52:16 <geekosaur> nothing else to it, just abusing Num a lot :)
15:53:27 <geekosaur> and Show instances
15:55:02 euandreh joins (~euandreh@2804:14c:33:9fe5:e5ea:1ffe:3a64:8fa7)
15:55:09 <polyphem> i see , thanks
15:56:41 <siers> I read TAPL a bit and I remember seeing the semantical rules to compute a value from a term... kind of eye opening to see them written out
15:57:07 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
16:00:29 <siers> and those rules immediately spring into mind upon seeing the reduction example in simple-reflect
16:00:59 × euandreh quits (~euandreh@2804:14c:33:9fe5:e5ea:1ffe:3a64:8fa7) (Ping timeout: 250 seconds)
16:01:05 nisstyre joins (wes@user/nisstyre)
16:07:00 × agumonkey quits (~user@88.163.231.79) (Ping timeout: 240 seconds)
16:10:12 × vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds)
16:12:39 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
16:14:43 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
16:15:45 briandaed joins (~root@109.95.142.93.r.toneticgroup.pl)
16:15:56 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
16:16:57 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
16:17:06 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:3240:c699:b7eb:e5b0) (Quit: WeeChat 2.8)
16:17:12 Vajb joins (~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813)
16:20:36 <briandaed> quick question regarding Hackage/Stackage, I see that all LTSes from 16.31 to 18.27 use network-3.1.1.1 which is deprecated - why?
16:21:34 Sgeo joins (~Sgeo@user/sgeo)
16:21:38 × worldhelloworld1 quits (uid543174@id-543174.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
16:22:39 <merijn> Presumably because not everything in the snapshots was updated to work with newer versions of network yet?
16:24:53 <briandaed> ok, sounds reasonably
16:26:19 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
16:26:43 × pooryorick quits (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 256 seconds)
16:27:26 <geekosaur> I don't think they update snapshots actually, they just release new ones
16:28:43 <jneira[m]> iirc it was deprecated due to a bug affecting cabal and msys with a relatively new version of autoconf
16:29:06 <jneira[m]> they released a patched version 3.1.1.2 and deprecated .1
16:29:38 <jneira[m]> but it is not affecting stack it seems so 🤷
16:30:09 <jneira[m]> but I guess the lts would work with 3.1.1.2
16:31:14 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
16:31:18 <geekosaur> stack controls its version of msys so presumably can avoid the issue
16:32:17 pooryorick joins (~pooryoric@87-119-174-173.tll.elisa.ee)
16:32:19 <briandaed> next is 3.1.2.0 and looks a lot happened there https://hackage.haskell.org/package/network-3.1.2.0/changelog
16:32:51 × incertia quits (~incertia@207.98.163.88) (Quit: ZNC 1.7.5 - https://znc.in)
16:33:49 <geekosaur> and immutability of LTSes is important for reproducible builds, which is one of stack's "selling points"
16:34:17 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
16:35:00 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
16:35:14 <geekosaur> (to be clear the scare quotes are only because you're "selling" something that's for free, not because I'm casting aspersions on it)
16:35:23 <briandaed> again sounds reasonably, but if there is a bug in compiler or library, the only way to fix it is to use newer LTS or use some hacked version provieded in extra-deps...
16:35:53 <kuribas> couldn't you implement unlift EitherT using exceptions?
16:36:12 incertia joins (~incertia@207.98.163.88)
16:36:25 <geekosaur> true, but they do a lot of testing to avoid that. at some point it may let something slipthrough though, in which case they may need a way to deprecate resolvers
16:36:42 zer0bitz joins (~zer0bitz@2001:2003:f74d:b800:7859:22cf:713c:fe6e)
16:37:08 ec joins (~ec@gateway/tor-sasl/ec)
16:39:28 <briandaed> then I'm cursed, one week and I encountered https://github.com/haskell-crypto/cryptonite/issues/329 and then https://github.com/haskell/network/issues/438 , LTS-16.31, pity there is no summary which LTSes are used most frequently by commercial projects, similarly to some android version - market share stats
16:47:05 × coot quits (~coot@213.134.190.95) (Quit: coot)
16:47:14 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
16:48:09 × Katarushisu quits (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
16:48:09 zer0bitz_ joins (~zer0bitz@2001:2003:f74d:b800:7859:22cf:713c:fe6e)
16:48:47 Katarushisu joins (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
16:48:47 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab)
16:50:36 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
16:50:46 × zer0bitz quits (~zer0bitz@2001:2003:f74d:b800:7859:22cf:713c:fe6e) (Ping timeout: 245 seconds)
16:51:27 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
16:51:30 × Cheery quits (~cheery@7-239-179-185.static.tentacle.fi) (Ping timeout: 250 seconds)
16:51:40 Cheery joins (~cheery@7-239-179-185.static.tentacle.fi)
16:52:05 ec joins (~ec@gateway/tor-sasl/ec)
16:52:31 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab) (Remote host closed the connection)
16:52:36 × Katarushisu quits (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Client Quit)
16:52:46 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:53:43 Katarushisu joins (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
16:55:22 × raym quits (~raym@user/raym) (Ping timeout: 256 seconds)
16:56:00 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
16:56:17 raym joins (~raym@user/raym)
16:56:37 × jinsun__ quits (~jinsun@user/jinsun) (Ping timeout: 240 seconds)
16:57:44 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:01:41 × nisstyre quits (wes@user/nisstyre) (Quit: WeeChat 3.4)
17:01:41 × DNH quits (~DNH@2a02:8108:1100:16d8:598a:8b0b:9405:6e26) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:02:01 nisstyre joins (wes@user/nisstyre)
17:05:15 agumonkey joins (~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7)
17:05:54 × doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 252 seconds)
17:05:56 lbseale joins (~ep1ctetus@user/ep1ctetus)
17:06:08 × ishutin quits (~ishutin@87-97-82-131.pool.digikabel.hu) (Ping timeout: 256 seconds)
17:06:28 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
17:07:58 ishutin joins (~ishutin@84-236-21-25.pool.digikabel.hu)
17:08:55 yauhsien_ joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
17:09:06 mmhat joins (~mmh@55d49be1.access.ecotel.net)
17:12:18 toulene_ joins (~toulene@user/toulene)
17:13:55 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
17:14:48 × toulene_ quits (~toulene@user/toulene) (Remote host closed the connection)
17:15:33 jinsun joins (~jinsun@user/jinsun)
17:16:45 × Arsen quits (arsen@managarm/dev/Arsen) (Quit: Quit.)
17:17:24 Arsen joins (arsen@managarm/dev/Arsen)
17:19:04 × ccntrq quits (~Thunderbi@2a01:c22:9102:c100:80c3:8f62:e3ae:6455) (Remote host closed the connection)
17:21:05 coot joins (~coot@213.134.190.95)
17:22:00 × bjobjo quits (~bjobjo@user/bjobjo) (Quit: leaving)
17:27:04 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab)
17:27:52 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
17:28:29 gdown joins (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net)
17:28:36 bjobjo joins (~bjobjo@user/bjobjo)
17:30:55 <maerwald> don't use cryptonite
17:31:56 <briandaed> hard to avoid that, a lot of libraries use it already
17:32:42 <maerwald> well, then use different libraries
17:33:26 <maerwald> wrt the network issue, it seems no one opened a ticket on the warp issue tracker
17:34:12 <maerwald> but yeah... just today we were talking about correctness and haskell, which is rather confusing given that so many libraries use sloppy and unverified cryptolibraries
17:34:12 <briandaed> yeah, also checked that
17:34:38 <maerwald> not even audited
17:38:33 <janus> maerwald: why would someone open a ticket on the warp issue tracker? doesn't seem like it forbids 3.1.2.0? what is the issue with warp?
17:39:01 <janus> kazu says that warp 3.3.5 has fixed the gracefulClose issue
17:40:19 econo joins (uid147250@user/econo)
17:40:46 <maerwald> janus: because of https://github.com/haskell/network/issues/438#issuecomment-784771757
17:41:08 analognoise joins (~analognoi@185.229.59.233)
17:44:58 × jespada quits (~jespada@148.252.132.235) (Read error: Connection reset by peer)
17:48:54 <Hecate> briandaed: it is indeed hard to avoid. Fortunately there are alternatives that are emerging, if you have a direct need for cryptography primitives. You can always ask questions on #haskell-cryptography about this. :)
17:51:28 notzmv joins (~zmv@user/notzmv)
17:52:17 × yauhsien_ quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Remote host closed the connection)
17:54:13 yauhsien_ joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
17:54:25 DNH joins (~DNH@2a02:8108:1100:16d8:598a:8b0b:9405:6e26)
17:54:51 × Vajb quits (~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813) (Read error: Connection reset by peer)
17:55:06 bontaq` joins (~user@165.1.205.23)
17:56:01 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
17:56:35 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
17:57:36 × unyu quits (~pyon@user/pyon) (Quit: brb)
17:57:48 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
17:58:02 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
17:58:56 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
17:59:14 <briandaed> Hecate: thx, joined
18:00:21 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
18:00:48 bontaq`` joins (~user@ool-45779fe5.dyn.optonline.net)
18:01:37 jpds joins (~jpds@gateway/tor-sasl/jpds)
18:02:24 toulene joins (~toulene@user/toulene)
18:02:49 × bontaq` quits (~user@165.1.205.23) (Ping timeout: 256 seconds)
18:05:38 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
18:07:56 xkuru joins (~xkuru@user/xkuru)
18:09:00 × raym quits (~raym@user/raym) (Remote host closed the connection)
18:09:17 × ishutin quits (~ishutin@84-236-21-25.pool.digikabel.hu) (Ping timeout: 272 seconds)
18:10:17 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
18:10:27 ishutin joins (~ishutin@87-97-88-220.pool.digikabel.hu)
18:11:00 Vajb joins (~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813)
18:11:18 unyu joins (~pyon@user/pyon)
18:11:44 lavaman joins (~lavaman@98.38.249.169)
18:12:10 raym joins (~raym@user/raym)
18:12:46 × kongsheng quits (~kongsheng@71.28.228.142) (Quit: Client closed)
18:13:12 jgeerds joins (~jgeerds@55d4548e.access.ecotel.net)
18:13:35 kongsheng joins (~kongsheng@71.28.228.142)
18:16:03 alp joins (~alp@user/alp)
18:17:55 euandreh joins (~euandreh@2804:14c:33:9fe5:49fc:dd14:62fe:1d6f)
18:19:06 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3d9b:7fc7:6af0:b7ab) (Remote host closed the connection)
18:19:46 emf joins (~emf@2620:10d:c090:400::5:33d6)
18:23:04 × yauhsien_ quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Remote host closed the connection)
18:25:22 × coot quits (~coot@213.134.190.95) (Quit: coot)
18:30:20 × kuribas quits (~user@ptr-25vy0i8r77cynr1cb5v.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
18:32:02 bontaq``` joins (~user@165.1.205.23)
18:32:50 × bontaq`` quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
18:37:44 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:8852:a14c:a420:3fd8)
18:37:48 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
18:39:41 × bontaq``` quits (~user@165.1.205.23) (Ping timeout: 272 seconds)
18:41:15 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
18:46:25 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
18:46:33 lambdabot joins (~lambdabot@silicon.int-e.eu)
18:46:33 × lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host)
18:46:33 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
18:46:38 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
18:57:16 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
18:57:43 Erutuon joins (~Erutuon@user/erutuon)
19:00:10 × loonycyborg quits (loonycybor@wesnoth/developer/loonycyborg) (Quit: ZNC - http://znc.sourceforge.net)
19:00:26 loonycyborg joins (loonycybor@wesnoth/developer/loonycyborg)
19:00:43 jakalx parts (~jakalx@base.jakalx.net) ()
19:02:37 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
19:02:53 dsrt^ joins (~dsrt@50.232.121.75)
19:03:26 jakalx joins (~jakalx@base.jakalx.net)
19:05:32 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
19:05:57 Erutuon joins (~Erutuon@user/erutuon)
19:06:57 alMalsamo joins (~alMalsamo@gateway/tor-sasl/almalsamo)
19:09:19 × Vajb quits (~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813) (Read error: Connection reset by peer)
19:09:34 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
19:09:39 zincy_ joins (~zincy@2a00:23c8:970c:4801:d43:5e37:69e3:551c)
19:12:31 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
19:17:45 <Unicorn_Princess> is there an easy way to get ghcup to upgrade all the things to the latest version? ghcup install ghc 9.2.2 for each is tedious
19:18:02 desantra joins (~skykanin@user/skykanin)
19:18:14 vicfred joins (~vicfred@user/vicfred)
19:18:55 <geekosaur> I don't think it has an "all" option. I just use ghcup tui and hit "i" on the things I want to install
19:20:02 <Unicorn_Princess> then i guess i will suffer
19:20:13 × deadmarshal_ quits (~deadmarsh@95.38.114.14) (Ping timeout: 272 seconds)
19:20:25 <janus> Unicorn_Princess: what do you mean with "for each"? the ghc version is independent of the other versions
19:20:43 Tuplanolla joins (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
19:20:51 <geekosaur> I presume that means ghc, cabal, stack, etc.
19:20:56 <Unicorn_Princess> i mean ghcup handles ghc, cabal, stack, the lsp..
19:22:41 coot joins (~coot@213.134.190.95)
19:22:44 × vicfred quits (~vicfred@user/vicfred) (Ping timeout: 250 seconds)
19:24:46 ProfSimm joins (~ProfSimm@87.227.196.109)
19:28:26 Akiva joins (~Akiva@user/Akiva)
19:29:39 <monochrom> "ghcup install" understands the "latest" tag.
19:30:13 <monochrom> The default is "recommended" this is why the default is not "latest".
19:30:21 × doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 272 seconds)
19:30:52 <geekosaur> for thing in ghcup ghc stack cabal; do ghcup install $thing latest; done # hls is installed with ghc
19:32:49 <geekosaur> oh I'm wrong, so add hls to the list
19:32:52 <geekosaur> sorry
19:33:06 <geekosaur> wsd thinking of the hls-powered epithet
19:33:07 <monochrom> :)
19:34:08 sceptttre joins (~sceptttre@2603-6011-df05-84ab-dcd9-3721-0281-3545.res6.spectrum.com)
19:34:43 × sceptttre quits (~sceptttre@2603-6011-df05-84ab-dcd9-3721-0281-3545.res6.spectrum.com) (Quit: Client closed)
19:34:47 <geekosaur> qactually I wonder if ghcup install works for itselfor if you have to use upgrade
19:34:52 agumonke` joins (~user@88.163.231.79)
19:35:07 <monochrom> Defaulting to "recommended" not "latest" works great for me and my students. It is the prudent thing to do and it is not tedious, my students and I do not suffer.
19:35:22 × zincy_ quits (~zincy@2a00:23c8:970c:4801:d43:5e37:69e3:551c) (Remote host closed the connection)
19:35:39 <geekosaur> in particular there is no hls yet for ghc 9.2.2
19:35:57 zincy_ joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com)
19:35:57 × Unicorn_Princess quits (~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection)
19:36:12 <geekosaur> and unless you need some new feature, 8.10.7 works fine
19:36:17 × agumonkey quits (~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7) (Ping timeout: 240 seconds)
19:37:10 <monochrom> "ghcup install ghcup" shows an error message that suggests that ghcup is confused. :)
19:37:57 <monochrom> The error messages and warnings says something along the line of "to install ghc, say ghcup install ghc"
19:38:27 <geekosaur> just saw that :)
19:38:43 <monochrom> So yeah it has to be "ghcup upgrade".
19:38:48 Unicorn_Princess joins (~Unicorn_P@46-54-248-191.static.kate-wing.si)
19:39:04 <geekosaur> ghcup upgrade; for thing in hls ghc stack cabal; do ghcup install $thing latest; done
19:39:48 <monochrom> ghcup installs those who don't install themselves >:)
19:40:12 <monochrom> (Sorry I have been hairsplitting set theory lately!)
19:40:25 <geekosaur> hm, could use ghcup list to extract the list of things to install, but it includes ghcup…
19:40:54 <Unicorn_Princess> ghcup tui is very pleasant, thanks geekosaur
19:41:31 <monochrom> It may be more robust to extract from "ghcup install --help" instead, under the "available commands" heading.
19:42:19 <monochrom> or "ghcup list --help" and look for the "[-t|--tool <ghc|cabal|hls|stack>]"
19:42:21 <geekosaur> but harder to sewd/awk :þ
19:42:31 <geekosaur> *sed
19:42:46 <monochrom> sewk and awek :)
19:44:17 kilolympus joins (~kilolympu@31.205.200.235)
19:45:28 × zincy_ quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection)
19:46:40 × briandaed quits (~root@109.95.142.93.r.toneticgroup.pl) (Quit: leaving)
19:47:59 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:53:52 × unyu quits (~pyon@user/pyon) (Quit: brb)
19:54:39 worldhelloworld joins (~c1utt4r@164.68.96.37)
19:55:29 × DNH quits (~DNH@2a02:8108:1100:16d8:598a:8b0b:9405:6e26) (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:55:37 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
19:56:57 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
19:57:21 <maerwald> `ghcup install ghcup` will end up trying to install a GHC with the version 'ghcup'
19:57:34 <monochrom> Oh heh
19:57:40 <maerwald> becaus `ghcup install <ver>` is the legacy form of installing GHC
19:57:45 DNH joins (~DNH@2a02:8108:1100:16d8:1c1a:3fa2:4926:7c5a)
19:57:55 <maerwald> which is kept for compatibility
19:57:58 <geekosaur> figured it was something like that
19:58:13 <monochrom> Yeah I forgot that the parser could be trying "since ghcup is not a 'command' it must be a 'version/tag'"
19:58:23 Lord_of_Life_ is now known as Lord_of_Life
19:58:50 <worldhelloworld> unrelated question - what free irc client is there that has a history of conversations even when you are disconnected? there is so much to learn from this group .... I tried irccloud, but that's paid ... any free versions?
19:58:52 <monochrom> as opposed to "parse error: ghcup is not a valid command"
19:59:37 <maerwald> much more confusing is this: `ghcup install lol-8.10.7`
19:59:56 <monochrom> See the /topic line for a volunteer's log website.
20:00:13 <Unicorn_Princess> worldhelloworld, what do you mean history when disconnected? like, that you can access your logs from when you were connected, even if you're not currently connected?
20:00:15 <maerwald> it will parse 'lol' as an arch-triple, because we support compiling cross-ghc, but it's ignored for install commands
20:00:37 <monochrom> If you really want to do your own recording, consider an "irc bouncer" so you have a background process that connects 24/7
20:00:41 <Unicorn_Princess> or do you mean that will show you channel chat history even for times when you weren't connected?
20:01:16 <monochrom> (and the background process also serves as a proxy for your IRC client"
20:01:35 <worldhelloworld> Unicorn_Princess ... yes something like that - irccloud used to have a history of missed cconversations, current one i'm trying , hexchat, doesn't
20:02:14 <Unicorn_Princess> is there any reason i shouldn't stick OverloadedRecordDot and DuplicateRecordFields in .cabal's default-extensions and pretend haskell is sane?
20:02:27 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
20:02:43 <sclv> for a given project? no. have fun with them!
20:02:47 <monochrom> OverloadedRecordDot is not sane.
20:03:02 × bahamas quits (~lucian@84.232.140.52) (Ping timeout: 240 seconds)
20:03:07 <sclv> i mean i don't like it either, but if you do, just use it freely and see how it goes
20:03:21 <Unicorn_Princess> worldhelloworld, alas, as monochrom said, you will need something to connect to the channel in your stead and maintain a history. irc does not support offline history syncing
20:03:53 <monochrom> IRC servers don't record for you because they don't serve ads.
20:03:54 <Unicorn_Princess> that something is called an "irc bouncer" in the lingo
20:04:12 <sclv> the ircbrowse link in the channel description still maintains up to date logs
20:04:15 <monochrom> (or sell your credit card number to strangers)
20:04:15 <Unicorn_Princess> (and that's where my knowledge ends)
20:04:18 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
20:04:22 <sclv> so you can just browse those too
20:04:23 <worldhelloworld> Hmmm yes, the logs are one way, unfortunately not very interactive
20:04:29 <Unicorn_Princess> monochrom, what's not sane about overloadedrecorddot?
20:05:00 <monochrom> Cargo culting C, C++, and Java syntax is not sane.
20:05:25 <monochrom> I guess it was Algol syntax.
20:05:56 <Unicorn_Princess> i'll leave you to your personId, cowId, catId, dogId, etcId then :P
20:06:23 <sclv> ugh... that's terrible. Now, on the other hand, id_person, id_cow, id_cat, now that's great!
20:06:24 <monochrom> No I'm OK with for example SML's choice which is # IIRC.
20:06:24 <worldhelloworld> Pardon my ignorance, but what does the term "cargo culting" mean? Or is it some dismissive reference to a rusty language monochrom ?
20:06:55 <monochrom> Blindly mimicking things.
20:07:13 <geekosaur> see the pacific island cargo cults post-ww2
20:07:26 <worldhelloworld> ok, thanks - googling now
20:07:40 ec joins (~ec@gateway/tor-sasl/ec)
20:07:40 <geekosaur> there are IRC clients like quassel which involve a bouncer component which stays connected, but that assumes you have some way for them to stay connected
20:07:40 <monochrom> For example "I saw other people doing pair programming, I must do the same! I don't ask why. I don't ask suitability to my context."
20:07:53 <geekosaur> otherwise, yes, you'd have to pay to have someone stay connected for you
20:08:25 <geekosaur> there's also matrix but I don't know if that's free either
20:08:55 <worldhelloworld> geekosaur , so if I have a cloud machine - is it easy to stay connected and then read it on another machine? I'd imagine it sounds a bit complicated to configure
20:09:13 <geekosaur> quassel would configure it for you
20:09:26 <geekosaur> otherwise you'd have to set up something like znc manually
20:09:28 <worldhelloworld> thats true monochrom - follow the herd :)
20:09:37 × ishutin quits (~ishutin@87-97-88-220.pool.digikabel.hu) (Ping timeout: 272 seconds)
20:10:02 <worldhelloworld> ok will read if quassel fits my needs, configuring manually is a pain
20:10:02 <sclv> i believe i first became familiar with cargo cults from the classic Niven sci fi novel Dream Park
20:10:15 <monochrom> Unicorn_Princess, there are several sane choices. Use . for function composition, choose some other symbol for record selection. Or, use . for record selection, choose some other symbol for function composition. Using the same symbol for both is the insane one.
20:10:40 <geekosaur> dot does too many things already and it shows
20:10:46 <monochrom> FWIW SML chooses o for function composition, # for record selection.
20:10:51 <geekosaur> > [False..True] -- nope
20:10:52 ishutin joins (~ishutin@84-236-40-230.pool.digikabel.hu)
20:10:52 <lambdabot> error:
20:10:52 <lambdabot> Not in scope: ‘False..’
20:10:52 <lambdabot> No module named ‘False’ is imported.error:
20:11:14 <Hecate> pity not everyone has easy access to ∘ on their keyboard
20:11:47 <monochrom> And SML was defined long before unicode existed.
20:12:15 × coot quits (~coot@213.134.190.95) (Quit: coot)
20:12:24 <ski> SML's `#foo' also nicely differentiates between the field name, and the field accessor function
20:12:27 <Hecate> that being said I'd have also (|>) and (<|)
20:12:34 worldhelloworld2 joins (~quassel@vmi275462.contaboserver.net)
20:12:38 <monochrom> But we can still debate which one is more nighmarish, "g o h" or "g `o` h" :)
20:12:40 <Hecate> ski: don't we have that with overloaded labels nowadays?
20:12:52 <Hecate> monochrom: the second one has a funny face though
20:13:10 <Hecate> ( `o`) .oO(hello)
20:15:50 simendsjo joins (~user@84.211.91.241)
20:17:27 <monochrom> SML has the nice uniformity that tuples are records too, (x,y,z) is the record {1=x, 2=y, 3=z} using 1, 2, 3 as field names.
20:17:51 <ski> Hecate : well, you'd need `NoFieldSelectors', too
20:17:51 <monochrom> So #2 works for all of: (x,y), (x,y,z), (x,y,z,t), ...
20:19:00 × agumonke` quits (~user@88.163.231.79) (Remote host closed the connection)
20:19:37 yauhsien_ joins (~yauhsien@61-231-43-120.dynamic-ip.hinet.net)
20:22:46 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:8852:a14c:a420:3fd8) (Remote host closed the connection)
20:22:59 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:8852:a14c:a420:3fd8)
20:24:11 × yauhsien_ quits (~yauhsien@61-231-43-120.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
20:24:30 unyu joins (~pyon@user/pyon)
20:25:04 × desantra quits (~skykanin@user/skykanin) (Quit: WeeChat 3.3)
20:27:52 zincy_ joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com)
20:28:46 <Hecate> ski: I think NoFieldSelectors is good
20:30:29 × zincy_ quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection)
20:33:01 zincy_ joins (~zincy@2a00:23c8:970c:4801:d43:5e37:69e3:551c)
20:35:32 zer0bitz joins (~zer0bitz@2001:2003:f74d:b800:1d57:8085:a2ac:6196)
20:37:39 deadmarshal_ joins (~deadmarsh@95.38.114.14)
20:39:04 agumonkey joins (~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7)
20:39:06 × zer0bitz_ quits (~zer0bitz@2001:2003:f74d:b800:7859:22cf:713c:fe6e) (Ping timeout: 260 seconds)
20:39:50 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
20:40:22 JimL joins (~quassel@89-162-2-132.fiber.signal.no)
20:41:17 × zincy_ quits (~zincy@2a00:23c8:970c:4801:d43:5e37:69e3:551c) (Remote host closed the connection)
20:41:31 zincy_ joins (~zincy@2a00:23c8:970c:4801:d43:5e37:69e3:551c)
20:42:33 × deadmarshal_ quits (~deadmarsh@95.38.114.14) (Ping timeout: 272 seconds)
20:45:25 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
20:46:14 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
20:46:21 × dcoutts__ quits (~duncan@host86-144-78-249.range86-144.btcentralplus.com) (Ping timeout: 272 seconds)
20:47:18 neurocyte0917090 joins (~neurocyte@IP-045014190241.dynamic.medianet-world.de)
20:47:18 × neurocyte0917090 quits (~neurocyte@IP-045014190241.dynamic.medianet-world.de) (Changing host)
20:47:18 neurocyte0917090 joins (~neurocyte@user/neurocyte)
20:47:48 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 240 seconds)
20:48:51 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
20:49:36 mastarija joins (~mastarija@2a05:4f46:e04:6000:509f:97b6:34da:4a)
20:49:51 × JimL quits (~quassel@89-162-2-132.fiber.signal.no) (Remote host closed the connection)
20:50:07 <mastarija> I'm wondering, is there an alternative to the `network` package?
20:50:42 <Hecate> not sure
20:50:49 <geekosaur> I think there might be higher level interfaces, but network is the loest level interface and would still be there underneath
20:50:53 <geekosaur> *lowest
20:51:06 <Hecate> hmm
20:51:08 <Hecate> https://hackage.haskell.org/package/network-bsd ?
20:51:09 <Hecate> maybe?
20:51:20 <[exa]> it would be pretty hard to write a really different alternative to the sockets API
20:51:24 <mastarija> I was just wondering if someone tried to do something else with low level networking
20:51:55 <[exa]> the BSD subpackage is about netdb name resolution
20:52:02 acidjnk joins (~acidjnk@p200300d0c7049f27690562e0ba62f824.dip0.t-ipconnect.de)
20:52:15 <geekosaur> yeh
20:52:42 <geekosaur> network-bsd is name resolution, network is sockets, the docs for network point to some higher level interfaces
20:52:46 <[exa]> mastarija: not really, berkeley sockets are kinda everywhere
20:53:01 <geekosaur> "Other packages provide higher level interfaces:
20:53:01 <geekosaur> connection
20:53:01 <geekosaur> hookup
20:53:01 <geekosaur> network-simple"
20:53:08 <[exa]> mastarija: as geekosaur said, there's plenty of middleware that adds abstractions/goodies (0mq etc)
20:53:27 <mastarija> yes I saw that
20:53:34 lavaman joins (~lavaman@98.38.249.169)
20:53:59 <[exa]> is there even an OS that uses a non-socketish API for networking?
20:54:06 <mastarija> but since there are usually 50 different takes on something in haskell I was surprised there's nothing for networking :D
20:54:33 <geekosaur> there used to be some that used alternatives, but de facto sockets have won
20:54:56 <mastarija> [exa], I'm not really looking for nonsocket networking, but maybe a different "wrapper" around the C library
20:55:23 <geekosaur> the problem here is that network itself shows how difficult writing such wrappers is
20:55:29 <[exa]> mastarija: for any specific purpose?
20:55:34 <geekosaur> it'skinda notoriously difficult to keep wprking
20:55:36 <mastarija> I was just interested if there's something out there
20:55:46 <mastarija> Like looking at weird animals in the zoo
20:55:50 <mastarija> nothing in particular :D
20:56:26 <geekosaur> especially on windows
20:56:29 <mastarija> geekosaur, yes I have problems on windows on occasions
20:56:30 <[exa]> mastarija: I tend to take all sockets and wrap them with the haskell handles and then pretend the world is a happy place with only handles and IO
20:56:44 <mastarija> xD
20:57:13 <[exa]> ah, windows
20:57:20 <monochrom> There are usually 50 different takes on something high-level.
20:59:55 Maxdamantus joins (~Maxdamant@user/maxdamantus)
21:00:50 TQuid joins (~TQuid@2604:3d08:6e7e:9700:9106:2a95:ca3a:5770)
21:02:07 alMalsamo is now known as lumberjack123
21:02:15 TQuid is now known as register
21:02:20 register is now known as TQuid
21:02:44 <janus> mastarija: i have made uring/iocp api compatible bindings for chez (used via idris), something similar should be possible with haskell (except i don't know how the haskell rts works).
21:03:31 <janus> mastarija: https://git.sr.ht/~janus/
21:03:48 <geekosaur> I think there might be some work on uring support in the rts
21:04:05 <geekosaur> not inany released version, and still early
21:04:16 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
21:05:37 × zer0bitz quits (~zer0bitz@2001:2003:f74d:b800:1d57:8085:a2ac:6196) (Ping timeout: 250 seconds)
21:06:57 ec joins (~ec@gateway/tor-sasl/ec)
21:07:59 <mastarija> janus, never heard of uring
21:08:20 <mastarija> gonna check that out, thanks :)
21:08:24 <janus> mastarija: there are some good articles on lwn
21:10:03 × simendsjo quits (~user@84.211.91.241) (Ping timeout: 256 seconds)
21:12:40 gehmehgeh joins (~user@user/gehmehgeh)
21:12:47 <mastarija> janus, thx, found one : https://lwn.net/Articles/810414/
21:13:42 × zincy_ quits (~zincy@2a00:23c8:970c:4801:d43:5e37:69e3:551c) (Remote host closed the connection)
21:14:27 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
21:15:24 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
21:17:17 pavonia joins (~user@user/siracusa)
21:18:28 shailangsa joins (~shailangs@host86-186-133-59.range86-186.btcentralplus.com)
21:19:08 JimL joins (~quassel@89-162-2-132.fiber.signal.no)
21:19:24 coot joins (~coot@213.134.190.95)
21:20:50 dcoutts__ joins (~duncan@host86-144-78-249.range86-144.btcentralplus.com)
21:24:41 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:8852:a14c:a420:3fd8) (Remote host closed the connection)
21:25:29 × cosimone quits (~user@93-47-229-38.ip115.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1))
21:26:23 <TQuid> Anyone here had success setting up a Haskell environment on an M1 mac?
21:27:35 <geekosaur> ghc 8.10.7 should work fine
21:27:43 <geekosaur> 9.2.2 apparently has a signing problem
21:28:03 <geekosaur> but mostly people still use 8.10.7 so I wouldn't be in much hurry to upgrade anyway
21:28:19 <TQuid> Yeah, when I try to install that from the bindist, "make install" results in every single library giving a security exception ("cannot scan for malicious software"). I don't relish re-running make for every one of those
21:28:51 <TQuid> I have not found any way to tell the idiot OS to give a pass to a whole directory
21:29:01 × kongsheng quits (~kongsheng@71.28.228.142) (Quit: Client closed)
21:29:25 × AlexZenon quits (~alzenon@178.34.160.24) (Read error: Connection reset by peer)
21:29:26 × Alex_test quits (~al_test@178.34.160.24) (Read error: Connection reset by peer)
21:29:26 × AlexNoo quits (~AlexNoo@178.34.160.24) (Read error: Connection reset by peer)
21:30:40 × ubert quits (~Thunderbi@p548c8d84.dip0.t-ipconnect.de) (Quit: ubert)
21:30:43 <mastarija> geekosaur, I just tried setting up 9.2.2 on windows and it's broken it seems
21:30:59 <maerwald> mastarija: yes
21:31:03 <maerwald> see https://gitlab.haskell.org/ghc/ghc/-/issues/21196
21:31:22 <mastarija> :D
21:31:52 × romesrf quits (~romes@44.190.189.46.rev.vodafone.pt) (Ping timeout: 250 seconds)
21:32:58 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:8852:a14c:a420:3fd8)
21:33:00 romesrf joins (~romes@44.190.189.46.rev.vodafone.pt)
21:33:32 <maerwald> you can try putting yur msys2 into PATH
21:33:54 <maerwald> but that can cause all sorts of other problems
21:34:22 <maerwald> since windows uses PATH to look for dynamic libraries too
21:34:58 AlexNoo joins (~AlexNoo@178.34.160.24)
21:35:33 Alex_test joins (~al_test@178.34.160.24)
21:36:05 AlexZenon joins (~alzenon@178.34.160.24)
21:37:52 <mastarija> maerwald, I have msys2 in my path (parts of it) it works nicely and I quite like the experience. When I need a package, just pacman -S and it's on!
21:39:09 ubert joins (~Thunderbi@p200300ecdf3be9b38bc0692fc3914e47.dip0.t-ipconnect.de)
21:39:16 × dsrt^ quits (~dsrt@50.232.121.75) (Remote host closed the connection)
21:39:47 × mastarija quits (~mastarija@2a05:4f46:e04:6000:509f:97b6:34da:4a) (Quit: Leaving)
21:41:56 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds)
21:42:20 <janus> maybe the msys2 equivalent of /usr/lib needs to be on the path for libgcc_s.dll to be found (i am guessing the file name)
21:42:39 × TQuid quits (~TQuid@2604:3d08:6e7e:9700:9106:2a95:ca3a:5770) (Remote host closed the connection)
21:42:52 × Topsi quits (~Tobias@dyndsl-095-033-088-239.ewe-ip-backbone.de) (Read error: Connection reset by peer)
21:43:00 <maerwald> it's absolutely not recommended
21:43:08 <maerwald> weird things will happen
21:43:35 × shapr quits (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
21:47:46 × coot quits (~coot@213.134.190.95) (Quit: coot)
21:48:51 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
21:50:50 merijn joins (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl)
21:51:57 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
21:53:07 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
21:53:45 <monochrom> Yikes, I was hoping that 9.2.2 would solve all platform-related problems. Apparently, it has caused more.
21:54:04 <monochrom> OK, "caused" is unfair. suffered.
21:54:25 <maerwald> msys2 maintainers also managed to break GHC: https://github.com/msys2/MINGW-packages/issues/10837
21:54:30 <maerwald> so you get hit from all angles
21:54:31 <geekosaur> 9.2.2 hasso far been abit of a cursedrelease. starting with "is not released"
21:54:51 <monochrom> (Someone on the mailing list reported a signature-checking error on intel mac.)
21:54:59 <geekosaur> yep
21:55:42 × merijn quits (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
21:56:03 <monochrom> Though, the silver lining is that all the issues seem to be just packaging rather than fundamental eg code generator broken. :)
21:56:11 <monochrom> So, much easily fixable.
21:56:36 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
21:56:53 <monochrom> OK, I guess from the POV of the GHC devs, it is packaging that's the hard part. :)
21:56:57 <geekosaur> yeh, but imagine being poor bgamari right now
21:57:34 <monochrom> They're probably like "code optimization based on abstract interpretation is trivial" :)
21:59:31 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 245 seconds)
22:01:08 <sm> releasing is hard
22:01:18 <sm> sorry to hear 9.2.2 is continuing the tradition .. :/
22:03:58 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
22:05:02 <romesrf> hahaah
22:05:27 <romesrf> it is indeed unfortunate that so much work is required for that all to work
22:06:10 Maxdamantus joins (~Maxdamant@user/maxdamantus)
22:06:43 <maerwald> well, first of all: supporting windows is hard anyway
22:07:11 <romesrf> :') *windows* is hard
22:07:17 <maerwald> then supporting mac is hard
22:07:24 <maerwald> M1 even harder
22:07:32 <maerwald> then FreeBSD is a nightmare at times
22:07:51 <maerwald> alpine linux also causes issues
22:07:54 <maerwald> and the list goes on
22:08:02 <romesrf> it does seem like a chore
22:08:05 <sm> bgamari needs help
22:08:13 <romesrf> sm: how can we help?
22:08:31 <maerwald> clone em
22:08:41 <sm> get hired as a full time engineer with the GHC team
22:08:46 <romesrf> sm: dream job?
22:08:56 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:09:01 <sm> hehe maybe ask bgamari
22:09:12 <sm> yes and no :)
22:09:17 <sm> I imagine
22:09:28 Maxdaman1us joins (~Maxdamant@user/maxdamantus)
22:09:30 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:8852:a14c:a420:3fd8) (Remote host closed the connection)
22:09:34 <romesrf> "OK everyone 9.2.2 is out everyone get back on code optimization"
22:09:44 <romesrf> *everyone is happy for a month*
22:09:51 <romesrf> OK everyone 9.2.3 let's go
22:09:57 <romesrf> 3 months of hell?
22:09:59 <romesrf> :)
22:10:12 <Unicorn_Princess> hm. project-name.cabal other-modules and default-extensions lists are newline-separated, but build-depends needs commas between items. what gives?
22:10:56 <romesrf> sm: unfortunately full time isn't on the table for me, the thesis comes first
22:10:58 <maerwald> Unicorn_Princess: because you already have optional whitespace between dependency name and version range
22:11:08 <sm> picture how Debian supports multiple architectures. It's an army of maintainers all working together. (Actually it's probably a much smaller number of hard-working folks. But in principle, it's definitely not expected to all be handled by 1-2 people)
22:11:13 <romesrf> but "where" is bgamari working?
22:11:31 <Unicorn_Princess> maerwald, aaah, ugly, but makes sense, thanks
22:11:47 <monochrom> If the job is just to pick one single platform and support it, it could be a dream job. If the job is to support multiple platforms, that's a nightmare job.
22:11:51 <janus> Unicorn_Princess: you can avoid the commas by having multiple build-depends
22:11:54 <maerwald> sm: a distro like debian probably has 50 active volunteers and easily up to 200 devs in total
22:12:00 <sm> I think he and maybe others like mpickering are employees of Well-Typed and part/full time funded to work on GHC
22:12:04 <romesrf> monochrom: I can see that :)
22:12:05 <monochrom> Ugh wait a second! nightmare is a special case of dream... >:)
22:12:12 <Unicorn_Princess> lol
22:12:22 <romesrf> monochrom: LOL
22:12:26 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 260 seconds)
22:12:34 <romesrf> instance Dreamable Nightmare
22:13:56 biberu joins (~biberu@user/biberu)
22:14:18 <romesrf> perhaps you know impurepics.com, they have some really funny images
22:14:23 <romesrf> this one always comes to mind: https://impurepics.com/posts/2018-07-29-names-dont-matter.html
22:14:25 Maxdamantus joins (~Maxdamant@user/maxdamantus)
22:14:42 <monochrom> Haha rosable.
22:16:10 kimjetwav joins (~user@2607:fea8:2363:8f00:9e8a:8fa1:6b4e:dd92)
22:17:34 × Maxdaman1us quits (~Maxdamant@user/maxdamantus) (Ping timeout: 260 seconds)
22:17:58 × kimjetwav quits (~user@2607:fea8:2363:8f00:9e8a:8fa1:6b4e:dd92) (Client Quit)
22:19:17 lavaman joins (~lavaman@98.38.249.169)
22:21:59 Guest14 joins (~Guest14@185.249.168.124)
22:22:31 × Guest14 quits (~Guest14@185.249.168.124) (Client Quit)
22:22:34 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:8852:a14c:a420:3fd8)
22:26:49 jz99 joins (~jz99@pa49-186-65-17.pa.vic.optusnet.com.au)
22:27:08 × jz99 quits (~jz99@pa49-186-65-17.pa.vic.optusnet.com.au) (Remote host closed the connection)
22:27:09 euouae joins (~euouae@user/euouae)
22:27:25 <euouae> Hello does anyone else have two entries of ~/.cabal/bin and ~/.gchup/bin in their $PATH?
22:27:36 jz99 joins (~jz99@pa49-186-65-17.pa.vic.optusnet.com.au)
22:28:07 × jz99 quits (~jz99@pa49-186-65-17.pa.vic.optusnet.com.au) (Remote host closed the connection)
22:28:09 <monochrom> I think most people do.
22:28:22 <euouae> why is that monochrom, shouldn't there be a single entry instead?
22:28:25 <geekosaur> I think they might mean two of each?
22:28:29 <euouae> ah yeah, two of each
22:28:38 kaph joins (~kaph@151.35.10.65)
22:28:48 <geekosaur> ideally there'd be only one. you might have to check your shell dotfiles for duplication
22:29:04 <euouae> I can't even figure out where it is that it gets added
22:29:09 <monochrom> I don't, but that's because I set up my ~/.cabal/config to have a non-default setting about installdir so I have ~/bin instead of ~/.cabal/bin
22:29:18 <euouae> I don't see it under my .bashrc or .profile nor my corresponding /etc files
22:30:11 <geekosaur> look for a line which sources ~/.ghcup/env
22:30:22 <geekosaur> or possibly two such lines
22:30:42 <euouae> aha, thanks. I will investigate. that does bring up results
22:30:53 shapr joins (~user@pool-173-73-44-186.washdc.fios.verizon.net)
22:31:31 <euouae> in ~/.bashrc there's [ -f "/home/fox/.ghcup/env" ] && source "/home/fox/.ghcup/env"
22:31:39 × fendor_ quits (~fendor@178.165.181.170.wireless.dyn.drei.com) (Remote host closed the connection)
22:31:44 <euouae> that one should be fine, as -f only tests for existence I believe, so ... hmm...
22:31:48 <geekosaur> yes
22:32:12 <monochrom> What if something runs .bashrc twice?
22:33:09 <euouae> That's probably it
22:33:16 <geekosaur> .bashrc is run with every shell, .profile only by a login shell. if you start a second shell under the first it'll add them to $PATH again
22:33:47 <euouae> but who added that line to my .bashrc? Was it me?
22:34:23 <euouae> It's not automatically done by ghcup, right? I must've mistakenly modified my .bashrc instead of .profile
22:34:45 <monochrom> The "curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh" thing does. Although, it did ask you.
22:35:02 <maerwald> euouae: that has been fixed
22:35:03 <geekosaur> shouldn't it have added it to .profile though?
22:35:10 <geekosaur> oh
22:35:21 <maerwald> https://gitlab.haskell.org/haskell/ghcup-hs/-/merge_requests/229
22:35:24 <euouae> aha, okay. thanks again for all the clarifications and the unix lesson :D
22:35:50 <maerwald> 2 months ago, so if you re-run the ghcup installer, it will fix ~/.ghcup/env
22:35:54 × kaph quits (~kaph@151.35.10.65) (Remote host closed the connection)
22:36:16 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
22:36:22 kaph joins (~kaph@151.35.10.65)
22:37:04 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
22:37:37 <monochrom> neat trick :)
22:37:38 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 256 seconds)
22:37:48 <euouae> maerwald https://www.haskell.org/ghcup/install/#manual-install the website could also be fixed
22:38:06 <euouae> Because it seems that it's still suggesting the old thing?
22:38:22 jpds joins (~jpds@gateway/tor-sasl/jpds)
22:38:53 <euouae> won't re-running ghcup also re-download everything?
22:39:03 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:39:03 <maerwald> not much
22:39:37 <maerwald> You can also: curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_MINIMAL=1 sh
22:40:46 <euouae> I'm going to write my own hack that detects .cabal/bin presence in $PATH for now
22:41:17 <maerwald> euouae: the link I gave you shows how to do it
22:41:36 haskellnoob joins (~haskellno@181.122.131.227)
22:42:57 <haskellnoob> hello all, it's me again with another noob question where I am stuck
22:43:01 <haskellnoob> https://pastebin.com/RSTJEZnb
22:43:47 <haskellnoob> basically I have a newtype wrapped around a bytestring that gets hex-encoded, but I cannot implement the FromJSON instance, I'm just not smart enough to figure it out
22:44:15 <euouae> maerwald in that commit, right? yup, but I'm going with the simpler $PATH =~ "cabal/.bin"
22:45:16 <geekosaur> https://github.com/geekosaur/dotty/blob/master/.bsa-common#L21-L53 for those who like their minds blown :þ
22:47:10 × ubert quits (~Thunderbi@p200300ecdf3be9b38bc0692fc3914e47.dip0.t-ipconnect.de) (Quit: ubert)
22:47:23 da39a3ee5e6b4b0d joins (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e)
22:47:32 Guest|40 joins (~Guest|40@dsl-94-229-145-149.pool.bitel.net)
22:47:50 ubert joins (~Thunderbi@p200300ecdf3be9b34516931a7c3fe14b.dip0.t-ipconnect.de)
22:47:56 Guest|40 parts (~Guest|40@dsl-94-229-145-149.pool.bitel.net) ()
22:48:33 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
22:49:30 <[exa]> haskellnoob: I guess it's missing a simple conversion back into the bytestring. do you have a function that converts the hex back?
22:49:32 <euouae> cool trick with IFS
22:51:07 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Quit: Leaving)
22:51:16 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
22:51:49 <bgamari> geekosaur, heh, life isn't so bad for me
22:51:56 <bgamari> romesrf, I'm in New Hampshire
22:52:10 kaph_ joins (~kaph@93-39-148-20.ip76.fastwebnet.it)
22:52:11 <bgamari> geekosaur, it is indeed a tad annoying that we have to do yet another release
22:52:36 <bgamari> but as you say, this is a problem that we know how to fix
22:52:49 × da39a3ee5e6b4b0d quits (~textual@2403:6200:8876:d2a9:6da2:b132:dfcb:fb0e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:52:51 <bgamari> things could be much worse and we are certainly converging
22:53:15 <bgamari> the "not" mistake on the other hand I was quite annoyed by :)
22:53:35 da39a3ee5e6b4b0d joins (~textual@mx-ll-171.5.29-46.dynamic.3bb.co.th)
22:54:55 × kaph quits (~kaph@151.35.10.65) (Ping timeout: 272 seconds)
22:55:33 dsrt^ joins (~dsrt@50.232.121.75)
22:55:59 <haskellnoob> exa, I now have this, at least compiling: https://pastebin.com/n9HViRdP - but I think the usage of "fromJust" is wrong here
22:57:48 <maerwald> haskellnoob: you can case match on it and use `fail "blah"` for Nothing
22:58:03 <maerwald> https://hackage.haskell.org/package/aeson-2.0.3.0/docs/Data-Aeson-Types.html#t:Parser has a MonadFail instance
22:58:37 <haskellnoob> that works, nice !!
22:58:46 <haskellnoob> thanks a lot guys, you're my heros
23:00:26 × haskellnoob quits (~haskellno@181.122.131.227) (Remote host closed the connection)
23:00:44 haskellnoob joins (~haskellno@181.122.131.227)
23:01:48 burnsidesLlama joins (~burnsides@rrcs-76-81-82-250.west.biz.rr.com)
23:03:09 juri__ joins (~juri@79.140.115.116)
23:04:16 × juri_ quits (~juri@178.63.35.222) (Ping timeout: 256 seconds)
23:04:50 × shapr quits (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
23:05:03 shapr joins (~user@pool-173-73-44-186.washdc.fios.verizon.net)
23:06:46 × haskellnoob quits (~haskellno@181.122.131.227) (Remote host closed the connection)
23:06:46 × juri__ quits (~juri@79.140.115.116) (Read error: Connection reset by peer)
23:07:05 haskellnoob joins (~haskellno@181.122.131.227)
23:08:09 juri_ joins (~juri@178.63.35.222)
23:09:29 kimjetwav joins (~user@2607:fea8:2363:8f00:9e8a:8fa1:6b4e:dd92)
23:13:01 × Tuplanolla quits (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.)
23:13:48 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
23:14:08 × acidjnk quits (~acidjnk@p200300d0c7049f27690562e0ba62f824.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
23:14:12 × ph88 quits (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) (Quit: Leaving)
23:19:48 × haskellnoob quits (~haskellno@181.122.131.227) (Remote host closed the connection)
23:20:06 haskellnoob joins (~haskellno@181.122.131.227)
23:23:23 × liskin quits (~liskin@xmonad/liskin) (Quit: liskin)
23:23:42 liskin joins (~liskin@xmonad/liskin)
23:24:18 × da39a3ee5e6b4b0d quits (~textual@mx-ll-171.5.29-46.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:26:10 × haskellnoob quits (~haskellno@181.122.131.227) (Remote host closed the connection)
23:26:28 haskellnoob joins (~haskellno@181.122.131.227)
23:28:08 × haskellnoob quits (~haskellno@181.122.131.227) (Remote host closed the connection)
23:28:26 haskellnoob joins (~haskellno@181.122.131.227)
23:29:26 lisk1n joins (~liskin@xmonad/liskin)
23:29:49 Maxdaman1us joins (~Maxdamant@user/maxdamantus)
23:30:17 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Killed (NickServ (GHOST command used by Maxdaman1us)))
23:30:25 Maxdaman1us is now known as Maxdamantus
23:32:16 × haskellnoob quits (~haskellno@181.122.131.227) (Remote host closed the connection)
23:32:34 haskellnoob joins (~haskellno@181.122.131.227)
23:33:29 × burnsidesLlama quits (~burnsides@rrcs-76-81-82-250.west.biz.rr.com) (Remote host closed the connection)
23:33:51 × lisk1n quits (~liskin@xmonad/liskin) (Client Quit)
23:33:59 × liskin quits (~liskin@xmonad/liskin) (Quit: liskin)
23:34:04 × euouae quits (~euouae@user/euouae) (Quit: bye)
23:34:30 liskin joins (~liskin@xmonad/liskin)
23:34:56 burnsidesLlama joins (~burnsides@rrcs-76-81-82-250.west.biz.rr.com)
23:35:18 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:35:55 <iphy> I'm starting to not be a big fan of MonadFail
23:36:18 <iphy> being limited to single strings
23:36:40 <monochrom> That is why it was separated out from Monad. It is very niche, yes.
23:37:00 <iphy> I don't know what the right alternative is though
23:37:05 <iphy> I've been playing with MonadValidate
23:37:30 × michalz quits (~michalz@185.246.204.93) (Remote host closed the connection)
23:37:37 <geekosaur> ExceptT, Validate, Chronicle
23:37:42 × worldhelloworld2 quits (~quassel@vmi275462.contaboserver.net) (Ping timeout: 256 seconds)
23:37:49 <geekosaur> in roughly ascending order of complexity-but-capability
23:37:50 × worldhelloworld quits (~c1utt4r@164.68.96.37) (Ping timeout: 260 seconds)
23:38:28 <monochrom> If you intend actually informative and/or machine-readable errors, it's ExceptT or Validate or equivalent, yeah. MonadFail has a different purpose where a meh String suffices.
23:38:57 <monochrom> Indeed most MonadFail instances throw away the string altogether.
23:39:06 <iphy> yeah that's annoying
23:39:43 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
23:39:48 <iphy> I like the thing about Validate where it can collect multiple failures in one go
23:39:55 lavaman joins (~lavaman@98.38.249.169)
23:40:08 <iphy> that's why I'm using that now for msgpack
23:40:17 <geekosaur> Chronicle distinguishes between warnings, errors that it can continue from, and errors it can't
23:41:07 <geekosaur> it's kinda the swiss army knife of exception handlers
23:41:21 × sooch_ quits (sid533113@id-533113.hampstead.irccloud.com) (Ping timeout: 252 seconds)
23:41:21 × supersven quits (sid501114@id-501114.ilkley.irccloud.com) (Ping timeout: 252 seconds)
23:41:21 × jackdk quits (sid373013@cssa/jackdk) (Ping timeout: 252 seconds)
23:41:21 × _0x47_ quits (sid508683@id-508683.tinside.irccloud.com) (Ping timeout: 252 seconds)
23:41:24 × Franciman quits (~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
23:41:38 Franciman joins (~Franciman@mx1.fracta.dev)
23:41:50 <haskellnoob> any ideas how I can implement FromJSON for this? https://pastebin.com/s4PmvKx1
23:41:54 × Firedancer quits (sid336191@id-336191.hampstead.irccloud.com) (Ping timeout: 252 seconds)
23:41:54 × lexi-lambda quits (sid92601@id-92601.hampstead.irccloud.com) (Ping timeout: 252 seconds)
23:41:54 × PotatoGim quits (sid99505@id-99505.lymington.irccloud.com) (Read error: No route to host)
23:41:54 × integral quits (sid296274@user/integral) (Read error: Connection reset by peer)
23:41:54 × SanchayanMaity quits (sid478177@id-478177.hampstead.irccloud.com) (Read error: Connection reset by peer)
23:41:54 × S11001001 quits (sid42510@id-42510.ilkley.irccloud.com) (Read error: Connection reset by peer)
23:41:54 × jonrh quits (sid5185@id-5185.ilkley.irccloud.com) (Read error: Connection reset by peer)
23:41:55 × rubin55 quits (sid175221@id-175221.hampstead.irccloud.com) (Read error: Connection reset by peer)
23:41:55 × ehamberg quits (sid18208@id-18208.hampstead.irccloud.com) (Read error: Connection reset by peer)
23:41:55 × carter quits (sid14827@id-14827.helmsley.irccloud.com) (Read error: Connection reset by peer)
23:41:55 × hugo quits (znc@verdigris.lysator.liu.se) (Quit: ZNC 1.8.2 - https://znc.in)
23:41:55 × nrr___ quits (sid20938@id-20938.lymington.irccloud.com) (Read error: Connection reset by peer)
23:41:55 × gonz_____ quits (sid304396@id-304396.lymington.irccloud.com) (Read error: Connection reset by peer)
23:41:56 × dsal quits (sid13060@id-13060.lymington.irccloud.com) (Read error: Connection reset by peer)
23:41:56 × lally quits (sid388228@id-388228.uxbridge.irccloud.com) (Read error: Connection reset by peer)
23:41:56 × bw quits (sid2730@user/betawaffle) (Read error: Connection reset by peer)
23:41:57 × elvishjerricco quits (sid237756@id-237756.helmsley.irccloud.com) (Read error: Connection reset by peer)
23:42:01 × zeenk quits (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Remote host closed the connection)
23:42:06 S11001001 joins (sid42510@id-42510.ilkley.irccloud.com)
23:42:06 Firedancer joins (sid336191@id-336191.hampstead.irccloud.com)
23:42:07 jackdk joins (sid373013@cssa/jackdk)
23:42:10 integral joins (sid296274@user/integral)
23:42:10 SanchayanMaity joins (sid478177@id-478177.hampstead.irccloud.com)
23:42:10 ehamberg joins (sid18208@id-18208.hampstead.irccloud.com)
23:42:10 lexi-lambda joins (sid92601@id-92601.hampstead.irccloud.com)
23:42:11 rubin55 joins (sid175221@id-175221.hampstead.irccloud.com)
23:42:12 elvishjerricco joins (sid237756@id-237756.helmsley.irccloud.com)
23:42:14 lally joins (sid388228@id-388228.uxbridge.irccloud.com)
23:42:14 dsal joins (sid13060@id-13060.lymington.irccloud.com)
23:42:15 hugo joins (znc@verdigris.lysator.liu.se)
23:42:15 _0x47_ joins (sid508683@id-508683.tinside.irccloud.com)
23:42:16 sooch_ joins (sid533113@id-533113.hampstead.irccloud.com)
23:42:17 PotatoGim joins (sid99505@id-99505.lymington.irccloud.com)
23:42:18 supersven joins (sid501114@id-501114.ilkley.irccloud.com)
23:42:21 nrr___ joins (sid20938@id-20938.lymington.irccloud.com)
23:42:24 bw joins (sid2730@user/betawaffle)
23:42:24 zeenk joins (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
23:42:28 <monochrom> As with other things, Haskellers discovered the cold hard truth that other language communities deny: so-called "error", "error raising", and "error handling" are very broad, the subniches conflict with each other, do not expect one single standard, expect multiple standards for multiple contexts.
23:42:28 jonrh joins (sid5185@id-5185.ilkley.irccloud.com)
23:42:30 carter joins (sid14827@id-14827.helmsley.irccloud.com)
23:42:33 gonz_____ joins (sid304396@id-304396.lymington.irccloud.com)
23:42:37 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
23:43:33 × jaror[m] quits (~jaror@2001:470:69fc:105::265) (Ping timeout: 252 seconds)
23:43:33 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Ping timeout: 252 seconds)
23:44:06 × kadoban quits (~kadoban@user/kadoban) (Ping timeout: 252 seconds)
23:44:06 × andreabedini[m] quits (~andreabed@2001:470:69fc:105::c821) (Ping timeout: 252 seconds)
23:44:06 × schuelermine[m] quits (~schuelerm@user/schuelermine) (Ping timeout: 252 seconds)
23:44:06 × Deide quits (~deide@user/deide) (Ping timeout: 252 seconds)
23:44:06 × vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Ping timeout: 252 seconds)
23:45:13 chenqisu1 joins (~chenqisu1@183.217.201.47)
23:45:59 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
23:46:25 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8)
23:46:28 <haskellnoob> I put some more context how the json array looks like here: https://pastebin.com/HbXV8tbf
23:48:51 <Axman6> haskellnoob: deriving (FromJSON)? :)
23:49:02 <Axman6> hmm, or not
23:49:21 <haskellnoob> ups
23:49:28 <haskellnoob> I meant implement, of course, my bad
23:49:30 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
23:49:31 ec joins (~ec@gateway/tor-sasl/ec)
23:49:42 <monochrom> deriving-FromJSON probably does not know to do hex-coding.
23:50:16 <haskellnoob> hex-decoding is all good, my problem is I have multiple contructors in haskell and need to inspect the json array somehow
23:51:08 <Axman6> this would eactually be easier in waargonaut... but anyway. something like withArray "Tag" $ \xs -> case xs of ["e",eid,url] -> ...; ["p",pubKey,url] -> ...; _ -> fail "ohno"
23:51:15 <haskellnoob> I tried this: https://pastebin.com/qNkAegFv - without success
23:52:00 <Axman6> using parseJSON inside parseJSON definitely feels wrong to me
23:52:31 <Axman6> in the code you have there, x has both type EventId and XOnlyPubKey
23:52:31 <haskellnoob> hahaha, that's why I'm asking
23:52:46 <haskellnoob> exactly, that's the problem the compiler complains about
23:53:05 <Axman6> read out t, then do the case statement, at the very least
23:53:23 <monochrom> I am very pessimistic about any attempt at reusable FromJSON EventId for example, unless FromJSON EventId accepts "063df25d22738a838cbbdc3dee470e0c58284954" no more no less.
23:54:12 <monochrom> E.g., if FromJSON EventId "adds" so little "feature" as expecting a field name, then it ruins everything.
23:54:17 <haskellnoob> monochrom that's exactly how it works
23:54:30 <monochrom> This also applies to the rest, RelayURL, XOnlyPubKey.
23:54:36 <haskellnoob> yes
23:54:50 <Axman6> if you have a function Text -> Decoder EventId then you're off to a good start
23:55:27 <Axman6> (and the same for thew other types)
23:56:03 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
23:56:28 <Axman6> the FromJSON instance for EventId isn't very useful, the way EventIds exist in this structure means they can't really be parsed in the usual ways
23:56:31 maralorn joins (~maralorn@2001:470:69fc:105::251)
23:56:48 jaror[m] joins (~jaror@2001:470:69fc:105::265)
23:57:21 <haskellnoob> one sec
23:58:46 schuelermine[m] joins (~schuelerm@user/schuelermine)
23:59:15 <haskellnoob> https://pastebin.com/9s1J0tCr - here are EventId and pubkey FromJSON instances included
23:59:29 <haskellnoob> I don't think they are any problem for me at the moment
23:59:32 Deide joins (~deide@user/deide)

All times are in UTC on 2022-03-08.