First article of a series I have been willing to write for a long time to explain the three key paradigms for Functional UI and how they are linked to each other. One equation to rule them all:
https://t.co/eaktg7IfCu.
@kettanaito Types != TypeScript. also, TypeScript is both a type system and a set of tools. Benefits of types are clear. It is the cost of using TypeScript that varies according to teams and projects. As usual, no fast rule in either direction. Sometimes it will not be worth the hassle.
@Rich_Harris endpoints, protocol, workflows, etc. are first-class concepts. Jolie enable implementing microservices and deployment patterns in a fraction of the time that with a GSL and with a short distance between specs and implementation. cf. https://t.co/Q22uTKWkpU
@Rich_Harris involved in a web application specification, implementation, testing, and deployment first-class, that will be better than alternative choices. Think routes, APIs, user scenario, data objects, etc. all first-class. Good example is Jolie a micro-service DSL where service, 3/
@trueadm@EisenbergEffect@littledan@RyanCarniato@BenLesh All three options have their own advantages too. So as usual it is all about tradeoff. Option 1 is the one I prefer but it requires opting out of the main frameworks or using them as library rather than framework. Needless to say that won't be mainstream anytime soon.
@trueadm@EisenbergEffect@littledan@RyanCarniato@BenLesh 2. Make all state visible by all reactive functions -> componentization harder. 3. Somehow provide the required state in scope of the functions that consume it. -> synchronization/coordination issues in cases of components (to avoid concurrent access to shared state issues) 3/
@fraser_drops I think is not the computational device but the push model you promote? Function calls are initiated by the caller -> pull model. External events trigger function calls -> push model. Three things to think about:
1. Functions can recurse.
2. effects(synchrony,errors)
3. testing
@fraser_drops I think it is a representation of functional composition. A function abstracts a computation behind a name & input params (say, core, in your schema). Function implementation can use other functions. So we already are doing that for synchronous computations. The difference here 3
@fraser_drops Your schematics idea does not require statecharts (if I understood)? Cycle.js for instance was based on pretty much this idea of declarative dataflow with input and output channels. Wiring was done with RxJS subjects and operators. Works but RxJS brought lots of complexity.
@fraser_drops If input1 leads to no output, it is like it has never happened. If that's the desired behavior then great. If I think about machines for UI behavior, where inputs translate to commands, then hard to think of a case where you are happy to loose commands.
@fraser_drops SysML (Block Definition Diagrams & Internal Block Diagrams) is pretty much that . See https://t.co/BCZ5ftJc14. If I remember well, Enterprise Architect allows doing this kind of graphs. Also dataflow languages. That's for the graph part. For the programming -> dataflow languages