È possibile eseguire alcune programmazioni funzionali con il linguaggio Lua. Davvero, Lua è un linguaggio a più paradigmi; Wikipedia afferma che è un linguaggio "scripting, imperativo, funzionale, orientato agli oggetti, basato sui prototipi". Il linguaggio non applica un singolo paradigma, ma è abbastanza flessibile da consentire al programmatore di implementare qualunque paradigma applicabile alla situazione. È stato influenzato da Scheme.
Le caratteristiche di Lua includono funzioni di prima classe , scoping e chiusure lessicali e coroutine , utili per la programmazione funzionale. Puoi vedere come vengono utilizzate queste funzionalità nella wiki degli utenti Lua, che ha una pagina dedicata alla programmazione funzionale . Mi sono anche imbattuto in questo progetto di Google Code , ma non l'ho usato (afferma di essere influenzato da Haskell, un'altra lingua che hai menzionato).
eLua è un'implementazione disponibile configurata per una serie di schede di sviluppo per le architetture ARM7TMDI, Cortex-M3, ARM966E-S e AVR32 ed è open source in modo da poterlo configurare per la propria piattaforma. Lua è implementato in ANSI C e l'intera sorgente pesa meno di 200 kB, quindi dovresti essere in grado di costruirlo per la maggior parte delle piattaforme con un compilatore C. Si raccomandano almeno 128k di Flash e 32k di RAM. Al momento sto lavorando su una porta PIC32 (ancora nella fase 'Ottieni la scheda PIC32').
La cosa grandiosa di Lua è che è stato progettato come un linguaggio di colla, quindi è molto facile scrivere estensioni in C per le cose che devono essere veloci (come interruzioni, ecc.) E usare le caratteristiche dinamiche e interpretate del linguaggio per fare rapidamente sviluppo nella logica del programma.
Lua non è un linguaggio puramente funzionale, ma puoi fare molta programmazione funzionale, è veloce e piccolo ( rispetto ad altri linguaggi di scripting ) e non è necessario eseguire il reflash del dispositivo per provare un programma. C'è persino un interprete interattivo!