It shares many properties with Haskell: referential transparency, list comprehension, guards, garbage collection, higher order functions, currying and lazy evaluation.
The Tl;Dr is: Functional programming can definitely be done without garbage collecting, but using data structures like immutable linked-lists that perform in sharing is impossible (or at the least very difficult).