В Haskell (и куриная схема ) вы можете объявить ограниченные типы, например, map :: (a -> b) -> [a] -> [b]
объявляет, что map
примет список, содержащий тип ввода функции, и вернет список содержащий вывод функции. Возможно ли то же самое в обычных объявлениях функций lisp? Могу ли я сделать что-то похожее на это:
(declaim (ftype (function (function (a) b)
(list a))
(list b)
map))
"Вы не можете этого сделать" будет удовлетворительным ответом:)