循环宏中的"for"和"as"关键字有什么区别吗?

Gus*_*ram 4 common-lisp

在Common Lisp中,在循环宏中,andas关键字看起来功能相同:

(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)

我有什么微妙的差异吗?如果没有,为什么要打扰两个不同但相同的关键词呢?

sds*_*sds 7

6.1.2.1迭代控制:

foras关键字是同义词; 它们可以互换使用....按照惯例,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个月)编写代码来阅读,而不只是为了执行计算机.

使你的代码更具可读性的一切都是"公平游戏".