加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

《How to design programs》第二回

发布时间:2020-12-13 19:42:02 所属栏目:百科 来源:网络整理
导读:今天归纳第四章《条件表达式和函数》。 一、条件表达式 说到条件表达式,先说布尔型变量(Boolean)。Boolean也是scheme的一个基本类型。lisp在断言时,空表和nil是false,其余都是true。scheme的不同实现有所不同。在drscheme中(原先是MIT Scheme),可以

今天归纳第四章《条件表达式和函数》。


一、条件表达式

说到条件表达式,先说布尔型变量(Boolean)。Boolean也是scheme的一个基本类型。lisp在断言时,空表和nil是false,其余都是true。scheme的不同实现有所不同。在drscheme中(原先是MIT Scheme),可以直接为true和false。下面使用drscheme中的规范。

长话短说,直接上代码。

(= 3 3)

这个表达式很简单,就是判断3是否等于3。其实我们在C语言中碰到过”=“和”==“。有时候我们对此非常头疼,还可能出BUG。在scheme中变量的赋值不使用”=“号,使用”define“。局部变量的定义还可能使用”let“等等。这里我们只要知道”=“是判断是否相等。

那么下面就简单了

(< 4 5),(> 3 7)

然后scheme的不同实现提供不同的类型判断。如drscheme中的"empty?"符号是判断list是否为空。这里有一点一定要记住,lisp之所以夸张地说”每一个使用lisp的人,最后都会在发明一种lisp方言“,是因为lisp太灵活了,没有像C、java等等统一的标准。所以在不同的解释器下,要首先读用户手册(这点挺烦的,不过如果是大牛也可以自己写解释器不是么)。


二、条件函数设计

函数设计是每个程序设计中首先也是必须要考虑的东西。后面会有若干关于函数的处方”recipe“的解释说明。其实我学习drscheme一个暑假,要说让我收获最大的是应该属于函数的设计规范,这也是学习scheme语言的一大收获。请读者不要小视。

;; is-between-5-6? : number  ->  boolean
;; to determine whether n is between 5 and 6 (exclusive)
(define (is-between-5-6? n)
  (and (< 5 n) (< n 6)))
这个是书上的一个程序。看名字就知道这个函数是判断输入值是否在5与6之间,返回true或false。

仔细看scheme貌似没有return,其实这正是它的特点。lisp语言的特点就是read-eval-print,也就是说求值打印。函数也是在求值。这里define是一个原语(primitive),它也在求值!!!如果你把这个定义语句输入,那么求值后是”(lambda (n) (and (< 5 n) (< 6 n)))“。这是一个lambda列表,也是一个特殊的列表,是一个值(注意啊!开始我就被坑了!drscheme里面没有求值显示,我使用newlisp后才发现这个东西!!!)。


三、后记

今天中午没睡好。下午去找老师关于选课的事,也是碰了一鼻子灰。不过写着写着心情就通畅许多了。有句话说得好,”最重要的就是不要去看远方模糊的,而要去做手边清楚的事“,希望能与诸位分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读