在 Common Lisp 中声明 constraint/polymorphic 类型

declaring constraint/polymorphic types in Common Lisp

在Haskell(和chicken scheme)中你可以声明约束类型, 例如 map :: (a -> b) -> [a] -> [b] 声明 map 将采用包含函数输入类型的列表,return 将采用包含函数输出的列表。 在普通的 lisp 函数声明中是否可能相同? 我可以做类似这样的事情吗:

(declaim (ftype (function (function (a) b)
                          (list a))
                (list b)
                map))

"you can't do that" 将是一个令人满意的答案:)

不在单个类型声明中。我们没有类型变量。