Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,802,587 events total
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.