2025/11/11

2025-11-11 00:00:58 +0100emmanuelux(~emmanuelu@user/emmanuelux) emmanuelux
2025-11-11 00:01:04 +0100tromp(~textual@2001:1c00:3487:1b00:5862:9c78:2f27:3ade) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-11-11 00:01:25 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 240 seconds)
2025-11-11 00:06:27 +0100bggd(~bgg@2a01:e0a:819:1510:285c:2d19:95b6:2c5) (Quit: std::move)
2025-11-11 00:16:01 +0100anselmschueler(~Thunderbi@user/schuelermine) schuelermine
2025-11-11 00:18:37 +0100mreh(~matthew@host86-146-25-125.range86-146.btcentralplus.com) (Ping timeout: 244 seconds)
2025-11-11 00:23:38 +0100shr\ke(~shrike@user/shrke:31298) (Remote host closed the connection)
2025-11-11 00:29:31 +0100peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-11-11 00:31:14 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2025-11-11 00:31:14 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2025-11-11 00:31:46 +0100Ranhir(~Ranhir@157.97.53.139) (Quit: KVIrc 5.2.6 Quasar http://www.kvirc.net/)
2025-11-11 00:31:47 +0100ec(~ec@gateway/tor-sasl/ec) ec
2025-11-11 00:31:55 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2025-11-11 00:32:28 +0100Ranhir(~Ranhir@157.97.53.139) Ranhir
2025-11-11 00:32:33 +0100Anarchos(~Anarchos@91-161-254-16.subs.proxad.net) Anarchos
2025-11-11 00:42:53 +0100lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2025-11-11 00:50:11 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 00:55:13 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-11-11 00:55:25 +0100haltingsolver(~cmo@2604:3d09:207f:8000::d1dc)
2025-11-11 00:57:53 +0100Square3(~Square@user/square) Square
2025-11-11 00:58:19 +0100malte(~malte@mal.tc) (Remote host closed the connection)
2025-11-11 01:02:36 +0100Anarchos(~Anarchos@91-161-254-16.subs.proxad.net) (Quit: Vision[]: i've been blurred!)
2025-11-11 01:03:36 +0100malte(~malte@mal.tc) malte
2025-11-11 01:05:35 +0100anselmschueler(~Thunderbi@user/schuelermine) (Remote host closed the connection)
2025-11-11 01:05:40 +0100Googulator30(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 01:05:44 +0100Googulator21(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 01:07:13 +0100hiredman(~hiredman@frontier1.downey.family) (Ping timeout: 264 seconds)
2025-11-11 01:08:31 +0100hiredman(~hiredman@frontier1.downey.family) hiredman
2025-11-11 01:08:49 +0100Sidney(~Sidney@2600:4040:2678:9600:b1c4:ced3:242d:1252)
2025-11-11 01:10:07 +0100 <Sidney> Hi, I am trying to learn how to think in the Haskell way (I don't know the precise term), but I am having difficultly solving leetcode problem which require stateful operations such as problems which requires the two pointers technique. Is there pattern/mindset to solve inherently stateful problems elegantly and with good time complexity? I tried
2025-11-11 01:10:07 +0100 <Sidney> recursion but I does not feel like the right tool. Thanks!
2025-11-11 01:10:50 +0100Googulator9(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 01:11:16 +0100Googulator30(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 01:15:27 +0100 <L29Ah> Sidney: there's ST if you find you want to have a state for efficiency in your black-boxable algorithm
2025-11-11 01:18:18 +0100sprout(~sprout@84-80-106-227.fixed.kpn.net) sprout
2025-11-11 01:29:25 +0100peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 240 seconds)
2025-11-11 01:31:07 +0100comonad(~comonad@2003:d0:2741:a000:c693:4c09:e8b4:6dfd)
2025-11-11 01:35:07 +0100 <mange> While Haskell has ST and the like, if you're trying to think "in the Haskell way" then you probably don't want to be using ST.
2025-11-11 01:37:18 +0100ttybitnik(~ttybitnik@user/wolper) (Quit: Fading out...)
2025-11-11 01:40:42 +0100Googulator9(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 01:40:47 +0100Googulator65(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 01:41:31 +0100 <EvanR> Sidney, if the algorithm specifically calls for something like an array of A and numerical indexes, you can pretty easily translate that to a Map Int A and some Ints
2025-11-11 01:41:57 +0100 <EvanR> (or IntMap A)
2025-11-11 01:43:04 +0100 <EvanR> for the stateful part, there are several ways to "keep the current state", whatever it is. E.g. pass the latest values to a recursive function which stands for the loop body
2025-11-11 01:44:43 +0100 <EvanR> another way is to use a State monad, there are other ways
2025-11-11 01:44:48 +0100gf3(~gf3@user/gf3) (Ping timeout: 256 seconds)
2025-11-11 01:47:40 +0100Tuplanolla(~Tuplanoll@91-159-187-167.elisa-laajakaista.fi) (Quit: Leaving.)
2025-11-11 01:48:14 +0100gf3(~gf3@user/gf3) gf3
2025-11-11 01:49:18 +0100 <jreicher> Sidney: what do you need stateful operations for? (Really this is just a polite way for met to ask, are you really really sure you need stateful operations? You might be wrong, and if you're wrong, it's easier to do things without them.)
2025-11-11 01:52:27 +0100 <mange> In general I would say "the Haskell way" is to avoid state, and to think about functional transformations/reductions instead. Even if it's possible to write programs with state in Haskell, you're usually going against the grain of the language.
2025-11-11 01:59:57 +0100 <Sidney> I agree, I don't want to use stateful operations. I'm missing something because I don't see an alternate. For example `move zeros` (https://leetcode.com/problems/move-zeroes/description/) requires constant space complexity and I don't how `two sum` (https://leetcode.com/problems/two-sum/description/) could be solved with less than O(N^2) time
2025-11-11 01:59:58 +0100 <Sidney> complexity without a for loop and a hash table.
2025-11-11 02:00:18 +0100jle`(~jle`@2603:8001:3b00:11:5098:4041:9bc7:9b0d) (Ping timeout: 244 seconds)
2025-11-11 02:00:31 +0100Googulator65(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 02:00:39 +0100Googulator65(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 02:00:47 +0100spew(~spew@user/spew) spew
2025-11-11 02:01:30 +0100jle`(~jle`@2603:8001:3b00:11:c2d0:7f27:fab9:22ae) jle`
2025-11-11 02:04:29 +0100xff0x(~xff0x@2405:6580:b080:900:2473:b259:8788:143a) (Ping timeout: 260 seconds)
2025-11-11 02:05:43 +0100Googulator65(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 02:05:50 +0100Googulator91(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 02:05:53 +0100Sidney(~Sidney@2600:4040:2678:9600:b1c4:ced3:242d:1252) (Ping timeout: 250 seconds)
2025-11-11 02:07:16 +0100Sidney(~Sidney@2600:4040:2678:9600:b1c4:ced3:242d:1252)
2025-11-11 02:10:50 +0100Googulator91(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 02:10:59 +0100Googulator91(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 02:15:37 +0100tabaqui(~tabaqui@167.71.80.236) (Ping timeout: 264 seconds)
2025-11-11 02:15:42 +0100Googulator83(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 02:16:09 +0100Googulator91(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 02:18:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 02:19:28 +0100 <mange> Sidney: You can use recursion, building up a hash table as you go. The two sum problem, for instance, could be like this: http://paste.debian.net/1405577/ (I'm using Map because it was easier, but you can see the idea).
2025-11-11 02:20:26 +0100 <mange> The move zeros one you linked to is explicitly about mutating an array, so obviously you can't do that without mutation.
2025-11-11 02:22:45 +0100DetourNetworkUK(DetourNetw@user/DetourNetworkUK) (Read error: Connection reset by peer)
2025-11-11 02:22:47 +0100DetourNe-(DetourNetw@user/DetourNetworkUK) DetourNetworkUK
2025-11-11 02:23:26 +0100Starving_Drummer(~berke@user/Starving-Drummer:76786) (Remote host closed the connection)
2025-11-11 02:23:58 +0100 <mange> Oh, wait, sorry, I misread your message. You don't want to use a hash table. That makes sense.
2025-11-11 02:24:49 +0100Googulator83(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 02:25:04 +0100Googulator83(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 02:25:04 +0100DetourNe-DetourNetworkUK
2025-11-11 02:25:32 +0100Googulator83(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Client Quit)
2025-11-11 02:25:43 +0100Googulator83(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 02:25:53 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-11-11 02:28:17 +0100 <int-e> sorting can help with two-sum
2025-11-11 02:30:36 +0100 <int-e> > let (xs,ys) = partition (/= 0) [0,1,0,3,12] in xs ++ ys -- yes it's not in-place, but whatever
2025-11-11 02:30:37 +0100 <lambdabot> [1,3,12,0,0]
2025-11-11 02:31:23 +0100spew(~spew@user/spew) (Quit: WeeChat 4.6.3)
2025-11-11 02:37:42 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 02:40:27 +0100 <jreicher> two-sum doesn't have to be in-place I think. So you can ignore the "array" part and just think in terms of lists.
2025-11-11 02:40:43 +0100 <monochrom> partition is probably still constant-space and linear-time.
2025-11-11 02:40:58 +0100 <mange> Sidney: still not in-place (because it would require changing the input), but this should solve the two-sum problem by iterating through the list in both directions: http://paste.debian.net/1405581/
2025-11-11 02:41:07 +0100 <mange> ... After sorting it, that is.
2025-11-11 02:41:31 +0100 <int-e> jreicher: yes, but the code snippet was for move-zeroes
2025-11-11 02:41:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-11-11 02:41:57 +0100gorignak(~gorignak@user/gorignak) (Quit: quit)
2025-11-11 02:42:04 +0100 <Sidney> Okay, thank you for the help.
2025-11-11 02:42:05 +0100 <Sidney> Regarding two-pointer questions: is it possible to use recursion to get a single pass with the left and right pointers as function parameters?
2025-11-11 02:42:05 +0100 <Sidney> I tried to solve the "Best Time to Buy and Sell Stock" problem (https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/) using a fold to calculate the profit each day, but that resulted in O(n²) complexity because I needed to calculate the maximum value for the remainder of the collection. Lastly I have heard some people say
2025-11-11 02:42:06 +0100 <Sidney> that some things are 'inherently stateful' so functional programming is not capable of solving the problem elegantly. Is that true? It seems arbitrary that a `for loop` is the only tool that can solve these problems compared behaviors in mathematics such as recursion but I am ignorant and would like to know what you have to say.
2025-11-11 02:42:13 +0100gorignak(~gorignak@user/gorignak) gorignak
2025-11-11 02:42:25 +0100 <monochrom> "in-place" is an over-specification. Externally you can only observe space growth or lack-of, not how it is achieved.
2025-11-11 02:42:27 +0100 <EvanR> whether you are using explicit recursion or a folding combinator or whatever it's still stateful in spirit
2025-11-11 02:42:51 +0100 <int-e> mange: well those indices are wrong, because sorting changes the order of things
2025-11-11 02:42:52 +0100 <EvanR> actually "state" is heavily overloaded and can mean many things
2025-11-11 02:43:11 +0100 <int-e> mange: reconstructing indices makes this a tad annoying
2025-11-11 02:43:13 +0100 <jreicher> Sidney: coincidentally I recently watched this. https://youtu.be/QNM-njddhIw?t=970&si=tWEcEVmsr44nKlVs
2025-11-11 02:43:19 +0100 <EvanR> Sidney, yeah, that's incorrect
2025-11-11 02:43:27 +0100 <mange> Oh yeah, obviously! Thanks int-e. I'm not going to fix it, because I can't be bothered right now.
2025-11-11 02:43:29 +0100 <jreicher> The middle of that section of the video covers something very similar to move-zeroes
2025-11-11 02:43:45 +0100 <int-e> mange: That's okay :P
2025-11-11 02:44:33 +0100 <int-e> mange: FWIW, I'd probably just search for the found elements in the original list.
2025-11-11 02:44:56 +0100 <int-e> :t findIndex
2025-11-11 02:44:57 +0100 <lambdabot> (a -> Bool) -> [a] -> Maybe Int
2025-11-11 02:45:10 +0100 <int-e> :t elemIndex
2025-11-11 02:45:12 +0100 <lambdabot> Eq a => a -> [a] -> Maybe Int
2025-11-11 02:45:40 +0100 <EvanR> there's much less difference between mutating an array and updating a Map than you think there is. There much less difference between a recursive program and a for loop than you think there is
2025-11-11 02:45:51 +0100 <jreicher> Sidney: In my opinion (and not everyone will agree with this I think) even if you write "statelessly", the computation is still stateful. That's never in doubt. A computer executes in the real world by changing state moment to moment. So the question is not whether you have state, but whether you have to write it explicitly or whether the language (Haskell) can figure it out for you. A lot of the time it can.
2025-11-11 02:47:17 +0100gorignak(~gorignak@user/gorignak) (Quit: quit)
2025-11-11 02:47:33 +0100gorignak(~gorignak@user/gorignak) gorignak
2025-11-11 02:47:38 +0100 <EvanR> folding over a list of things using "a state" accomplishes the same thing as looping over the things and mutating variables
2025-11-11 02:47:52 +0100 <monochrom> I feel like "there is no royal road" applies. How to think in French? By immersing in French for weeks, months, years. How to think in Japanese? By immersing in Japanese for weeks, months, years. How to think in Haskell? By immersing... you get my point.
2025-11-11 02:47:56 +0100 <EvanR> sometimes it's more convenient sometimes it's not
2025-11-11 02:48:30 +0100 <EvanR> yes keep writing programs (and reading programs)
2025-11-11 02:48:57 +0100 <monochrom> But I do tell my students: Think of Haskell functions as math functions, not C "functions". Think algebra.
2025-11-11 02:50:05 +0100 <EvanR> ^ this very good advice has no effect on people who hate math
2025-11-11 02:50:38 +0100 <monochrom> Oh if you hate math, there is nothing in Haskell for you.
2025-11-11 02:50:45 +0100 <EvanR> though maybe subjecting them to enough haskell gives them a better appreciation for mathematical thinking
2025-11-11 02:51:12 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 02:51:56 +0100int-ewonders when he last used the term "procedure" for an imperative "function".
2025-11-11 02:51:56 +0100synchromesh(~john@2406:5a00:2412:2c00:c5a6:321c:259:76f2) (Read error: Connection reset by peer)
2025-11-11 02:52:17 +0100 <monochrom> We should do that more!
2025-11-11 02:52:27 +0100 <int-e> (A Pascal remnant, though Pascal's distinction based on whether a function returns a value or not is odd too.)
2025-11-11 02:52:37 +0100gorignak(~gorignak@user/gorignak) (Quit: quit)
2025-11-11 02:52:51 +0100 <monochrom> If foo :: IO Int, what do you call foo, i.e., what is the name of the kind of things like foo? Answer: procedure.
2025-11-11 02:52:52 +0100synchromesh(~john@2406:5a00:2412:2c00:ed84:4ebe:de81:99a2) synchromesh
2025-11-11 02:52:54 +0100gorignak(~gorignak@user/gorignak) gorignak
2025-11-11 02:53:07 +0100 <int-e> And sorry, I believe "function" is too ingrained in my brain by now.
2025-11-11 02:53:18 +0100 <int-e> It's an overloaded concept, one of many.
2025-11-11 02:54:00 +0100 <monochrom> The Algol people got it wrong in the first place. They said "side-effecting functions" [sic], just because there is a "return value".
2025-11-11 02:54:56 +0100 <EvanR> returning a value was undervalued all the way even until ruby
2025-11-11 02:55:07 +0100 <monochrom> If the null pointer was a billion-dollar mistake, I invoke Sapir-Worf and call that a priceless mistake.
2025-11-11 02:55:09 +0100 <EvanR> so many forms in ruby return nothing useful and so can't be combined
2025-11-11 02:55:34 +0100 <int-e> EvanR: can't wait for the paper on the trillion-dollar mistake in about 50 years
2025-11-11 02:55:53 +0100 <EvanR> the 1 TRILLION dollar mistake *crowd laughs*
2025-11-11 02:56:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-11-11 02:56:41 +0100 <int-e> (adjusted for inflation relative to 2025)
2025-11-11 02:56:59 +0100 <int-e> (and possibly new currencies)
2025-11-11 02:57:23 +0100 <EvanR> or old currencies, because the euro was abandoned
2025-11-11 03:01:00 +0100 <jreicher> monochrom: I think Haskell functions are a third kind of function. Math functions are often (infinite) sets. Haskell functions describe a construction of the set, which is a little. But they do it declarative, which is why they're not like C functions.
2025-11-11 03:01:11 +0100 <jreicher> ...a little different...
2025-11-11 03:01:43 +0100otto_s(~user@p4ff2712e.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2025-11-11 03:01:46 +0100 <monochrom> About many ruby forms can't be combined. Yeah even the javascript community discovered long ago that if an object method returns the object itself, then you can write obj.method1().method2().method3(), it's pretty neat.
2025-11-11 03:03:37 +0100 <int-e> jreicher: I think the point is that math functions are a better model for what Haskell functions are than C functions.
2025-11-11 03:03:41 +0100otto_s(~user@p4ff27119.dip0.t-ipconnect.de)
2025-11-11 03:04:13 +0100 <int-e> (they do a decent job capturing purity)
2025-11-11 03:05:20 +0100 <jreicher> No argument with that, but there are still problems with the math model. You can define a non-computable function mathematically.
2025-11-11 03:05:43 +0100 <int-e> I didn't say that you're wrong (you aren't)
2025-11-11 03:05:57 +0100 <monochrom> No worries. I say "think math functions, algebra" to students who are too used to imperative thinking. They already can't escaping thinking of recipes for explicit construction. So telling them "like algebra" will get the right result.
2025-11-11 03:06:01 +0100 <int-e> monochrom's teaching this stuff
2025-11-11 03:06:30 +0100 <jreicher> monochrom: do you teach Haskell, or some of the other languages and/or lambda calculus/semantics?
2025-11-11 03:06:53 +0100 <int-e> And it's common that you use flawed analogies for new concepts when teaching.
2025-11-11 03:06:56 +0100 <monochrom> For students who are too used to pure math, especially the non-constructive one, I will have to bias them towards more explicit construction, even constructivism, yeah.
2025-11-11 03:07:14 +0100 <jreicher> It cheers me even that those words might enter the classroom.
2025-11-11 03:08:41 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 03:09:31 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-11-11 03:09:40 +0100 <monochrom> I teach basic Haskell and basic Curry. And some PL topics, e.g., grammars, parsing, type inference, parametricity.
2025-11-11 03:10:04 +0100 <monochrom> Actually this! https://www.cs.utoronto.ca/~trebla/CSCC24-latest/
2025-11-11 03:12:04 +0100peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-11-11 03:12:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-11-11 03:13:28 +0100 <jreicher> Thanks for the link!
2025-11-11 03:15:42 +0100Googulator53(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 03:15:46 +0100Googulator83(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 03:24:24 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 03:26:35 +0100 <jreicher> What's the current implementation of delimited continuations in Haskell? Is it CC-delcont?
2025-11-11 03:28:24 +0100 <jreicher> I thought there were ghc primops for them now...
2025-11-11 03:28:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-11-11 03:30:20 +0100tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2025-11-11 03:30:54 +0100tabemann(~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2025-11-11 03:31:17 +0100 <geekosaur> there are, but they have some limitations (for example, they have to be used in IO)
2025-11-11 03:32:32 +0100 <jreicher> Do you know what happens if there's a different prompt between a control and its matching prompt? I imagine that "foreign" prompt is captured, but I wouldn't mind finding an explicit discussion of that case.
2025-11-11 03:32:53 +0100 <jreicher> (I should rewatch Alex King's talk, probably)
2025-11-11 03:32:56 +0100 <jreicher> Alexis
2025-11-11 03:33:25 +0100 <Leary> Of course, it's captured.
2025-11-11 03:33:48 +0100 <monochrom> Captured in the middle. The control searches for the matching prompt, captures everything between now and that.
2025-11-11 03:34:36 +0100 <EvanR> jreicher, a function is not always implemented as a set in math
2025-11-11 03:35:13 +0100 <Leary> jreicher: You might be interested in my (as yet unpublished) https://github.com/LSLeary/native-cont library; it provides a safe non-IO interface to the primops.
2025-11-11 03:35:14 +0100 <jreicher> monochrom: yeah, that's what I expected. Can't shake the feeling it deserves explicit discussion, but maybe not.
2025-11-11 03:35:41 +0100Googulator92(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 03:35:42 +0100 <EvanR> e.g. it could be implemented as a relation plus the functional condition, where relations are primitive
2025-11-11 03:35:43 +0100Googulator53(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 03:35:45 +0100 <jreicher> Leary: yes, thank you.
2025-11-11 03:35:58 +0100 <EvanR> it could even be abstractified using category theory
2025-11-11 03:36:21 +0100 <jreicher> EvanR: true, but I think even for relations I've seen more set-theoretic presentations than not.
2025-11-11 03:36:31 +0100 <EvanR> which gives haskell room to call functions functions
2025-11-11 03:36:35 +0100 <monochrom> Oh, type theory says functions are primitive. :)
2025-11-11 03:37:27 +0100 <jreicher> I'm tempted to say that's because the type theory doesn't need to know the details... ;)
2025-11-11 03:37:42 +0100 <EvanR> the structural set theory with sets elements and relations gets closer to type theory by emphasizing the domain and codomain of functions (relations) as the important part
2025-11-11 03:37:56 +0100 <EvanR> instead of the implementation
2025-11-11 03:38:58 +0100 <EvanR> even in "normal math" you really rarely care about what a function "really is"
2025-11-11 03:39:49 +0100 <EvanR> even in normal programming, you rarely care about what an array "really is", hence the big O 1 array myth
2025-11-11 03:40:10 +0100 <monochrom> Hell, s/array/hash table/g
2025-11-11 03:40:25 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 03:40:29 +0100monochromis looking at Python and Perl.
2025-11-11 03:41:38 +0100 <EvanR> so perl and PHP were justified in calling their hashtable "array" xD
2025-11-11 03:42:31 +0100 <geekosaur> perl didn't call it array, @x is not %x
2025-11-11 03:42:42 +0100 <geekosaur> they called it list
2025-11-11 03:43:32 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2025-11-11 03:44:09 +0100 <EvanR> oh list is a hashtable?
2025-11-11 03:44:20 +0100 <EvanR> even better
2025-11-11 03:44:31 +0100 <monochrom> What have I done?! >:)
2025-11-11 03:45:02 +0100 <geekosaur> you're still stuck somewhere insane
2025-11-11 03:45:13 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-11-11 03:45:15 +0100 <geekosaur> there are three types: scalar, list, hash
2025-11-11 03:46:11 +0100 <geekosaur> you would not normally use a hash as a list unless it's sparse
2025-11-11 03:47:00 +0100 <jreicher> I thought the original sin belonged to awk?
2025-11-11 03:47:07 +0100 <geekosaur> yes
2025-11-11 03:47:19 +0100 <jreicher> Personally I'm a fan of that bad boy.
2025-11-11 03:47:37 +0100 <geekosaur> awk doesn't have arrays/lists, so you use its "associative arrays" as if they were
2025-11-11 03:47:39 +0100 <monochrom> No no no, the original sin belonged to BASIC and Lisp. Yes I'm putting them on the same line.
2025-11-11 03:48:03 +0100 <monochrom> Lisp: Every name has two independent bindings: value and function.
2025-11-11 03:48:16 +0100 <monochrom> BASIC: Every name has two independent bindings: number and string.
2025-11-11 03:48:17 +0100 <jreicher> That's Lisp-2. Lisp-1 is not like that
2025-11-11 03:48:50 +0100 <monochrom> Criminals.
2025-11-11 03:49:14 +0100 <EvanR> every [capitalized] name has two independent bindings, type and constructor
2025-11-11 03:49:32 +0100 <geekosaur> module name/qualifier
2025-11-11 03:49:33 +0100 <EvanR> shoot
2025-11-11 03:49:46 +0100 <EvanR> up to three
2025-11-11 03:50:11 +0100 <jreicher> The thing that really broke my brain when I looked at Lisp (after doing functional) is that there isn't an implicit eval of an expression in head possition.
2025-11-11 03:50:14 +0100 <geekosaur> and patsyns
2025-11-11 03:50:18 +0100 <jreicher> Took me ages to unlearn that expectation
2025-11-11 03:50:21 +0100 <geekosaur> typeclasses
2025-11-11 03:56:56 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 04:01:25 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-11-11 04:02:09 +0100Sidney(~Sidney@2600:4040:2678:9600:b1c4:ced3:242d:1252) (Quit: Client closed)
2025-11-11 04:02:30 +0100 <EvanR> also haskell has "infinite sets" (types with infinite inhabitants) so that's not a deal breaker
2025-11-11 04:02:47 +0100 <jreicher> Are they only denumerable?
2025-11-11 04:03:12 +0100 <EvanR> depends on your metatheory?
2025-11-11 04:04:18 +0100 <EvanR> if you tried to form a list of all Sequence of Bool, you'd fail to list them all
2025-11-11 04:05:08 +0100 <EvanR> diagonalization could be used to construct a missed sequence
2025-11-11 04:05:32 +0100 <EvanR> I meant Stream of Bool
2025-11-11 04:05:37 +0100Googulator92(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 04:05:42 +0100Googulator68(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 04:06:19 +0100 <jreicher> That's why I was asking about what haskell is representing with these "infinite sets".
2025-11-11 04:06:48 +0100 <EvanR> I saw a constructive notion of "uncountable" floating around called "sequence avoiding" set, maybe could be repurposed for types
2025-11-11 04:07:41 +0100 <jreicher> It can be countable but still not recursive. That's the really surprising case IMO.
2025-11-11 04:08:04 +0100 <EvanR> for all streams of A, say xs, there exists an x such that for all i, x "does not equal" xs !! i
2025-11-11 04:08:30 +0100Square2(~Square4@user/square) Square
2025-11-11 04:09:55 +0100 <EvanR> then A is sequence avoiding
2025-11-11 04:10:28 +0100bggd(~bgg@2a01:e0a:819:1510:c077:be4f:997f:e54a)
2025-11-11 04:11:51 +0100Square3(~Square@user/square) (Ping timeout: 256 seconds)
2025-11-11 04:13:10 +0100 <EvanR> A = Stream Bool would satisfy this using diagonalization to prove the existence part, if you could somehow get the "does not equal" to make sense
2025-11-11 04:31:25 +0100td_(~td@i5387093B.versanet.de) (Ping timeout: 250 seconds)
2025-11-11 04:33:12 +0100td_(~td@i53870938.versanet.de)
2025-11-11 04:36:08 +0100qqe(~qqq@185.54.21.203)
2025-11-11 04:40:43 +0100Googulator96(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 04:40:44 +0100Googulator68(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 04:45:38 +0100bionade24(~quassel@server2.oscloud.info) (Quit: Apocalypse Incoming!)
2025-11-11 04:45:49 +0100bionade24(~quassel@server2.oscloud.info) bionade24
2025-11-11 04:46:23 +0100deptype(~deptype@2406:b400:3a:73c2:87a5:b5f2:d68c:7c8)
2025-11-11 04:54:50 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-11-11 04:54:56 +0100peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 256 seconds)
2025-11-11 04:56:44 +0100sp1ff(~user@2601:1c2:4c00:6820::8bad) (Read error: Connection reset by peer)
2025-11-11 05:00:36 +0100trickard(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 05:00:49 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 05:05:42 +0100haltingsolver(~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 256 seconds)
2025-11-11 05:14:25 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 240 seconds)
2025-11-11 05:14:27 +0100sm(znc@plaintextaccounting/sm) ()
2025-11-11 05:17:23 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 05:17:36 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 05:25:33 +0100polykernel_(~polykerne@user/polykernel) polykernel
2025-11-11 05:25:47 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 05:27:34 +0100polykernel(~polykerne@user/polykernel) (Ping timeout: 246 seconds)
2025-11-11 05:27:35 +0100polykernel_polykernel
2025-11-11 05:30:37 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-11-11 05:32:21 +0100 <Square2> I'm going to give a talk at my company about Haskell to inspire some people to learn it, cause we'll be needing it for a DSL library. How would you pitch Haskell to middle age people that might not be you most curious programmers?
2025-11-11 05:32:48 +0100 <Square2> be your*
2025-11-11 05:33:21 +0100 <mange> What DSL library are you using that needs Haskell, if you're not already using Haskell?
2025-11-11 05:34:22 +0100 <jreicher> Square2: what language(s) do they already know?
2025-11-11 05:34:26 +0100 <Square2> It's a DSL written in Haskell. It's not in production yet.
2025-11-11 05:34:34 +0100 <Square2> jreicher, java
2025-11-11 05:34:46 +0100 <jreicher> "Impossible to have a null pointer exception"
2025-11-11 05:35:00 +0100 <Square2> That's a good one!
2025-11-11 05:35:20 +0100 <jreicher> This I would not repeat, but it's how I think about this stuff...
2025-11-11 05:36:02 +0100 <jreicher> What garbage collection did for memory management, pure functional languages do for every aspect of data structure management. So the entire class of reference-management mistakes get eliminated. Null references is the most common of those.
2025-11-11 05:37:20 +0100spew(~spew@user/spew) spew
2025-11-11 05:38:45 +0100 <jreicher> The type system SHOULD be a selling point for Haskell too, but I'm not sure it is.
2025-11-11 05:39:03 +0100spew(~spew@user/spew) (Client Quit)
2025-11-11 05:39:19 +0100 <Square2> Personally I feel learning Haskell was a milestone of my work life. Wo exaggerating. It made me better creating programs I wanted and also gave me a better sense of what is possible (and what's not) when it comes to modeling.
2025-11-11 05:39:47 +0100 <Square2> But I guess that's a bit vague.
2025-11-11 05:40:26 +0100 <jreicher> Does your audience care about being better at creating programs? (I know that's a cynical question.)
2025-11-11 05:41:13 +0100 <geekosaur> "writing code with fewer bugs"
2025-11-11 05:42:00 +0100 <Square2> It's not your worst devs, but some are definitely more interested in the daily coffee break than learning new things.
2025-11-11 05:42:04 +0100 <jreicher> Not all programmers do, unfortunately. And even worse, not all jobs require it.
2025-11-11 05:42:38 +0100 <Square2> geekosaur, good point. Sleep better. I actually already had that in my list.
2025-11-11 05:42:56 +0100 <Square2> ...or less stress, imho.
2025-11-11 05:43:24 +0100 <geekosaur> more time writing code, less time debugging
2025-11-11 05:43:39 +0100 <geekosaur> (doesn't work if they can push debugging off onto the junior in the group…)
2025-11-11 05:46:49 +0100 <jreicher> Square2: if you can find a way to describe the composability of Haskell then they might see how much more reuse you can get out of existing code. That appeals to lazy (in a good way) programmers.
2025-11-11 05:48:08 +0100geekosaursuddenly wonders f we could adopt or mangle lwall's triptych
2025-11-11 05:52:13 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 05:52:26 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 05:53:25 +0100deptype(~deptype@2406:b400:3a:73c2:87a5:b5f2:d68c:7c8) (Ping timeout: 240 seconds)
2025-11-11 05:58:43 +0100 <Square2> jreicher, Great point. I semi had that in my list.
2025-11-11 05:58:59 +0100 <Square2> thank you all for your input appreciated
2025-11-11 05:59:58 +0100deptype(~deptype@2406:b400:3a:73c2:5ccb:d911:3632:6880)
2025-11-11 06:00:32 +0100 <Leary> Square2: See what you can steal from the OG: John Hughes's "Why Functional Programming Matters"
2025-11-11 06:02:35 +0100 <Square2> Leary, this https://www.youtube.com/watch?v=FGQAP0GxlW8 ?
2025-11-11 06:03:23 +0100jreicher(~user@user/jreicher) (Read error: Connection reset by peer)
2025-11-11 06:04:22 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 06:05:01 +0100 <Leary> There's an old paper, and various versions of the talk. If you're going to watch one of the talks, best to pick the most recent you can find.
2025-11-11 06:14:42 +0100Nachtgespenst(~user@user/siracusa) (Quit: Bye!)
2025-11-11 06:15:41 +0100Googulator63(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 06:15:45 +0100Googulator96(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 06:20:03 +0100sp1ff(~user@2601:1c2:4c00:6820::8bad) sp1ff
2025-11-11 06:20:37 +0100Googulator63(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 06:20:53 +0100Googulator63(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 06:22:37 +0100 <fgarcia> pitching haskell? :O one that could be nice is supporting both prefix and infix notation
2025-11-11 06:22:58 +0100 <fgarcia> pattern matching is amazing as well
2025-11-11 06:28:30 +0100trickard_trickard
2025-11-11 06:30:27 +0100 <jreicher> Java is getting pattern matching. :)
2025-11-11 06:32:42 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2025-11-11 06:32:42 +0100chexum_(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2025-11-11 06:32:55 +0100chexum(~quassel@gateway/tor-sasl/chexum) chexum
2025-11-11 06:33:04 +0100ec(~ec@gateway/tor-sasl/ec) ec
2025-11-11 06:35:38 +0100Googulator63(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 06:35:39 +0100Googulator34(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 06:40:27 +0100mange(~mange@user/mange) (Remote host closed the connection)
2025-11-11 06:42:31 +0100 <EvanR> I know, tell them how you can define arbitrary brand new operators
2025-11-11 06:42:38 +0100 <EvanR> everybody loves that
2025-11-11 06:48:36 +0100 <Square2> Everyone's nostalgic from learning C++? =D
2025-11-11 06:50:12 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 06:50:20 +0100 <jreicher> I miss having a compiler I can crash
2025-11-11 06:52:30 +0100jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 256 seconds)
2025-11-11 06:54:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-11-11 06:56:14 +0100trickard(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 06:56:28 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 06:57:42 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2025-11-11 06:57:50 +0100chexum(~quassel@gateway/tor-sasl/chexum) chexum
2025-11-11 06:57:54 +0100Googulator34(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 06:58:12 +0100Googulator34(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 07:00:16 +0100synchromesh(~john@2406:5a00:2412:2c00:ed84:4ebe:de81:99a2) (Read error: Connection reset by peer)
2025-11-11 07:01:30 +0100synchromesh(~john@2406:5a00:2412:2c00:ed84:4ebe:de81:99a2) synchromesh
2025-11-11 07:20:40 +0100Googulator34(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 07:20:43 +0100Googulator33(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 07:22:01 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2025-11-11 07:22:10 +0100chexum(~quassel@gateway/tor-sasl/chexum) chexum
2025-11-11 07:22:58 +0100sm(znc@plaintextaccounting/sm) sm
2025-11-11 07:28:06 +0100jreicher(~user@user/jreicher) (Quit: Beer)
2025-11-11 07:29:28 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2025-11-11 07:30:00 +0100takuan(~takuan@d8D86B9E9.access.telenet.be)
2025-11-11 07:50:10 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-11-11 07:52:03 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2025-11-11 07:52:21 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-11-11 07:52:46 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 07:53:01 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 07:53:25 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-11-11 07:56:37 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2025-11-11 07:57:17 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2025-11-11 07:57:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-11-11 08:07:50 +0100 <dibblego> data X f a b = X (a, f b) -- what is X?
2025-11-11 08:08:17 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 08:08:31 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 08:09:46 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine)
2025-11-11 08:11:10 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-11-11 08:20:23 +0100xff0x_(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-11-11 08:21:46 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 256 seconds)
2025-11-11 08:27:59 +0100divlamir(~divlamir@user/divlamir) (Ping timeout: 256 seconds)
2025-11-11 08:29:59 +0100divlamir(~divlamir@user/divlamir) divlamir
2025-11-11 08:32:36 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-11-11 08:34:25 +0100 <jreicher> I think this is what I was after earlier https://hackage.haskell.org/package/ghc-prim-0.13.0/docs/GHC-Prim.html#g:24
2025-11-11 08:34:35 +0100 <jreicher> dibblego: what's the context for your question? Where did that snippet come from?
2025-11-11 08:34:57 +0100 <dibblego> I made it up, I want the data type X from a library
2025-11-11 08:38:11 +0100divlamir(~divlamir@user/divlamir) (Ping timeout: 256 seconds)
2025-11-11 08:39:22 +0100 <jreicher> I think the answer might be X can be anything then? I'm not sure I understand the question...
2025-11-11 08:42:18 +0100divlamir(~divlamir@user/divlamir) divlamir
2025-11-11 08:43:11 +0100 <dibblego> found it, https://hackage.haskell.org/package/comonad-5.0.9/docs/Control-Comonad-Trans-Env.html#t:EnvT
2025-11-11 08:51:16 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 08:56:20 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-11-11 08:56:45 +0100peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-11-11 08:56:54 +0100lucabtz(~lucabtz@user/lucabtz) lucabtz
2025-11-11 08:57:50 +0100jreicher(~user@user/jreicher) (Read error: Connection reset by peer)
2025-11-11 09:00:20 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 09:02:22 +0100tromp(~textual@2001:1c00:3487:1b00:bd50:5f58:be67:a48d)
2025-11-11 09:02:35 +0100jreicher(~user@user/jreicher) (Read error: Connection reset by peer)
2025-11-11 09:03:24 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 09:07:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 09:08:14 +0100peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 256 seconds)
2025-11-11 09:12:25 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-11-11 09:20:54 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 09:26:31 +0100jreicher(~user@user/jreicher) (Read error: Connection reset by peer)
2025-11-11 09:28:06 +0100qqe(~qqq@185.54.21.203) (Quit: Lost terminal)
2025-11-11 09:30:59 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 09:32:36 +0100jreicher(~user@user/jreicher) (Read error: Connection reset by peer)
2025-11-11 09:33:59 +0100haetsal(~quassel@221.138.168.192) (Remote host closed the connection)
2025-11-11 09:36:42 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 09:39:31 +0100haetsal(~quassel@221.138.168.192)
2025-11-11 09:40:47 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 09:47:45 +0100ft(~ft@p4fc2aaeb.dip0.t-ipconnect.de) (Quit: leaving)
2025-11-11 09:49:24 +0100olivial(~benjaminl@user/benjaminl) (Ping timeout: 260 seconds)
2025-11-11 09:49:42 +0100olivial(~benjaminl@user/benjaminl) benjaminl
2025-11-11 09:55:29 +0100trickard_trickard
2025-11-11 10:00:45 +0100merijn(~merijn@77.242.116.146) merijn
2025-11-11 10:05:28 +0100tessier(~tessier@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 246 seconds)
2025-11-11 10:07:00 +0100peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-11-11 10:11:42 +0100polykernel(~polykerne@user/polykernel) (Ping timeout: 256 seconds)
2025-11-11 10:11:55 +0100polykernel(~polykerne@user/polykernel) polykernel
2025-11-11 10:12:23 +0100kmein(~weechat@user/kmein) (Quit: ciao kakao)
2025-11-11 10:13:06 +0100travisb_(~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2025-11-11 10:14:40 +0100gorignak(~gorignak@user/gorignak) (Remote host closed the connection)
2025-11-11 10:14:40 +0100hiredman(~hiredman@frontier1.downey.family) (Ping timeout: 256 seconds)
2025-11-11 10:14:40 +0100bcksl(~bcksl@user/bcksl) (Ping timeout: 256 seconds)
2025-11-11 10:14:40 +0100haetsal(~quassel@221.138.168.192) (Ping timeout: 256 seconds)
2025-11-11 10:14:40 +0100tabemann(~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Ping timeout: 256 seconds)
2025-11-11 10:14:42 +0100kmein(~weechat@user/kmein) kmein
2025-11-11 10:14:58 +0100hiredman(~hiredman@frontier1.downey.family) hiredman
2025-11-11 10:15:32 +0100gorignak(~gorignak@user/gorignak) gorignak
2025-11-11 10:15:40 +0100kuribas(~user@2a02-1810-2825-6000-c59e-d8f1-aea0-564e.ip6.access.telenet.be) kuribas
2025-11-11 10:16:11 +0100haetsal(~quassel@221.138.168.192)
2025-11-11 10:16:13 +0100jreicher(~user@user/jreicher) (Ping timeout: 256 seconds)
2025-11-11 10:16:13 +0100takuan(~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 256 seconds)
2025-11-11 10:16:26 +0100takuan(~takuan@d8d86b9e9.access.telenet.be)
2025-11-11 10:16:47 +0100sprout(~sprout@84-80-106-227.fixed.kpn.net) (Ping timeout: 256 seconds)
2025-11-11 10:17:01 +0100bcksl(~bcksl@user/bcksl) bcksl
2025-11-11 10:17:13 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 10:17:17 +0100sprout(~sprout@84-80-106-227.fixed.kpn.net) sprout
2025-11-11 10:20:17 +0100deptype(~deptype@2406:b400:3a:73c2:5ccb:d911:3632:6880) (Remote host closed the connection)
2025-11-11 10:20:37 +0100deptype(~deptype@2406:b400:3a:73c2:20ec:9ba6:a31e:71d2)
2025-11-11 10:20:44 +0100Square3(~Square@user/square) Square
2025-11-11 10:21:21 +0100trickard(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 10:21:34 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 10:23:56 +0100trickard_trickard
2025-11-11 10:25:50 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-11-11 10:28:25 +0100trickard(~trickard@cpe-62-98-47-163.wireline.com.au) (Ping timeout: 240 seconds)
2025-11-11 10:32:12 +0100tessier(~tessier@ec2-184-72-149-67.compute-1.amazonaws.com) tessier
2025-11-11 10:32:18 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 10:32:55 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2025-11-11 10:35:30 +0100Square3(~Square@user/square) (Ping timeout: 256 seconds)
2025-11-11 10:41:55 +0100mreh(~matthew@host86-146-25-125.range86-146.btcentralplus.com)
2025-11-11 10:43:19 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 10:43:33 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 10:44:31 +0100merijn(~merijn@77.242.116.146) merijn
2025-11-11 10:50:14 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-11-11 10:51:15 +0100merijn(~merijn@77.242.116.146) merijn
2025-11-11 10:54:21 +0100artix_live_1(~loouom@109.166.130.42)
2025-11-11 10:57:06 +0100jreicher(~user@user/jreicher) (Read error: Connection reset by peer)
2025-11-11 11:01:00 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Ping timeout: 256 seconds)
2025-11-11 11:01:18 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 11:02:55 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2025-11-11 11:03:04 +0100jreicher(~user@user/jreicher) (Read error: Connection reset by peer)
2025-11-11 11:04:23 +0100peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 256 seconds)
2025-11-11 11:04:33 +0100trickard_trickard
2025-11-11 11:05:22 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 11:09:35 +0100tromp(~textual@2001:1c00:3487:1b00:bd50:5f58:be67:a48d) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-11-11 11:15:50 +0100merijn(~merijn@77.242.116.146) merijn
2025-11-11 11:17:44 +0100kuribas(~user@2a02-1810-2825-6000-c59e-d8f1-aea0-564e.ip6.access.telenet.be) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.3))
2025-11-11 11:17:59 +0100kuribas(~user@2a02-1810-2825-6000-c59e-d8f1-aea0-564e.ip6.access.telenet.be) kuribas
2025-11-11 11:18:26 +0100tromp(~textual@2001:1c00:3487:1b00:bd50:5f58:be67:a48d)
2025-11-11 11:18:34 +0100xff0x_(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 256 seconds)
2025-11-11 11:19:54 +0100trickard(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 11:20:07 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 11:25:10 +0100starving_drummer(~berke@user/Starving-Drummer:76786) Starving_Drummer
2025-11-11 11:28:49 +0100Jackneill(~Jackneill@188-143-82-32.pool.digikabel.hu) Jackneill
2025-11-11 11:32:10 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-11-11 11:33:48 +0100jreicher(~user@user/jreicher) (Quit: In transit)
2025-11-11 11:34:00 +0100merijn(~merijn@77.242.116.146) merijn
2025-11-11 11:46:44 +0100 <kuribas> Haskell typelevel is this weird combination of untyped prolog, intricacies of type classes, and ad hoc extensions (generics, TH).
2025-11-11 11:47:14 +0100 <merijn> kuribas: I don't think TH really counts as type level?
2025-11-11 11:48:27 +0100 <kuribas> merijn: generating types, freemonads, lenses.
2025-11-11 11:49:00 +0100 <kuribas> Not necessarily type level, but usually there to avoid the boilerplate that comes with haskell type level stuff.
2025-11-11 11:49:23 +0100 <kuribas> I usually go with generics, but they have a big compile time cost.
2025-11-11 11:49:32 +0100 <kuribas> And possibly runtime as well.
2025-11-11 11:51:43 +0100 <kuribas> Then again, type level programming in other languages is strictly worse.
2025-11-11 11:51:44 +0100deptype_(~deptype@2406:b400:3a:73c2:96bb:43ff:fecb:477b)
2025-11-11 11:51:50 +0100 <kuribas> Python, Typescript.
2025-11-11 11:52:31 +0100Nachtgespenst(~user@user/siracusa) siracusa
2025-11-11 11:53:25 +0100deptype(~deptype@2406:b400:3a:73c2:20ec:9ba6:a31e:71d2) (Ping timeout: 240 seconds)
2025-11-11 11:53:39 +0100 <kuribas> I just feel dependent types are the logical conclusion of any advanced type system.
2025-11-11 12:00:37 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 12:03:17 +0100 <merijn> Those bring a lot of disadvantages too
2025-11-11 12:03:25 +0100 <merijn> So I'm not yet convinced that's what I want
2025-11-11 12:03:34 +0100 <merijn> You know what I do want?
2025-11-11 12:03:52 +0100 <merijn> I want my damn rowtype polymorhpism in a production language! >.<
2025-11-11 12:04:04 +0100 <merijn> Ideally one not as niche and obscure as Ur/Web
2025-11-11 12:04:35 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 12:04:49 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 12:05:42 +0100 <kuribas> merijn: typescript?
2025-11-11 12:06:34 +0100 <merijn> typescript doesn't have row type polymorphism
2025-11-11 12:06:56 +0100 <merijn> typescript just does structural subtyping
2025-11-11 12:07:03 +0100 <merijn> Which is, like, the opposite of what I want
2025-11-11 12:07:20 +0100 <merijn> The entire point of rowtype polymorphism is to have structural subtyping that doesn't suck
2025-11-11 12:07:40 +0100 <merijn> So I don't have to think about covariance/contravariance
2025-11-11 12:08:37 +0100 <kuribas> purescript then?
2025-11-11 12:08:37 +0100 <merijn> Especially since subtyping ruins all good things
2025-11-11 12:09:02 +0100 <arahael> I'd just be happy having sum types.
2025-11-11 12:09:19 +0100poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-11-11 12:09:20 +0100 <arahael> Still annoyed I can't tell C# that the enums I have should only be defined for the values they're specified for.
2025-11-11 12:09:34 +0100 <merijn> Purescript does have rowtype polymorphism, but compiling to JS means I can't practically use it
2025-11-11 12:10:51 +0100 <jreicher> kuribas: I don't think there's any "logical conclusion" to a type system. A type system is whatever assertions you want the compiler to check for you, in which case you need to be able to express the assertions, and you need the system to be able to check them.
2025-11-11 12:11:14 +0100 <jreicher> I think that will always be a moving target.
2025-11-11 12:11:39 +0100 <kuribas> jreicher: yes, but they always explode in complexity.
2025-11-11 12:11:49 +0100 <kuribas> Lookup at python types. And you don't even have hkts.
2025-11-11 12:12:11 +0100 <kuribas> Which is somewhat mitigated with subtypes.
2025-11-11 12:12:16 +0100poscat(~poscat@user/poscat) poscat
2025-11-11 12:12:47 +0100 <mreh> Do associated types in a Constraint also imply their typeclass? I guess they would have to.
2025-11-11 12:13:43 +0100 <mreh> e.g. `Enum (AssociatedType t) => ...`
2025-11-11 12:14:04 +0100 <kuribas> mreh: yes
2025-11-11 12:14:30 +0100 <kuribas> mreh: constraints, are only checked after resolving the instances.
2025-11-11 12:15:15 +0100 <kuribas> in a class or instance definition I mean.
2025-11-11 12:16:29 +0100 <kuribas> mreh: so "class Eq a => Ord a", means everytime you use "Ord a", it implies "Eq a".
2025-11-11 12:16:55 +0100Ranhir(~Ranhir@157.97.53.139) (Ping timeout: 240 seconds)
2025-11-11 12:17:36 +0100 <kuribas> mreh: "Eq a" isn't even checked when resolving the instance, if it resolves to "Ord a", then "Eq a" must be met, or it is a type error.
2025-11-11 12:21:33 +0100 <mreh> I think you misunderstand.
2025-11-11 12:22:19 +0100Googulator33(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 12:22:20 +0100 <kuribas> What do you mean then?
2025-11-11 12:22:29 +0100 <mreh> I haven't told GHC to look for the typeclass that AssociatedType is from.
2025-11-11 12:22:35 +0100xff0x(~xff0x@2405:6580:b080:900:e7c9:4386:1015:3b04)
2025-11-11 12:22:36 +0100Googulator33(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 12:22:40 +0100 <mreh> But I guess it works it out.
2025-11-11 12:22:53 +0100 <kuribas> mreh: You mean it's a type family inside a typeclass?
2025-11-11 12:22:53 +0100 <mreh> Is that what you thought I meant?
2025-11-11 12:23:06 +0100 <mreh> kuribas: yeah, isn't that called an "associated type"?
2025-11-11 12:23:43 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-11-11 12:24:01 +0100 <kuribas> idk
2025-11-11 12:24:31 +0100 <mreh> it was just a little unexpected,
2025-11-11 12:24:36 +0100 <mreh> to see GHC do that
2025-11-11 12:25:08 +0100 <kuribas> Well, if the type family is inside the class definition, the GHC will know it must be an instance.
2025-11-11 12:25:53 +0100 <mreh> yup
2025-11-11 12:26:20 +0100 <kuribas> Why would that be surprising?
2025-11-11 12:26:33 +0100Square3(~Square@user/square) Square
2025-11-11 12:26:37 +0100 <kuribas> Everything inside the class definition implies the class constraints.
2025-11-11 12:26:46 +0100xff0x(~xff0x@2405:6580:b080:900:e7c9:4386:1015:3b04) (Client Quit)
2025-11-11 12:27:07 +0100 <mreh> I guess because I'm used to supplying contraints when using type class methods
2025-11-11 12:27:15 +0100 <mreh> but that's only when you have an exmplicit type signature
2025-11-11 12:28:11 +0100 <mreh> the associated type is in the type signature already
2025-11-11 12:28:25 +0100 <haskellbridge> <loonycyborg> Row polymorphism sounds like really unsafe idea. Because you can't be really sure that doing something on a subset of rows of ANY record just because they have particular types will do anything useful.
2025-11-11 12:29:27 +0100Ranhir(~Ranhir@157.97.53.139) Ranhir
2025-11-11 12:31:40 +0100Square3(~Square@user/square) (Ping timeout: 256 seconds)
2025-11-11 12:33:03 +0100qqe(~qqq@185.54.21.203)
2025-11-11 12:36:35 +0100merijn(~merijn@77.242.116.146) merijn
2025-11-11 12:41:17 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-11-11 12:42:15 +0100dlock23(~dlock@user/dlock23) dlock23
2025-11-11 12:43:50 +0100 <kuribas> loonycyborg: It's the same with putting type classes on every possible type.
2025-11-11 12:44:06 +0100 <kuribas> It's easy to get wrong behaviour, since it picks the wrong instance.
2025-11-11 12:44:14 +0100 <kuribas> For example Monad and Applicative on (->)
2025-11-11 12:44:47 +0100 <kuribas> It should not exist, because the few times you need it, you can just wrap ReaderT, and it will be also easier to understand the code.
2025-11-11 12:45:37 +0100merijn(~merijn@77.242.116.146) merijn
2025-11-11 12:47:28 +0100kuribas(~user@2a02-1810-2825-6000-c59e-d8f1-aea0-564e.ip6.access.telenet.be) (Remote host closed the connection)
2025-11-11 12:48:14 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 12:48:28 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 12:49:55 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2025-11-11 12:50:32 +0100chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2025-11-11 12:51:07 +0100chiselfuse(~chiselfus@user/chiselfuse) chiselfuse
2025-11-11 12:52:25 +0100__monty__(~toonn@user/toonn) toonn
2025-11-11 12:58:40 +0100artix_live_1(~loouom@109.166.130.42) (Remote host closed the connection)
2025-11-11 13:00:01 +0100merijn(~merijn@77.242.116.146) merijn
2025-11-11 13:01:33 +0100fp(~Thunderbi@2001:708:20:1406::10c5) fp
2025-11-11 13:10:29 +0100xff0x(~xff0x@2405:6580:b080:900:d7c7:2664:9910:68b4)
2025-11-11 13:11:49 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-11-11 13:12:43 +0100comerijn(~merijn@77.242.116.146) merijn
2025-11-11 13:15:18 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-11-11 13:15:55 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 240 seconds)
2025-11-11 13:17:24 +0100DetourNetworkUK(DetourNetw@user/DetourNetworkUK) (Read error: Connection reset by peer)
2025-11-11 13:18:11 +0100DetourNetworkUK(~DetourNet@user/DetourNetworkUK) DetourNetworkUK
2025-11-11 13:27:39 +0100fp1(~Thunderbi@2001:708:150:10::7e06) fp
2025-11-11 13:29:28 +0100fp(~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 256 seconds)
2025-11-11 13:29:28 +0100fp1fp
2025-11-11 13:35:32 +0100Googulator33(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 13:35:49 +0100Googulator33(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 13:36:20 +0100fp1(~Thunderbi@2001:708:20:1406::10c5) fp
2025-11-11 13:37:54 +0100fp(~Thunderbi@2001:708:150:10::7e06) (Ping timeout: 244 seconds)
2025-11-11 13:37:54 +0100fp1fp
2025-11-11 13:39:29 +0100tromp(~textual@2001:1c00:3487:1b00:bd50:5f58:be67:a48d) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-11-11 13:42:33 +0100fp(~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 252 seconds)
2025-11-11 13:44:27 +0100fp(~Thunderbi@wireless-86-50-140-45.open.aalto.fi) fp
2025-11-11 13:52:16 +0100Inline(~inlinE@2a02:3035:673:88a7:64a3:d94e:b8fb:c889) (Ping timeout: 244 seconds)
2025-11-11 13:55:55 +0100annamalai(~annamalai@157.33.216.97) (Ping timeout: 240 seconds)
2025-11-11 14:00:25 +0100acarrico(~acarrico@pppoe-209-99-223-51.greenmountainaccess.net)
2025-11-11 14:01:19 +0100Lycurgus(~juan@user/Lycurgus) Lycurgus
2025-11-11 14:05:42 +0100Googulator33(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 14:05:47 +0100Googulator74(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 14:07:47 +0100Inline(~inlinE@2001-4dd3-bded-0-719b-11b7-e341-7e20.ipv6dyn.netcologne.de) Inline
2025-11-11 14:09:44 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 14:09:57 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 14:16:26 +0100fp(~Thunderbi@wireless-86-50-140-45.open.aalto.fi) (Remote host closed the connection)
2025-11-11 14:19:07 +0100qqe(~qqq@185.54.21.203) (Quit: Lost terminal)
2025-11-11 14:30:39 +0100Googulator74(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 14:30:43 +0100Googulator37(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 14:51:14 +0100Googulator70(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 14:51:31 +0100Googulator37(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 14:53:51 +0100tromp(~textual@2001:1c00:3487:1b00:bd50:5f58:be67:a48d)
2025-11-11 14:55:26 +0100YaShhhh(~YaShhhh@103.247.7.15)
2025-11-11 14:59:50 +0100fp(~Thunderbi@130.233.70.206) fp
2025-11-11 15:01:00 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2025-11-11 15:01:54 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-11-11 15:02:34 +0100fp(~Thunderbi@130.233.70.206) (Remote host closed the connection)
2025-11-11 15:05:10 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-11-11 15:07:33 +0100annamalai(~annamalai@157.33.215.38) annamalai
2025-11-11 15:09:15 +0100Lycurgus(~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
2025-11-11 15:10:56 +0100YaShhhh(~YaShhhh@103.247.7.15) (Quit: Client closed)
2025-11-11 15:13:09 +0100comerijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-11-11 15:15:29 +0100Putonlalla(~Putonlall@it-cyan.it.jyu.fi) (Ping timeout: 260 seconds)
2025-11-11 15:16:34 +0100acarrico(~acarrico@pppoe-209-99-223-51.greenmountainaccess.net) (Ping timeout: 256 seconds)
2025-11-11 15:17:53 +0100synchromesh(~john@2406:5a00:2412:2c00:ed84:4ebe:de81:99a2) (Read error: Connection reset by peer)
2025-11-11 15:18:32 +0100fp(~Thunderbi@2001:708:20:1406::1370) fp
2025-11-11 15:18:35 +0100merijn(~merijn@77.242.116.146) merijn
2025-11-11 15:19:09 +0100synchromesh(~john@2406:5a00:2412:2c00:ed84:4ebe:de81:99a2) synchromesh
2025-11-11 15:30:58 +0100 <haskellbridge> <Morj> I'm looking for excercises for learning and mastering haskell. I remembered two and I lost both
2025-11-11 15:31:31 +0100 <haskellbridge> <sm> exercism is good
2025-11-11 15:31:32 +0100fp(~Thunderbi@2001:708:20:1406::1370) (Remote host closed the connection)
2025-11-11 15:31:47 +0100Sidney(~Sidney@2600:4040:2678:9600:b1c4:ced3:242d:1252)
2025-11-11 15:31:57 +0100 <haskellbridge> <Morj> There was a popular github repo with several very hard excercises, like «write function that when used with traverse will only go N steps deep into a tree», does anyone remember it?
2025-11-11 15:32:32 +0100 <haskellbridge> <Morj> There was also a whole book for learning haskell, with similar tasks, but more for beginners, and I also forgot its name, would appreciate the guesses
2025-11-11 15:33:11 +0100 <haskellbridge> <sm> https://github.com/l-Shane-l/haskell-katas
2025-11-11 15:33:31 +0100 <haskellbridge> <sm> is another
2025-11-11 15:34:48 +0100 <haskellbridge> <sm> https://joyful.com/Haskell+map#courses or https://joyful.com/Haskell+map#books might jog the memory
2025-11-11 15:36:40 +0100orizuru(~orizuru@user/orizuru) (Ping timeout: 256 seconds)
2025-11-11 15:37:05 +0100fp(~Thunderbi@wireless-86-50-140-45.open.aalto.fi) fp
2025-11-11 15:37:28 +0100 <Leary> Morj: Perhaps https://github.com/effectfully-ou/haskell-challenges
2025-11-11 15:37:42 +0100Putonlalla(~Putonlall@it-cyan.it.jyu.fi) Tuplanolla
2025-11-11 15:38:08 +0100 <haskellbridge> <Morj> Leary: Thanks, this is the challenges I was thinking about
2025-11-11 15:39:16 +0100 <merijn> @where exercises
2025-11-11 15:39:16 +0100 <lambdabot> http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems https://github.com/bitemyapp/learnhaskell http://www.reddit.com/r/dailyprogrammer/ http://www.reddit.com/r/programmingchallenges/
2025-11-11 15:40:08 +0100 <haskellbridge> <Morj> sm: Those are the style I'm looking for, but the quality is not great
2025-11-11 15:41:06 +0100Zemyla(~Zemyla@72.178.108.235) Zemyla
2025-11-11 15:41:43 +0100 <Zemyla> So both covariant and contravariant Functors have notions of two different monoids.
2025-11-11 15:43:29 +0100 <Zemyla> class Times f where { one :: f (); times :: f a -> f b -> f (a, b) }; class Plus f where { zero :: f Void; plus :: f a -> f b -> f (Either a b) }
2025-11-11 15:44:20 +0100 <haskellbridge> <Morj> merijn: 99 problems are cool, I'll use them too. But they're lacking lazyness and other haskell-specific things
2025-11-11 15:45:09 +0100 <Zemyla> You'd need a way to witness the isomorphisms ((), a) ~ a ~ (a, ()) and Either Void a ~ a ~ Either a Void, which is difficult to do with both covariant and contravariant functors.
2025-11-11 15:46:47 +0100 <Zemyla> I don't know if this is useful at all, but I'm thinking class Isofunctor f where { isomap :: AnIso' a b -> f a -> f b; (<$>#) :: Coercible a b -> p a b -> f a -> f b; (<$>#) = isomap coerce }
2025-11-11 15:54:04 +0100Zemy(~Zemy@72.178.108.235) (Read error: Connection reset by peer)
2025-11-11 15:54:07 +0100Zemy_(~Zemy@72.178.108.235)
2025-11-11 15:57:29 +0100ouilemur(~jgmerritt@user/ouilemur) (Quit: WeeChat 4.7.0)
2025-11-11 15:57:38 +0100gorignak(~gorignak@user/gorignak) (Quit: quit)
2025-11-11 15:57:55 +0100gorignak(~gorignak@user/gorignak) gorignak
2025-11-11 15:58:24 +0100 <Sidney> Hi, I asked a few questions here last night but my computer crashed and now I don't have access to the answers I received. They were really high quality, so is there a way I can get access to them? I checked the logs for last night but I did not see any of the conversation. Thanks!
2025-11-11 15:59:12 +0100emmanuelux(~emmanuelu@user/emmanuelux) emmanuelux
2025-11-11 15:59:31 +0100 <merijn> Sidney: See the logs in the topic
2025-11-11 15:59:52 +0100 <merijn> ah, you did >.>
2025-11-11 16:00:23 +0100 <merijn> Are you sure you checked the right time?
2025-11-11 16:00:49 +0100 <merijn> Note that the log timestamps are UTC+1, which might differ from wherever you are
2025-11-11 16:01:38 +0100 <Sidney> Okay I will go back and check. Are you saying everything in the IRC is recorded so it should be there?
2025-11-11 16:02:00 +0100 <merijn> Everything in this channel is
2025-11-11 16:02:13 +0100 <merijn> Incidentally, I do see a question from you at 02:42
2025-11-11 16:02:19 +0100 <merijn> Not sure if that's the one you meant
2025-11-11 16:02:39 +0100gorignak(~gorignak@user/gorignak) (Client Quit)
2025-11-11 16:02:54 +0100 <merijn> And one earlier at 1:00: https://ircbrowse.tomsmeding.com/browse/lchaskell?id=1693741#trid1693741
2025-11-11 16:02:56 +0100gorignak(~gorignak@user/gorignak) gorignak
2025-11-11 16:03:39 +0100 <Sidney> Just found it! Thank you so much
2025-11-11 16:05:25 +0100fp(~Thunderbi@wireless-86-50-140-45.open.aalto.fi) (Ping timeout: 240 seconds)
2025-11-11 16:05:50 +0100spew(~spew@user/spew) spew
2025-11-11 16:07:25 +0100Zemyla(~Zemyla@72.178.108.235) (Ping timeout: 250 seconds)
2025-11-11 16:08:25 +0100Square2(~Square4@user/square) (Ping timeout: 240 seconds)
2025-11-11 16:14:13 +0100j1n37(~j1n37@user/j1n37) j1n37
2025-11-11 16:14:26 +0100lucabtz(~lucabtz@user/lucabtz) (Remote host closed the connection)
2025-11-11 16:15:22 +0100ljdarj(~Thunderbi@user/ljdarj) (Quit: ljdarj)
2025-11-11 16:15:38 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-11-11 16:15:52 +0100lucabtz(~lucabtz@user/lucabtz) lucabtz
2025-11-11 16:23:00 +0100gorignak(~gorignak@user/gorignak) (Quit: quit)
2025-11-11 16:23:15 +0100gorignak(~gorignak@user/gorignak) gorignak
2025-11-11 16:26:52 +0100ouilemur(~jgmerritt@user/ouilemur) ouilemur
2025-11-11 16:34:12 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-11-11 16:35:25 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Ping timeout: 264 seconds)
2025-11-11 16:37:50 +0100acarrico(~acarrico@pppoe-209-99-223-51.greenmountainaccess.net)
2025-11-11 16:40:17 +0100tromp(~textual@2001:1c00:3487:1b00:bd50:5f58:be67:a48d) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-11-11 16:41:23 +0100merijn(~merijn@77.242.116.146) merijn
2025-11-11 16:42:08 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 256 seconds)
2025-11-11 16:49:13 +0100karenw(~karenw@user/karenw) karenw
2025-11-11 16:54:22 +0100 <haskellbridge> <Morj> Thanks to links shared above and some googling, I found some really good exercises, but not really any that utilize lazyness meaningfully. Does anyone have tasks specifically for implementing algorithms using lazy evaluation?
2025-11-11 16:56:44 +0100Googulator70(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 16:57:04 +0100Googulator70(~Googulato@80-95-87-101.pool.digikabel.hu)
2025-11-11 16:57:37 +0100tromp(~textual@2001:1c00:3487:1b00:bd50:5f58:be67:a48d)
2025-11-11 17:02:02 +0100 <merijn> Morj: I'm not sure if there's any good exercises for that
2025-11-11 17:02:03 +0100 <lucabtz> what does haskellbridge bridge to?
2025-11-11 17:02:11 +0100 <merijn> lucabtz: matrix
2025-11-11 17:02:13 +0100 <haskellbridge> <Morj> To matrix
2025-11-11 17:02:21 +0100 <lucabtz> ah i see
2025-11-11 17:03:19 +0100 <haskellbridge> <Morj> Ok, I guess I'll have to put a mental checknote to start gathering real life problems to create a set of such tasks...
2025-11-11 17:03:41 +0100 <haskellbridge> <Morj> But I'm pretty sure I've seen a small set of such when I was studying myself. I just lost it now
2025-11-11 17:05:37 +0100Googulator(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 17:05:37 +0100Googulator70(~Googulato@80-95-87-101.pool.digikabel.hu) (Quit: Client closed)
2025-11-11 17:06:32 +0100Zemyla(~Zemyla@72.178.108.235) Zemyla
2025-11-11 17:07:15 +0100 <merijn> Morj: You can have a look at the reverse state monad and tardis monads to get your mind broken
2025-11-11 17:07:36 +0100jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-11-11 17:12:24 +0100Zemyla83(~Zemyla@72.178.108.235) Zemyla
2025-11-11 17:13:57 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2025-11-11 17:15:07 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-11 17:15:20 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 17:15:53 +0100Zemyla(~Zemyla@72.178.108.235) (Ping timeout: 250 seconds)
2025-11-11 17:22:59 +0100spew(~spew@user/spew) (Quit: WeeChat 4.6.3)
2025-11-11 17:27:28 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-11-11 17:28:36 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2025-11-11 17:29:32 +0100Lord_of_Life_Lord_of_Life
2025-11-11 17:30:35 +0100comerijn(~merijn@77.242.116.146) merijn
2025-11-11 17:32:33 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-11-11 17:34:30 +0100Googulator(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 17:35:06 +0100Googulator(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 17:35:19 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-11-11 17:35:23 +0100comerijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-11-11 17:36:25 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 240 seconds)
2025-11-11 17:36:25 +0100ljdarj1ljdarj
2025-11-11 17:43:58 +0100EvanR(~EvanR@user/evanr) (Remote host closed the connection)
2025-11-11 17:44:18 +0100EvanR(~EvanR@user/evanr) EvanR
2025-11-11 17:45:45 +0100haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2025-11-11 17:47:53 +0100Sidney(~Sidney@2600:4040:2678:9600:b1c4:ced3:242d:1252) (Quit: Client closed)
2025-11-11 17:50:53 +0100euphores(~SASL_euph@user/euphores) euphores
2025-11-11 17:54:29 +0100Zemyla83Zemyla
2025-11-11 17:55:21 +0100 <Zemyla> I've got a matrix.org account, but when I try to join the rooms, I can't find them. How do I join?
2025-11-11 17:58:31 +0100Jackneill_(~Jackneill@188-143-82-63.pool.digikabel.hu)
2025-11-11 17:59:47 +0100Googulator(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 18:00:36 +0100Googulator(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 18:00:53 +0100Zemyla9(~Zemyla@72.178.108.235) Zemyla
2025-11-11 18:00:54 +0100jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 256 seconds)
2025-11-11 18:01:12 +0100Zemyla(~Zemyla@72.178.108.235) (Killed (NickServ (GHOST command used by Zemyla9)))
2025-11-11 18:01:15 +0100Zemyla9Zemyla
2025-11-11 18:01:27 +0100Jackneill(~Jackneill@188-143-82-32.pool.digikabel.hu) (Ping timeout: 256 seconds)
2025-11-11 18:05:35 +0100Googulator(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 18:05:38 +0100 <haskellbridge> <sm> Zemyla : all the haskell rooms can be found under https://matrix.to/#/#haskell-space:matrix.org
2025-11-11 18:05:49 +0100Googulator(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 18:15:36 +0100Googulator(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 18:15:38 +0100Googulator77(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 18:20:56 +0100Googulator28(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 18:21:26 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 272 seconds)
2025-11-11 18:22:43 +0100Googulator77(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 18:24:02 +0100 <haskellbridge> <Zemyla> Thanks!
2025-11-11 18:25:32 +0100Googulator28(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Client Quit)
2025-11-11 18:25:39 +0100Googulator28(~Googulato@80-95-87-101.pool.digikabel.hu)
2025-11-11 18:27:41 +0100Googulator28Googulator
2025-11-11 18:30:05 +0100 <geekosaur> search is disabled on matrix.org still
2025-11-11 18:30:49 +0100 <haskellbridge> <sm> the matrix.org room directory is still locked to a small subset of rooms, to be precise
2025-11-11 18:30:51 +0100Googulator(~Googulato@80-95-87-101.pool.digikabel.hu) (Quit: Client closed)
2025-11-11 18:30:52 +0100Googulator39(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 18:39:43 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2025-11-11 18:40:13 +0100fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) fp
2025-11-11 18:40:50 +0100Googulator26(~Googulato@80-95-87-101.pool.digikabel.hu)
2025-11-11 18:40:54 +0100Googulator39(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 18:45:01 +0100 <EvanR> trapped in the matrix
2025-11-11 18:56:59 +0100 <haskellbridge> <sm> I hope they'll get it together and open the darn thing by 2026 >:/
2025-11-11 18:57:17 +0100Zemyla(~Zemyla@72.178.108.235) (Ping timeout: 250 seconds)
2025-11-11 19:05:09 +0100Zemyla(~Zemyla@72.178.108.235) Zemyla
2025-11-11 19:06:11 +0100ft(~ft@p4fc2aaeb.dip0.t-ipconnect.de) ft
2025-11-11 19:10:43 +0100Googulator75(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 19:11:46 +0100Googulator26(~Googulato@80-95-87-101.pool.digikabel.hu) (Quit: Client closed)
2025-11-11 19:16:13 +0100karenw(~karenw@user/karenw) (Ping timeout: 264 seconds)
2025-11-11 19:26:42 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-11-11 19:26:42 +0100synchromesh(~john@2406:5a00:2412:2c00:ed84:4ebe:de81:99a2) (Read error: Connection reset by peer)
2025-11-11 19:27:47 +0100synchromesh(~john@2406:5a00:2412:2c00:ed84:4ebe:de81:99a2) synchromesh
2025-11-11 19:30:39 +0100Googulator75(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 19:30:45 +0100Googulator8(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 19:31:07 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2025-11-11 19:33:58 +0100 <tomsmeding> should I expend the effort to have the logs be in UTC
2025-11-11 19:34:20 +0100 <haskellbridge> <Zemyla> How much effort would it be to rewrite old logs?
2025-11-11 19:36:14 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2025-11-11 19:38:55 +0100fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 256 seconds)
2025-11-11 19:40:26 +0100 <EvanR> what timezone are they in now?
2025-11-11 19:48:18 +0100tromp(~textual@2001:1c00:3487:1b00:bd50:5f58:be67:a48d) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-11-11 19:48:51 +0100 <tomsmeding> EvanR: whatever my VPS was already in, which is Europe/Amsterdam, which even has DST in summer
2025-11-11 19:49:26 +0100 <EvanR> lovely
2025-11-11 19:49:48 +0100 <EvanR> I vote to convert it to aztec calendar
2025-11-11 19:50:15 +0100 <tomsmeding> and I now see that means that we lose one hour of logs every october?
2025-11-11 19:50:22 +0100 <EvanR> what
2025-11-11 19:50:37 +0100Googulator8(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 19:50:38 +0100 <EvanR> you mean if you convert to UTC?
2025-11-11 19:50:42 +0100 <sm> no! atlantean calendar
2025-11-11 19:50:48 +0100Googulator8(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 19:50:49 +0100 <tomsmeding> anyway you can see the opposite jump here https://ircbrowse.tomsmeding.com/day/lchaskell/2025/03/30?id=1517022#trid1517022
2025-11-11 19:51:00 +0100 <EvanR> we lost logs or we will lose logs
2025-11-11 19:51:08 +0100 <tomsmeding> well the logs are still there in the plain znc logs
2025-11-11 19:51:14 +0100 <tomsmeding> but the website drops them
2025-11-11 19:51:18 +0100 <EvanR> nice
2025-11-11 19:51:35 +0100tomsmedingchecks if they're in the database
2025-11-11 19:51:48 +0100 <haskellbridge> <Zemyla> I'm pretty sure it's impossible, then.
2025-11-11 19:51:52 +0100 <EvanR> how many haskell programmers does it take to get time and date right
2025-11-11 19:52:25 +0100 <tomsmeding> well this is a combination of 1. the original author of ircbrowse creating this hideous postgres setup
2025-11-11 19:52:31 +0100 <humasect> it will be evaluated when necessary
2025-11-11 19:52:36 +0100 <tomsmeding> and apparently assuming that the server is in UTC
2025-11-11 19:52:43 +0100 <tomsmeding> and 2. me not doing that
2025-11-11 19:55:25 +0100Zemyla(~Zemyla@72.178.108.235) (Quit: Client closed)
2025-11-11 19:56:19 +0100 <tomsmeding> ok so the logs are there in the znc log files but the import to postgres borks
2025-11-11 19:56:41 +0100 <tomsmeding> the issue is this: the import to postgres assigns IDs to the events, and those IDs are not necessarily stable when you do a clean re-import of everything
2025-11-11 19:56:55 +0100 <tomsmeding> and people might have bookmarks to specific events, which have the ID in the URL
2025-11-11 19:57:14 +0100 <tomsmeding> I have wanted to rewrite this system for years but I never had the motivation to
2025-11-11 19:57:33 +0100 <tomsmeding> Zemyla: so possible, but rather a nuisancve
2025-11-11 19:58:57 +0100lucabtz(~lucabtz@user/lucabtz) (Remote host closed the connection)
2025-11-11 19:59:50 +0100 <tomsmeding> another part of the problem is that on a system with system time with DST, znc logs are technically ambiguous since it just contains the HH:MM:SS time for every message
2025-11-11 20:00:26 +0100 <EvanR> it would need a multi-part migration which does something to make a translation table of old IDs, reimports, then fixes all the IDs
2025-11-11 20:00:27 +0100 <tomsmeding> so when you switch from summer time to winter time and the clock goes back an hour, you get times between 01:00 and 02:00 twice
2025-11-11 20:01:04 +0100 <tomsmeding> if there are enough messages you can spot the jump and it's not ambiguous, but if there's, say, only one message in that two-hour slot, it's ambiguous where it is
2025-11-11 20:01:11 +0100 <tomsmeding> EvanR: possibly
2025-11-11 20:01:36 +0100 <EvanR> if there's only 1 message during the ambiguous period, may it's not that important what time it happened xD
2025-11-11 20:01:40 +0100 <EvanR> flip a coin
2025-11-11 20:01:45 +0100 <tomsmeding> that's a point
2025-11-11 20:02:06 +0100 <haskellbridge> <Zemyla> Yeah, you just have to make sure the overlap isn't a problem.
2025-11-11 20:02:36 +0100 <haskellbridge> <Zemyla> Very few people will care whether a message took place in the summer 1:30 or the winter 1:30.
2025-11-11 20:02:37 +0100tromp(~textual@2001:1c00:3487:1b00:bd50:5f58:be67:a48d)
2025-11-11 20:03:26 +0100 <tomsmeding> it's whether it happened at 01:30 or 02:30 UTC
2025-11-11 20:04:44 +0100 <tomsmeding> you know what? I'm going to think about this later and you guys will have to live with the current mess a while longer :p
2025-11-11 20:05:23 +0100 <EvanR> the fascinating problems we put ourselves in
2025-11-11 20:06:49 +0100haltingsolver(~cmo@2604:3d09:207f:8000:d250:ea0c:366a:6e73)
2025-11-11 20:07:15 +0100 <tomsmeding> DST should be abolished
2025-11-11 20:08:10 +0100 <tomsmeding> without DST I could just leave everything as-is and translate on-the-fly when serving the web page
2025-11-11 20:08:55 +0100 <tomsmeding> in a way it's weird in the first place that ircbrowse has the notion of "day", and that day is whatever matches the system timezone on the server it runs on
2025-11-11 20:09:48 +0100 <tomsmeding> for me, being in UTC+1/UTC+2, the UTC day would match closely enough with my calendar day that it's intuitive, but if you're, say, in California or in New Zealand, the ircbrowse "day" is something completely weird
2025-11-11 20:10:59 +0100 <tomsmeding> does anyone here remember what the old ircbrowse, when it was still hosted by its original creator (Chris Done), used as the timezone for events?
2025-11-11 20:11:13 +0100 <EvanR> yeah day (unless you're talking NASA MJD stuff) is really a localization thing
2025-11-11 20:13:23 +0100 <tomsmeding> EvanR: is this the authoritative reference on what the MJD is? https://core2.gsfc.nasa.gov/time/ Because it defines it as intrinsically linked to a _calendar_ day, with no timezone specified
2025-11-11 20:14:00 +0100 <EvanR> wow nice css
2025-11-11 20:14:16 +0100 <tomsmeding> "Last modified 17/3/00"
2025-11-11 20:15:35 +0100 <EvanR> since MJD is a specific number that I've seen in relation to interplanetary objects I presume it's defined specifically enough to get within the day, otherwise what's the point of the decimals
2025-11-11 20:15:49 +0100Googulator7(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 20:15:57 +0100 <EvanR> now I'm going down a rabbit hole
2025-11-11 20:16:28 +0100dlock23(~dlock@user/dlock23) (Quit: Leaving)
2025-11-11 20:18:07 +0100Googulator8(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 20:18:19 +0100 <tomsmeding> ok so this table https://en.wikipedia.org/wiki/Julian_day#Variants seems to interpret it as relative to UTC
2025-11-11 20:18:25 +0100 <tomsmeding> (I just refreshed it)
2025-11-11 20:18:59 +0100 <tomsmeding> > (floor (0.80278 * 24), floor ((0.80278 * 24 - 19) * 60))
2025-11-11 20:19:01 +0100 <lambdabot> (19,16)
2025-11-11 20:19:04 +0100 <EvanR> wikipedia page has references to noon = noon in UT
2025-11-11 20:19:18 +0100 <tomsmeding> oh right
2025-11-11 20:19:33 +0100 <tomsmeding> ok good, so it makes sense
2025-11-11 20:27:30 +0100 <monochrom> Oh, time leaps in IRC logs? They are awesome, please don't kill them! >:)
2025-11-11 20:27:31 +0100 <EvanR> (where UT is not exactly equal to UTC but close)
2025-11-11 20:28:04 +0100 <tomsmeding> monochrom: are they? :P
2025-11-11 20:28:55 +0100 <monochrom> We need to confuse future archaelogists by leaving around records that can be misinterpreted as evidence for we having figured out time travel!
2025-11-11 20:29:29 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2025-11-11 20:29:33 +0100fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) fp
2025-11-11 20:30:10 +0100 <tomsmeding> I don't think this is a particularly convincing exhibit to that end :p
2025-11-11 20:31:04 +0100 <monochrom> OK OK, s/archaeologists/ufologists/ ! >:D
2025-11-11 20:31:50 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2025-11-11 20:37:25 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au) (Ping timeout: 240 seconds)
2025-11-11 20:37:49 +0100trickard_(~trickard@cpe-62-98-47-163.wireline.com.au)
2025-11-11 20:40:11 +0100 <gentauro> EvanR: define "get time and date right" ;)
2025-11-11 20:40:17 +0100 <gentauro> it's actually not trivial
2025-11-11 20:40:41 +0100 <sm> he knwos
2025-11-11 20:40:46 +0100 <tomsmeding> so, many, apparently
2025-11-11 20:41:00 +0100 <gentauro> sm: everybody does ;)
2025-11-11 20:47:17 +0100 <gentauro> follow-up question, how many bits do you need to store `date` and `time` right? I vote for 96-bits (32 bits for date and 64 for time)
2025-11-11 20:49:00 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2025-11-11 20:56:21 +0100 <haskellbridge> <sm> that must be a trick question. The only right answer is to not answer :)
2025-11-11 20:57:10 +0100 <monochrom> haha
2025-11-11 20:57:24 +0100euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2025-11-11 20:59:56 +0100ThePenguin(~ThePengui@cust-95-80-28-221.csbnet.se) (Remote host closed the connection)
2025-11-11 21:00:41 +0100Digit(~user@user/digit) (Ping timeout: 244 seconds)
2025-11-11 21:02:00 +0100ThePenguin(~ThePengui@cust-95-80-28-221.csbnet.se) ThePenguin
2025-11-11 21:07:45 +0100 <darkling> Number of Planck times since the Big Bang. :)
2025-11-11 21:08:47 +0100 <darkling> Signed integer, of course. Just in case.
2025-11-11 21:09:23 +0100 <tomsmeding> so how many bits? :P
2025-11-11 21:10:17 +0100peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-11-11 21:12:23 +0100 <darkling> Wikipedia says the Universe is about 8*10^60 Planck units old right now, so that's about 204 bits for present use.
2025-11-11 21:13:06 +0100 <monochrom> I was hoping that 128 would b enough.
2025-11-11 21:13:21 +0100 <monochrom> It's OK! We can go 512. :)
2025-11-11 21:13:34 +0100 <darkling> Max number of bits would depend on your favourite theory on the fate of the universe.
2025-11-11 21:14:08 +0100 <monochrom> Oh I just need a theory on the fate of this civilization.
2025-11-11 21:14:29 +0100darklingchecks watch
2025-11-11 21:14:34 +0100 <darkling> About 25 minutes?
2025-11-11 21:15:06 +0100 <monochrom> You are so generous :)
2025-11-11 21:15:12 +0100 <tomsmeding> monochrom: if you use planck time you already lose about 146 bits just describing one second
2025-11-11 21:16:17 +0100 <tomsmeding> ok 144, more precisely
2025-11-11 21:18:26 +0100 <haskellbridge> <Zemyla> In 10^200 years, all protons and neutrons in the universe will have likely decayed. Unless you plan on porting your data to diffuse electron-positron-photon clouds, I wouldn't worry about it.
2025-11-11 21:18:39 +0100annamalai(~annamalai@157.33.215.38) (Ping timeout: 256 seconds)
2025-11-11 21:20:30 +0100jreicher(~user@user/jreicher) (Quit: In transit)
2025-11-11 21:20:36 +0100Googulator7(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 21:20:41 +0100Googulator78(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 21:22:13 +0100ThePenguin(~ThePengui@cust-95-80-28-221.csbnet.se) (Remote host closed the connection)
2025-11-11 21:24:09 +0100ThePenguin(~ThePengui@cust-95-80-28-221.csbnet.se) ThePenguin
2025-11-11 21:24:20 +0100haltingsolver(~cmo@2604:3d09:207f:8000:d250:ea0c:366a:6e73) (Ping timeout: 256 seconds)
2025-11-11 21:25:52 +0100Googulator78(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 21:25:53 +0100Googulator35(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 21:32:50 +0100peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 256 seconds)
2025-11-11 21:33:37 +0100emmanuelux(~emmanuelu@user/emmanuelux) emmanuelux
2025-11-11 21:35:36 +0100Googulator35(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 21:35:41 +0100Googulator19(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 21:40:55 +0100haltingsolver(~cmo@2604:3d09:207f:8000::d1dc)
2025-11-11 21:54:26 +0100deptype_(~deptype@2406:b400:3a:73c2:96bb:43ff:fecb:477b) (Remote host closed the connection)
2025-11-11 21:54:43 +0100deptype_(~deptype@2406:b400:3a:73c2:58f2:c14f:76a3:1328)
2025-11-11 21:55:45 +0100Googulator77(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 21:55:47 +0100Googulator19(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 22:05:51 +0100 <EvanR> gentauro, depends on the calendar
2025-11-11 22:06:56 +0100 <EvanR> Zemyla, sounds like a job for plasma based lifeforms
2025-11-11 22:10:16 +0100 <tomsmeding> > logBase 2 ((1e200 + 13.787e9) * (1/5.391e-44))
2025-11-11 22:10:18 +0100 <lambdabot> 808.1199022429475
2025-11-11 22:10:26 +0100 <tomsmeding> just 809 bits :)
2025-11-11 22:10:56 +0100 <haskellbridge> <Zemyla> At that point, just use bignums.
2025-11-11 22:11:13 +0100 <tomsmeding> > logBase 2 ((1e200 + 13.787e9) * 365.2425 * 24 * 3600 * (1/5.391e-44))
2025-11-11 22:11:14 +0100 <lambdabot> 833.0313567732568
2025-11-11 22:11:21 +0100 <tomsmeding> apologies, forgot to convert years to seconds
2025-11-11 22:12:01 +0100 <haskellbridge> <Zemyla> And even then, the universe will keep going.
2025-11-11 22:12:04 +0100 <EvanR> the apple core audio API uses 64-bit numbers measured in nanoseconds and is good enough for jazz
2025-11-11 22:12:17 +0100target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2025-11-11 22:12:21 +0100 <haskellbridge> <Zemyla> Pun intended?
2025-11-11 22:12:24 +0100 <tomsmeding> > 2 ^ 64 / 1e9 / 3600 / 24
2025-11-11 22:12:26 +0100 <lambdabot> 213503.9823346013
2025-11-11 22:12:35 +0100 <tomsmeding> I think 213503 days is enough for jazz, yes
2025-11-11 22:13:11 +0100 <haskellbridge> <Zemyla> Not enough for Bull of Heaven, though.
2025-11-11 22:13:21 +0100 <EvanR> good enough for government work
2025-11-11 22:13:33 +0100 <tomsmeding> yes, because they don't last that long
2025-11-11 22:15:02 +0100deptype_(~deptype@2406:b400:3a:73c2:58f2:c14f:76a3:1328) (Remote host closed the connection)
2025-11-11 22:15:15 +0100deptype_(~deptype@2406:b400:3a:73c2:ae9c:715:89d4:6e2a)
2025-11-11 22:15:36 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2025-11-11 22:15:38 +0100Googulator36(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 22:15:40 +0100Googulator77(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 22:17:35 +0100 <EvanR> > 213503 / 365.25
2025-11-11 22:17:36 +0100 <lambdabot> 584.539356605065
2025-11-11 22:30:13 +0100jreicher(~user@user/jreicher) jreicher
2025-11-11 22:35:04 +0100deptype_(~deptype@2406:b400:3a:73c2:ae9c:715:89d4:6e2a) (Remote host closed the connection)
2025-11-11 22:35:23 +0100deptype_(~deptype@2406:b400:3a:73c2:74f0:c0e8:2b79:8574)
2025-11-11 22:35:39 +0100Googulator36(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 22:35:40 +0100Googulator27(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 22:36:21 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2025-11-11 22:38:25 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Ping timeout: 264 seconds)
2025-11-11 22:40:41 +0100Googulator27(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 22:40:49 +0100Googulator85(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 22:51:49 +0100L29Ah(~L29Ah@wikipedia/L29Ah) ()
2025-11-11 22:53:02 +0100jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-11-11 23:00:25 +0100Googulator85(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 23:00:36 +0100Googulator85(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 23:05:44 +0100Googulator23(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 23:06:12 +0100Googulator85(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 23:13:24 +0100mange(~mange@user/mange) mange
2025-11-11 23:15:15 +0100takuan(~takuan@d8d86b9e9.access.telenet.be) (Remote host closed the connection)
2025-11-11 23:15:25 +0100fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 240 seconds)
2025-11-11 23:21:03 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 256 seconds)
2025-11-11 23:21:28 +0100LainIwakura(~LainIwaku@user/LainIwakura) LainIwakura
2025-11-11 23:23:30 +0100trickard_trickard
2025-11-11 23:26:01 +0100Googulator23(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 23:26:09 +0100Googulator94(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 23:28:22 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 23:30:00 +0100Digit(~user@user/digit) Digit
2025-11-11 23:30:47 +0100Googulator35(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 23:30:53 +0100Googulator94(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Client Quit)
2025-11-11 23:31:11 +0100tromp(~textual@2001:1c00:3487:1b00:bd50:5f58:be67:a48d) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-11-11 23:33:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-11-11 23:34:34 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-11-11 23:35:46 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-11-11 23:37:06 +0100deptype_(~deptype@2406:b400:3a:73c2:74f0:c0e8:2b79:8574) (Remote host closed the connection)
2025-11-11 23:37:26 +0100deptype_(~deptype@2406:b400:3a:73c2:b260:b562:4d7c:996e)
2025-11-11 23:38:16 +0100fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) fp
2025-11-11 23:38:48 +0100divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2025-11-11 23:38:56 +0100divlamir(~divlamir@user/divlamir) divlamir
2025-11-11 23:44:10 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-11 23:45:31 +0100Zemyla(~Zemyla@72.178.108.235) Zemyla
2025-11-11 23:50:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-11-11 23:51:03 +0100Googulator35(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu) (Quit: Client closed)
2025-11-11 23:51:06 +0100Googulator1(~Googulato@2a01-036d-0106-0180-8127-ba79-55a7-6f29.pool6.digikabel.hu)
2025-11-11 23:51:57 +0100Zemyla(~Zemyla@72.178.108.235) (Ping timeout: 250 seconds)
2025-11-11 23:57:41 +0100deptype_(~deptype@2406:b400:3a:73c2:b260:b562:4d7c:996e) (Remote host closed the connection)
2025-11-11 23:57:54 +0100deptype_(~deptype@2406:b400:3a:73c2:25ef:e8:f835:b7ce)