omr*_*210 1 types typing common-lisp typed
我读到CL支持可选的输入(因为在语言中有这个功能)在很多情况下我会假设allos用于更快的代码,但我似乎找不到任何关于实际编写类型代码的东西.是否可以显式键入代码而不是使用黑客?(例如,#'vector生成一个simple-vector,有点让我想起|0JS强制转换为整数)
或者也许因为类型实际上是CLOS类(它们是,对吧?)你只需要#'make-instance一个类型的对象,比方说,'integer?
Common Lisp允许定义类型并声明变量,函数,...的类型
类型与类无关 - 类也是类型,但类型可以表达更多(如整数范围,数组大小,数组元素类型,......).
声明类型可能有很多不同的用途:
因此,使用某些编译器设置(调试,空间,速度,编译速度,安全性......)声明类型的效果并不是很简单.Lisp系统可能会忽略大部分声明或广泛使用它们.效果可能非常不同.在编译器设置的某些组合中,声明类型可能会使代码慢很多,而在其他情况下,它可能会使代码更快.
此外,编译器可能能够进行一些类型的推断.
一个简单的声明可能如下所示:
(defun add-integer (a b)
(declare (integer a b))
(the integer (+ a b)))
Run Code Online (Sandbox Code Playgroud)
Lisp系统现在可以执行以下一项或多项操作:
a并且b是整数,并且+运算的结果实际上是整数(而不是浮点数,比率或复数)实现这一目标的典型编译器设置是:
但确切的设置及其含义可能有所不同,应在Lisp实施手册中记录.
这些类型记录在ANSI Common Lisp Standard中.请参阅类型和类.
有关编译器设置,请参阅:SBCL Compiler或LispWorks,The Compiler.
| 归档时间: |
|
| 查看次数: |
1152 次 |
| 最近记录: |