The only similarity that Lisp and Scala have are that they are both functional programming languages[0].
Scala is a heteroiconic language. At least until recently, Scala didn't even have macros (I think they may have added that recently).
Scala is a nice language, but saying that Scala is somehow like Lisp is doing a disservice to both languages.
[0] Even the statement that Scala is functional is itself debatable - one can make the argument that it is "just" more purely object-oriented than Java, but that's a whole separate discussion.
Maybe we're just defining our terms differently, but the closest Lisp comes to a functional programming language is Clojure and before that Scheme.
This is not meant to deride Lisp in any way (Clojure is my language of choice, after all) - I think all Lisps enable a fundamentally unique way to reason about programs, but that's a characteristic of Lisp and not of functional programming languages.
(if a x y)
which is composable to (let ((val (if a x y)))
...)
as opposed to (let ((val nil))
(if a
(setf val x)
(setf val y))
...)
That said, not everything returns value(s), and there's nothing enforcing immutability. I'd say you can be functional in (most?) lisps if you are careful, but the language family is more geared towards general purpose programming than functional.More recently, people have confused "functional" with other features of languages like Haskell (sometimes called "purely functional"), leading to some confusion about what defines functional programming.
Here's an interesting post about the more recent changes in the phrase's meaning:
http://wcook.blogspot.co.uk/2012/07/day-functional-programmi...
I checked a few common definitions of homoiconicity and it seems like Scala is within the ruleset.
Isn't quoting necessary to "reify"/refer to the actual code as data?