Lisp中的Loop宏

  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,后面跟着一个提供初值的形式。

原文链接:http://www.gigamonkeys.com/book/loop-for-black-belts.html

  翻译的目地主要是自己学习,如果有什么不合适的地方,欢迎讨论。

  !!后续继续翻译!!

  本文完。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值