(0) small enough numbers
(1) True, False, None, etc.
(2) object references
But it doesn't have compound values.
And the distinction isn't useless. Values have a richer equational theory than objects, enabling lots of automatic optimizations.
I'm not familiar with that term. Could you give a rigorous definition?
Anyway, after some googling, I found a very plausible definition that makes functional programming not a declarative paradigm: http://semantic-domain.blogspot.com/2013/07/what-declarative...