LOOP提供了一种写循环迭代的特殊语言。
这可能看起来比较大动干戈----为了写循环特地发明一种新的语言。但是如果你想想循环在程序中的用处,这种行为开始有点儿在理。不论任何程序的大小,他们都会包含好多循环语句。而且,尽管他们不尽相同,他们也不是完全不同;如果将循环前后的语句纳入循环代码的范畴,那么循环的初始化,循环中的行为,循环结束后的行为就会透露出一些模式。LOOP语言捕获这些模式,进而让你更加直接表达他们。
LOOP宏包括好多部分:对LOOP宏诟病的一大抱怨就是其太复杂了。本章,我们将迎着LOOP而上,系统地学习LOOP的不同部分,以及他们之间如何组合。
LOOP的各个部分
使用LOOP可以完成以下目的:
- 递进变量以及在不同数据结构上迭代
- 在循环的时候,collect,count,sum,maximize和minimize值
- 执行任意的LISP表达式
- 决定何时结束LOOP
- 条件地完成以上功能
另外,LOOP为以下过程提供语法支持:
- 在within循环中创建局部变量
- 在LOOP循环体开始和结束后执行任意的LISP表达式
LOOP的基本结构是一组以LOOP开始的语句。每一个语句如何被LOOP宏解析是根据关键字来决定的。其中一些关键字如下:for, collecting(collect), summing(sum), counting(count), do, finally。
迭代控制
大多数的所谓的迭代控制语句以for或者as开始,然后根据一个变量的名字。变量名字后面的内容根据语句的目地而定。
语句的内部可以按如下方式迭代:
- 指定间隔的数的范围,上界或者下界
- list数据结构中的每一个元素
- list中的每个结构
- vector中的每个元素,包括子类型,例如字符串和bit-vector
- 哈希表的键值对
- 包中的符号
- 不断重复对指定的表达式的计算
一个简单的循环语句可以具有多个语句,每个句子声明自己的变量。当一个循环具有多个语句时,循环在任何一个语句达到其终止条件时终止。例如如下循环:
(loop
for item in list
for i from 1 to 10
do (something))
最多执行10次循环,但是如果list中包含元素少于10个,循环会提前结束。
计数循环
算数迭代语句控制循环体执行次数,每次在一个数的范围内递进变量,每一步都执行一次函数体。这些语句由for(as)后以下1到3个介词短语组成:from where语句;to where语句;by how much语句。
from where语句指定语句变量的初始值。它由以下介词组成:from, downfrom, upfrom,后面跟着一个提供初值的形式。
翻译的目地主要是自己学习,如果有什么不合适的地方,欢迎讨论。
!!后续继续翻译!!
本文完。