- 博客(13)
- 资源 (6)
- 收藏
- 关注
翻译 Lisp.编译(Compilation)
Common Lisp 函数可以单独被编译,也可以通过编译一个文件的形式被编译。如果你仅仅是在toplevel中键入了一个defun表达式,[1]> (defun foo (x) (+ x 1))FOO很多实现都会创建一个解释的函数。你可以通过将一个函数作为参数传递给compiled-function-p来判断它是不是已经被编译了:[2]> (compiled-function-p
2012-10-31 21:51:06 2343
翻译 Lisp.闭包
一个函数可以作为一个表达式的值返回,就像其它对象一样。这里有一个接受一个参数的函数,返回对应参数类型的合并函数:(defun combiner (x) (typecase x (number #'+) (list #'append) (t #'list)))在这个函数之上,我们弄了一个通用的合并函数:(defun combine (&rest args)
2012-10-25 11:55:11 2629
翻译 Lisp.全局函数
之前的fboundp函数能够告诉我们一个给定的符号是不是已经是一个函数的名字。如果一个符号是一个函数的名字,symbol-function会返回这个函数:[1]> (fboundp '+)T[2]> (symbol-function '+)#通过设置某些名字的symbol-function到一个函数,[5]> (setf (symbol-function 'add2)
2012-10-24 10:07:31 1708
原创 MoinMoin部署:Nginx+uwsgi
本文假设nginx,uwsgi都已经安装完毕!1. 首先安装flup,不多说,easy_install flup2. 下载moinmoin,我用的是1.9.5,解压到/data下,并做符号链接ln moin-1.9.5 moin -s3. cd /data/moin/wiki;4. cp server/moin.wsgi .5. cp config/wikiconfig
2012-10-23 17:12:21 4114
翻译 Lisp.中止(Aborts)
你可以使用return从一个block中的任何一点退出。有事我们想要做更极端的事情,并且在几个函数调用之间转移控制。我们通过catch和throw来完成这样的事情。一个catch表达式接收一个标签(tag),这个标签可以是任意的种类的对象,之后跟着一个表达式的主体(body)。【译注】:不由想到了“现代”编程语言中的try...catch...(defun super () (
2012-10-22 18:38:07 1974
翻译 Lisp.多值(Multiple values)
有人曾经说过,为了强调函数式编程语言的重要性,都要说每个Lisp表达式都返回一个值。现在事情没有那么简单了;在Common Lisp中,一个表达式可以返回0个或多个值。返回值的最大个数根据实现的不同而不同。多值允许函数计算并返回几个东西,并且不需要建立一个结构来保存它们。比如,内置的函数get-decoded-time返回当前的时间,这个时间用9个值来表示:秒,分钟,小时,日期,月,日
2012-10-22 16:05:49 3361
翻译 Lisp.结构(Structure)
一个结构(structure)可以看成是一个加强版的向量(vector)。假设你需要写一个程序来跟踪许多长方体。你可能会考虑将它们表示成一个具有三个元素的向量:高,宽和长。如果你使用诸如如下的函数,而不是使用原始的svrefs,将使你的程序更加易读:[1]> (defun block-height (b) (svref b 0))BLOCK-HEIGHT你可以将一个结构看成是一个特殊
2012-10-17 15:06:47 3026
原创 Fedora 17 下运行Kettle遇到"A fatal error has been detected by the Java Runtime Environment"
遇到此问题十分纠结,具体的报错信息如下:# A fatal error has been detected by the Java Runtime Environment:## SIGSEGV (0xb) at pc=0x0000000000000000, pid=6455, tid=139924755695360## JRE version: 6.0_35-b10# Java
2012-10-16 22:59:22 2838
原创 Python使用mechanize模拟登录、抓取数据的代码
import mechanizeimport cookielibbr = mechanize.Browser()cj = cookielib.LWPCookieJar()br.set_cookiejar(cj)br.set_handle_equiv(True)br.set_handle_gzip(True)br.set_handle_redirect(True)br.set_h
2012-10-16 11:54:26 9584 2
翻译 Lisp.字符串和字符
字符串是字符的向量。我们把常量字符串看成是一系列被双引号包括的字符,一个单独的字符c被表示为#\c。通常(但不是必须的),每个字符都会有一个相关的整数,这个整数就是ASCII码。在多数的实现中,函数char-code返回与一个字符相关的数字,code-char返回对应数字的字符。函数char=(大于等于),char>(大于)和char/=(不同)用来比较字符。它们像数字比较
2012-10-15 21:51:09 9432
翻译 Lisp.集合
列表是一种表示小集合的好方式。列表中的每一个元素是它所代表的集合中的一个成员:[1]> (member 'b '(a b c))(B C)当member返回真的时候,它不是简单地返回t,而是返回以它找的元素为首的列表的一部分。逻辑上,一个cons可以代表t,并且使用这种方式函数能够返回更多的信息。默认地,member通过eql来比对对象。你可以通过一种叫做关键字参数(
2012-10-14 23:18:37 1482
翻译 Lisp.理解递归
学习递归的学生有时会被鼓励在纸上跟踪递归函数的所有调用。这种练习可能会有误导:程序员定义一个递归函数的时候,通常不会考虑因为调用它而产生的所有调用。如果有人非得以这一的方式来考虑程序,那么递归就是令人烦恼的,这可没有什么帮助。递归的好处是它的精确性,它让我们以从更加抽象的方式来观察算法。你可以不用考虑调用函数时所产生的所有的调用,就能判断出一个递归函数是否是正确的。要探明一个递归函数是
2012-10-14 22:35:32 2313
原创 RabbitMQ一些基本的管理操作备忘
一些基本的管理命令:一步启动Erlang node和Rabbit应用:./rabbitmq-server在后台启动Rabbit node:./rabbitmq-server -detached关闭整个节点(包括应用):./rabbitmqctl stop 怎样仅仅关闭应用而不关闭整个节点呢?因为rabbitmq-server一起启动了节点
2012-10-09 11:59:09 11808
ASGI 3.0规范中文版.pdf
2019-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人