青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-19  評論-21  文章-0  trackbacks-0

lisp的功能還是挺強大的,簡單的幾十行代碼就搞定了一個小的“數據庫”(經驗:調試macro的時候可以用macroexpand-1展開該macro,看是否與設想的一樣)。

感受一下lisp吧:

CL-USER> (load "D:/database.lisp")
T
CL-USER> (add-cds)
Title: hacker
Artist: PG
Rating: 10

Ripped[y/n]:  (y or n) y

Another? [y/n]:  (y or n) n
NIL
CL-USER> (save-db "D:/save.db")
((:TITLE "hacker" :ARTIST "PG" :RATING 10 :RIPPED T))
CL-USER> (add-cds)
Title: painter
Artist: PG
Rating: 10

Ripped[y/n]:  (y or n) y

Another? [y/n]:  (y or n) n
NIL
CL-USER> (dump-db)
TITLE: painter
ARTIST:   PG
RATING:   10
RIPPED:   T

TITLE:    hacker
ARTIST:   PG
RATING:   10
RIPPED:   T

NIL
CL-USER> (select (where :title "hacker"))
((:TITLE "hacker" :ARTIST "PG" :RATING 10 :RIPPED T))
CL-USER> (update (where :title "painter") :title "paint")
((:TITLE "paint" :ARTIST "PG" :RATING 10 :RIPPED T)
          (:TITLE "hacker" :ARTIST "PG" :RATING 10 :RIPPED T))
代碼出自practical common lisp 一書,有改動~
(defvar?*db*?nil)

(defun?make
-cd?(title?artist?rating?ripped)
??(list?:title?title?:artist?artist?:rating?rating?:ripped?ripped))

(defun?add
-record?(cd)?(push?cd?*db*))

(defun?dump
-db?()
??(dolist?(cd?
*db*)
????(format?t?
"~{~a:~10t~a~%~}~%"?cd)))

(defun?prompt
-read?(prompt)
??(format?
*query-io*?"~a:?"?prompt)
??(force
-output?*query-io*)
??(read
-line?*query-io*))

(defun?prompt
-for-cd?()
??(make
-cd?
???(prompt
-read?"Title")
???(prompt
-read?"Artist")
???(or?(parse
-integer?(prompt-read?"Rating")?:junk-allowed?t)?0)
???(y
-or-n-p?"Ripped[y/n]:?")))

(defun?add
-cds?()
??(loop?(add
-record?(prompt-for-cd))
?????(
if?(not?(y-or-n-p?"Another??[y/n]:?"))?(return))))

(defun?save
-db?(filename)
??(with
-open-file?(out?filename?:direction?:output?:if-exists?:supersede)
????(with
-standard-io-syntax
??????(print?
*db*?out))))

(defun?load
-db?(filename)
??(with
-open-file?(in?filename)
????(with
-standard-io-syntax
??????(setf?
*db*?(read?in)))))

(defun?select?(selector
-fn)
??(remove
-if-not?selector-fn?*db*))

(defun?make
-comparison-expr?(field?value)
??`(equal?(getf?cd?,field)?,value))

(defun?make
-comparisons-list?(fields)
??(loop?
while?fields
???????collecting?(make
-comparison-expr?(pop?fields)?(pop?fields))))

(defmacro?where?(
&rest?clauses)
??`#
'(lambda?(cd)?(and?,@(make-comparisons-list?clauses))))

;(defun?where?(
&key?title?artist?rating?(ripped?nil?ripped-p))
;??#
'(lambda?(cd)
;??????(and
;???????(
if?title????(equal?(getf?cd?:title)?title)?t)
;???????(
if?artist???(equal?(getf?cd?:artist)?artist)?t)
;???????(
if?rating???(equal?(getf?cd?:rating)?rating)?t)
;???????(
if?ripped-p?(equal?(getf?cd?:ripped)?ripped)?t))))

