Лисп имеет дело со списками, но списки неоднородны и вполне могут представлять дерево. Другие языки, такие как Haskell, предоставляют структурированные типы, именованные и безымянные, и, в отличие от lisp, допускают статическую проверку типов.
Одной вещью, которой не обладают чисто функциональные языки, является понятие переменных с состоянием, которые могут быть назначены. Некоторые реализации Lisp предоставляют такое состояние - вы получаете оператор setq
, в то время как Haskell - нет. Чтение и запись баз данных, однако, это все о наличии состояния - и во многом это то, для чего нужны базы данных - и о чтении и записи в него. Таким образом, работа с базой данных совершенно противоположна использованию функционального языка.
Однако имеет смысл создать язык запросов к базе данных, который выражает операции с БД не обязательно, а декларативно и, следовательно, функционально. Вот как имеет смысл SQL, а также то, как определяется LINQ.
Итак, имеет смысл иметь функциональный язык базы данных, но это не из-за списков.