I've got the following problem:

I do understand that the concept of functional programming languages do not allow immutable variables, so classic variable assignment and usage like

```
var foo = bar();

after that in another function...

var baz = funnything(foo);

```

is not possible (correct me if it is, I'm still trying to get the whole idea and concepts behind functional programming).

I'm trying to play around a bit with Clojure and come to a point where I stuck:

I want to get a webpage and save the DOM into a variable for later usage. 
The program starts, a prompt is spawning and the user can enter a URL which he want to fetch. 

After the DOM of the website is fetched he can navigate through the DOM by for example getting the title, or all links or whatever.

**The Problem**:
Because I can't use a construct like 

```
; More or less pseudo-code
(def page nil)

(get-url [url]
  (page (browser/get url)))

(get-title
    (println (html/select page [:title])))

```

I have to use the following construct:

```
(get-title [url]
    (println (html/select (browser/get url) [:title])))

```

Due to this construct everytime I want to access an element of the site via `get-title`, `get-links` or whatever I have to download the whole webpage whenever the user is entering one of those methods on the command prompt.

Do I miss something here? Are there classical assigments in Clojure? Am I doing the complete thing wrong and should study a whole lot more functional programming concepts before getting hands-on and learning-by-doing?