(defun?make
-set-expr?(field?value)
??`(setf?(getf?row?,field)?,value))

(defun?make
-set-list?(fields)
??(loop?
while?fields
???????collecting?(make
-set-expr?(pop?fields)?(pop?fields))))

(defmacro?update?(selector
-fn?&rest?clauses)
??`(setf?
*db*
?????(mapcar
?????#
'(lambda?(row)?
?????????(when?(funcall?,selector-fn?row)?,@(make-set-list?clauses))
?????????row)?
*db*)))
?????

;(defun?update?(selector
-fn?&key?title?artist?rating?(ripped?nil?ripped-p))
;??(setf?
*db*
;????(mapcar
;?????#
'(lambda?(row)
;?????????(when?(funcall?selector-fn?row)
;???????????(
if?title????(setf?(getf?row?:title)?title))
;???????????(
if?artist???(setf?(getf?row?:artist)?artist))
;???????????(
if?rating???(setf?(getf?row?:rating)?rating))
;???????????(
if?ripped-p?(setf?(getf?row?:ripped)?ripped)))
;?????????row)?
*db*)))

(defun?delete
-rows?(selector-fn)
??(setf?
*db*?(remove-if?selector-fn?*db*)))

posted on 2010-10-01 22:23 hex108 閱讀(1025) 評論(0)  編輯 收藏 引用 所屬分類: Lisp
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产日韩一二三区| 久久久久久久999精品视频| 亚洲日本va午夜在线影院| 久久免费观看视频| 亚洲韩国精品一区| 亚洲乱码一区二区| 国产情人节一区| 美国十次了思思久久精品导航| 久久一二三区| 国产精品99久久久久久有的能看| 一本综合精品| 狠狠色2019综合网| 亚洲精品影院| 国际精品欧美精品| 亚洲激情电影中文字幕| 国产精品入口麻豆原神| 久久人人97超碰人人澡爱香蕉| 另类综合日韩欧美亚洲| 亚洲无玛一区| 久久一区二区三区av| 亚洲一区二区免费在线| 久久久91精品国产| 亚洲视频二区| 久久中文字幕一区| 亚洲资源av| 免费一级欧美片在线播放| 亚洲欧美久久久久一区二区三区| 久久久久国产精品厨房| 亚洲一区二区三区视频| 蜜臀av一级做a爰片久久| 亚洲在线视频免费观看| 免费在线亚洲欧美| 久久久精品tv| 国产精品久久久久久影视 | 亚洲国产导航| 亚洲欧美日韩爽爽影院| 亚洲精品三级| 久久视频国产精品免费视频在线| 亚洲自拍偷拍一区| 欧美精品免费视频| 欧美成人69av| 激情五月综合色婷婷一区二区| 99精品欧美一区二区三区综合在线| 在线播放不卡| 久久精品视频亚洲| 欧美在线视频一区二区三区| 欧美视频在线一区| 99av国产精品欲麻豆| 亚洲人成网站777色婷婷| 久久精品一区二区三区四区| 久久久噜噜噜久久| 久久精品国产第一区二区三区最新章节 | 国产精品入口夜色视频大尺度| 亚洲国产另类久久精品| 亚洲国产岛国毛片在线| 久久精品免费播放| 老司机精品导航| 国自产拍偷拍福利精品免费一| 亚洲欧美日韩视频二区| 欧美一区国产一区| 国产亚洲精品一区二555| 欧美一区=区| 久久香蕉国产线看观看av| 国产在线观看一区| 午夜精品美女久久久久av福利| 欧美一区二区三区的| 国产美女诱惑一区二区| 亚洲欧美日韩中文播放| 久久久久久国产精品一区| 国语精品一区| 久久夜色精品国产噜噜av| 欧美激情亚洲综合一区| 亚洲精品一区二区三区99| 欧美理论电影在线观看| 这里是久久伊人| 久久av在线| 在线观看国产日韩| 欧美激情四色 | 欧美一区二区视频在线观看2020| 国产视频不卡| 老鸭窝毛片一区二区三区| 亚洲国产精品久久精品怡红院| 99国产精品自拍| 国产精品视频xxxx| 久久蜜桃精品| 亚洲日本视频| 欧美在线观看视频一区二区| 一区在线影院| 欧美日韩在线观看一区二区| 亚洲主播在线| 欧美激情中文字幕一区二区| 在线亚洲观看| 狠狠色丁香久久婷婷综合丁香| 欧美成人自拍视频| 亚洲欧美日韩中文播放| 亚洲电影免费观看高清完整版在线观看 | 久热精品视频在线观看一区| 亚洲电影有码| 欧美在线free| 亚洲美女黄网| 国产亚洲欧美aaaa| 欧美三级电影一区| 久久夜色精品亚洲噜噜国产mv| 激情小说亚洲一区| 欧美精品一区二区久久婷婷| 午夜精品av| 99国产精品国产精品毛片| 久久精品人人做人人综合| 日韩视频在线观看国产| 国内精品视频一区| 国产精品va在线| 欧美成人影音| 久久久国产亚洲精品| 亚洲私人影院| 亚洲六月丁香色婷婷综合久久| 久久网站热最新地址| 午夜精品网站| 亚洲天堂第二页| 亚洲美女在线视频| 在线看视频不卡| 国产一区二三区| 国产乱码精品一区二区三| 欧美日韩国产限制| 欧美va亚洲va国产综合| 久久精品免费电影| 欧美一区二区三区的| 亚洲一区二区欧美日韩| 日韩视频欧美视频| 亚洲黄网站在线观看| 欧美高清在线视频| 欧美高清在线| 亚洲电影免费观看高清| 欧美 日韩 国产一区二区在线视频| 久久精品国产精品| 久久久久国产精品一区三寸 | 国产真实久久| 国产日韩欧美a| 国产亚洲精品综合一区91| 国产欧美一级| 国产综合色产| 激情成人在线视频| 亚洲国产精品成人va在线观看| 怡红院精品视频| 亚洲国产精品久久久久秋霞不卡 | 欧美激情国产日韩| 欧美激情中文不卡| 欧美日韩免费观看一区=区三区| 欧美精品一区二区三区蜜臀| 欧美日韩国产在线观看| 欧美日韩在线影院| 国产嫩草影院久久久久| 黑人极品videos精品欧美裸| 国内揄拍国内精品少妇国语| 一区免费观看| 亚洲精品免费在线| 亚洲永久在线观看| 久久成人精品无人区| 久久三级视频| 亚洲黄色三级| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 女女同性女同一区二区三区91| 免费成人小视频| 欧美午夜视频一区二区| 国产日韩欧美精品一区| 亚洲第一黄网| 亚洲一区视频在线| 久久久精品国产一区二区三区 | 欧美高清日韩| 亚洲视频在线观看免费| 欧美伊人久久| 欧美区高清在线| 国产亚洲成av人片在线观看桃| 欲色影视综合吧| 亚洲免费婷婷| 欧美电影电视剧在线观看| 一二三区精品福利视频| 久久av免费一区| 欧美日韩日本网| 极品av少妇一区二区| 亚洲视频欧美在线| 欧美阿v一级看视频| 亚洲网站在线看| 久久亚洲私人国产精品va媚药| 欧美性感一类影片在线播放 | 国产乱码精品一区二区三区五月婷| 黄色国产精品| 午夜在线一区| 亚洲美女av电影| 久久九九国产精品| 国产精品日韩欧美| 亚洲免费久久| 欧美高清hd18日本| 午夜激情一区| 欧美亚洲动漫精品| 99国产精品久久久久老师| 免费成年人欧美视频| 欧美一区二区私人影院日本| 欧美日韩一区二区三区在线看| 亚洲国产乱码最新视频| 久久亚洲二区|