Newest at the top
| 2025-11-18 02:13:27 +0100 | peterbecich | (~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 +0100 | peterbecich | (~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 +0100 | merijn | (~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 +0100 | infinity0 | (~infinity0@pwned.gg) infinity0 |
| 2025-11-18 02:03:07 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-11-18 02:02:54 +0100 | turlando | (~turlando@user/turlando) turlando |
| 2025-11-18 02:00:43 +0100 | turlando | (~turlando@user/turlando) (Ping timeout: 246 seconds) |
| 2025-11-18 01:59:58 +0100 | acidjnk | (~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 +0100 | merijn | (~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 +0100 | xff0x | (~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 +0100 | synchromesh | (~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 +0100 | synchromesh | (~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 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
| 2025-11-18 01:44:40 +0100 | infinity0 | (~infinity0@pwned.gg) (Ping timeout: 256 seconds) |
| 2025-11-18 01:44:00 +0100 | turlando | (~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 +0100 | turlando | (~turlando@user/turlando) (Ping timeout: 265 seconds) |
| 2025-11-18 01:37:49 +0100 | turlando | (~turlando@user/turlando) turlando |
| 2025-11-18 01:35:36 +0100 | petrichor | (~jez@user/petrichor) (Ping timeout: 256 seconds) |
| 2025-11-18 01:34:13 +0100 | merijn | (~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 +0100 | trickard_ | (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 2025-11-18 01:32:42 +0100 | trickard | (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-11-18 01:31:21 +0100 | chiselfuse | (~chiselfus@user/chiselfuse) chiselfuse |
| 2025-11-18 01:31:02 +0100 | <EvanR> | join :: Stream (Stream a) -> Stream a |