在Common Lisp中,在循环宏中,and和as关键字看起来功能相同:
(loop for i from 1 to 3 do (print i))
(loop as i from 1 to 3 do (print i))
Run Code Online (Sandbox Code Playgroud)
我有什么微妙的差异吗?如果没有,为什么要打扰两个不同但相同的关键词呢?
在
for
和as
关键字是同义词; 它们可以互换使用....按照惯例,for
引入新的迭代并as
引入依赖于先前迭代规范的迭代.
例如:
(loop for x from 1 to 10
as x2 = (* x x)
as x4 = (* x2 x2)
for y from 10 downto 1
as y2 = (* y y)
as y4 = (* y2 y2)
sum (* x4 y4))
Run Code Online (Sandbox Code Playgroud)
为什么?!
传统!:-)
并且...
"......计算机语言不仅仅是让计算机执行操作的一种方式,而是......它是一种表达方法论的新颖形式媒介"Abelson/Sussman"计算机程序的结构和解释".
IOW,我们为人们(包括你从现在开始的6个月)编写代码来阅读,而不只是为了执行计算机.
使你的代码更具可读性的一切都是"公平游戏".