`
luciferliusha
  • 浏览: 13281 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

lisp iteration

    博客分类:
  • lisp
 
阅读更多

1.Do

  (do ((temp-one 1 (1+ temp-one))

       (temp-two 0 (1- temp-two)))

      ((> (- temp-one temp-two) 5) temp-one)) =>  4

  (do ((temp-one 1 (1+ temp-one))

       (temp-two 0 (1+ temp-one)))     

      ((= 3 temp-two) temp-one)) =>  3

第一次循环将temp-onetemp-two用初始值(1,0)初始化,再计算最后的循环终止条件,如果结果为false,那么运行body里的代码;第二次循环,先计算step-form里的内容,这里注意几点:1.后面的step-form可以引用前面变量的值(如第二个例子temp-two 0 1+ temp-one))

但是step-form的计算是并行的,即在temp-twostep-form里引用temp-one的值只能是上一次循环结束时保存的值(如第二个例子当temp-two3时,实际temp-one2,因为temp-two不等temp-onestep-form执行完再执行自己的step-form,并行)。

2.do*

  (do* ((temp-one 1 (1+ temp-one))

        (temp-two 0 (1+ temp-one)))

       ((= 3 temp-two) temp-one)) =>  2

Do*do很相似,但是do*计算step-form时是串行的。

3.Dolist

 (setq temp-two '()) =>  NIL

 (dolist (temp-one '(1 2 3 4) temp-two) (push temp-one temp-two)) =>  (4 3 2 1)

 (setq temp-two 0) =>  0

 (dolist (temp-one '(1 2 3 4)) (incf temp-two)) =>  NIL

 temp-two =>  4

 (dolist (x '(a b c d)) (prin1 x) (princ " ")) 

>>  A B C D 

=>  NIL

4.Dotimes

(dotimes (temp-one 10 temp-one)) =>  10

 (setq temp-two 0) =>  0

 (dotimes (temp-one 10 t) (incf temp-two)) =>  T

 temp-two =>  10

Dotimes是针对integer操作的(上面例子的10),var(temp-one)每次都会是010之间的一个数字,body里利用这个变量做些事情。

分享到:
评论

相关推荐

    Successful Lisp How to Understand and Use Common Lisp - David B. Lamkins

    Includes discussion and examples of advanced constructs for iteration, error handling, object oriented programming, graphical user interfaces, and threading. Supplements Common Lisp reference books ...

    [Lisp相关文档].Lisp.Quick.Reference

    #### 9.6 Iteration 迭代 - Lisp提供了多种迭代结构,如DO、DOTIMES等。 - 例如:`(dotimes (i 5) (print i))` 输出0到4。 #### 9.7 Loop Facility 循环设施 - LOOP宏提供了更强大的循环结构。 - 例如:`(loop ...

    sicp 2016 from

    书中系统地介绍了计算机程序设计的基本原理和方法,并通过具体的程序设计语言——Scheme(一种Lisp方言)来进行阐述。 #### 重要概念和知识点详解 ##### 1. 建立抽象的过程 (Building Abstraction with Procedures...

Global site tag (gtag.js) - Google Analytics