转自http://blog.csdn.net/keyboardota/article/details/8240250

有关Lisp语言中的Do循环,就像很多人说的一样,初看起来太奇怪了,不知道怎么理解。所以在这里做一个简单的介绍,看完大家可以发现其实Lisp中的do循环也是比较简单的。

先看看Lisp语言中对于do循环的说明:

翻译成“中文”大概意思是这样的:

(do (变量定义)
(结束条件 返回值)
循环主体)

其中的“变量定义”又有一些格式,展开大概是这个样子的:

现在我们希望定义一个变量x,x的初值是1,每次循环x=x+1,当x>10时结束循环,在循环主体中通过format函数输出变量x,则它的Lisp代码是这个样子的:

(do ((x 1 (1+ x)))
((> x 10) nil)
(format t "in the loop~a ~%" x))

为了让各位程序员更好地理解以上Lisp代码,在这里列出对应的java代码:

注意这里没有使用java里的do while或者是do until循环,原因是java里的do while 和 do until循环都在执行循环主体后才进行判断,而Lisp中的do循环一开始就进行判断。

所以上面使用了java中的while循环,条件也变成了x<=10.

下面是Lisp中使用do循环的完整代码,定义了一个测试函数叫do-test,为了让输出更加清晰,在do循环前后分别加了一行输出。

(defun do-test ()
(format t "staring do loop~%") (do ((x 1 (1+ x)))
((> x 10) nil)
(format t "in the loop~a ~%" x)) (format t "end of do loop~%"))

[转] Lisp语言:Do循环的使用的更多相关文章

  1. 【下载分】C语言for循环语句PK自我活动

    想了解自己C语言for语句的掌握程度吗?敢和自己PK较量一番吗?參加"C语言for循环语句PK自我活动",仅仅要成绩70分以上.就可赢得CSDN下载分. 12道题目题库动态读取,每 ...

  2. 为什么Lisp语言如此先进?(译文) - 阮一峰的网络日志

      为什么Lisp语言如此先进?(译文) - 阮一峰的网络日志 为什么Lisp语言如此先进?(译文)

  3. [R] R语言for循环机制

    在做数据分段截取的时候,发现for循环的表现和其他语言不太一样. 上代码: :) { i = i + print(i) } 结果: [] [] [] [] 即作为循环计次的i, 并不会因为在循环体中的 ...

  4. 转-为什么Lisp语言如此先进?(译文)

    之前在看黑客与画家的时候看过,今天重温,完全不一样的感觉! 原文地址:http://www.ruanyifeng.com/blog/2010/10/why_lisp_is_superior.html ...

  5. Lisp语言简介

    摘自维基百科,原链接为:http://zh.wikipedia.org/zh/LISP 因为Clojure是Lisp的一种的方言,所以我们可以先来了解一下Lisp这个比较小众的编程到底是什么~ --- ...

  6. LISP语言学习资源

    LISP的介绍:Paul Graham 的主页 http://paulgraham.com/index.html Lisp之根源 - 保罗·格雷厄姆 http://daiyuwen.freeshell ...

  7. C 语言实例 - 循环输出26个字母

    C 语言实例 - 循环输出26个字母 循环输出 个字母. 实例 #include <stdio.h> int main() { char c; for(c = 'A'; c <= ' ...

  8. Django 模板语言 for循环

    Django 模板语言 for 循环 ******  for 循环字典 ********** USER_DICT = { 'k1':'root1', 'k2':'root2', 'k3':'root3 ...

  9. [ Skill ] 为什么 Lisp 语言如此先进

    https://www.cnblogs.com/yeungchie/ 网上看到一个应该是 2002 年的文章 译文转自:为什么Lisp语言如此先进?(译文) - 阮一峰的网络日志 原文地址:Reven ...

随机推荐

  1. Word2Vec之Deep Learning in NLP (一)词向量和语言模型

    转自licstar,真心觉得不错,可惜自己有些东西没有看懂 这篇博客是我看了半年的论文后,自己对 Deep Learning 在 NLP 领域中应用的理解和总结,在此分享.其中必然有局限性,欢迎各种交 ...

  2. 2014年总结:我的IT路

    又是一年春节时,转眼之间已经毕业4年,简单回顾一下这几年的职业生涯,希望大家提出宝贵意见. 大学时,几个同学跟着学校网络中心的老师一块做校园网上运行的小系统.偶尔协助一下老师对学校机房.校园网做一下维 ...

  3. sgu To xor or not to xor

    题意:从n个数中,选择一些数,使得异或最大. #include <cstdio> #include <cstring> #include <algorithm> # ...

  4. PooledDataSource--mybatis-3-mybatis-3.2.3

    org.apache.ibatis.executor.SimpleExecutor public <E> List<E> doQuery(MappedStatement ms, ...

  5. Common Words

    Common Words Let's continue examining words. You are given two string with words separated by commas ...

  6. Page Controller页面控制器实现

    A Page Controller is one object or file declaration designed to handle the request for one logical w ...

  7. Unity 代码检测单击,双击,拖放

    今天小伙伴问我如何自己写一段代码检测 单击 双击 和 拖放.于是就写了这段代码O(∩_∩)O~ 代码如下: using UnityEngine; using System.Collections; p ...

  8. string字母排序,

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. IOS 采用https 协议访问接口

    申请好证书后,发现ios 仍无法使用https协议访问到数据,发现ios 需要ssl 支持 TLS1.2 . 更改nginx 配置: ssl_protocols TLSv1 TLSv1. TLSv1. ...

  10. JAVA读、写EXCEL文件

    採用jxl.jar包,网上下载,百度一下到出都是.希望能够帮助到大家. 接下来直接贴代码: <span style="font-size:18px;"> public ...