I'm studying for an exam about Haskell. I don't understand how I determine the type of a function. The function is:

```
func [] f = 16
func (h : t) f = (f h) + (func t f)

```

My guess is that the first line has this types: `empty list -> a -> a` where `a` has to be a numeric type. In Haskell notation `Num a => [] -> a -> a` and the second line has this types: `[a]-> a -> ?` What does it return? Maybe `(a, a)` because `(f h)` is a tuple. What about `(func t f)`, is `a` or? And how do I mix both lines together?