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

时间:2017-01-27 18:34:37

标签: common-lisp

在Common Lisp中,在循环宏中,以及 as 关键字的功能相同:

(loop for i from 1 to 3 do (print i))
(loop as i from 1 to 3 do (print i))

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

1 个答案:

答案 0 :(得分:7)

6.1.2.1 Iteration Control

  

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

使您的代码更具可读性的一切都是“公平游戏”。

相关问题