Citation:
Les applications réseaux - oui, il y a plusieures bibliothèques. Les GUI... Ben, il y en a aussi... On utilise plutôt commonqt (on dit qu'elle est peu « lispy »), et LTK qui est médiocre, mais suffit pour des tâches simples. Toutes les autres sont mortes, je pense.
Je ne savais pas que Qt était disponible aussi pour CLisp! C'est sûr que c'est un très bon framework. Je me demande ce que ça peut donner en revanche. Déjà pour C++ il est très déconseillé d'utiliser la bibliothèque standard et il faut tout faire avec les classes Qt... Du coup j'hésite un peu avec Clojure, qui compile en bytecode java et permet de réutiliser les bibliothèques écrites en Java, abondantes dans la plupart des domaines.
Citation:
En tout cas, la récursion n'est pas le moyen typique d'itération en CL. Par exemple, le « Google Common Lisp Style Guide » dit, « You should favor iteration over recursion ».
Cela dit, CL supporte bien les opérations principales de la programmation fonctionnelle: filtration (REMOVE-IF-NOT), mapping (MAP, MAPCAR, etc), filtration+mapping (MAPCAN), folding (REDUCE). En plus, il offre bien d'autres fonctions pratiques comme FIND/FIND-IF, SOME/EVERY/..., COUNT/COUNT-IF, POSITION, etc. Elles acceptent des arguments fonctionnels et aussi sont-elles très générales. Donc, on peut souvent se passer de boucles.
Merci, cela répond très bien à ma question! L'idée en fait c'est qu'on "simule" plutôt la récursion / programmation fonctionnelle avec les fonctions natives comme MAPCAR mais que, comme tu le disais dans ta première réponse, la vraie nature de LISP c'est plus la métaprogrammation que la programmation fonctionnelle. Est-ce que ça ne pose pas des problèmes pour faire de la programmation concurrentielle? Les partisans des langages fonctionnels avancent souvent cet argument selon lequel sans données immuables, la programmation concurrentielle (et donc, de fait, le traitement d'un très grand nombre de données) est largement compliquée.