2025/11/18

Newest at the top

2025-11-18 02:13:27 +0100peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-11-18 02:12:55 +0100 <EvanR> sounds like the theory of group action
2025-11-18 02:12:14 +0100 <monochrom> I don't know! Not interested for now.
2025-11-18 02:12:01 +0100 <monochrom> And the backward mapping maps e to \v -> v ∘ e
2025-11-18 02:11:51 +0100 <haskellbridge> <Zemyla> So is there a type that represents a combination?
2025-11-18 02:10:41 +0100 <monochrom> Model "array of length n with elements of type a" as N->a, N = {0 .. n-1}. Then permutations are a special cases of (N->a) -> (N->a). Then Yoneda embedding says that it's isomorphic to N->N, the forward mapping maps σ to σ id, id = [0 .. n-1].
2025-11-18 02:08:50 +0100peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 244 seconds)
2025-11-18 02:08:13 +0100 <monochrom> Turns out this was foretold by the Yoneda lemma too!
2025-11-18 02:08:11 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2025-11-18 02:07:46 +0100 <monochrom> Suppose σ permutes arrays of length n. I can apply it to the "identity array" [0 .. n-1], i.e., define e := σ [0 .. n-1]. Then I can use e instead of σ to permute other arrays: To permute v, (σ v)[i] = v[e[i]] for each i. In the vector library, you can just write `V.backpermute e v`.
2025-11-18 02:04:34 +0100infinity0(~infinity0@pwned.gg) infinity0
2025-11-18 02:03:07 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-18 02:02:54 +0100turlando(~turlando@user/turlando) turlando
2025-11-18 02:00:43 +0100turlando(~turlando@user/turlando) (Ping timeout: 246 seconds)
2025-11-18 01:59:58 +0100acidjnk(~acidjnk@p200300d6e717199494cb24f290a326c5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2025-11-18 01:59:03 +0100 <yin> :)
2025-11-18 01:58:50 +0100 <yin> yes
2025-11-18 01:57:05 +0100 <EvanR> was this a programming situation or category theory
2025-11-18 01:54:35 +0100 <monochrom> (The smell was correct. It really was Yoneda lemma. Know every angle, all of them are helpful.)
2025-11-18 01:54:10 +0100 <yin> jackdk: tyvm
2025-11-18 01:53:01 +0100 <monochrom> It's OK. Lately I smelled Yoneda lemma everywhere anyway. :)
2025-11-18 01:52:35 +0100 <yin> monochrom: it just had the same smell in my purposeless mind, that's all
2025-11-18 01:52:33 +0100 <jackdk> I got a lot out of (in order): this old "FRP - Events and Behaviours" talk: https://www.youtube.com/watch?v=GXW1jBijhlk, the diagrams in the reactive-banana package, and https://github.com/qfpl/reflex-workshop/ (for hands-on experience). They might help you get your head around the mental models
2025-11-18 01:51:40 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2025-11-18 01:49:59 +0100 <monochrom> If you think call/cc, you're a low-level person. It's not wrong, it just may be very helpful or very distracting depending on your purpose.
2025-11-18 01:49:19 +0100xff0x(~xff0x@2405:6580:b080:900:fb28:6c11:a653:72c4) (Ping timeout: 260 seconds)
2025-11-18 01:47:16 +0100 <EvanR> the signal is replaced with the event payload when/if it happens. Before before any events, the first argument applies
2025-11-18 01:46:55 +0100 <EvanR> something like Signal a -> Event (Signal a) -> Signal a
2025-11-18 01:46:36 +0100 <EvanR> the usual way to introduce a way to "dynamically" replace a behavior is to use an event
2025-11-18 01:45:45 +0100 <yin> right. i had that but (x t) looked weird to me :)
2025-11-18 01:45:41 +0100synchromesh(~john@2406:5a00:2412:2c00:6993:feea:8b51:a565) synchromesh
2025-11-18 01:45:37 +0100 <EvanR> would give you, basically (not actual syntax), Signal (f x)
2025-11-18 01:45:15 +0100synchromesh(~john@2406:5a00:2412:2c00:71c7:e357:fc79:c8b6) (Read error: Connection reset by peer)
2025-11-18 01:45:15 +0100 <EvanR> to make it more clear what's going on
2025-11-18 01:45:09 +0100 <EvanR> Signal f <*> Signal x
2025-11-18 01:45:03 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-18 01:44:40 +0100infinity0(~infinity0@pwned.gg) (Ping timeout: 256 seconds)
2025-11-18 01:44:00 +0100turlando(~turlando@user/turlando) turlando
2025-11-18 01:43:46 +0100 <yin> https://paste.jrvieira.com/1763426541194
2025-11-18 01:43:44 +0100 <yin> my intuition is that bind would offer a way to dynamically change the control flow or dependency graph
2025-11-18 01:42:30 +0100turlando(~turlando@user/turlando) (Ping timeout: 265 seconds)
2025-11-18 01:37:49 +0100turlando(~turlando@user/turlando) turlando
2025-11-18 01:35:36 +0100petrichor(~jez@user/petrichor) (Ping timeout: 256 seconds)
2025-11-18 01:34:13 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-11-18 01:34:02 +0100 <EvanR> how useful that is I don't know
2025-11-18 01:33:44 +0100 <EvanR> join :: Signal (Signal a) -> Signal a, assuming Signal = Behavior
2025-11-18 01:32:55 +0100trickard_(~trickard@cpe-50-98-47-163.wireline.com.au)
2025-11-18 01:32:42 +0100trickard(~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-11-18 01:31:21 +0100chiselfuse(~chiselfus@user/chiselfuse) chiselfuse
2025-11-18 01:31:02 +0100 <EvanR> join :: Stream (Stream a) -> Stream a