I wasn't sure, it sort of sounded like Hiram was making a call stack joke. Recursion is known for punishing the stack, but in a proper language, tail call recursion elimination reduces most of it to proper loops -- including, usually, a Y invocation, if you were crazy enough to actually use it. But since you're asking, and if you'll permit a bit of a departure...
Haskell is sort of the native tongue of recursion, function combination, side-effect free programming, that kind of thing. Infinite lists are no problem for it, make as many as you like, it computes things on demand. It's a theoretician's dream. The syntax is light and quite close to mathematical formalisms except where they're burdensome. Line counts tend to be astonishingly low -- a Mastermind solver in ~20 lines of code, a Sudoku solver in ~20 lines, RLE compression in 2 lines, Quicksort in 4 lines, etc. Of course there are other languages in which such astonishingly small line counts are possible, such as Forth or APL, but they tend to be unreadable messes compared to Haskell, which is very whitespacey, Englishy, and rather friendly.
Unfortunately, it lacks a decent UI toolkit. There are a number of interesting research-oriented ones, but of them all only the GTK binding is reasonably well-developed, which limits use to mostly Linux with a splash of Windows. Also, being strongly-typed, it doesn't lend itself to web stuff particularly much. There are two or three CGI type systems for it, but as a rule it isn't being used in that domain much except by the truly rabid. The trend in Haskell is toward research-grade libraries, usually confirmed to work only on a single platform, generally not as general or complete as they sound. It would be perfect for implementing non-Web daemons or non-graphical client side applications if such a thing still existed. Being a form of release for overly abstract theoreticians has certain drawbacks when it comes to pragmatic coding. There is supposedly a Cocoa library for it, but I haven't seen a single application written using it. I challenged someone on Reddit who mentioned it to give me a link to a single application, even one they wrote to prove to me it could be done, and they didn't ever respond.
Of course, its compiled applications tend to run as fast or faster than C, and you could deliver binaries for it to the client or the ISP. CGI should be possible. It's fairly self-contained; lots of people are using darcs for revision control on all platforms and it is a Haskell program. It's also a good representative of the kind of thing Haskell excels at: difficult problems that can be solved from the command-line in a single thread, generally more CPU-bound than IO-bound, with little in the way of surprises in the input.
So Haskell is, for the moment, a brilliant idea. Though I read recently a proof by argument that it may not be as modular as languages with destructively updateable global state.
Lately I've been focusing on Lisp. There are many web frameworks for it, including one I'm writing. Lisp lacks a lot of the mathematical purity and the syntactic tidiness, not to mention the mathematical underpinning (though at least being based in some sense on the untyped lambda calculus with a tiny core). However, it has all of the features one would want, can be optimized for speed, and has its famous as-yet unbeatable macro system for enhancing the syntax of the language dynamically. I have made a proof-by-argument that a simple replacement of defun with defmacro + quote yields lazy-like behavior in Lisp, so in theory you can have some of what's nice about Haskell. One point of aesthetics in Lisp's favor, apart from these benefits, is that it permits source code in UTF-8, meaning you can actually use Greek letters for variables in your source code, unlike basically every other programming language on the planet. Lisp is often, but not always, quite brief, though usually unreadable except to the initiated (macros can and should be used to help in that regard, but aren't always applied liberally enough).
Anyway, so to be honest: No, I make my money with Ruby and PHP. But I don't go near 'em at home, though I do occasionally use Ruby for my own shell-type scripts or to help a friend. All my self-study is functional programming languages: Haskell, Lisp, Erlang and OCaml. Sometimes I get curious about various different stuff (Forth/Factor, J, Smalltalk) but by-and-large those four are where I'm at. Really I suppose I'm trying to decide which one is the king. It's pretty much between Haskell and Lisp: is the lack of real-world effectiveness/pain of learning Haskell justified by its amazingly unparalleled expressiveness? Is Lisp's ancient, inherited fugliness a strength or a weakness? Does the macro system trump everything in every other language? Which one is more powerful, expressive, concise? I don't really know, nor do I really understand my own motivation for this inquiry. But it seems to be what I'm passionate about.
*cough* Lisp is definitely the most steampunk.
The preceding rant was sponsored by The Dancing Hexapod Robots
and the ever-dwindling patience of forum members like you.