Hacker News new | past | comments | ask | show | jobs | submit login

This is the opposite of the case. Because QML is declarative, it forces the framework to be completely antifunctional. The view_model has to be mutable, so GUI updates are all about mutation. In React, the renderers are simply pure functions that take an immutable state input and spit out a view. No mutation, pure functionality that you can test.



I agree in practice QML apps are typically less functional than React apps, but QML-the-language (without connecting JS functions) is functional, like CSS.


You're conflating declarative and functional. It's declarative, yes. But it's not functional because there are no functions. No inputs, no outputs. It's not a programming language. It's just a config file.


I think functional and declarative are widely regarded as closely related paradigms, certainly you might call a FP program a declarative program. After all a declaration of a value as being derived from some inputs is very similar in concept to an immutable binding in a function or the concepts from functional reactive programming.

See eg https://en.wikipedia.org/wiki/Declarative_programming#Functi...


Yes, I'd absolutely agree that pure functions are declarative, so "functional" is a subset of "declarative".

But it's a strict subset: config files are declarative without being functional. Raw data is declarative without being functional. One could argue that imperative functions are declarative too: "This C code is the declaration of what steps to execute in what order". So the definition of declarative can be a little fuzzy around the edges, but pure functions are most certainly declarative.

Anyway, QML is most certainly declarative, however it's still not functional because there's no functions.


functional programming is about immutability and higher order functions as a base kit for building abstractions, not sure what definition you are using but it's not the one that is useful when talking about React




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: