Question: Consider the following (Haskell) code:

```
fib=0:1:zipWith (+) fib (tail fib)

```

A coworker is trying to assert that this is not a recursive function because `fib` is simply a list that defines itself with itself and that is somehow different than a function that does the same. I think he's smoking crack. 

What do you think?

Answer: 
It's recursive. You can tell because the name on the LHS of the `=` also appears on the RHS.

It is however *not* a function. You can tell because the type of `fib` does not contain a `->`.
The example you've given is recursive. But the Fibonacci sequence by nature doesn't have to be. There are [iterative versions of the algorithm](https://www.scriptol.com/programming/fibonacci.php), and even [explicit functions](https://web.archive.org/web/20170829141954/http://mathforum.org/library/drmath/view/52686.html).