![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
非主流程序语言
文章平均质量分 58
ggggqqqqihc
成就不高,玩心不小。
展开
-
Scheme初印象
Scheme这个Lisp语言的变种比较有意思。我使用的Scheme版本是DrScheme 2.09,界面比较漂亮。可以在http://www.plt-scheme.org/ 下载到。 让我感觉不适的是Scheme对于表达式的处理,它使用的是一种类似于“前缀表达式”的方式,还要写一大堆括号。比如计算3+5,在Scheme就要写成(+ 3 5),其中“+”和数字之间必须有一空格。我想这可能正是原创 2005-01-14 16:55:00 · 1064 阅读 · 0 评论 -
学习Python(2)——函数
先写一个例子——生成n以内的Fibonacci数:def fib(n): a,b=0,1 while bn: print b, a,b=b,a+bdef指出了接下来的部分是一个函数。Python和C语言类似,并不区分过程(无返回值)和函数(有返回值)。像上面那样严格的说就是一个过程(Procedure)。对于一个项目而言,在不同的模块的代码中原创 2007-02-27 15:22:00 · 978 阅读 · 0 评论 -
学习Python(4)——面向函数编程
可以说,现代程序语言都或多或少地受到了Lisp家族的影响,Python当然也不例外。因为我以前了解一些Lisp(Scheme)方面的知识,感觉Python在这方面学得还挺像。filter(function, sequence)可以从sequence(通过是List、Tuple、String)中筛选出满足function条件的元素(要求function返回类型为boolean)。例如:>>> def原创 2007-02-28 22:24:00 · 2210 阅读 · 0 评论 -
学习Python(1)——流程控制
我是按照Python 2.5附带的文档来学的。文档很长,而且是英文的,我想以后查找起来会不太方便,所以将所学到的东西记在这里。因为有关Python更基础的东西自己早已知道,所以在这里就省略了。直接从比较新的部分学起。if语句问题:从键盘读入一个整数n,输出sgn(n)。x=int(raw_input("Input an integer: "))if x==0: print 0原创 2007-02-26 21:59:00 · 1264 阅读 · 0 评论 -
用Scheme实现二分检索树(Binary Search Tree)
刚刚用Scheme做完这个小练习,看着写完的代码,连我自己都感到无比惊讶。程序非常短,定义数据结构、建立二叉树、中序遍历的代码加起来才30多行!下面我就来一步一步地讲讲我的思考过程。目标是从一个表中构建一棵二分检索树,对它进行中序遍历,将遍历序列保存在一个表中。为达到这个目标,首先搞清楚一个问题:二叉树是什么?嗯……是一种数据结构,由树根、左子树和右子树构成,其中左右子树也是二叉树。好,考虑到原创 2007-07-31 22:19:00 · 1255 阅读 · 0 评论 -
Scheme函数的参数传递
Scheme语言中有一些以“!”结尾的过程名,这些过程会改变作为参数的对象。 例如set!,如果x的初始值是1,那么在经历了(set! x 3)后,x的值就变为3。假如有一个函数my-set!是这样定义的:(define (my-set! old new) (set! old new))这个my-set!的作用是否和set!的作用一样呢?实验证明,my-set!根本不起作用。尽管它使原创 2007-08-02 23:59:00 · 880 阅读 · 0 评论 -
Scheme数据结构——栈
作为一种函数语言,Scheme认为一个函数,只要参数和变换过程一样,每一次的结果也必然是相同的。就好比函数y=x+1,当x=1是,y的值为2,不管哪一天都是这个结果。但对于真实世界来说,很多事物都是处于变化中的。因此Scheme中引入了set!、set-car!、set-cdr!等操作。对于栈这样一种简单的数据结构,就必然要考虑变化。每次压入、弹出元素,都要改变栈。至于栈的表示,一个很自然的想原创 2007-08-03 13:34:00 · 999 阅读 · 0 评论