在 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" 将是一个令人满意的答案:)
不在单个类型声明中。我们没有类型变量。
在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" 将是一个令人满意的答案:)
不在单个类型声明中。我们没有类型变量。