2025/03/12

Newest at the top

2025-03-12 22:08:19 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-12 22:07:10 +0100tabaqui(~root@167.71.80.236) tabaqui
2025-03-12 22:05:30 +0100tabaqui(~root@167.71.80.236) (Client Quit)
2025-03-12 22:04:24 +0100Inst(~Inst@user/Inst) (Remote host closed the connection)
2025-03-12 22:03:45 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-03-12 22:03:35 +0100tabaqui(~root@167.71.80.236) tabaqui
2025-03-12 22:02:10 +0100tabaqui(~root@167.71.80.236) (Client Quit)
2025-03-12 22:02:04 +0100ljdarj1ljdarj
2025-03-12 22:02:04 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds)
2025-03-12 22:01:47 +0100tabaqui(~root@167.71.80.236) tabaqui
2025-03-12 22:01:26 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-03-12 22:01:14 +0100tabaqui(~root@167.71.80.236) (Client Quit)
2025-03-12 22:00:57 +0100tabaqui(~root@167.71.80.236) tabaqui
2025-03-12 21:59:42 +0100izzyfalco(~jake_pers@user/izzyfalco) (Ping timeout: 252 seconds)
2025-03-12 21:59:35 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-12 21:59:11 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-03-12 21:56:49 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-12 21:52:52 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-12 21:47:40 +0100 <Noinia> hmm, does anyone know how to coerce 'Folds' from the lens package? I.e. I'm trying to implement a function 'test :: forall s s' a. Coercible s s' => Fold s a -> Fold s' a. I can write test myFold = \f -> contramap coerce . myFold f . coerce. But the 'contramap coerce' is bothering me; that does not necessarily seem zero-cost. Any way around that?
2025-03-12 21:46:12 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-03-12 21:41:39 +0100jespada(~jespada@r190-135-78-231.dialup.adsl.anteldata.net.uy) jespada
2025-03-12 21:38:46 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-12 21:37:15 +0100jespada(~jespada@2800:a4:22b4:9a00:f994:da25:97cf:4452) (Ping timeout: 244 seconds)
2025-03-12 21:36:40 +0100sdrfan123(~sdrfan123@2607:fb90:ad22:c6ba:1965:cecd:386e:8114)
2025-03-12 21:34:11 +0100 <Inst> https://www.cs.columbia.edu/~sedwards/classes/2023/4995-fall/index.html
2025-03-12 21:34:02 +0100 <Inst> actually, no, I thought Columbia had a course wherein they taught you par and rpar before they taught you recursion, but it's only titled that way and it's a normal haskell course :(
2025-03-12 21:31:19 +0100 <Inst> it's funny in a way, Chalmers starts their intro programming with Haskell in IO
2025-03-12 21:28:27 +0100 <Inst> I'm sort of getting tired of trying to implement parFold, it's fun when I see huge improvements (moved from 80 seconds to 0.7 seconds), but ultimately it's not going to ever really be useful
2025-03-12 21:27:33 +0100 <Inst> by the way, are there any good parallelization exercises for working with the spark parallelism system?
2025-03-12 21:26:46 +0100 <tomsmeding> with only single-argument lambdas, it's very straightforward
2025-03-12 21:26:43 +0100izzyfalco(~jake_pers@user/izzyfalco) izzyfalco
2025-03-12 21:26:35 +0100 <tomsmeding> if you add multi-argument lambdas to your language, the definition of WHNF gets a bit more intricate
2025-03-12 21:26:14 +0100 <Inst> yeah, partially applied lambda was confusing
2025-03-12 21:26:01 +0100 <tomsmeding> yes, because it's a lambda
2025-03-12 21:25:50 +0100 <Inst> but (\y -> 2 + y) is WHNF
2025-03-12 21:23:34 +0100 <tomsmeding> you're not wrong
2025-03-12 21:23:23 +0100 <EvanR> it's constructors all the way down
2025-03-12 21:23:09 +0100 <tomsmeding> and as I said, if you see lambda as the "constructor" of the function type, then it's just "it's a constructor"
2025-03-12 21:22:49 +0100 <tomsmeding> if you see the lambda calculus as having just single-argument lambda functions (i.e. `\x y -> E` is sugar for `\x -> \y -> E`), then WHNF is "it's a constructor or a lambda"
2025-03-12 21:21:58 +0100 <EvanR> whatever is involved
2025-03-12 21:21:49 +0100 <EvanR> application is not WHNF
2025-03-12 21:20:36 +0100 <tomsmeding> `(\x y -> x + y) 2` is not WHNF
2025-03-12 21:20:24 +0100 <tomsmeding> Inst: what do you mean with "partially applied lambda"?
2025-03-12 21:20:02 +0100 <Inst> iirc WHNF = constructor or partially applied lambda. What's in WHNF but not NF (unless it's been evaluated prior) is constructors holding unevaluated data afaik, right?
2025-03-12 21:18:33 +0100 <EvanR> typescript... whose type system isn't particularly turing complete aiui
2025-03-12 21:18:03 +0100 <EvanR> I don't see why my DOOM implementation in haskell doesn't just run at compile time! This long time joke apparently has become real in typescript recently
2025-03-12 21:17:44 +0100 <tomsmeding> I have never had to use something like that yet. :)
2025-03-12 21:17:30 +0100tomsmedinghad to look up "solvable"
2025-03-12 21:16:11 +0100 <c_wraith> ah, I see.
2025-03-12 21:16:03 +0100 <int-e> So there's some theoretical interest in HNFs.