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

I think you mean declarative. Whether something is FP or OP usually doesn't matter too much (unless you go to the extremes of each end of the sprectrum a la AbstractBeanFactory/IO Functor State). Declarative solutions last longer by virtue of their declarativeness; the underlying implementation can evolve as long as the declarative layer is untouched.



Isn’t a class a declaration (of a class type)? Isn’t a function a declaration (of an algorithm)?

I’d assert that every programming language is declarative. Especially once you get enough written to constitute a DSL.


I think they mean declarative in the sense that you write down want you _want_ in a solution (prolog/datalog/terraform/etc) without specifying exactly how to compute it (day to day programming languages).


The definition of computation depends on the abstraction level. Languages span multiple abstraction levels. The point is that there’s no meaningful definition of “declarative language” as proven by the examples I’ve already given.

For example you can “compute” a roguelike in TypeScript types, but a type system is declarative!


If you are willing to go to extraordinary lengths, then yes any programming language can be written in a declarative style, at least some part of the program. Some parts of a Java or PHP program can be written declaratively.

In the Nix language context however, they mean declarative and functional like Prolog.

There is also Guix which uses Scheme to declare dependencies, and Scheme is not a declarative language. Scheme is a functional language, but it can be easily written in a declarative style.


Everyone knows this, friend. It's still a useful distinction.


I'd say the distinction is more at the semantic level, i.e. denotational vs operational.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: