These are chat archives for jdubray/sam
Computer science should be about concepts, not [programming] languages. But how does one teach concepts without
getting distracted by the language in which those concepts are expressed? My answer is to use the same language as every other branch of science
and engineering—namely, mathematics
SAM is just a pattern though.
V = S( vm(M.present(A(data))), nap(Model) ).
A logical expression but a very functional one. And it's also a reactive pattern. Your words from sam.js.org :)
Which is why I asked if it's not a pattern that complements FRP very well? Not exclusively.
Logically I feel it sits well with a functional approach of pure functions. I also feel it fits well with streams.
Mind you, I say this as someone who is not very comfortable working with streams or very knowledgeable in FRP.
I am not talking about "programming", I am talking about the foundation of computer science, there is one. Programming cannot completely ignore it. As I said before, we have been programming for decades based on three approximations:
You need to make mutation explicit
Actions can no longer manipulate the state
We need to define what a programming step is
As I said before, somehow FP and RFP are addressing in their own way these approximations, but IMHO, they are not consciously addressing them, they negate mutation (that's a way to segregate assignments from mutation), they don't have the concept of actions (rather events), so FP/RFP "actions" can't manipulate the state, by design and the programming step is a function. But... that approach is not optimal, again IMHO. It works in simple cases, but will become very brittle at scale (scale of the system).