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

隨筆-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>
            中文日韩在线| 欧美a级在线| 国产伦精品一区二区三区视频孕妇 | 亚洲精品欧美极品| 亚洲精品国久久99热| 亚洲视频香蕉人妖| 亚洲欧美精品在线观看| 久久久91精品国产一区二区三区| 久久人人爽人人爽爽久久| 欧美va天堂| 欧美高清在线视频| 久久青草久久| 久久亚洲综合色一区二区三区| 久久精品欧美日韩| 欧美激情第3页| 亚洲国产精选| 欧美四级电影网站| 午夜精品久久99蜜桃的功能介绍| 亚洲一区二区三区视频播放| 亚洲手机在线| 久久视频免费观看| 欧美日韩一区二区在线视频| 99综合视频| 欧美成人免费在线观看| 国产精品久久波多野结衣| 国产一区在线免费观看| 亚洲免费不卡| 久久综合图片| 亚洲综合社区| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美精品精品一区| 伊人婷婷欧美激情| 午夜精品视频一区| 亚洲黄色在线| 久久噜噜噜精品国产亚洲综合| 国产精品久久久久久久久久久久久 | 国产日韩精品入口| 中日韩视频在线观看| 久久久999成人| 欧美在线短视频| 国产区欧美区日韩区| 亚洲午夜视频在线| 亚洲精品一区二区三区av| 国产欧美在线播放| 免费观看日韩av| 久久九九99视频| 欧美日韩国产专区| 亚洲一区精彩视频| 亚洲久久在线| 国产精品久久久久9999吃药| 午夜激情久久久| 久久精品91| 一本大道久久精品懂色aⅴ| 亚洲开发第一视频在线播放| 国产精品美女午夜av| 欧美伊人久久| 老司机午夜精品| 久久综合网色—综合色88| 久久精品一区中文字幕| 久久精品国产亚洲一区二区三区| 99精品99久久久久久宅男| 国产一二精品视频| 久久精品欧美| 亚洲欧洲美洲综合色网| 久久综合中文色婷婷| 欧美一级大片在线观看| 免费高清在线一区| 欧美在线一二三| 亚洲三级毛片| 国产一区二区看久久| 洋洋av久久久久久久一区| 亚洲精品极品| 欧美成人免费在线视频| 久久夜色精品国产欧美乱极品| 欧美人与性动交α欧美精品济南到 | 欧美高清成人| 激情亚洲一区二区三区四区| 亚洲一级二级| 伊人夜夜躁av伊人久久| 亚洲欧美日韩国产一区二区| 亚洲电影免费观看高清| 欧美 日韩 国产 一区| 激情成人av| 免费在线欧美黄色| 欧美午夜a级限制福利片| 久久永久免费| 国产精品久久久久一区二区三区| 免费人成网站在线观看欧美高清| 欧美调教视频| 亚洲第一精品夜夜躁人人躁| 欧美激情亚洲国产| 亚洲精品一区中文| 国产欧美二区| 欧美中文字幕在线观看| 久久av最新网址| 亚洲国产美女久久久久| 日韩午夜精品| 一区二区三区精品视频| 卡通动漫国产精品| 男男成人高潮片免费网站| 亚洲毛片在线看| 亚洲欧美激情在线视频| 亚洲免费av片| 国产精品乱码人人做人人爱| 一区二区三区欧美在线| 欧美在线观看视频| 亚洲日韩欧美视频| 国产一区二区欧美| 国产精品麻豆欧美日韩ww| 午夜欧美大片免费观看| 久久最新视频| 中日韩午夜理伦电影免费| 狠狠色综合一区二区| 国产精品人成在线观看免费| 欧美精品一二三| 国产精品激情| 免费日韩视频| 国产老女人精品毛片久久| 欧美亚洲一区二区在线| 一本色道久久综合狠狠躁篇怎么玩 | 性一交一乱一区二区洋洋av| 亚洲精品视频免费| 亚洲欧洲综合| 亚洲另类视频| 久久精品亚洲精品| 亚洲激情av| 亚洲福利视频二区| 国语自产精品视频在线看一大j8 | 亚洲女人小视频在线观看| 中文久久乱码一区二区| 美女啪啪无遮挡免费久久网站| 亚洲美女性视频| 亚洲开发第一视频在线播放| 一区二区在线视频观看| 国产亚洲视频在线观看| 性伦欧美刺激片在线观看| 欧美日韩人人澡狠狠躁视频| 欧美成熟视频| 在线观看日韩欧美| 亚洲国产精品专区久久| 日韩一二在线观看| 欧美亚洲免费高清在线观看| 久久理论片午夜琪琪电影网| 欧美1区免费| 欧美亚洲视频在线看网址| 亚洲黄色免费| 欧美~级网站不卡| 亚洲国产精品va在线看黑人| 亚洲欧美三级在线| 欧美日韩国产探花| 亚洲精品乱码久久久久久久久 | 欧美—级在线免费片| 欧美小视频在线| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲一区免费视频| 欧美激情日韩| 欧美日韩精品免费看| 国产精品美女一区二区在线观看| 免费一级欧美在线大片| 亚洲免费一在线| 欧美1级日本1级| 在线视频精品一区| 欧美国产先锋| 亚洲精品一品区二品区三品区| 一区二区三区回区在观看免费视频| 亚洲直播在线一区| 欧美大秀在线观看| 久久在线91| 亚洲美女免费视频| 亚洲午夜精品福利| 欧美色大人视频| 亚洲国产高清自拍| 久久综合网hezyo| 久久亚洲春色中文字幕| 亚洲乱码精品一二三四区日韩在线 | 国产精品久久久久免费a∨大胸| 伊人久久久大香线蕉综合直播 | 亚洲网站视频福利| 久久久久这里只有精品| 久久大逼视频| 99国内精品| 欧美日韩一区在线观看| 亚洲一区二区三区四区视频| 在线视频日本亚洲性| 国产在线乱码一区二区三区| 欧美一级黄色网| 亚洲视频www| 99国产成+人+综合+亚洲欧美| 亚洲一区二区四区| 亚洲高清在线播放| 一区二区三区视频观看| 在线观看av不卡| 亚洲欧美一区二区三区在线| 亚洲网站在线观看| 欧美一区二区三区精品 | 玖玖玖国产精品| 欧美日本国产精品| 狂野欧美一区| 狠狠色狠色综合曰曰| 香蕉av777xxx色综合一区|