Logs: liberachat/#haskell
| 2025-11-17 23:47:08 | → | Zemy joins (~Zemy@2600:100c:b049:cf82:70a5:c4ff:fea8:36a5) |
| 2025-11-17 23:47:08 | × | Zemy_ quits (~Zemy@72.178.108.235) (Read error: Connection reset by peer) |
| 2025-11-17 23:47:12 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-11-17 23:47:20 | × | trickard quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-11-17 23:47:33 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 2025-11-17 23:47:43 | → | Zemy_ joins (~Zemy@72.178.108.235) |
| 2025-11-17 23:48:30 | × | Zemy quits (~Zemy@2600:100c:b049:cf82:70a5:c4ff:fea8:36a5) (Read error: Connection reset by peer) |
| 2025-11-17 23:49:39 | → | Zemy joins (~Zemy@2600:100c:b049:cf82:9086:16ff:febf:b418) |
| 2025-11-17 23:49:39 | × | Zemy_ quits (~Zemy@72.178.108.235) (Read error: Connection reset by peer) |
| 2025-11-17 23:50:13 | → | Zemy_ joins (~Zemy@72.178.108.235) |
| 2025-11-17 23:50:14 | × | Zemy quits (~Zemy@2600:100c:b049:cf82:9086:16ff:febf:b418) (Read error: Connection reset by peer) |
| 2025-11-17 23:50:51 | → | Zemy joins (~Zemy@2600:100c:b049:cf82:fcfb:56ff:fea6:3ac1) |
| 2025-11-17 23:50:51 | × | Zemy_ quits (~Zemy@72.178.108.235) (Read error: Connection reset by peer) |
| 2025-11-17 23:51:26 | → | Zemy_ joins (~Zemy@72.178.108.235) |
| 2025-11-17 23:53:47 | × | Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed) |
| 2025-11-17 23:55:06 | × | Zemy quits (~Zemy@2600:100c:b049:cf82:fcfb:56ff:fea6:3ac1) (Ping timeout: 256 seconds) |
| 2025-11-17 23:56:43 | → | bggd joins (~bgg@2a01:e0a:819:1510:2461:8c52:600a:b549) |
| 2025-11-17 23:58:09 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-18 00:02:51 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-11-18 00:07:46 | × | turlando_ quits (~turlando@user/turlando) (Ping timeout: 244 seconds) |
| 2025-11-18 00:08:08 | × | trickard_ quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-11-18 00:08:22 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 2025-11-18 00:12:53 | → | mange joins (~mange@user/mange) |
| 2025-11-18 00:13:53 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-18 00:15:04 | trickard_ | is now known as trickard |
| 2025-11-18 00:17:05 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 2025-11-18 00:18:23 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-11-18 00:23:03 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 260 seconds) |
| 2025-11-18 00:23:41 | <yin> | I'm trying to understant FRP in haskell and the hypothetical Monad instance for Signals. My mind immediately went to call/cc from Scheme. Am I way off base? |
| 2025-11-18 00:25:35 | <EvanR> | Signal doesn't sound like the original formulation of FRP. Which library is this from |
| 2025-11-18 00:27:20 | <EvanR> | in conal's old blog, he mentioned maybe something about a monad instance for Events then later abandoned it |
| 2025-11-18 00:28:44 | <yin> | EvanR: Signal would be Behaviour from Conal's. (>>=) :: Signal a -> (a -> Signal b) -> Signal b |
| 2025-11-18 00:28:58 | → | peterbecich joins (~Thunderbi@172.222.148.214) |
| 2025-11-18 00:29:16 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-18 00:30:25 | <EvanR> | oh |
| 2025-11-18 00:30:44 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 2025-11-18 00:30:47 | <EvanR> | then monad can make sense in the same sense as the monad instance for Stream of Stream of a |
| 2025-11-18 00:30:55 | <EvanR> | er, stream |
| 2025-11-18 00:30:58 | × | bggd quits (~bgg@2a01:e0a:819:1510:2461:8c52:600a:b549) (Remote host closed the connection) |
| 2025-11-18 00:31:02 | <EvanR> | join :: Stream (Stream a) -> Stream a |
| 2025-11-18 00:31:21 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 2025-11-18 00:32:42 | × | trickard quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-11-18 00:32:55 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 2025-11-18 00:33:44 | <EvanR> | join :: Signal (Signal a) -> Signal a, assuming Signal = Behavior |
| 2025-11-18 00:34:02 | <EvanR> | how useful that is I don't know |
| 2025-11-18 00:34:13 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-11-18 00:35:36 | × | petrichor quits (~jez@user/petrichor) (Ping timeout: 256 seconds) |
| 2025-11-18 00:37:49 | → | turlando joins (~turlando@user/turlando) |
| 2025-11-18 00:42:30 | × | turlando quits (~turlando@user/turlando) (Ping timeout: 265 seconds) |
| 2025-11-18 00:43:44 | <yin> | my intuition is that bind would offer a way to dynamically change the control flow or dependency graph |
| 2025-11-18 00:43:46 | <yin> | https://paste.jrvieira.com/1763426541194 |
| 2025-11-18 00:44:00 | → | turlando joins (~turlando@user/turlando) |
| 2025-11-18 00:44:40 | × | infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 256 seconds) |
| 2025-11-18 00:45:03 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-18 00:45:09 | <EvanR> | Signal f <*> Signal x |
| 2025-11-18 00:45:15 | <EvanR> | to make it more clear what's going on |
| 2025-11-18 00:45:15 | × | synchromesh quits (~john@2406:5a00:2412:2c00:71c7:e357:fc79:c8b6) (Read error: Connection reset by peer) |
| 2025-11-18 00:45:37 | <EvanR> | would give you, basically (not actual syntax), Signal (f x) |
| 2025-11-18 00:45:41 | → | synchromesh joins (~john@2406:5a00:2412:2c00:6993:feea:8b51:a565) |
| 2025-11-18 00:45:45 | <yin> | right. i had that but (x t) looked weird to me :) |
| 2025-11-18 00:46:36 | <EvanR> | the usual way to introduce a way to "dynamically" replace a behavior is to use an event |
| 2025-11-18 00:46:55 | <EvanR> | something like Signal a -> Event (Signal a) -> Signal a |
| 2025-11-18 00:47:16 | <EvanR> | the signal is replaced with the event payload when/if it happens. Before before any events, the first argument applies |
| 2025-11-18 00:49:19 | × | xff0x quits (~xff0x@2405:6580:b080:900:fb28:6c11:a653:72c4) (Ping timeout: 260 seconds) |
| 2025-11-18 00:49:59 | <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 00:51:40 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2025-11-18 00:52:33 | <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 00:52:35 | <yin> | monochrom: it just had the same smell in my purposeless mind, that's all |
| 2025-11-18 00:53:01 | <monochrom> | It's OK. Lately I smelled Yoneda lemma everywhere anyway. :) |
| 2025-11-18 00:54:10 | <yin> | jackdk: tyvm |
| 2025-11-18 00:54:35 | <monochrom> | (The smell was correct. It really was Yoneda lemma. Know every angle, all of them are helpful.) |
| 2025-11-18 00:57:05 | <EvanR> | was this a programming situation or category theory |
| 2025-11-18 00:58:50 | <yin> | yes |
| 2025-11-18 00:59:03 | <yin> | :) |
| 2025-11-18 00:59:58 | × | acidjnk quits (~acidjnk@p200300d6e717199494cb24f290a326c5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 2025-11-18 01:00:43 | × | turlando quits (~turlando@user/turlando) (Ping timeout: 246 seconds) |
| 2025-11-18 01:02:54 | → | turlando joins (~turlando@user/turlando) |
| 2025-11-18 01:03:07 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-18 01:04:34 | → | infinity0 joins (~infinity0@pwned.gg) |
| 2025-11-18 01:07:46 | <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 01:08:11 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 2025-11-18 01:08:13 | <monochrom> | Turns out this was foretold by the Yoneda lemma too! |
| 2025-11-18 01:08:50 | × | peterbecich quits (~Thunderbi@172.222.148.214) (Ping timeout: 244 seconds) |
| 2025-11-18 01:10:41 | <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 01:11:51 | <haskellbridge> | <Zemyla> So is there a type that represents a combination? |
| 2025-11-18 01:12:01 | <monochrom> | And the backward mapping maps e to \v -> v ∘ e |
| 2025-11-18 01:12:14 | <monochrom> | I don't know! Not interested for now. |
| 2025-11-18 01:12:55 | <EvanR> | sounds like the theory of group action |
| 2025-11-18 01:13:27 | → | peterbecich joins (~Thunderbi@172.222.148.214) |
| 2025-11-18 01:14:38 | trickard_ | is now known as trickard |
| 2025-11-18 01:15:25 | <monochrom> | Moreover, it also hints that σ id is "backwards": It maps new indexes to old indexes. How to see it: Use N for old indexes, N' for new indexes. Then (N->a) -> (N'->a) is isomorphic to N' -> N. |
| 2025-11-18 01:15:27 | → | AlexNoo_ joins (~AlexNoo@178.34.162.20) |
| 2025-11-18 01:16:42 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 2025-11-18 01:16:58 | × | AlexZenon quits (~alzenon@178.34.151.158) (Ping timeout: 256 seconds) |
| 2025-11-18 01:17:08 | <monochrom> | So yeah it's both programming and category theory. I was coding up LU factorization with pivoting, and I recorded the permutation of rows by performing the same permutation on [0 .. n-1] and returning it. |
| 2025-11-18 01:18:46 | × | Tuplanolla quits (~Tuplanoll@91-159-187-167.elisa-laajakaista.fi) (Quit: Leaving.) |
| 2025-11-18 01:18:53 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-11-18 01:18:55 | × | AlexNoo quits (~AlexNoo@178.34.151.158) (Ping timeout: 246 seconds) |
| 2025-11-18 01:21:50 | <monochrom> | Combination may be N->2. Each of n elements may be chosen or not-chosen. |
| 2025-11-18 01:23:43 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
All times are in UTC.