日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

common lisp 学习第一天 初步接触

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 common lisp 学习第一天 初步接触 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://common-lisp.net/project/lispbox/ lispbox?集成了Emacs、Slime和CCL。 解壓后直接運行lispbox.bat即可
//(quote x)?返回 x,我們簡記為 'x >?(quote x) x > 'x x
//(atom x) 當 x 是一個原子或者空表時返回原子 t,否則返回NIL。在 Common Lisp 中我們習慣用原子 t 表示真,而用空表 ()和NIL 表示假。 > (atom 'a) t > (atom '(a b c)) NIL > (atom '()) t 一個被引用的表僅僅被視為表 > (atom '(atom 'a)) NIL
//(eq x y) 當 x 和y 指向相同的對象的時候返回t,否則返回NIL,值得注意的是在Common Lisp中,原子對象在內存中只會有一份拷貝,所以(eq 'a 'a)返回t > (eq 'a 'a) t > (eq 'a 'b) NIL > (eq '() '()) t > (eq '(a b c) '(a b c)) NIL
//(car x) 要求 x 是一個表,它返回 x 中的第一個元素 > (car '(a b)) a
//(cdr x) 同樣要求 x 是一個表,它返回x中除第一個元素之外的所有元素組成的表 > (cdr '(a b c)) (b c)
//(cons x y)期望y的值是一個表并且返回一個新表,它的第一個元素是x的值, 后面跟著y的值的各個元素.? > (cons 'a '(b c)) (a b c) (cons x y) 返回一個cons cell (x y),如果y不是一個list,將會一dotted pair形式展現這個cons cell > (cons 'a 'b) (a . b) 一個cons cell的第二項如果是另一個cons cell,就表示成表的形式 > (cons 'a (cons 'b 'c)) (a b . c) 若一個cons cell第二項為空,就省略不寫 >?(cons 'a (cons 'b ())) (a b) 這樣,多重的cons cell就構成了表: > (cons 'a (cons 'b (cons 'c ()))) (a b c)
//函數表示為(lambda (...) e),其中 ...是原子(叫做參數),e是表達式 >?(lambda (x) (cons x '(b))) #<Anonymous Function #x2100D5CBFF> 函數調用:((lambda (...) e) ...) 表達式中第一個元素為函數 > ((lambda (x) (cons x '(b))) 'a) (a b) >?((lambda (x y) (cons x y)) 'a '(b)) (a b) > ((lambda (x y) (cons x (cdr y))) 'z '(a b c)) (z b c) 參數在表達式中不但可以作為自變量也可以作為操作符使用(不是cl,在環境中報錯) > ((lambda (f) (f '(b c))) '(lambda (x) (cons 'a x))) (a b c)
//Emacs快捷鍵 C-x C-f 創建新文件 C-x C-s 保存工作文件 C-c C-c 重新編譯 C-c C-z 切換到REPL
//編寫hello world函數并保存到文件hello.lisp中。 (defun hello-world()? (format t "hello, world!")) 加載lisp文件(帶相對路徑) > (load "./test/hello.lisp") #P"d:/Program Files/lispbox-0.7/test/hello.lisp" 執行函數 > (hello-world) hello, world! 加載編譯后的文件,compile-file先將文件編譯成fsl并返回fsl文件名稱。 >?(load (compile-file "./test/hello.lisp"))
//列表 > (list 1 2 3) (1 2 3) 屬性列表(property list) plist > (list :a 1 :b 2 :c 3) (:A 1 :B 2 :C 3) 返回執行符號后的值 > (getf (list :a 1 :b 2 :c 3) :a) 1

總結

以上是生活随笔為你收集整理的common lisp 学习第一天 初步接触的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。