Yes, An s-expression is a tree. Imagine that you want to know the average score of a list of films like: (average listOfFilms) and someone else like the same average for the same list. You will end up with two trees that indeed are the same and can be calculated only once. A DAG is a way to represent dependencies, so if two cells are linked to the same cell (average listOfFilm).
If you liked this article, you might like:
i) Egont, a web orchestration language: http://blog.databigbang.com/ideas-egont-a-web-orchestration-...
ii) Egont part II: http://blog.databigbang.com/egont-part-ii/
iii) Parsing s-expressions in C# using OMeta: http://blog.databigbang.com/parsing-s-expressions-in-c-using...
Because your stuff is defined as an s-expression and then optimized to a DAG.