在Common Lisp中,在循环宏中,和以及 as 关键字的功能相同:
(loop for i from 1 to 3 do (print i))
(loop as i from 1 to 3 do (print i))
我有什么微妙的差异吗?如果没有,为什么要打扰两个不同但相同的关键词呢?
答案 0 :(得分:7)
for
和as
关键字是同义词;它们可以互换使用。 ...按照惯例,for
引入了新的迭代,as
引入了依赖于先前迭代规范的迭代。
E.g:
(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))
为什么?!
传统! : - )
而且......还有......
“......计算机语言不仅仅是让计算机执行操作的一种方式,而是......它是表达方法论思想的新颖的正式媒介” Abelson / Sussman“计算机程序的结构和解释”。
IOW,我们为人们(包括你从现在起6个月后)开始编写代码,而不只是为了执行计算机。
使您的代码更具可读性的一切都是“公平游戏”。