关于Lisp的一点点

以后写的语言相关应该主要是Ruby(也许还有少数的C)了,所以在这里先记录一点关于Lisp的东西。

首先是一个小故事:

在 ILC 2002 大会上前Lisp大神,当今的Python倡导者Peter Norvig,由于某些原因,做一个类似于马丁路德在梵蒂冈宣扬新教的主题演讲,因为他在演讲中大胆地声称Python就是一种Lisp。
讲完后进入提问环节,出乎我意料的是,Peter点了我过道另一侧,靠上面几排座位的一个老头,他衣着皱褶,在演讲刚开始的时候踱步进来,然后就靠在了那个座位上面。
这老头满头凌乱的白发,邋遢的白胡须,像是从旅行团中落下的游客,已经完全迷路了,闲逛到这里来歇歇脚,随便看看我们都在这里干什么。我的第一个念头是,他会因为我们的奇怪的话题感到相当失望;接着,我意识到这位老头的年纪,想到斯坦福就在附近,而且我想那人也在斯坦福 —— 难道他是……
“嗨,John,有什么问题?” Peter说。
虽然这只是10个字左右的问题,我不会假装自己记住了Lisp之父约翰麦卡锡说的每一个字。他在问Python程序能不能像处理数据一样,优雅地处理Python代码。
“不行。John, Python做不到。” Peter就回答了这一句,然后静静地等待,准备接受教授的质疑,但老人没有再说什么了。

 然后是Lisp的七条公理(基本运算符):

1. (quote x) --> x
2. (atom x) --> t or ()
3. (eq x y) --> t or ()
4. (car x) --> x1 ...the first element of x
5. (cdr x) --> xr ...the rest elements of x
6. (cons x y) --> (xe ye) ...all elements of x and y
7. (cond (p1e1) (p2e2)...(pnen)) --> et ...en of the condition pn is t.

 再然后是个人喜欢的Lisp现代分支:Racket。官网:http://racket-lang.org/

 

如果了解一些逻辑或者计算机理论的相关基础,到此应该已经能看出,Lisp的独特之处所在。

Lisp不是作为一种计算机语言设计的,而是基本逻辑的表达。某种意义上,这是Lisp之所以小众的理由。

根据提供的引用内容,LISP是一种编程语言,可以用来进行计算和创建过程。在LISP中,可以使用绘图函数来画出图形。下面是一个使用LISP绘制小老虎的示例代码: ```lisp (define (draw-tiger) (begin (set! r 50) ; 定义半径 (set! angle (/ pi 4)) ; 定义角度 (set! x 0) ; 定义起始点的x坐标 (set! y 0) ; 定义起始点的y坐标 (set! step 10) ; 定义步长 ; 绘制头部 (draw-circle r x y) ; 绘制眼睛 (draw-circle (/ r 5) (+ x (/ r 2)) (+ y (/ r 2))) (draw-circle (/ r 5) (- x (/ r 2)) (+ y (/ r 2))) ; 绘制耳朵 (draw-triangle x y (+ x r) (+ y r) (+ x r) (- y r)) (draw-triangle x y (- x r) (+ y r) (- x r) (- y r)) ; 绘制身体 (draw-rectangle (- x r) (- y r) (+ x r) (+ y r)) ; 绘制尾巴 (draw-line (+ x r) y (+ x r (+ r step)) y) (draw-line (+ x r (+ r step)) y (+ x r (+ r step)) (- y r)) ) ) ; 绘制圆形 (define (draw-circle r x y) (begin (set! angle 0) (while (< angle (* 2 pi)) (begin (set! x1 (+ x (* r (cos angle)))) (set! y1 (+ y (* r (sin angle)))) (set! x2 (+ x (* r (cos (+ angle step))))) (set! y2 (+ y (* r (sin (+ angle step))))) (draw-line x1 y1 x2 y2) (set! angle (+ angle step)) ) ) ) ) ; 绘制矩形 (define (draw-rectangle x1 y1 x2 y2) (begin (draw-line x1 y1 x2 y1) (draw-line x2 y1 x2 y2) (draw-line x2 y2 x1 y2) (draw-line x1 y2 x1 y1) ) ) ; 绘制三角形 (define (draw-triangle x1 y1 x2 y2 x3 y3) (begin (draw-line x1 y1 x2 y2) (draw-line x2 y2 x3 y3) (draw-line x3 y3 x1 y1) ) ) ; 绘制线段 (define (draw-line x1 y1 x2 y2) (begin (print "绘制线段:(" x1 "," y1 ") -> (" x2 "," y2 ")") ) ) ; 调用绘制小老虎函数 (draw-tiger) ``` 这段代码使用LISP语言定义了一个绘制小老虎的函数`draw-tiger`,并在函数中使用其他绘图函数来绘制头部、眼睛、耳朵、身体和尾巴等部分。你可以运行这段代码来绘制一个小老虎。\[1\] #### 引用[.reference_title] - *1* *3* [如何用Python编写一个Lisp解释器](https://blog.csdn.net/weixin_42232219/article/details/98921065)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [小白都会的Python项目实战(附源码)3分钟画一棵圣诞树](https://blog.csdn.net/2201_75614032/article/details/128217813)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值