我想知道任何人都可以解释 autolisp / visual lisp 的以下功能背后的设计原理吗?对我来说,它们似乎与公认的软件实践背道而驰……我错过了什么吗?
- 默认情况下,所有变量都是全局变量(即,除非放在
/
函数参数中的 a 之后) - 从 AutoCAD 读取/写入数据需要将内容放入包含大量幻数的关联列表中。
10
表示 x/y 坐标,90
表示坐标列表的长度,63
表示颜色等。好的,您可以将它们存储在一些常量中,但这意味着更多的全局变量,并且文档鼓励您直接使用幻数。 - Lisp 是一种函数式语言,它鼓励通过迭代迭代进行递归编程,但是尾递归在视觉 lisp 中没有经过优化,导致可怕的调用堆栈——当然,除非你进行迭代。但是循环语法非常严格;例如,除非您在终止条件中放置某种标志,否则您不能跳出循环或从循环中返回值。结果,丑陋的代码。
- 通常,您被迫在面对函数式编程的所有地方声明变量 - 那么为什么要使用函数式(-ish)语言呢?