This is a good exercise but how is this better than Combine?
Also - I've seen ultra over complicated codebases made with FRP in Swift. I have some PTSD from the kickstarter MVVM approach. What a nightmare in practice. You have to be all in - everything FRP or the tightly bound system crumbles.
I think SwiftUI's @Published property wrapper elegantly hid the FRP, but even Apple is moving away from FRP with the macro based Observable framework.