Il est possible de faire de la programmation fonctionnelle avec le langage Lua. Vraiment, Lua est une langue multi-paradigme; Wikipédia affirme qu'il s'agit d'un langage «scripté, impératif, fonctionnel, orienté objet, basé sur un prototype». Le langage n'applique pas un seul paradigme, mais est à la place suffisamment flexible pour permettre au programmeur de mettre en œuvre le paradigme applicable à la situation. Il a été influencé par Scheme.
Les fonctionnalités de Lua incluent des fonctions de première classe , la portée lexicale et les fermetures et coroutines , qui sont utiles pour la programmation fonctionnelle. Vous pouvez voir comment ces fonctionnalités sont utilisées sur le wiki des utilisateurs de Lua, qui a une page dédiée à la programmation fonctionnelle . J'ai également rencontré ce projet Google Code , mais je ne l'ai pas utilisé (il prétend être influencé par Haskell, une autre langue que vous avez mentionnée).
eLua est une implémentation disponible configurée pour un certain nombre de cartes de développement pour les architectures ARM7TMDI, Cortex-M3, ARM966E-S et AVR32, et est open-source afin que vous puissiez la configurer pour votre propre plate-forme. Lua est implémenté en ANSI C et la source entière pèse moins de 200 Ko, vous devriez donc pouvoir le construire pour la plupart des plates-formes avec un compilateur C. Au moins 128k de Flash et 32k de RAM est recommandé. Je travaille sur un port PIC32 pour celui-ci (toujours à l'étape "Get the PIC32 board", cependant) pour le moment.
La grande chose à propos de Lua est qu'il a été conçu comme un langage de collage, il est donc très facile d'écrire des extensions C pour les choses qui doivent être rapides (comme les interruptions, etc.), et d'utiliser les fonctionnalités dynamiques et interprétées du langage pour faire rapidement développement dans la logique du programme.
Lua n'est pas un langage purement fonctionnel, mais vous pouvez y faire beaucoup de programmation fonctionnelle, il est rapide et petit ( par rapport aux autres langages de script ), et vous n'avez pas besoin de reflasher votre appareil pour essayer un programme. Il y a même un interprète interactif!