common lisp变量和赋值,类型判断

1.变量 let引入新的局部变量。 [33]> (let ((x 1) (y 2)) (+ x y)) 3 defparameter创造一个全域变量。 [37]> (defparameter *ga* 123) *GA* [38]> *ga* 123 用 defconstant 来定义一个全域的常量 [39]> (defconstant limit 8 ) LIMIT [40]> limit 8 检查某些符号,是否是一个全域变量或常数,用 boundp [41]> (boundp 'limit) T [42]> (boundp '*ga*) T 2.赋值 setf给全域或局域变量做赋值,如果 setf 的第一个参数是一个符号(symbol),且这个符号不是某个局部变量的名字,那么 setf 将设置这个符号为全局变量。还是使用 defparameter 显式地创建全局变量比较好。 [44]> *ga* 1 [45]> (let ((n 10)) (setf n 2) n) 2 [46]> (setf x (list 'a 'b 'c)) (A B C) 传入 setf 的第一个参数,还可以是一个表达式或一个变量名。在这种情况下,第二个参数的值被插入至第一个参数所引用 (refer)的地方。 [47]> (setf (car x) 'n) N [48]> x (N B C) [53]> (setf a 1 b 2 c 3) 3 [54]> a 1 [55]> b 2 [56]> c 3 相当于
(setf a b)
(setf c d)
(setf e f)

3. 类型
在 Common Lisp 里,数值才有类型,而不是变量。typep判断类型。
[57]> (typep 25 'integer)
T

类型 (Types)

Read more...

common lisp学习笔记二,quote,if,and和or

1.quote Lisp 提供 quote 作为一种保护表达式被求值的方式。Common Lisp 定义 ' 作为 quote 的缩写。 [62]> (quote (+ 3 5)) (+ 3 5) [64]> '(+ 3 5) (+ 3 5) 这意味着 Lisp 程序可以写出 Lisp 代码。 Lisp 程序员能(并且经常)写出能为自己写程序的程序。 2. if [20]> (if t 'a 'b) A [21]> (if nil 'b 'a) A 第一个参数是判断,第二个是为true时求值,第三个是false求值。 3. and和or 逻辑操作符 andor 与条件式 (conditionals) 类似。两者都接受任意数目的参数,但只对能够决定返回值的那几个参数来作求值。如果所有的参数都为 (即不为 nil ),那么 and 会返回最后一个参数的值,如果其中一个参数为 ,那么之后的所有参数都不会被求值。 or 也是如此,只要碰到一个是 的参数,就停止对之后的所有的参数求值。 [23]> (and t t (+ 1 3) t) T [24]> (and t t (+ 1 3) nil) NIL [25]> (and t t (+ 1 3) nil t) NIL [26]> (or nil nil (+ 4 5)) 9 [28]> (or nil nil (+ 4 5) nil) 9 [29]> (or nil nil (+ 4 5) (- 8 7) nil) 9 其实也可以这么理解,对每一个参数求值,当and遇到nil,或者or遇到非nil,终止求值,返回nil或者非nil。没遇到就返回最后一个参数的值。  
Read more...

互联网分享之道

今天在thinkphp的群里,有想要thinkphp 3.0写得代码例子,用来参考。我果断发给他了。 我写这些代码的时候,也是从论坛下载了别人分享的代码学习的。知道有一个参考学习得快,虽然官方有不错的文章和文档。 他分享给我一个phpcms的漂亮后台界面,在群里也有分享。群里有说“多几个你这样的群友群必火”,是撒,如果都分享自己的一点东西,无论珍藏与否,大家同时得到的东西都会变多。这是个基本的道理,但是做的人却不多。 可能你拿出来时会有很多顾虑,比如写得不好。当时我也有这种心态,毕竟我水平有限,也没认真写。但是无论谁都是从学开始的,你的东西多少都会给别人启发。 写博客记录自己的学习过程,我也是从中感到分享的快乐。以前搭建过博客,申请过域名,但由于各种原因没坚持下来。现在sae对一部分人条件宽松,又有二级域名,还有现成的程序,所以那些客观因素都没了,有时间就记录一下。不过想用python,django再写一个博客,用wp的数据库结构,界面就不改变了,挺喜欢这个界面。wp的博客除了插件省心,添加个功能方便外,很多功能我用不上,准备改掉他。  
Read more...

php跨库复制备份表

需要定时把一些数据表备份,并做数据统计。
$dates=date('Ymd',time());

//player表的备份
$newtable = "PlayerLog" . $dates;
$sql = "CREATE TABLE ".$newtable." LIKE game_qd.Player";
$linelist = $logdb->exec($sql);
print_r($linelist);
echo "\n\r\n";
$sql2 = "INSERT INTO ".$newtable." SELECT * FROM game_qd.Player";
$linelist = $logdb->exec($sql2);
print_r($linelist);
echo "\n\r\n player done";
,主要的代码就两行。 还学会了left  join的用法,当时没想到,是解决了判断一个备份表里有,另一个备份表里没有是计算差值时的问题。  
	
$sql7 = "select a.PlayerID,a.Score,(a.Score-IFNULL(b.Score , 0)) as Scorecha from ".$formtable." as a left join ".$endtable." as b on a.PlayerID=b.PlayerID order BY Scorecha desc,Score desc limit ".$limitnum;
.
Read more...

common lisp的符号、数字、列表和字符串

符号,字母开头,包括字母数字和连接符。 5 17 -34 +6 2/4 1/3 3.1415 1.722e-15 #c(1.722e-15 0.75) 有趣撒~ lisp支持分数形式,下面几个测试: [1]> (+ 3 2/3) 11/3 [2]> (+ 3.0 2/3) 3.6666667 [3]> (* 2.0 1/3) 0.6666667 [4]> (* 3.0 1/3) 1.0 [5]> (* 3.00 1/3) 1.0 [6]> (/ 3.0 1/3) 9.0 [7]> (/ 2.0 1/3) 6.0 lisp支持复数形式#c(r,i),r为实部,i为虚部。 lisp字符串包含在双引号中,#\a  #\3表示字符。反斜杠为转义字符。   命名约定:在全局变量开头和结尾带有“*”,常量都已“+”开头结尾。   构造一个列表:(list 4  5 6) [4]> (cons 'a '(b c)) (A B C) 用函数 cons 来构造列表。如果传入的第二个参数是一个列表,则返回一个由第二个参数所组成的新列表,其中新列表的第一个元素是传入的第一个参数。 [6]> (cons 'a (cons 'b nil)) (A B) 来取出列表元素的基本函数是 carcdr 。列表的 car 是第一个元素,而列表的 cdr 是第一个元素之后的所有元素 [13]> (setq l '(a b c)) (A B C) [14]> l (A B C) [15]> (car l) A [16]> (cdr l) (B C) 这个像erlang里列表操作,或者应该说erlang学的lisp。   nil唯一一个既是原子又是列表的对象。
Read more...

common lisp入门安装

又准备开始学lisp,前些时候就想学,但是就怕贪多嚼不烂。现在又想:喜欢就学,先学习语法,不用深。说不定以后就用到。 lisp方言很多,没什么太多了解,先学一个撒~ 下载地址:www.clisp.org,一路next安装windows版完成。 一个lisp的IDE:http://www.daansystems.com/lispide/ [1]> 10 10 [2]> (* 2 3) 6 感觉想极了编译原理里面学的,三元式还是啥的来。 [3]> (format t "hello world") hello world NIL t 是标准输出,NIL是对format求值的结果。列表的第一个元素是函数名。nil代表false,t代表true。 写成函数形式: [4]> (defun hello-world () (format t "hello world")) HELLO-WORLD [5]> (hello-world) hello world NIL 求值后,得到一个名为HELLO-WORLD的函数,函数没有参数。
Read more...

安装scrapy的方法详解

scrapy安装确实麻烦,网上找到一片详细按照教程保存下来。安装scrapy的方法详解下载地址:安装scrapy的方法详解
Read more...

firefox更新通道的修改

firefox更新通道分为:release ,beta, aurora,三个版本可以分别看作是正式版、测试版、内部不稳定版本。 今天firefox刚更新,就关注了一下版本。想用测试版体验新感觉(汗~)。 修改方法: c:\Program Files (x86)\Mozilla Firefox\defaults\pref\ ,找到channel-prefs.js文件,修改为pref(“app.update.channel”, “beta”);。 不知道为什么下面的方法不行。。。 输入:about:config,然后在搜索地方输入:app.update.channel,双击修改release为beta,就搞定了。
Read more...

十一假期荒废了,只学了个thinkphp

十一假期这么长,本想着前段时间没有学习,这里给补上。半路接了个网站,要用php开发,寻思着学个框架吧,开发还快速,选择了貌似中国最好的php框架,边看thinkphp官网的文档,然后到论坛下载了一个blog,就开工了。文档很详细,学起来也简单,偷懒中写完了。1000rmb到手了。顺便用到PHP-ExcelReader,一起学习了 这样其实也不错,可以很快的将学到的东西用到实践中去,以后用php快速开发可以用thinkphp的这个框架了^_^。 本想着假期接着学习golang和erlang的,现在泡汤了。抽时间一点一点的看实在是不符合我的性格,像我看小说,不看则已,一看就必须看完它。
Read more...

Network programming with Go

很不错的教程,讲的很详细。《Network programming with Go》http://jan.newmarch.name/golang/,照着教程写了一个小程序。  
//server.go
package main

import(
    "fmt"
    "net"
    "os"
    "time"
)

func handleClient(conn *net.UDPConn){
    var buf [512]byte

    n, addr, err := conn.ReadFromUDP(buf[0:])
    if err != nil{
        return
    }
    fmt.Println(string(buf[0:]))
    daytime := time.Now().String()
    fmt.Println(n,addr)
    conn.WriteToUDP([]byte(daytime),addr)

}

func checkError(err error){
    if err != nil{
        fmt.Fprintf(os.Stderr,"Fatal error:%s",err.Error())
        os.Exit(1)
    }
}

func main(){
    service := ":1200"
    udpAddr, err := net.ResolveUDPAddr("up4",service)
    checkError(err)

    conn,err := net.ListenUDP("udp",udpAddr)
    checkError(err)

    for{
        handleClient(conn)
    }
}
//client.go
package main

import(
    "fmt"
    "net"
    "os"
)

func checkError(err error){
    if err != nil{
        fmt.Fprintf(os.Stderr,"Fatal error:%s",err.Error())
        os.Exit(1)
    }
}

func main(){
    if len(os.Args) != 2{
        fmt.Fprintf(os.Stderr, "Usage:%s host:port", os.Args[0])
        os.Exit(1)
    }
    service := os.Args[1]
    udpAddr, err := net.ResolveUDPAddr("up4",service)
    checkError(err)

    conn,err := net.DialUDP("udp",nil,udpAddr)
    checkError(err)

    _,err = conn.Write([]byte("hello"))
    checkError(err)

    var buf [512]byte
    n,err := conn.Read(buf[0:])
    checkError(err)
    fmt.Println(string(buf[0:n]))
    os.Exit(0)
}
,以后再扩展功能,先睡觉。
Read more...

Previous Page 1 2 3 4 5 6 7 8 9 10 Next Page 最后一页