So is scheme quite often. It appears functional looking at idiomatic scheme code relying on tail-recursive programming for loops, it appears procedural/imperative if you look at all the mutation used in scheme code (fun fact: the Scheme standards R*RS do not speak of functions but of procedures). Higher-order functions aren't used all that much in many scheme code bases which is odd from the perspective of a Haskell dev.