The type is:

foldl :: (a -> b -> a) -> a -> [b] -> a

Eg I might do something like this:

foldl (+) 0 [1..10]

so taking (a -> b -> a)

leftmost a is (+)
b is 0
right a is what?  The first value in the list?

Then -> ?

[b] ?  Is this like the temporary recursion calculation?

final -> a is the result?