Chinaunix首页 | 论坛 | 博客
  • 博客访问: 483325
  • 博文数量: 120
  • 博客积分: 3052
  • 博客等级: 中校
  • 技术积分: 1755
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-01 09:43
文章分类

全部博文(120)

文章存档

2011年(20)

2010年(3)

2009年(52)

2008年(45)

我的朋友

分类: LINUX

2011-04-30 15:41:41

* 中文, unicode 如何支持?
* 各种诡异的符号是什么意思? ' ` # , .......
*# 如何调用外部程序?
  # trivial-shell 和 shelisp 这两个包都可以,我个人觉得后者更方便一些, 只是不在 quicklisp 里.  
*# 如何序列化和反序列化?
  # plist (list :a xx :b xx) 可以作为一种选择
  # print 可以把 lisp object 以 lisp 可反序列化的方式序列化, 利用 with-open-file 就可以了, 反序列化时,使用 read 就可以了.
* 如何进行进程间通信?网络通信?
* symbol 是什么东东?
*# 标准输入输出交互
  # ( read-line *query-io*)
  # ( format t/nill/*query-io* "~a" some)

*# 在使用 trivial-shell 或 shelisp 时, 如果是在 sbcl 环境下,不会有任何问题,但是在 slime 环境下, 出现如下错误:
Lisp connection closed unexpectedly: connection broken by remote peer
  # (setf *log-events* t) 再执行命令,可以看一下 inferior-lisp, 里面有 (:EXTERNAL-FORMAT :LATIN-1):
  the character with code 26376 cannot be encoded.
;;  type: SWANK::SWANK-ERROR
;;  encoding: iso-latin-1-unix vs. NIL
;;  style: :SPAWN dedicated: NIL]
说明是编码出了问题. 测试验证,确实是这样: 当有汉字出现时,就会这样.
  # 解决办法,从 " Tips" 找到解决办法如下:
* 为什么下面两种用法都是可行的?
   (mapcar (lambda (x) (+ x 1)) (list 3 4 5))
   (mapcar #'(lambda (x) (+ x 1)) (list 3 4 5))
  但是用命名函数就不行, 比如 (mapcar inc (list 3 4 5)) 就会出错.
  同时, (mapcar 'inc (list 3 4 5)) 和 (mapcar #'inc (list 3 4 5)) 则都不会出错
是不是可以认为,"只要不求值,就不区别数据和函数"?

* (list 3 4 5) 实现是的把 3 4 5 搞成一个 list, 反操作是什么呢? 怎样把一个 list 中的东东拆出来作为函数的参数呢? 就是如何把一个 form 的第一个东东换掉呢?
  # 答案是,使用 apply; 另外, 如果不是一个列表, 使用 funcall, 即 (funcall f a b c) 等价于 (f a b c)
* read 函数如何 parse 它的输入呢?
* 为什么 (+ 1 2 '(3 4)) 会出错, 而 (apply #'+ 1 2 '(3 4)) 却得到 10 呢?

阅读(876) | 评论(0) | 转发(0) |
0

上一篇:lisp 的一些重要概念

下一篇:# 的一些总结

给主人留下些什么吧!~~