Lisp is more or less the original functional language. However, it's pretty
multi-paradigm, as you can do procedural or even object oriented (and logic?)
programming with it. It's just not a pure functional language like Haskell.
Same with Scheme and OCaml.  They just encourage programming in a functional
style (Scheme and OCaml more so than Lisp, maybe).

I'd say lambda expressions are more of a defining characteristic of functional
languages.

call/cc is an important function, conceptually, though, since with it you can
implement arbitrary control flow constructs (like conditionals and loops). So
when people ask for things like resumable exceptions, we can do them in pure
Ruby. :)

- Dan