Si tu souhaites te lancer sur un gros projet de ce style, je te conseillerais de regarder du côté de Scala, Clojure ou F#. Ces langages ne sont pas forcément meilleurs, mais ils sont compatibles avec Java ou C#, donnent accès à des bibliothèques très importantes. Au final, tout ce que l'on peut faire en Java, on peut le faire en Scala (et idem pour F# par rapport à C#), ce qui évite des surprises et des incertitudes (comment lire tel format de données ? comment récupérer les données Exif ?). Clojure est assez proche de Scheme, puisque c'est un autre dialecte de Lisp. F# est assez proche de Caml, et en partie compatible avec. Il n'y a hélas pas de version de Haskell pour la JVM ou .NET (il y a peut-être des projets, mais rien n'est prêt pour de la production).

Pour info, le jeu de Microsoft The Path of Go, sur XBox 360, est écrit en grande partie en F#.