(Stacks are an implementation detail. Only some languages implement function calls with stacks.)
Programs compiled with GHC do use 'the stack', but for pattern matching, not for function calls. Whether 'stack frames' (ie the information associated with a function invocation) go on the heap or elsewhere is a bit complicated. Especially since the compiler does so much analysis and optimization.
Also eg, an implementation of Unlambda (based on SKI-calculus) wouldn't necessarily have a stack either.
Something like Datalog wouldn't really have a call stack either, but that's deliberately not a Turing complete language. (But neither is Agda a Turing complete language, but it's still general purpose.)