玩玩LISP试试

听说LISP历史很是悠久,看了《梦断代码》之后,想着看看LISP到底如何强大的,节日期间抽空装上LISP环境小试一下。

看一些LISP介绍时,听说了这样几条关于语言的格言:

Perl的格言:做事情永远都有不止一种方法

Python的格言:做事情只有一种方法

Lisp的格言:可编程的编程语言

先装了GNU Common Lisp,简称GCL,在Windows7中安装时有个del的脚本运行不太正常,手工del和ren后,才能正常启动,出现了亲切的命令行。

2012-10-06 14-02-59

后来又找了2个大块头的LISP开发环境,一个是Lispworks 6.0 Personal,用起来不怎么顺手,编辑器的复制、粘贴的操作习惯与Windows不太一样。另一个是Allegro Common Lisp8.2(简称ACL),这个的编辑器与Windows保持一致,不过试试LISP一般用命令行就足够了。

在这个网站中有几个简单的例子:http://lisp.plasticki.com/show?14F。据说是用来教孩子LISP语言的,汗!

一开始要适应的是前缀表达式,再一个要适应的就是无数的小括号。

(+ 2 3 4)

9

List应该是LISP最强大的功能特性了,不知道Haskell中强大的List是不是从LISP学来的?

(list (list 1 2) (list 3 4))

((1 2) (3 4))(list (list 2 3) `(list 4 5))

((2 3) (LIST 4 5))

定义一个求平均数的函数:

(defun average (a b) (/ (+ a b) 2))

对列表的操作函数:

(cons 1 '(2 3 4 5 6))

(1 2 3 4 5 6)

(append '(1 3 5 7) '(2 4 6 8))

(1 3 5 7 2 4 6 8)

又看了点string、array、defstruct、setf、setq、if、when、unless、cond、do、dolist等语法,感觉LISP并不是纯函数式编程,好像不加选择性地吸收了太多其它语法,感觉不如Haskell语言优美。

另外还查到了几个与象棋有关的LISP程序:

一个中国象棋的LISP程序

http://code.google.com/p/ywb-codes/source/browse/trunk/emacs/site-lisp/contrib/chinese-chess.el

国际象棋:

http://code.google.com/p/lispchess/source/browse/trunk/slcp.lisp

https://github.com/cwbowron/lisp-chess-engine

http://www.iqool.de/cc.html

 

我的LISP看来也只是玩玩而已了,有时间我再继续研究一下优美的Haskell。

posted @   申龙斌的程序人生  阅读(1205)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示