久久精品中文字幕av,av.涩涩涩涩涩涩涩涩,亚洲国产日韩欧美精品成人久久久,成人福利电影免费在线观看,日产国产原创av,日韩av午夜激情,bt天堂中文字幕,超级碰人妻在线视频,欧美老熟妇久久一区二区

AI寫作智能體 自主規(guī)劃任務(wù),支持聯(lián)網(wǎng)查詢和網(wǎng)頁讀取,多模態(tài)高效創(chuàng)作各類分析報(bào)告、商業(yè)計(jì)劃、營銷方案、教學(xué)內(nèi)容等。 廣告
理解函數(shù)是理解 Lisp 的關(guān)鍵之一。概念上來說,函數(shù)是 Lisp 的核心所在。實(shí)際上呢,函數(shù)是你手邊最有用的工具之一。 [TOC] ## 6.1 全局函數(shù) (Global Functions)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#global-functions "Permalink to this headline") 謂詞?`fboundp`?告訴我們,是否有個(gè)函數(shù)的名字與給定的符號(hào)綁定。如果一個(gè)符號(hào)是函數(shù)的名字,則?`symbol-function`?會(huì)返回它: ~~~ > (fboundp '+) T > (symbol-function '+) #<Compiled-function + 17BA4E> ~~~ 可通過?`symbol-function`?給函數(shù)配置某個(gè)名字: ~~~ (setf (symbol-function 'add2) #'(lambda (x) (+ x 2))) ~~~ 新的全局函數(shù)可以這樣定義,用起來和?`defun`?所定義的函數(shù)一樣: ~~~ > (add2 1) 3 ~~~ 實(shí)際上?`defun`?做了稍微多的工作,將某些像是 ~~~ (defun add2 (x) (+ x 2)) ~~~ 翻譯成上述的?`setf`?表達(dá)式。使用?`defun`?讓程序看起來更美觀,并或多或少幫助了編譯器,但嚴(yán)格來說,沒有?`defun`?也能寫程序。 通過把?`defun`?的第一個(gè)實(shí)參變成這種形式的列表?`(setf?f)`?,你定義了當(dāng)?`setf`?第一個(gè)實(shí)參是?`f`?的函數(shù)調(diào)用時(shí),所會(huì)發(fā)生的事情。下面這對函數(shù)把?`primo`?定義成?`car`?的同義詞: ~~~ (defun primo (lst) (car lst)) (defun (setf primo) (val lst) (setf (car lst) val)) ~~~ 在函數(shù)名是這種形式?`(setf?f)`?的函數(shù)定義中,第一個(gè)實(shí)參代表新的數(shù)值,而剩余的實(shí)參代表了傳給?`f`?的參數(shù)。 現(xiàn)在任何?`primo`?的?`setf`?,會(huì)是上面后者的函數(shù)調(diào)用: ~~~ > (let ((x (list 'a 'b 'c))) (setf (primo x) 480) x) (480 b c) ~~~ 不需要為了定義?`(setf?primo)`?而定義?`primo`?,但這樣的定義通常是成對的。 由于字符串是 Lisp 表達(dá)式,沒有理由它們不能出現(xiàn)在代碼的主體。字符串本身是沒有副作用的,除非它是最后一個(gè)表達(dá)式,否則不會(huì)造成任何差別。如果讓字符串成為?`defun`?定義的函數(shù)主體的第一個(gè)表達(dá)式, ~~~ (defun foo (x) "Implements an enhanced paradigm of diversity" x) ~~~ 那么這個(gè)字符串會(huì)變成函數(shù)的文檔字符串(documentation string)。要取得函數(shù)的文檔字符串,可以通過調(diào)用?`documentation`?來取得: ~~~ > (documentation 'foo 'function) "Implements an enhanced paradigm of diversity" ~~~ ## 6.2 局部函數(shù) (Local Functions)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#local-functions "Permalink to this headline") 通過?`defun`?或?`symbol-function`?搭配?`setf`?定義的函數(shù)是全局函數(shù)。你可以像存取全局變量那樣,在任何地方存取它們。定義局部函數(shù)也是有可能的,局部函數(shù)和局部變量一樣,只在某些上下文內(nèi)可以訪問。 局部函數(shù)可以使用?`labels`?來定義,它是一種像是給函數(shù)使用的?`let`?。它的第一個(gè)實(shí)參是一個(gè)新局部函數(shù)的定義列表,而不是一個(gè)變量規(guī)格說明的列表。列表中的元素為如下形式: ~~~ (name parameters . body) ~~~ 而?`labels`?表達(dá)式剩余的部份,調(diào)用?`name`?就等于調(diào)用?`(lambda?parameters?.?body)`?。 ~~~ > (labels ((add10 (x) (+ x 10)) (consa (x) (cons 'a x))) (consa (add10 3))) (A . 13) ~~~ `labels`?與?`let`?的類比在一個(gè)方面上被打破了。由?`labels`?表達(dá)式所定義的局部函數(shù),可以被其他任何在此定義的函數(shù)引用,包括自己。所以這樣定義一個(gè)遞歸的局部函數(shù)是可能的: ~~~ > (labels ((len (lst) (if (null lst) 0 (+ (len (cdr lst)) 1)))) (len '(a b c))) 3 ~~~ 5.2 節(jié)展示了?`let`?表達(dá)式如何被理解成函數(shù)調(diào)用。?`do`?表達(dá)式同樣可以被解釋成調(diào)用遞歸函數(shù)。這樣形式的?`do`?: ~~~ (do ((x a (b x)) (y c (d y))) ((test x y) (z x y)) (f x y)) ~~~ 等同于 ~~~ (labels ((rec (x y) (cond ((test x y) (z x y)) (t (f x y) (rec (b x) (d y)))))) (rec a c)) ~~~ 這個(gè)模型可以用來解決,任何你對于?`do`?行為仍有疑惑的問題。 ## 6.3 參數(shù)列表 (Parameter Lists)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#parameter-lists "Permalink to this headline") 2.1 節(jié)我們演示過,有了前序表達(dá)式,?`+`?可以接受任何數(shù)量的參數(shù)。從那時(shí)開始,我們看過許多接受不定數(shù)量參數(shù)的函數(shù)。要寫出這樣的函數(shù),我們需要使用一個(gè)叫做剩余(?*rest*?)參數(shù)的東西。 如果我們在函數(shù)的形參列表里的最后一個(gè)變量前,插入?`&rest`?符號(hào),那么當(dāng)這個(gè)函數(shù)被調(diào)用時(shí),這個(gè)變量會(huì)被設(shè)成一個(gè)帶有剩余參數(shù)的列表?,F(xiàn)在我們可以明白?`funcall`?是如何根據(jù)?`apply`?寫成的。它或許可以定義成: ~~~ (defun our-funcall (fn &rest args) (apply fn args)) ~~~ 我們也看過操作符中,有的參數(shù)可以被忽略,并可以缺省設(shè)成特定的值。這樣的參數(shù)稱為選擇性參數(shù)(optional parameters)。(相比之下,普通的參數(shù)有時(shí)稱為必要參數(shù)「required parameters」) 如果符號(hào)?`&optional`?出現(xiàn)在一個(gè)函數(shù)的形參列表時(shí), ~~~ (defun philosoph (thing &optional property) (list thing 'is property)) ~~~ 那么在?`&optional`?之后的參數(shù)都是選擇性的,缺省為?`nil`?: ~~~ > (philosoph 'death) (DEATH IS NIL) ~~~ 我們可以明確指定缺省值,通過將缺省值附在列表里給入。這版的?`philosoph` ~~~ (defun philosoph (thing &optional (property 'fun)) (list thing 'is property)) ~~~ 有著更鼓舞人心的缺省值: ~~~ > (philosoph 'death) (DEATH IS FUN) ~~~ 選擇性參數(shù)的缺省值可以不是常量??梢允侨魏蔚?Lisp 表達(dá)式。若這個(gè)表達(dá)式不是常量,它會(huì)在每次需要用到缺省值時(shí)被重新求值。 一個(gè)關(guān)鍵字參數(shù)(keyword parameter)是一種更靈活的選擇性參數(shù)。如果你把符號(hào)?`&key`?放在一個(gè)形參列表,那在?`&key`?之后的形參都是選擇性的。此外,當(dāng)函數(shù)被調(diào)用時(shí),這些參數(shù)會(huì)被識(shí)別出來,參數(shù)的位置在哪不重要,而是用符號(hào)標(biāo)簽(譯注:?`:`?)識(shí)別出來: ~~~ > (defun keylist (a &key x y z) (list a x y z)) KEYLIST > (keylist 1 :y 2) (1 NIL 2 NIL) > (keylist 1 :y 3 :x 2) (1 2 3 NIL) ~~~ 和普通的選擇性參數(shù)一樣,關(guān)鍵字參數(shù)缺省值為?`nil`?,但可以在形參列表中明確地指定缺省值。 關(guān)鍵字與其相關(guān)的參數(shù)可以被剩余參數(shù)收集起來,并傳遞給其他期望收到這些參數(shù)的函數(shù)。舉例來說,我們可以這樣定義?`adjoin`?: ~~~ (defun our-adjoin (obj lst &rest args) (if (apply #'member obj lst args) lst (cons obj lst))) ~~~ 由于?`adjoin`?與?`member`?接受一樣的關(guān)鍵字,我們可以用剩余參數(shù)收集它們,再傳給?`member`?函數(shù)。 5.2 節(jié)介紹過?`destructuring-bind`?宏。在通常情況下,每個(gè)模式(pattern)中作為第一個(gè)參數(shù)的子樹,可以與函數(shù)的參數(shù)列表一樣復(fù)雜: ~~~ (destructuring-bind ((&key w x) &rest y) '((:w 3) a) (list w x y)) (3 NIL (A)) ~~~ ## 6.4 示例:實(shí)用函數(shù) (Example: Utilities)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#example-utilities "Permalink to this headline") 2.6 節(jié)提到過,Lisp 大部分是由 Lisp 函數(shù)組成,這些函數(shù)與你可以自己定義的函數(shù)一樣。這是程序語言中一個(gè)有用的特色:你不需要改變你的想法來配合語言,因?yàn)槟憧梢愿淖冋Z言來配合你的想法。如果你想要 Common Lisp 有某個(gè)特定的函數(shù),自己寫一個(gè),而這個(gè)函數(shù)會(huì)成為語言的一部分,就跟內(nèi)置的?`+`?或?`eql`?一樣。 有經(jīng)驗(yàn)的 Lisp 程序員,由上而下(top-down)也由下而上 (bottom-up)地工作。當(dāng)他們朝著語言撰寫程序的同時(shí),也打造了一個(gè)更適合他們程序的語言。通過這種方式,語言與程序結(jié)合的更好,也更好用。 寫來擴(kuò)展 Lisp 的操作符稱為實(shí)用函數(shù)(utilities)。當(dāng)你寫了更多 Lisp 程序時(shí),會(huì)發(fā)現(xiàn)你開發(fā)了一系列的程序,而在一個(gè)項(xiàng)目寫過許多的實(shí)用函數(shù),下個(gè)項(xiàng)目里也會(huì)派上用場。 專業(yè)的程序員常發(fā)現(xiàn),手邊正在寫的程序,與過去所寫的程序有很大的關(guān)聯(lián)。這就是軟件重用讓人聽起來很吸引人的原因。但重用已經(jīng)被聯(lián)想成面向?qū)ο蟪绦蛟O(shè)計(jì)。但軟件不需要是面向?qū)ο蟮牟拍苤赜?── 這是很明顯的,我們看看程序語言(換言之,編譯器),是重用性最高的軟件。 要獲得可重用軟件的方法是,由下而上地寫程序,而程序不需要是面向?qū)ο蟮牟拍軌蛴上露系貙懗?。?shí)際上,函數(shù)式風(fēng)格相比之下,更適合寫出重用軟件。想想看?`sort`?。在 Common Lisp 你幾乎不需要自己寫排序程序;?`sort`?是如此的快與普遍,以致于它不值得我們煩惱。這才是可重用軟件。 ~~~ (defun single? (lst) (and (consp lst) (null (cdr lst)))) (defun append1 (lst obj) (append lst (list obj))) (defun map-int (fn n) (let ((acc nil)) (dotimes (i n) (push (funcall fn i) acc)) (nreverse acc))) (defun filter (fn lst) (let ((acc nil)) (dolist (x lst) (let ((val (funcall fn x))) (if val (push val acc)))) (nreverse acc))) (defun most (fn lst) (if (null lst) (values nil nil) (let* ((wins (car lst)) (max (funcall fn wins))) (dolist (obj (cdr lst)) (let ((score (funcall fn obj))) (when (> score max) (setf wins obj max score)))) (values wins max)))) ~~~ **圖 6.1 實(shí)用函數(shù)** 你可以通過撰寫實(shí)用函數(shù),在程序里做到同樣的事情。圖 6.1 挑選了一組實(shí)用的函數(shù)。前兩個(gè)?`single?`?與?`append1`?函數(shù),放在這的原因是要演示,即便是小程序也很有用。前一個(gè)函數(shù)?`single?`?,當(dāng)實(shí)參是只有一個(gè)元素的列表時(shí),返回真。 ~~~ > (single? '(a)) T ~~~ 而后一個(gè)函數(shù)?`append1`?和?`cons`?很像,但在列表后面新增一個(gè)元素,而不是在前面: ~~~ > (append1 '(a b c) 'd) (A B C D) ~~~ 下個(gè)實(shí)用函數(shù)是?`map-int`?,接受一個(gè)函數(shù)與整數(shù)?`n`?,并返回將函數(shù)應(yīng)用至整數(shù)?`0`?到?`n-1`?的結(jié)果的列表。 這在測試的時(shí)候非常好用(一個(gè) Lisp 的優(yōu)點(diǎn)之一是,互動(dòng)環(huán)境讓你可以輕松地寫出測試)。如果我們只想要一個(gè)?`0`?到?`9`?的列表,我們可以: ~~~ > (map-int #'identity 10) (0 1 2 3 4 5 6 7 8 9) ~~~ 然而要是我們想要一個(gè)具有 10 個(gè)隨機(jī)數(shù)的列表,每個(gè)數(shù)介于 0 至 99 之間(包含 99),我們可以忽略參數(shù)并只要: ~~~ > (map-int #'(lambda (x) (random 100)) 10) (85 50 73 64 28 21 40 67 5 32) ~~~ `map-int`?的定義說明了 Lisp 構(gòu)造列表的標(biāo)準(zhǔn)做法(idiom)之一。我們創(chuàng)建一個(gè)累積器?`acc`?,初始化是?`nil`?,并將之后的對象累積起來。當(dāng)累積完畢時(shí),反轉(zhuǎn)累積器。?[[1]](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#id5) 我們在?`filter`?中看到同樣的做法。?`filter`?接受一個(gè)函數(shù)與一個(gè)列表,將函數(shù)應(yīng)用至列表元素上時(shí),返回所有非?`nil`?元素: ~~~ > (filter #'(lambda (x) (and (evenp x) (+ x 10))) '(1 2 3 4 5 6 7)) (12 14 16) ~~~ 另一種思考?`filter`?的方式是用通用版本的?`remove-if`?。 圖 6.1 的最后一個(gè)函數(shù),?`most`?,根據(jù)某個(gè)評分函數(shù)(scoring function),返回列表中最高分的元素。它返回兩個(gè)值,獲勝的元素以及它的分?jǐn)?shù): ~~~ > (most #'length '((a b) (a b c) (a))) (A B C) 3 ~~~ 如果平手的話,返回先馳得點(diǎn)的元素。 注意圖 6.1 的最后三個(gè)函數(shù),它們?nèi)邮芎瘮?shù)作為參數(shù)。 Lisp 使得將函數(shù)作為參數(shù)傳遞變得便捷,而這也是為什么,Lisp 適合由下而上程序設(shè)計(jì)的原因之一。成功的實(shí)用函數(shù)必須是通用的,當(dāng)你可以將細(xì)節(jié)作為函數(shù)參數(shù)傳遞時(shí),要將通用的部份抽象起來就變得容易許多。 本節(jié)給出的函數(shù)是通用的實(shí)用函數(shù)??梢杂迷谌魏畏N類的程序。但也可以替特定種類的程序撰寫實(shí)用函數(shù)。確實(shí),當(dāng)我們談到宏時(shí),你可以凌駕于 Lisp 之上,寫出自己的特定語言,如果你想這么做的話。如果你想要寫可重用軟件,看起來這是最靠譜的方式。 ## 6.5 閉包 (Closures)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#closures "Permalink to this headline") 函數(shù)可以如表達(dá)式的值,或是其它對象那樣被返回。以下是接受一個(gè)實(shí)參,并依其類型返回特定的結(jié)合函數(shù): ~~~ (defun combiner (x) (typecase x (number #'+) (list #'append) (t #'list))) ~~~ 在這之上,我們可以創(chuàng)建一個(gè)通用的結(jié)合函數(shù): ~~~ (defun combine (&rest args) (apply (combiner (car args)) args)) ~~~ 它接受任何類型的參數(shù),并以適合它們類型的方式結(jié)合。(為了簡化這個(gè)例子,我們假定所有的實(shí)參,都有著一樣的類型。) ~~~ > (combine 2 3) 5 > (combine '(a b) '(c d)) (A B C D) ~~~ 2.10 小節(jié)提過詞法變量(lexical variables)只在被定義的上下文內(nèi)有效。伴隨這個(gè)限制而來的是,只要那個(gè)上下文還有在使用,它們就保證會(huì)是有效的。 如果函數(shù)在詞法變量的作用域里被定義時(shí),函數(shù)仍可引用到那個(gè)變量,即便函數(shù)被作為一個(gè)值返回了,返回至詞法變量被創(chuàng)建的上下文之外。下面我們創(chuàng)建了一個(gè)把實(shí)參加上?`3`?的函數(shù): ~~~ > (setf fn (let ((i 3)) #'(lambda (x) (+ x i)))) #<Interpreted-Function C0A51E> > (funcall fn 2) 5 ~~~ 當(dāng)函數(shù)引用到外部定義的變量時(shí),這外部定義的變量稱為自由變量(free variable)。函數(shù)引用到自由的詞法變量時(shí),稱之為閉包(closure)。?[[2]](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#id6)?只要函數(shù)還存在,變量就必須一起存在。 閉包結(jié)合了函數(shù)與環(huán)境(environment);無論何時(shí),當(dāng)一個(gè)函數(shù)引用到周圍詞法環(huán)境的某個(gè)東西時(shí),閉包就被隱式地創(chuàng)建出來了。這悄悄地發(fā)生在像是下面這個(gè)函數(shù),是一樣的概念: ~~~ (defun add-to-list (num lst) (mapcar #'(lambda (x) (+ x num)) lst)) ~~~ 這函數(shù)接受一個(gè)數(shù)字及列表,并返回一個(gè)列表,列表元素是元素與傳入數(shù)字的和。在 lambda 表達(dá)式里的變量?`num`?是自由的,所以像是這樣的情況,我們傳遞了一個(gè)閉包給?`mapcar`?。 一個(gè)更顯著的例子會(huì)是函數(shù)在被調(diào)用時(shí),每次都返回不同的閉包。下面這個(gè)函數(shù)返回一個(gè)加法器(adder): ~~~ (defun make-adder (n) #'(lambda (x) (+ x n))) ~~~ 它接受一個(gè)數(shù)字,并返回一個(gè)將該數(shù)字與其參數(shù)相加的閉包(函數(shù))。 ~~~ > (setf add3 (make-adder 3)) #<Interpreted-Function COEBF6> > (funcall add3 2) 5 > (setf add27 (make-adder 27)) #<Interpreted-Function C0EE4E> > (funcall add27 2) 29 ~~~ 我們可以產(chǎn)生共享變量的數(shù)個(gè)閉包。下面我們定義共享一個(gè)計(jì)數(shù)器的兩個(gè)函數(shù): ~~~ (let ((counter 0)) (defun reset () (setf counter 0)) (defun stamp () (setf counter (+ counter 1)))) ~~~ 這樣的一對函數(shù)或許可以用來創(chuàng)建時(shí)間戳章(time-stamps)。每次我們調(diào)用?`stamp`?時(shí),我們獲得一個(gè)比之前高的數(shù)字,而調(diào)用`reset`?我們可以將計(jì)數(shù)器歸零: ~~~ > (list (stamp) (stamp) (reset) (stamp)) (1 2 0 1) ~~~ 你可以使用全局計(jì)數(shù)器來做到同樣的事情,但這樣子使用計(jì)數(shù)器,可以保護(hù)計(jì)數(shù)器被非預(yù)期的引用。 Common Lisp 有一個(gè)內(nèi)置的函數(shù)?`complement`?函數(shù),接受一個(gè)謂詞,并返回謂詞的補(bǔ)數(shù)(complement)。比如: ~~~ > (mapcar (complement #'oddp) '(1 2 3 4 5 6)) (NIL T NIL T NIL T) ~~~ 有了閉包以后,很容易就可以寫出這樣的函數(shù): ~~~ (defun our-complement (f) #'(lambda (&rest args) (not (apply f args)))) ~~~ 如果你停下來好好想想,會(huì)發(fā)現(xiàn)這是個(gè)非凡的小例子;而這僅是冰山一角。閉包是 Lisp 特有的美妙事物之一。閉包開創(chuàng)了一種在別的語言當(dāng)中,像是不可思議的程序設(shè)計(jì)方法。 ## 6.6 示例:函數(shù)構(gòu)造器 (Example: Function Builders)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#example-function-builders "Permalink to this headline") Dylan 是 Common Lisp 與 Scheme 的混合物,有著 Pascal 一般的語法。它有著大量返回函數(shù)的函數(shù):除了上一節(jié)我們所看過的complement?,Dylan 包含:?`compose`?、?`disjoin`?、?`conjoin`?、?`curry`?、?`rcurry`?以及?`always`?。圖 6.2 有這些函數(shù)的 Common Lisp 實(shí)現(xiàn),而圖 6.3 演示了一些從定義延伸出的等價(jià)函數(shù)。 ~~~ (defun compose (&rest fns) (destructuring-bind (fn1 . rest) (reverse fns) #'(lambda (&rest args) (reduce #'(lambda (v f) (funcall f v)) rest :initial-value (apply fn1 args))))) (defun disjoin (fn &rest fns) (if (null fns) fn (let ((disj (apply #'disjoin fns))) #'(lambda (&rest args) (or (apply fn args) (apply disj args)))))) (defun conjoin (fn &rest fns) (if (null fns) fn (let ((conj (apply #'conjoin fns))) #'(lambda (&rest args) (and (apply fn args) (apply conj args)))))) (defun curry (fn &rest args) #'(lambda (&rest args2) (apply fn (append args args2)))) (defun rcurry (fn &rest args) #'(lambda (&rest args2) (apply fn (append args2 args)))) (defun always (x) #'(lambda (&rest args) x)) ~~~ **圖 6.2 Dylan 函數(shù)建構(gòu)器** 首先,?`compose`?接受一個(gè)或多個(gè)函數(shù),并返回一個(gè)依序?qū)⑵鋮?shù)應(yīng)用的新函數(shù),即, ~~~ (compose #'a #'b #'c) ~~~ 返回一個(gè)函數(shù)等同于 ~~~ #'(lambda (&rest args) (a (b (apply #'c args)))) ~~~ 這代表著?`compose`?的最后一個(gè)實(shí)參,可以是任意長度,但其它函數(shù)只能接受一個(gè)實(shí)參。 下面我們建構(gòu)了一個(gè)函數(shù),先給取參數(shù)的平方根,取整后再放回列表里,接著返回: ~~~ > (mapcar (compose #'list #'round #'sqrt) '(4 9 16 25)) ((2) (3) (4) (5)) ~~~ 接下來的兩個(gè)函數(shù),?`disjoin`?及?`conjoin`?同接受一個(gè)或多個(gè)謂詞作為參數(shù):?`disjoin`?當(dāng)任一謂詞返回真時(shí),返回真,而?`conjoin`?當(dāng)所有謂詞返回真時(shí),返回真。 ~~~ > (mapcar (disjoin #'integerp #'symbolp) '(a "a" 2 3)) (T NIL T T) ~~~ ~~~ > (mapcar (conjoin #'integerp #'symbolp) '(a "a" 2 3)) (NIL NIL NIL T) ~~~ 若考慮將謂詞定義成集合,?`disjoin`?返回傳入?yún)?shù)的聯(lián)集(union),而?`conjoin`?則是返回傳入?yún)?shù)的交集(intersection)。 ~~~ cddr = (compose #'cdr #'cdr) nth = (compose #'car #'nthcdr) atom = (compose #'not #'consp) = (rcurry #'typep 'atom) <= = (disjoin #'< #'=) listp = (disjoin #'< #'=) = (rcurry #'typep 'list) 1+ = (curry #'+ 1) = (rcurry #'+ 1) 1- = (rcurry #'- 1) mapcan = (compose (curry #'apply #'nconc) #'mapcar complement = (curry #'compose #'not) ~~~ **圖 6.3 某些等價(jià)函數(shù)** 函數(shù)?`curry`?與?`rcurry`?(“right curry”)精神上與前一小節(jié)的?`make-adder`?相同。兩者皆接受一個(gè)函數(shù)及某些參數(shù),并返回一個(gè)期望剩余參數(shù)的新函數(shù)。下列任一個(gè)函數(shù)等同于?`(make-adder?3)`?: ~~~ (curry #'+ 3) (rcurry #'+ 3) ~~~ 當(dāng)函數(shù)的參數(shù)順序重要時(shí),很明顯可以看出?`curry`?與?`rcurry`?的差別。如果我們?`curry?#'-`?,我們得到一個(gè)用其參數(shù)減去某特定數(shù)的函數(shù), ~~~ (funcall (curry #'- 3) 2) 1 ~~~ 而當(dāng)我們?`rcurry?#'-`?時(shí),我們得到一個(gè)用某特定數(shù)減去其參數(shù)的函數(shù): ~~~ (funcall (rcurry #'- 3) 2) -1 ~~~ 最后,?`always`?函數(shù)是 Common Lisp 函數(shù)?`constantly`?。接受一個(gè)參數(shù)并原封不動(dòng)返回此參數(shù)的函數(shù)。和?`identity`?一樣,在很多需要傳入函數(shù)參數(shù)的情況下很有用。 ## 6.7 動(dòng)態(tài)作用域 (Dynamic Sc??ope)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#dynamic-scope "Permalink to this headline") 2.11 小節(jié)解釋過局部與全局變量的差別。實(shí)際的差別是詞法作用域(lexical scope)的詞法變量(lexical variable),與動(dòng)態(tài)作用域(dynamic scope)的特別變量(special variable)的區(qū)別。但這倆幾乎是沒有區(qū)別,因?yàn)榫植孔兞繋缀蹩偸鞘窃~法變量,而全局變量總是是特別變量。 在詞法作用域下,一個(gè)符號(hào)引用到上下文中符號(hào)名字出現(xiàn)的地方。局部變量缺省有著詞法作用域。所以如果我們在一個(gè)環(huán)境里定義一個(gè)函數(shù),其中有一個(gè)變量叫做?`x`?, ~~~ (let ((x 10)) (defun foo () x)) ~~~ 則無論?`foo`?被調(diào)用時(shí)有存在其它的?`x`?,主體內(nèi)的?`x`?都會(huì)引用到那個(gè)變量: ~~~ > (let ((x 20)) (foo)) 10 ~~~ 而動(dòng)態(tài)作用域,我們在環(huán)境中函數(shù)被調(diào)用的地方尋找變量。要使一個(gè)變量是動(dòng)態(tài)作用域的,我們需要在任何它出現(xiàn)的上下文中聲明它是?`special`?。如果我們這樣定義?`foo`?: ~~~ (let ((x 10)) (defun foo () (declare (special x)) x)) ~~~ 則函數(shù)內(nèi)的?`x`?就不再引用到函數(shù)定義里的那個(gè)詞法變量,但會(huì)引用到函數(shù)被調(diào)用時(shí),當(dāng)下所存在的任何特別變量?`x`?: ~~~ > (let ((x 20)) (declare (special x)) (foo)) 20 ~~~ 新的變量被創(chuàng)建出來之后, 一個(gè)?`declare`?調(diào)用可以在代碼的任何地方出現(xiàn)。?`special`?聲明是獨(dú)一無二的,因?yàn)樗梢愿淖兂绦虻男袨椤?13 章將討論其它種類的聲明。所有其它的聲明,只是給編譯器的建議;或許可以使程序運(yùn)行的更快,但不會(huì)改變程序的行為。 通過在頂層調(diào)用?`setf`?來配置全局變量,是隱式地將變量聲明為特殊變量: ~~~ > (setf x 30) 30 > (foo) 30 ~~~ 在一個(gè)文件里的代碼,如果你不想依賴隱式的特殊聲明,可以使用?`defparameter`?取代,讓程序看起來更簡潔。 動(dòng)態(tài)作用域什么時(shí)候會(huì)派上用場呢?通常用來暫時(shí)給某個(gè)全局變量賦新值。舉例來說,有 11 個(gè)變量來控制對象印出的方式,包括了`*print-base*`?,缺省是?`10`?。如果你想要用 16 進(jìn)制顯示數(shù)字,你可以重新綁定?`*print-base*`?: ~~~ > (let ((*print-base* 16)) (princ 32)) 20 32 ~~~ 這里顯示了兩件事情,由?`princ`?產(chǎn)生的輸出,以及它所返回的值。他們代表著同樣的數(shù)字,第一次在被印出時(shí),用 16 進(jìn)制顯示,而第二次,因?yàn)樵?`let`?表達(dá)式外部,所以是用十進(jìn)制顯示,因?yàn)?`*print-base*`?回到之前的數(shù)值,?`10`?。 ## 6.8 編譯 (Compilation)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#compilation "Permalink to this headline") Common Lisp 函數(shù)可以獨(dú)立被編譯或挨個(gè)文件編譯。如果你只是在頂層輸入一個(gè)?`defun`?表達(dá)式: ~~~ > (defun foo (x) (+ x 1)) FOO ~~~ 許多實(shí)現(xiàn)會(huì)創(chuàng)建一個(gè)直譯的函數(shù)(interpreted function)。你可以將函數(shù)傳給?`compiled-function-p`?來檢查一個(gè)函數(shù)是否有被編譯: ~~~ > (compiled-function-p #'foo) NIL ~~~ 若你將?`foo`?函數(shù)名傳給?`compile`?: ~~~ > (compile 'foo) FOO ~~~ 則這個(gè)函數(shù)會(huì)被編譯,而直譯的定義會(huì)被編譯出來的取代。編譯與直譯函數(shù)的行為一樣,只不過對?`compiled-function-p`?來說不一樣。 你可以把列表作為參數(shù)傳給?`compile`?。這種?`compile`?的用法在 161 頁 (譯注: 10.1 小節(jié))。 有一種函數(shù)你不能作為參數(shù)傳給?`compile`?:一個(gè)像是?`stamp`?或是?`reset`?這種,在頂層明確使用詞法上下文輸入的函數(shù) (即?`let`?)?[[3]](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#id7)在一個(gè)文件里面定義這些函數(shù),接著編譯然后載入文件是可以的。這么限制直譯的代碼的是實(shí)作的原因,而不是因?yàn)樵谠~法上下文里明確定義函數(shù)有什么問題。 通常要編譯 Lisp 代碼不是挨個(gè)函數(shù)編譯,而是使用?`compile-file`?編譯整個(gè)文件。這個(gè)函數(shù)接受一個(gè)文件名,并創(chuàng)建一個(gè)原始碼的編譯版本 ── 通常會(huì)有同樣的名稱,但不同的擴(kuò)展名。當(dāng)編譯過的文件被載入時(shí),?`compiled-function-p`?應(yīng)給所有定義在文件內(nèi)的函數(shù)返回真。 當(dāng)一個(gè)函數(shù)包含在另一個(gè)函數(shù)內(nèi)時(shí),包含它的函數(shù)會(huì)被編譯,而且內(nèi)部的函數(shù)也會(huì)被編譯。所以?`make-adder`?(108 頁)被編譯時(shí),它會(huì)返回編譯的函數(shù): ~~~ > (compile 'make-adder) MAKE-ADDER > (compiled-function-p (make-adder 2)) T ~~~ ## 6.9 使用遞歸 (Using Recursion)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#using-recursion "Permalink to this headline") 比起多數(shù)別的語言,遞歸在 Lisp 中扮演了一個(gè)重要的角色。這主要有三個(gè)原因: 1. 函數(shù)式程序設(shè)計(jì)。遞歸演算法有副作用的可能性較低。 2. 遞歸數(shù)據(jù)結(jié)構(gòu)。 Lisp 隱式地使用了指標(biāo),使得遞歸地定義數(shù)據(jù)結(jié)構(gòu)變簡單了。最常見的是用在列表:一個(gè)列表的遞歸定義,列表為空表,或是一個(gè)?`cons`?,其中?`cdr`?也是個(gè)列表。 3. 優(yōu)雅性。Lisp 程序員非常關(guān)心它們的程序是否美麗,而遞歸演算法通常比迭代演算法來得優(yōu)雅。 學(xué)生們起初會(huì)覺得遞歸很難理解。但 3.9 節(jié)指出了,如果你想要知道是否正確,不需要去想遞歸函數(shù)所有的調(diào)用過程。 同樣的如果你想寫一個(gè)遞歸函數(shù)。如果你可以描述問題是怎么遞歸解決的,通常很容易將解法轉(zhuǎn)成代碼。要使用遞歸來解決一個(gè)問題,你需要做兩件事: 1. 你必須要示范如何解決問題的一般情況,通過將問題切分成有限小并更小的子問題。 2. 你必須要示范如何通過 ── 有限的步驟,來解決最小的問題 ── 基本用例。 如果這兩件事完成了,那問題就解決了。因?yàn)檫f歸每次都將問題變得更小,而一個(gè)有限的問題終究會(huì)被解決的,而最小的問題僅需幾個(gè)有限的步驟就能解決。 舉例來說,下面這個(gè)找到一個(gè)正規(guī)列表(proper list)長度的遞歸算法,我們每次遞歸時(shí),都可以找到更小列表的長度: 1. 在一般情況下,一個(gè)正規(guī)列表的長度是它的?`cdr`?加一。 2. 基本用例,空列表長度為?`0`?。 當(dāng)這個(gè)描述翻譯成代碼時(shí),先處理基本用例;但公式化遞歸演算法時(shí),我們通常從一般情況下手。 前述的演算法,明確地描述了一種找到正規(guī)列表長度的方法。當(dāng)你定義一個(gè)遞歸函數(shù)時(shí),你必須要確定你在分解問題時(shí),問題實(shí)際上越變越小。取得一個(gè)正規(guī)列表的?`cdr`?會(huì)給出?`length`?更小的子問題,但取得環(huán)狀列表(circular list)的?`cdr`?不會(huì)。 這里有兩個(gè)遞歸算法的示例。假定參數(shù)是有限的。注意第二個(gè)示例,我們每次遞歸時(shí),將問題分成兩個(gè)更小的問題: 第一個(gè)例子,?`member`?函數(shù),我們說某物是列表的成員,需滿足:如果它是第一個(gè)元素的成員或是?`member`?的?`cdr`?的成員。但空列表沒有任何成員。 第二個(gè)例子,?`copy-tree`?一個(gè)?`cons`?的?`copy-tree`?,是一個(gè)由?`cons`?的?`car`?的?`copy-tree`?與?`cdr`?的?`copy-tree`?所組成的。一個(gè)原子的?`copy-tree`?是它自己。 一旦你可以這樣描述算法,要寫出遞歸函數(shù)只差一步之遙。 某些算法通常是這樣表達(dá)最自然,而某些算法不是。你可能需要翻回前面,試試不使用遞歸來定義?`our-copy-tree`?(41 頁,譯注: 3.8 小節(jié))。另一方面來說,23 頁 (譯注: 2.13 節(jié)) 迭代版本的?`show-squares`?可能更容易比 24 頁的遞歸版本要容易理解。某些時(shí)候是很難看出哪個(gè)形式比較自然,直到你試著去寫出程序來。 如果你關(guān)心效率,有兩個(gè)你需要考慮的議題。第一,尾遞歸(tail-recursive),會(huì)在 13.2 節(jié)討論。一個(gè)好的編譯器,使用循環(huán)或是尾遞歸的速度,應(yīng)該是沒有或是區(qū)別很小的。然而如果你需要使函數(shù)變成尾遞歸的形式時(shí),或許直接用迭代會(huì)更好。 另一個(gè)需要銘記在心的議題是,最顯而易見的遞歸算法,不一定是最有效的。經(jīng)典的例子是費(fèi)氏函數(shù)。它是這樣遞歸地被定義的, > 1. Fib(0) = Fib(1) = 1 > 2. Fib(n) = Fib(n-1)+Fib(n-2) 直接翻譯這個(gè)定義, ~~~ (defun fib (n) (if (<= n 1) 1 (+ (fib (- n 1)) (fib (- n 2))))) ~~~ 這樣是效率極差的。一次又一次的重復(fù)計(jì)算。如果你要找?`(fib?10)`?,這個(gè)函數(shù)計(jì)算?`(fib?9)`?與?`(fib?8)`?。但要計(jì)算出?`(fib?9)`,它需要再次計(jì)算?`(fib?8)`?,等等。 下面是一個(gè)算出同樣結(jié)果的迭代版本: ~~~ (defun fib (n) (do ((i n (- i 1)) (f1 1 (+ f1 f2)) (f2 1 f1)) ((<= i 1) f1))) ~~~ 迭代的版本不如遞歸版本來得直觀,但是效率遠(yuǎn)遠(yuǎn)高出許多。這樣的事情在實(shí)踐中常發(fā)生嗎?非常少 ── 這也是為什么所有的教科書都使用一樣的例子 ── 但這是需要注意的事。 ## Chapter 6 總結(jié) (Summary)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#chapter-6-summary "Permalink to this headline") 1. 命名函數(shù)是一個(gè)存在符號(hào)的?`symbol-function`?部分的函數(shù)。?`defun`?宏隱藏了這樣的細(xì)節(jié)。它也允許你定義文檔字符串(documentation string),并指定?`setf`?要怎么處理函數(shù)調(diào)用。 2. 定義局部函數(shù)是有可能的,與定義局部變量有相似的精神。 3. 函數(shù)可以有選擇性參數(shù)(optional)、剩余(rest)以及關(guān)鍵字(keyword)參數(shù)。 4. 實(shí)用函數(shù)是 Lisp 的擴(kuò)展。他們是由下而上編程的小規(guī)模示例。 5. 只要有某物引用到詞法變量時(shí),它們會(huì)一直存在。閉包是引用到自由變量的函數(shù)。你可以寫出返回閉包的函數(shù)。 6. Dylan 提供了構(gòu)造函數(shù)的函數(shù)。很簡單就可以使用閉包,然后在 Common Lisp 中實(shí)現(xiàn)它們。 7. 特別變量(special variable)有動(dòng)態(tài)作用域 (dynamic scope)。 8. Lisp 函數(shù)可以單獨(dú)編譯,或(更常見)編譯整個(gè)文件。 9. 一個(gè)遞歸演算法通過將問題細(xì)分成更小丶更小的子問題來解決問題。 ## Chapter 6 練習(xí) (Exercises)[](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#chapter-6-exercises "Permalink to this headline") 1. 定義一個(gè)?`tokens`?版本 (67 頁),接受?`:test`?與?`:start`?參數(shù),缺省分別是?`#'constituent`?與?`0`?。(譯注: 67 頁在 4.5 小節(jié)) 2. 定義一個(gè)?`bin-search`?(60 頁)的版本,接受?`:key`?,?`:test`?,?`start`?與?`end`?參數(shù),有著一般的意義與缺省值。(譯注: 60 頁在 4.1 小節(jié)) 3. 定義一個(gè)函數(shù),接受任何數(shù)目的參數(shù),并返回傳入的參數(shù)。 4. 修改?`most`?函數(shù) (105 頁),使其返回 2 個(gè)數(shù)值,一個(gè)列表中最高分的兩個(gè)元素。(譯注: 105 頁在 6.4 小節(jié)) 5. 用?`filter`?(105 頁) 來定義?`remove-if`?(沒有關(guān)鍵字)。(譯注: 105 頁在 6.4 小節(jié)) 6. 定義一個(gè)函數(shù),接受一個(gè)參數(shù)丶一個(gè)數(shù)字,并返回目前傳入?yún)?shù)中最大的那個(gè)。 7. 定義一個(gè)函數(shù),接受一個(gè)參數(shù)丶一個(gè)數(shù)字,若傳入?yún)?shù)比上個(gè)參數(shù)大時(shí),返回真。函數(shù)第一次調(diào)用時(shí)應(yīng)返回?`nil`?。 8. 假設(shè)?`expensive`?是一個(gè)接受一個(gè)參數(shù)的函數(shù),一個(gè)介于 0 至 100 的整數(shù)(包含 100),返回一個(gè)耗時(shí)的計(jì)算結(jié)果。定義一個(gè)函數(shù)`frugal`?來返回同樣的答案,但僅在沒見過傳入?yún)?shù)時(shí)調(diào)用?`expensive`?。 9. 定義一個(gè)像是?`apply`?的函數(shù),但在任何數(shù)字印出前,缺省用 8 進(jìn)制印出。 腳注 [[1]](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#id2) | 在這個(gè)情況下,?`nreverse`?(在 222 頁描述)和?`reverse`?做一樣的事情,但更有效率。 [[2]](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#id3) | “閉包”這個(gè)名字是早期的 Lisp 方言流傳而來。它是從閉包需要在動(dòng)態(tài)作用域里實(shí)現(xiàn)的方式衍生而來。 [[3]](http://acl.readthedocs.org/en/latest/zhCN/ch6-cn.html#id4) | 以前的 ANSI Common Lisp,?`compile`?的第一個(gè)參數(shù)也不能是一個(gè)已經(jīng)編譯好的函數(shù)。
av福利网站在线观看| 成人黄片av在线播放| 蜜桃视频在线观看一区精品| ass日本丰满熟妇pics| 欧美日韩精品亚洲欧美| 337p亚洲精品色噜噜| 亚洲欧美日韩在线中文字幕小| 在线不卡日韩视频播放| 人人狠狠久久综合网| 日韩亚洲丝袜系列| 国产成人精品视频免费网站| 亚洲一区视频大全| 香蕉在线蕉久在线| 香蕉久久a v一区二区三区| 欧美一区二区三区成人免费看| 四十路av熟女俱乐部| 中文字幕婷婷网站| 大香蕉大香蕉大香蕉大香蕉大| 国产天堂avwww| 日韩在线观看免费全集网站| 日韩中文字幕在线网站| 男人的天堂久久久亚洲| 久久精品琪琪男人的天堂| 蜜桃精品一区二区三区在| 中文字幕日韩久久精品tv| 少妇人妻视频在线观看| 香蕉在线蕉久在线| 精品视频在线观看一区二区97| 日韩在线免费视频精品| 秋霞电影韩国一区二区二区三区| 久久成人福利视频资源| 五月黄色激情视频| 亚洲乳大丰满中文字幕少妇av| 蜜臀久久99精品久久久久久久久| 91免费av在线观看| 婷婷在线综合观看视频| 精品一区二区三区四区人妻69| 丰满少妇精品一区二区| 91超碰免费在线播放| 人妻办公室被强d在线电影| 国产日韩欧美人妻在线观看| 国产一区二区三区四区中文字幕| 国产成人免费精品视频大全| 91精品人妻一区二区三区四区| 又爽又黄的免费视频91| 激情一区日韩一区欧美一区| 国产高潮国产高潮久久久久久91| 日韩高清av一区| 人妻熟女视频免费观看| 日韩精品在线视频播放| 日韩免费美女电影| 亚洲精品熟女中文字幕| 久久午夜福利电影免费试看| 久久精品久久一区二区三区| av在线免费在线观看av| 国产精品久久久久国产| 五月婷婷激情四射综合网| 中文字幕 日本伊人| 亚洲情色av网站| 亚洲精品久久第一页| 国产无av码在线观看| 日韩一区二区三区水蜜桃| 97cao瑟瑟在线观看| 中文字幕亚洲专区欧美| 成人黄视频在线播放| 欧美日韩精品成人在线| 久久视频这里都是精品 | 97久久碰人妻一区二区三区四| 国产乱人妻精品久久久| 久久爱免费视频16| 久久久久久久免费女人体| 久久午夜福利电影免费试看 | 制服丝袜亚洲欧美第一| 久久国产经典三级av| 国产精品久久精品一区二区三区| 人妻日韩精品在线观看视频| 俺去鲁婷婷六月色综合| 午夜日韩麻豆福利| 91亚洲国产成人久久精品app| 精品久久中文字幕系列| 欧美精品一区二区三区蜜臀| 久久草免费在线视频| av在线免费观看网站大全| 人人妻人人澡人人爽国产一区| 蜜桃黄色av网站免费播放| 福利小视频国产一区| 99久久久99久久91熟女| 国产人妻另类综合专区| 激情黄色开心五月天| 久久久国产精品尤物av| 日本女优中文字幕在线| 亚洲最大成人网一区二区三区| 18在线观看久久久麻豆| 亚洲欧美在线视频播放| 亚州av一区二区三区.| 亚洲视频另类专区| 久久五月天天婷婷激情综合| 亚洲熟妇免费在线视频| 男人的天堂久久久亚洲| 色噜噜狠狠躁夜夜躁| 香蕉久久久久久久久久久久女| 麻豆亚州av熟女国产一区二| 欧美一区二区三区综合色| 欧美中文字幕在线一区| av青青草原在线观看| 999热这里只有精品在线| av在线免费在线观看av| 国产欧美精品久久无广告| 一级片一级片久久精品电影网电影| 5858s在线视频| av福利网站在线观看| 亚洲人妻中文字幕av首页| 91精品国产综合久久久久久粉嫩| 日韩卡一卡二卡三卡四卡五| www.视频一区二区三区| 美日韩美女三级电影| 久久精品国产91久久麻豆自制 | 日韩在线观看免费全集网站| 亚洲人的午夜影院| 99精品中文字幕在线视频| 欧美一区二区三区激情啪啪啪| 日韩欧美 国产精品| 人人妻人人澡人人看| 精品人妻熟女在线视频| 天天做天天舔天天射| 久久久久久久精品综合| 人妻精品无码一区二区三区| 思思久久国产精品视频| 日韩精品少妇人妻熟女| 国产精品久久久久国产| www.成人国产精品| 熟女大白屁股在线播放| av福利网站在线观看| 久久行黑国产露脸精品| 国产乱子伦视频免费| 高清中文字幕乱码在线| 亚洲天堂黄色免费| 视频一区视频二区三区| 中文字幕人妻互换久久视频| 亚洲av亚洲av亚洲| 亚洲av精品久久久蜜| 日韩精品综合免费视频| 国产精品久久久久久久网站门| 久久爱免费视频16| 久久伊人亚洲综合网| 日韩中文字幕在线网站| 久久国产精品——国产精品| 亚洲国产精品五月天久久久| 日韩少妇视频在线直播| 亚洲一级av大片| 国产精品福利久久久久久久| 国产成AV人片在线观看天堂无码| 亚洲av亚洲av亚洲| 综合激情五月天久久| 五月激情婷婷网络| 日韩欧美颜色渔网| 欧美一区二区三区视频午夜| 亚洲熟妇av日韩熟妇在线| 亚洲天堂黄色免费| 久久久久久久久久性| 亚洲国产精品97久久宅男| 秋霞电影韩国一区二区二区三区| 天天插天天日天天舔| 自拍偷拍亚洲欧美另类| av在线免费观看网站大全| 日韩精品在线播放第三页| 秋霞在线观看色哟哟视频| 久久2020精品免费网站| 中文字幕熟女人妻在线观看| 国产一区二区视频大全床| 天天日天天干天天色| 日韩有码在线免费观看视频| 国产欧美版日韩综合| 日韩欧美亚州综合久久| 日本vs欧美一区二区三区| 亚洲av综合久久伊人| 影音在线精品免费国产资源| 中文字幕一区二区不卡顿| 欧美又色又爽又黄又粗暴| 蜜桃av 1区二区| 天天色天天日天天操| 久久久久久夜夜夜精品国产| 人妻精品一区二区在线播放| 天天日天天干天天爱天天| 久久亚洲精品日韩高清| 久久久久久久久久久最新| 篠田优中文字幕在线播| 五月婷婷激情四射综合网| 亚洲一区二区三区久久aa| 亚洲欧美日韩在线中文字幕小| 亚洲国产精品午夜av| 久草青青草原在线视频| 91偷伦一区二区三区蜜臀| 久久人搡人人玩人妻精品| 亚洲精品,欧美日韩| 蜜臀av日韩特黄大片| 国产99精品久久久久久圆免看片| 天天操天天爽天天舔天天操一操| 亚洲狠狠婷婷综合久久a| 亚洲日本精彩视频在线观看| 五月婷婷激情四射综合网| 日韩手机在线一区二区三区| 国语一区二区在线观看| 日韩精品少妇人妻熟女| 97成人免费碰碰碰视频| 婷婷亚洲免费基地| 天天摸天天舔天天爱| 日韩美女主播人体视频自拍首页| 久久久久国产精品夜夜夜| 天天操,天天干,天天| 日韩午夜激情福利免费| 久草青青草原在线视频| 人妻熟 中文字幕| 亚洲成a人片7777| 日韩av黄片在线观看| 精品日韩色国产在线观看| w疯狂的少妇2做爰韩国| 国产成人免费精品视频大全| 亚洲乳大丰满中文字幕少妇av| 国产精品男人的天堂999| 国产精品综合手机在线| 男人亚洲天堂2018| 成人午夜激情福利片| 中文字幕一区二区三区中文字幕| 亚洲aⅴ欧美综合一区二区三区| 亚洲精品一区二区三区丝袜| 欧美日韩一区二区综合视频| wwxxx中文字幕| 日本女优和黑人的| 国产高潮国产高潮久久久久久91| 人妻少妇精品久久人妻| 欧美 国产 日韩 一区二区| 日韩av午夜精品| 精品久久久久久18免费网站| 精品一区二区三区四区| 日本vs欧美一区二区三区| 厕所偷拍视频一区二区三区| 婷婷在线综合观看视频| 日本av都有哪些系列| 亚洲熟妇av日韩熟妇在线| 亚洲综合色激情五月| 少妇人妻给我内射视频| 久久精品国产av网| 亚洲少妇黄色一级片| 高清一区二区三区日本4| 亚洲av高清不卡| 久久精品国产91久久麻豆自制| 97精品久久人人爽人人爽| 最美人妻一区二区三区| 亚洲天堂性色综合| 男人亚洲天堂2018| 精品日韩偷拍欧美另类| 亚洲制服高清中文字幕| 日韩草比网站在线免费观看 | 人妻精品一区二区在线播放| 18禁成年av网站免费看| 五月爱婷婷六月丁香性| 五月综合缴情婷婷六月| 国产精品久久久久久久久久网站| 欧美肥臀精品一区二区三区| 亚洲国模私拍视频| 欧美人妻a∨中文字幕在线 | 国语黄色淫秽录像带| 97色视频在线看视频| 亚洲最大成人网一区二区三区| 亚洲综合成人久久av| 人妻有码中文字幕中文| 精品97人妻无码中文永久| 蜜臀av 麻豆av| 国产日韩欧美人妻在线观看| 熟女人妻之中文字幕| 久久传奇网站一区三区视频| 日韩亚洲丝袜系列| 国产剧情高清在线观看| 久久久久女优免费视频| 少妇高潮一区二区三区99欧美| 蜜臀久久久久精品一区二区三区| 亚洲另类色区欧美日韩| 国产欧美日韩不卡在线观看| 日本精品久久久久中人妻| 亚洲香蕉av电影| 丰满熟女一区二区三区在线| 99热这里只有精品网| 少妇惨叫久久久久久久| 蜜桃av 1区二区| 久久精品人人看人人爽| 麻豆精品一区在线免费观看| 日韩电影黄色免费| sepapa自拍偷拍| 日本熟妇人妻在线| 日韩日韩av在线| 五月婷婷久久久久久久久| aaaaa亚洲电影| youwu视频在线| 日韩国产精品电影网| 日韩成视频在线播放| 午夜影院av在线| 99久久久99久久91熟女| 亚洲一区二区三二区厕所偷拍| 久久久成人在线免费视频| 日韩一区二区三区水蜜桃| 精品人妻二区中文字幕| 精品国产精品视频免费在线观看| 日本最新中文字幕| 亚洲久久亚女同性| 日韩三级伦理片免费看| 色丁香婷婷综合久久| 97成人免费碰碰碰视频| 国产精品99久久电影| 午夜影院av在线| 亚洲综合色激情五月| 99热精品国产影视久久久影院| 少妇惨叫久久久久久久| 成年人晚上免费看的视频| 999精品插丰满少妇人妻| 亚洲国产一成人久久精品| 91精品一二三区在线观看| 久操免费福利在线视频观看视频| 亚洲激情国产一区| 欧美一级黄片视频看看| 亚洲欧美av在线观看| 亚洲中文字幕成人久久| 最美人妻一区二区三区| 日本熟妇人妻在线| 久久综合中文字幕一区二区三区| 国产剧情高清在线观看| 青草青草视频免费2在线观看| 色婷婷中文字幕基地| 久久久久精美免费观看视频 | 中文字幕精品久久伊人| 久久久久中文字幕免费久久久久久| 一区二区三区四区中文字幕| 18禁成年av网站免费看| 91国产视频网站在线观看| 五月婷婷51视频免费| 人妻中出视频一区二区| 久久亚洲熟妇中文字幕| 久久视频这里都是精品| 免费看久久久久久久性大片| 日韩av一区二区三区久久久| 综合 另类 自拍| 思思久久国产精品视频| 久久视频精彩在线观看| 国产网址手机上可以看的国产网站 | 亚洲激情 欧美激情| 国产一区二区不卡91| 99九九99九九热视频| 国产乱子伦视频免费| 中文字幕亚洲欧美国产| 欧美一区二区三区成人久久片| 精品日韩偷拍欧美另类| 免费麻豆国产一区二区三区| japanese 在线中文字幕| 日韩av在线专区| 精品无码久久久久久毛片| 91精品欧美久久久久视频| 色图av亚洲综合| 99精品高清视频一区二区| 欧美一区二区性久久久| 亚洲自拍偷拍 av| 亚洲综合色激情五月| 日韩精品福利性无码专区| 美女免费一二三区视频| 97成人免费碰碰碰视频| 99精品视频69v精品视频| 日韩不卡一级成人免费视频| 影音在线精品免费国产资源| 亚洲 自拍偷拍 欧美| 久久蜜桃视频亚洲精品| 99re在线精品国产欧美久久| 日韩二区不卡视频| 亚洲视频另类专区| 人妻中文字幕一二三区| 国产精品久久久久一区二区| 青草青草视频免费2在线观看| 日本美女大学生一区二区三区| 精品国产麻豆免费成人网| 97人妻中文字幕精品视频| 亚洲欧美日韩一区二区三区不卡| 久久热最新视频在线观看| 国产99不卡免费在线观看| 在线免费av大香蕉| 日韩欧美三级一区二区在线观看 | 视频一区视频二区三区| 国产精品久久久久国产| 青草青草视频免费2在线观看| 欧美一区二区三区激情啪啪啪| 日韩中文字幕在线综合网| 亚洲精品熟女中文字幕| 亚洲少妇黄色一级片| 日本18禁片免费久久| 亚洲综合在线伊人| 黑人粗大精品一区二区| 日韩欧美在线视频第一页| 瑟瑟网站免费观看| 日韩欧美久久免费观看| 五月综合缴情婷婷六月| 久久99国产综合精品无码免费| 欧美一区二区三区视频午夜| 日韩亚洲丝袜系列| 草裙成人精品一区二区三区| 欧美一级黄片视频看看| 国产精品成人av麻豆| 国产精品首页在线播放| 99久久久99久久91熟女| 精品人妻久久久久中文字幕19禁| 91精品人妻一区二区三区四区| 先锋资源站中文字幕| 色婷婷久久久swag精品| 久久99免费成人在线| 久久精品国产亚洲av不卡性色| 五月婷婷激情狠狠| 国产成人无码AA精品一区| 安斋拉拉中文字幕在线| 99国产在线拍91揄自揄视| 国产一级淫片免费看久久| 中文字幕精品久久久人妻| 伊人久久婷婷av| 91大神精品大长腿在线观看 | 综合激情伊人久久| 亚洲.欧美.日韩.| 国产精品一区二区久久精品蜜臀| 91成人国产精品视频| 国语黄色淫秽录像带| 大尺度av一区二区三区| 精品国产一区二区三区无码蜜桃| 精品一区二区三区四区人妻69| 国产精品久久久久久吹吹潮| 精品久久精品久久久久| 新版天堂av资源在线| 亚洲成人av久久久久| 亚洲av色图com| 91成人国产精品视频| 国产又大又猛又黄的视频| 人妻精品无码一区二区三区| 日本女同性恋视频| 日韩精品在线播放第三页| 成年人晚上免费看的视频| 亚洲国产精品午夜av| 久久精品国产久精果冻传媒| 97网视频免费在线观看| 麻豆视传媒官网直接进入免费观看| 精品中文久久久久久| 国产91极品身材白皙| 9久久国产精品一区二区| 韩国女团午夜大尺度福利| 国产精品99久久久高清| 亚洲日韩视频高清在线观看| 伊人久久婷婷色综合98网| 久久精品中文字幕av| 香蕉在线蕉久在线| 亚洲中文字幕成人久久| 五月综合婷婷婷婷婷婷| 欧美3d成人动漫在线| 在线中文字幕第二页| 亚洲国产精品综合久久2007| 欧美 国产 日韩 一区二区| av传媒高清影院免费| 91影视一区二区三区| 日韩日韩av在线| 欧美日韩精品在线观看免费 | 欧美熟女vides| 1024 国产高清の最新合集| 日本熟妇乱子伦a片在线观看| 欧美不卡高清一区二区三区| 日本亚洲天堂久久| 日韩欧美 国产精品| 成人国产一区二区免费| 国产成人一区二区三区在线视频| 日韩av中文网址| 国产欧美日韩制服丝袜在线| 久久久精品国产亚洲av网深田| av国偷自产自拍自在线| 国产欧美精品久久无广告| 亚洲精品久久久久久久久蜜桃| 日韩高清av一区| 国产精品久久久久久久网站门| w疯狂的少妇2做爰韩国| 中文字幕熟女人妻在线网页| 亚洲天堂av电影免费在线| 人妻精品无码一区二区三区| 欧美3d成人动漫在线| 久久久久久久久久久免费网| 91偷伦一区二区三区蜜臀| 欧美一区二区三区激情啪啪啪| 欧美爱情动作片在线一区| 成人av激情网一区二区三区| 日韩二区不卡视频| 日韩精品刺激视频| 人妻精品无码一区二区三区| 国产精品久久久久国产| 91国产手机视频在线观看| 日本女同性恋视频| 久久久久久少妇被弄高潮| 又爽又黄的免费视频91| 日韩精品久久久久久久软件| 91久久亚洲成人精品| 一区二区三区精品乱子伦……| 无码人妻精品一区二区三区久久| 欧美人妻激情中文视频| 日本午夜在线免费观看| 另类h小视频在线观看| 欧美熟女vides| 久久综合中文字幕一区二区三区| 成人精品1024欧美日韩| 日韩一区二区三区乱码| 久久婷婷亚洲中文一区二区| 欧美日本一道本一区二区| 亚洲国产精品午夜av| 久久久96精品久久久| 中文字幕+人妻熟女| 天天做天天舔天天射| 婷婷在线综合观看视频| 久久 99 精品视频| 999热这里只有精品在线| 久久久久久少妇被弄高潮| 亚洲五月婷婷视频| 亚洲五月婷婷激情图片| 欧美中文字幕久久久| 欧美一区二区三区综合色| 日韩不卡一级成人免费视频| 久久亚洲精品无码系列客服| 四十路av熟女俱乐部| 日韩a大片在线观看| 久久免费视频精彩视频| 国产91在线播放精品| 加勒比精品一区二区三区| 国内精品久久久久久久久久清纯 | 亚洲精品乱码97久久久久久| 日韩av中文字幕一区| 久久成人网男人的天堂| 久久久精品国产亚洲av网深田| 最新偷窥偷拍免费视频观看| 日韩福利视频在线看| 麻豆中文字幕av在线| 大香蕉大香蕉大香蕉大香蕉大| 亚洲:西西一区二区三区四区五区| 国产精品久久久久成人片| 欧美熟女高清视频一区二区| 久久人妻少妇嫩草av蜜桃动态图| 人妻有码中文字幕中文| 人妻中出视频一区二区| 日本熟妇人妻在线| 中文字幕亚洲专区欧美| 五月激情爱爱婷婷| av一级二级三级久久久| 亚洲av不卡码在线看| 亚洲男人五月天堂| 2020中文字幕在线看电影| 91国偷自产一区二区三区偷拍| 日韩欧美三级一区二区在线观看 | 篠田优中文字幕在线播 | 乱丰满的岳伦在线观看| 欧美日韩精品综合在线一区二区| 安斋拉拉中文字幕在线| www.亚洲成人色| 蜜臀av一区二区三区人妻少妇| 18久久久免费视频| 18久久久免费视频| 中文字幕 日本伊人| 欧美一区二区三区aa大片| 日韩av电影com| 亚洲精品图片第十八页| 天天做天天舔天天射| 中文字幕婷婷网站| 91精品一二三区在线观看| 久久精品色婷婷国产网站| 日韩欧美 国产精品| 欧美三级中文字幕久久精品| 色综合精品一区二区三区| 久久久精品99国产国产精| 日韩欧美亚州综合久久| 在线观看日韩美视频一区| 青娱乐国产视频盛| 国产日韩欧美春色另类小说| 少妇人妻给我内射视频| 精品中文久久久久久| 久久视频精彩在线观看| 亚洲最黄色的视频| 五月激情爱爱婷婷| 久久精品香蕉绿巨人| 中文字幕熟女人妻在线网页| 亚洲欧洲黄色图区| 3d动漫一区二区在线观看| 最美人妻一区二区三区| 免费精品国产日韩热久久| 精品久久久久久18免费网站| 人人妻人人澡人人爽国产一区| 91超碰免费在线播放| 91大神精品大长腿在线观看| 日本女优中文字幕在线| 最新美女激情av| 91在线无精精品一区二区| 精品成人1区2区3区在线看片| 99国产在线拍91揄自揄视| 亚洲男人天堂久久| 91人妻人人妻人人爽| 久久蜜臀精品一区二区| 欧美一区二区三区成人免费看| 一本久久久久久久18| 成人黄色午夜污网站在线观看| 久久久亚洲在线视频| 日韩中文字幕在线综合网| 日韩草比网站在线免费观看| 91大神精品大长腿在线观看| 日韩人妻插舔激情午夜| 亚洲天堂黄色免费| 天天干天天天天射天天操| 香蕉久久a v一区二区三区| 在线中文字幕第二页| 91超碰熟女在线97| 国产日韩一区二区三区啪啪啪| av成人教育在线播放| 欧美熟女人妻一区二区三区| 久久蜜桃视频亚洲精品| 亚洲国产精品国自产拍av麻豆| 亚洲不卡一区av| 久久人妻少妇嫩草av蜜桃动态图 | 亚洲最大成人网一区二区三区| 精品成人1区2区3区在线看片| 亚洲综合在线伊人| 之久精品一区二区| 久久久久精美免费观看视频| 久久久久久久久久久久久熟女a∨| 国产99成人自拍视频| 亚洲 欧美 自拍 中文| 国产有码av一区二区| 国产日韩亚洲大尺度高清| 最新亚洲国产中文字幕av| 大香蕉影视日本大香蕉97| 久久久久国产麻豆婷婷| 国产欧美一二三区视频| 999热这里只有精品在线| 狠狠干中文字幕97视频| 五月天色图婷婷亚洲| 91沈先生探花极品在线| 亚洲人妻中文字幕一区二区| 中文字幕精品久久久人妻| 亚洲第一黄色天堂| 日本精品久久久久中人妻| 国产一区二区不卡91| 97精品国产自在在线观看蜜臀| 亚洲熟妇av熟妇在线| av福利网站在线观看| av熟妇翔田千里俱乐部| 亚洲.欧美.日韩.| 中文字幕 日本伊人| 国产中文字幕在线91| 久操免费福利在线视频观看视频| 国产熟女高潮av77777| 精品日韩偷拍欧美另类| 色综合久久久久久久久| 五月婷婷久久久久久久久| 国产精品午夜蜜av| 日韩在线啊啊啊的视频| 一区二区三区精品乱子伦……| 国产精品男人的天堂999| 国产精品一区二区亚瑟不卡| 在线观看日韩美视频一区| 国产免费一级a男人的天堂| 日韩精品福利性无码专区| 人妻一区二区中文字幕在线| 91老司机免费福利| 欧美人妻系列,中文字幕| 日本av男优巧克力| 日本精品久久久久中人妻| 婷婷亚洲天堂中文字幕| 91制片在线观看视频| 久久国产经典三级av| 青青草国产福利视频| 久久久精品国产亚洲av网深田| 久久伊人精品青青草原| 亚洲精品乱码97久久久久久| 欧美va亚洲va精品| 久草青青草原在线视频| 色视频精品视频在线观看| 国产剧情高清在线观看| 日日碰狠狠躁久久躁一区二区| 91熟女视频在线观看| 男人的天堂久久精平| 成人免费观看av毛片| 久久av资源男人站| 色综合久久久久久久久| 2019年中文字幕在线看| 亚洲乱精品中文字字幕| 青青青青青欧美在线视频观看| 日韩中文字幕视频在线播放| 国产剧情高清在线观看| 91porny国产九色| 婷婷亚洲天堂中文字幕| 一区二区三区乱码视频| 人妻丰满精品一区二区三区| 亚洲欧美丝袜精品久久直播| 日韩美女影院免费在线观看| 欧美熟妇精品在线观看| 国产成人精品久久久久久蜜臀| 国产精品久久久久久久网站门| 久久视频这里都是精品| 91免费版下载成人| 国产一级av国产免费| 日韩草比网站在线免费观看 | 天天做天天舔天天射| 91精品久久久久久五月天| 中文字幕 日本伊人| 麻豆精品一区在线免费观看| 日韩精品在线播放第三页| 日韩三级伦理片免费看| 亚洲不卡一区av| 日韩一区二区三区乱码| 激情黄色开心五月天| 91精品乱码久久久久久| 明天我们好好过高清免费| 欧美日韩少妇一二三| 蜜臀av 麻豆av| 人妻丰满精品一区二区三区| 亚洲情色av网站| 久久久九九九九九精品6| 北条麻妃裤袜一区二区| 欧美日韩亚洲大片在线| 久久久久久最新精品| 久久亚麻亚洲蜜桃臀| 亚洲av综合久久伊人| 国产乱人妻精品久久久| 91超碰熟女在线97| 免费精品国产日韩热久久| 日韩毛片亚洲av| 男人的天堂久久久亚洲| 玖玖资源站中文字幕一区二区| 99久久极品蜜桃臀精品久久| 视频一区视频二区三区| 老鸭子在线观看免费播放| 欧美精品国产精品久久久| 久久久久久添逼视频| 天天射天天舔天天射| 一级片一级片久久精品电影网电影 | 91嫩草17c欧美国产| 99久久极品蜜桃臀精品久久| 9久久国产精品一区二区| 91在线精品国自产拍| 久久精品国产91久久麻豆自制| 五月天丁花香婷婷| 热香蕉和冷香蕉功效一样吗| 91超碰免费在线播放| 18久久久免费视频| 国产一区二中文字幕在线免费观看| 99久久久99久久91熟女| 久久蜜桃视频亚洲精品| 日本中文国产字幕| 精品一级国产 av| 欧美一区二区精品人妻免费视频| 日韩一级黄色大片免费观看| 天天摸天天舔天天爱| 人妻精品无码一区二区三区| 日韩成人免费电影三区| 亚洲伊人网在线播放| 麻豆成人在线免费观看视频| 国内精品久久久久久久久久清纯| 亚洲欧洲黄色图区| 蜜桃视频在线观看一区精品| 色婷婷中文字幕基地| 超碰在线免费成人午夜剧场97| 欧美一区二区三区激情无套| 在线观看日韩美视频一区| 精品久久久久久999| 亚洲狠狠婷婷综合久久a| 精品日韩偷拍欧美另类| 欧美3d成人动漫在线| 秋霞电影韩国一区二区二区三区 | 日韩av手机在线电影| 91大神精品大长腿在线观看| 一本色道久久亚洲综合精品蜜桃| 少妇高潮喷水久久久久久桃花| 亚洲香蕉av电影| 日韩成视频在线播放| 一区二区三区乱码视频| 熟女人妻之中文字幕| www.视频一区二区三区| 欧美日韩人妻久久精品| 之久精品一区二区| 精品人妻一区二区三区线国色天香| 欧美日韩综合国产精品| 青草青草视频免费2在线观看 | 国产成人精品视频免费网站| 日本a级2020在线观看| 久久亚洲精品日韩高清| 日韩精品久久久久久久软件| 日韩高清av一区| 大香蕉大香蕉大香蕉大香蕉大| 玖玖玖玖日在线视频| 美女在线观看亚洲一区| 精品国产麻豆免费成人网| 欧美日韩精品成人在线| 国产69tv精品久久| 欧美一区二区三区,| 久久热最新视频在线观看| 99精品视频69v精品视频| 亚洲一区二区三区久久aa| 黄色片一级美女黄色片| av色香蕉一区二区三区| 精品一区二区三区四区| 麻豆免费国产福利免费国产福利| 久久 99 精品视频| 久久热最新视频在线观看| 欧美爱情动作片在线一区| 日韩中文字幕有码人妻在线| 秋霞在线观看色哟哟视频| 久久久久女优免费视频| 中文在线字幕a在线| 中文字幕亚洲中文字幕| 久久久久久久久人妻精品| 欧美一区二区三区综合色| 99久久999久久久精品综合| 国产精品男人的天堂999| 国产精品一区二区亚瑟不卡| 新版天堂av资源在线| 久久婷婷亚洲中文一区二区| 日本av男优巧克力| 91人妻精品久久久久久久久| 一本大道av伊人久久综合| 欧美精品一区二区在线视频| 熟女少妇视频一区二区在线| 97网视频免费在线观看| 欧美日韩综合国产精品| 一本久久久久久久18| 18禁成年av网站免费看| 99久久久免费毛片基地| 免费色婷婷在线视频| 日本18禁片免费久久| 91精品久久久久久久久不卡网站| 久久久久久最新精品| 三级亚洲天堂亚洲天堂| 婷婷在线综合观看视频| 高清一区二区日韩视频精品| www.199麻豆在线视频| 亚洲av激情小说| 日本高清不卡视频在线播放| 91偷拍老熟女露脸合集| 国产成人精品久久久久久蜜臀| 天天摸天天舔天天爱| 91中文字幕制服诱惑| 久久传奇网站一区三区视频| 亚洲女人老师毛茸茸| 日韩av在线观看卡一卡| 日韩av 自拍偷拍| 99热这里只有的精品| 亚洲精品乱码97久久久久久| 日本二次元少女裸| 国产精品一区二区久久精品蜜臀| 丰满熟女一区二区三区在线| 清纯唯美激情亚洲综合另类| 少妇一区二区在线免费观看| 亚洲综合精品久久| 大尺度av一区二区三区| 日韩中文字幕在线网站| 91精品久久久久久久久不卡网站| 日本高清理论片中文字幕| 成人精品一区一区二区看片| 人人妻人人澡人人爽dv| 久久久久久久久久久免费网| 日日碰狠狠躁久久躁一区二区| 欧美一区二区三区视频午夜| 亚洲精品熟女中文字幕| 亚洲综合成人久久av| 日日夜夜夜视频伊人久久 | 日韩精品福利性无码专区| 一区,二区,三区视频| 十八禁久久久久久久久久久久久久| 人妻日韩精品在线观看视频| 精品一级国产 av| 日韩a v日日夜夜| 国产麻豆一级美女精品| 国产一级淫片免费看久久| 97色视频在线看视频| 国产91熟女免费视频| 99re6热在线视频免费观看| 午夜精品久久久久久久久二区三区 | 少妇激情视频一区二区| 中文字幕av最新在线| 国内精品久久久久久久久久清纯 | 日韩成人av在线电影观看| 91成人国产精品视频| 亚洲欧美在线制服丝袜| 色yeye香蕉凹凸人妻三区| 日本女优中文字幕在线| 欧美日韩精品欧美日韩| 亚洲熟妇在线观看一区二区| 蜜臀av久久久久av蜜臀| 婷婷午夜美女诱惑福利电影网| 久久传奇网站一区三区视频| 国产亚洲精久久久久久无码色戒| 激情亚洲一区蜜桃在线| 91在线精品一区二区网站| 91沈先生探花极品在线| 亚洲成年人黄色片| 91嫩草17c欧美国产| 亚洲最大成人网一区二区三区| 嫩草一区二区三区四区中文 | w疯狂的少妇2做爰韩国| 色哟哟视频在线观看国产| 91国偷自产一区二区三区老熟女| 少妇高潮一区二区三区99欧美| 99.com精品视频| 99久久精品国产777| 1024 国产高清の最新合集| 激情亚洲一区蜜桃在线| 麻豆精品一区在线免费观看| 色图av亚洲综合| 成年女人晚上碰免费视频| 国产精品久久久久久久久粉嫩av| 久久精品一区二区三区人妻蜜桃| 亚洲伊人网在线观看| 丰满少妇精品一区二区| 亚洲激情视频在线视频| 久久久97精品国产| 久久爱免费视频16| 精品一区二区三区四区人妻69| 色噜噜狠狠躁夜夜躁| 亚洲精品熟女中文字幕| 久久爱免费视频16| 久久精品国产亚洲av久丨| 精品国产久久久久99| 人人妻人人爱碰千| 久久国产精品人妻酒店| 亚洲欧美日韩一区17c| 麻豆在线视频看片免费| 久久精品国产亚洲av不卡性色| 天天摸天天舔天天爱| 加勒比精品一区二区三区| 欧美精品一区二区在线视频| 欧美区 日韩区 国产区| 超碰在线免费成人午夜剧场97| 亚洲欧美国产另类91综合| 国产日韩亚洲大尺度高清 | 久久视频在线免费播放| 久久久久在线免费看| 91大神精品大长腿在线观看| japanese 在线中文字幕| a级黄片在线免费观看| 国产精品久久精品一区二区三区| 中文字幕人妻互换久久视频| 五月综合婷婷婷婷婷婷| 婷婷 少妇 av| 黑人操日本女人电影| 久久久免费精品少妇| 亚洲欧美日产人妻| 日本最新中文字幕| 欧美日韩成人三级在线| 国产黄色主播网址大全在线播放| 自拍偷拍亚洲欧美另类| 秋霞在线观看色哟哟视频| sepapa自拍偷拍| 亚洲精品久久久久久久久蜜桃| 国产欧美日韩亚洲另类第一第二页| 久久久久久久久久久免费网| 日韩在线中文字幕不卡| 制服巨乳人妻在线| 日韩国产91综合精品| 国产乱子伦视频免费| 91在线国产九色porny| 精品999久久久一免费ww| 亚洲天堂av电影| 人妻夜夜爽天天爽麻豆| 国产麻豆一级美女精品| av色香蕉一区二区三区| 亚洲成人日韩丶av| 国产精品一区二区三区三级 | 88av亚洲精品日韩一区二区| 91久久国产综合久久91在线| 之久精品一区二区| 天天色天天日天天操| 日本熟妇人妻在线| av青青草原在线观看| 亚洲成年人黄色片| 亚洲欧洲偷拍自拍| 亚洲天堂av电影免费在线| 视频一区视频二区三区| 日韩美女在线视频一区| 福利小视频国产一区| 狠狠干中文字幕97视频| 国产精品综合手机在线| 最新精品成人在线| 国产亚洲av免费一区二区| 中文字幕一区二区不卡顿| 国产探花在线播放精品| 欧美 国产 日韩 一区二区| 91影视一区二区三区| 亚洲国产精品五月天久久久| 国产欧美日韩制服丝袜在线| 丝袜日韩中文字幕| 久久成人网男人的天堂| 婷婷激情免费视频| 91国产手机视频在线观看| 清纯唯美激情五月| 久久人妻久久人妻一区| 国产日韩亚洲大尺度高清| 久久99永久免费看| 三级亚洲天堂亚洲天堂| 十八禁久久久久久久久久久久久久| 丰满人妻一区二区三区av| 日韩精品免费91aa| 亚洲av不卡码在线看| 久久久精品国产亚洲av网深田| 国产视频av一区二区| 美女免费一二三区视频| 午夜寻花美女在线| 日韩人妻插舔激情午夜| 欧美3d成人动漫在线| 欧美区 日韩区 国产区| 日韩美女主播人体视频自拍首页 | 久久草免费在线视频| 国产日韩欧美人妻在线观看| 天天射天天舔天天射| 亚洲女人老师毛茸茸| 日韩男女av在线观看| jizzhd国产剧情| 人妻丰满精品一区二区三区| 欧美中文字幕在线观看视频| 国产一区二区三区女同| 97精品国产自在在线观看蜜臀 | 欧美一区二区三区激情无套| 日韩av福利大片在线观看| 欧美日韩在线卡一卡二卡三| 精品乱码一区二区三四五六区| 蜜臀av久久久久av蜜臀 | 激情亚洲一区蜜桃在线| 久久国产精品色av免费看| 亚洲国产精品久久久久婷婷av| 在线免费观看日韩精品视频| 日日夜夜夜视频伊人久久| 亚洲五月婷婷视频| 久久婷婷激情综合色综合俺也去| 少妇人妻视频在线观看| 国产一区无码在线桃花| 国产欧美日韩亚洲另类第一第二页 | 日韩在线中文字幕不卡| 亚洲伊人网在线观看| 99精品高清免费在线视频| 国产一区二区久久久久久| 日韩亚洲图色在线| 国产精品久久久久久久久久网站 | 日韩久久久三级电影| 国产乱子伦视频免费| 黄色片一级美女黄色片| 久久99永久免费看| 欧美三级中文字幕久久精品| 国产乱人妻精品久久久| 色播网站在线播放| 久久免费视频精彩视频| 99久久窝窝午夜影视| 亚洲成a人片,77777| 中文字幕+人妻熟女| 在线观看视频 你懂得| 久久视频精彩在线观看| 成人黄片av在线播放| av一级二级三级久久久| 韩国女团午夜大尺度福利| 精品欧美乱子伦一区二区三区 | 欧美日韩少妇一二三| 国产麻豆一级美女精品| av在线免费在线观看av| 高清视频在线观看一区二区三区| 97成人免费碰碰碰视频| 91欧美亚洲综合网| 精品久久久久久18免费网站| 国产日韩欧美春色另类小说| 天天日天天干一道一小| 91九色蝌蚪熟妇出轨| 先锋男人资源中文字幕| 欧美日韩国产综合aⅴ| 亚洲日韩视频高清在线观看| 国产av在线观看麻豆| 伊人久久婷婷色综合98网| 成人午夜激情福利片| 亚洲国模在线视频| 日本亚洲天堂久久| 91人妻人人妻人人爽| 国产欧美日韩一区二区三区''| 人妻啪啪视频免费看| 日韩午夜激情福利免费| 国产99精品久久久久久圆免看片| 北条麻妃裤袜一区二区| 久久久亚洲熟妇熟女在线| 蜜久久久91精品人妻| 久久成人网男人的天堂| 日韩视频在线播放一区二区| 思思久久国产精品视频| 亚洲日本精彩视频在线观看| 最新偷窥偷拍免费视频观看 | 久久久久999蜜桃视频| 五月婷婷蜜臀性色av| 色婷婷综合免费在线视频| 国产一区二区三区女同| 日本aaaa视频在线观看| 日本女优中文字幕在线| 91九色porny国产视频| 亚洲综合色激情五月| 亚洲熟妇av日韩熟妇在线| 国产成人精品视频免费网站| 久久99国产综合精品无码免费| 欧美日韩v中文在线| 日本女优和黑人的| 麻豆丝袜美女人妻中文| 欧美日本韩国乱搞视频| 999热这里只有精品在线| 日韩av黄片在线观看| 日韩成人免费电影三区| 欧美日韩精品成人在线| 日本av都有哪些系列| 色哟哟视频在线一区| 午夜精品久久婷婷蜜桃| 亚洲狠狠婷婷综合久久a| 久久亚洲精品无码系列客服| 黑人操日本女人电影| 欧美日韩一区二区综合视频| 激情黄色开心五月天| 少妇人妻成人在线| 色婷婷综合免费在线视频| 激情四射五月开心六月婷婷| 成人黄视频在线播放| 天天色天天日天天操| 国产精品成人av在线网站| 亚洲国产精品午夜av| 日本熟妇乱子伦a片在线观看 | 日本18禁片免费久久| 激情婷婷综合久久五月天| 日韩不卡一级成人免费视频| 欧美日韩国产色图视频| 国产精品综合手机在线| 天天操,天天干,天天| 人妻日韩精品在线观看视频| 久久视频一区二区三| 久久综合久久综合久久色| 日本二次元少女裸| 欧美三级中文字幕久久精品| 日韩精品在线播放第三页| 久久最近最新中文字幕大全| 5858s在线视频| 日韩a v日日夜夜| 999热精品在线观看| 麻豆精品123在线观看| 丰满少妇精品一区二区| 国产精品网址在线观看| 日韩精品综合免费视频| 人妻办公室被强d在线电影| 中文字幕亚洲资源天堂| 208精品福利导航| 麻豆免费国产福利免费国产福利| youwu视频在线| 久久久精品国产亚洲av网深田| 欧美一区二区三区成人免费看 | 欧美一区二区三区综合色| 加勒比精品一区二区三区| 一区二区三区精品乱子伦……| 99久久999久久久精品综合| 四十路av熟女俱乐部| 欧美人妻一区二区三区在线播放| av久久伊人精品中文字幕| 天天操天天爽天天舔天天操一操| av青青草原在线观看| 婷婷基地中文字幕| 日韩不卡高清视频| 久久久亚洲精品久久仙| 1024 国产高清の最新合集| 福利日韩精品中文字幕专区| 中文字幕在线有码二区| 在线观看日韩中文| 久久99精品久久久久久三级| 精品一级国产 av| 久久国产精品色av免费看| 91国偷自产一区二区三区老熟女| 日本少妇人妻xxxx| 欧美精品一区二区在线视频| 成年女人晚上碰免费视频| 日本中文字幕一区二区在线视频| 日韩av一区中文| 天天操天天干天天妻| 亚洲香蕉av电影| 国语一区二区在线观看| 一本久久久久久久18| 四虎网站免费av| 久久精品色婷婷国产网站| 欧美熟女vides| 五月婷久久综合狠狠爱97| 亚洲国产精品久久久久婷婷av| 91啪啪啪内射网站| av一级二级三级久久久| 蜜桃黄色av网站免费播放| 日韩二区不卡视频| 久久97久久免费视频| 欧美熟女vides| 日产av一区二区在线观看| 91人妻人人妻人人爽| 久久精品中文闷骚内射| 天天色天天日天天操| 日本最新中文字幕| 久久精品美国亚洲av伦理| 亚洲女人中文字幕在线| 中文字幕熟女人妻在线网页| 色哟哟视频在线观看国产| 亚洲av不卡码在线看| 福利小视频国产一区| 色综合色综合色综合久久| 婷婷激情免费视频| 色婷婷国产熟妇人妻露脸| 亚洲av微乳在线| 一区二区三区乱码视频| 天天摸天天舔天天爱| 人妻精品无码一区二区三区| 成人黄色国产网站在线观看| 日本熟妇乱子伦a片在线观看|