It's possible to do some functional programming with the Lua language. Really, Lua is a mutli-paradigm language; Wikipedia claims that it's a 'scripting, imperative, functional, object-oriented, prototype-based' language. The language doesn't enforce a single paradigm, but instead is flexible enough to allow the programmer to implement whatever paradigm is applicable to the situation. It's been influenced by Scheme.
Lua's features include first-class functions, lexical scoping and closures and coroutines, which are useful for functional programming. You can see how these features are used on the Lua users wiki, which has a page dedicated to functional programming. I also came across this Google Code project, but I haven't used it (it does claim to be influenced by Haskell, another language which you mentioned).
eLua is an implementation which is available configured for a number of development boards for the ARM7TMDI, Cortex-M3, ARM966E-S and AVR32 architectures, and is open-source so you can configure it for your own platform. Lua is implemented in ANSI C and the entire source weighs in at under 200kB, so you should be able to build it for most platforms with a C compiler. At least 128k of Flash and 32k of RAM is recommended. I'm working on a PIC32 port for it (still in the 'Get the PIC32 board' stage, though) at the moment.
The great thing about Lua is that it was designed as a glue language, so it's very easy to write C extensions for the stuff that needs to be fast (like interrupts etc), and use the dynamic, interpreted features of the language to do rapid development in the program logic.
Lua isn't a purely functional language, but you can do a lot of functional programming in it, it's fast and small (compared to other scripting languages), and you don't need to reflash your device to try out a program. There's even an interactive interpreter!