【代数语言学巡礼】Lambda-演算在形式语义学的中应用II


现在我们开始讲述λ\lambdaλ-演算的基础知识,包括PC上的λ\lambdaλ-演算和类型论上的λ\lambdaλ-演算;


λ\lambdaλ-演算

λ\lambdaλ-演算最早是由Church(1941)在(The Calculi of Lambda-Conversion. Princeton University)中提出来的,但却是 Montague(1970)才使得它在自然语言的形式语义学研究 发挥重要作用.

我们知道自然语言的语法结构和一阶逻辑结构并非一一对应.通过前面的介绍,我们也 已经知道组合原则是形式语义学的基本要求, 否则根本无法对语义进行形式化的研究.然而,Montague之前的生成语义学家(generative semanticists)以及其它的语义学家们都一直无法 找到合适的方法使得语义学也符合组合原则.因此,尽管形式化方法在自然语言的语法研究 方面取得了很大的进步,在语义学方面却基本是不在场的.这一现象基本持续到Montague(1970).在这篇文章中,Montague在Churuch,Tarski等人工作的基础上,提出了 他自己的类型论的内涵逻辑(Montague’s typed intensional logic),并且把λ\lambdaλ-演算应用到各种 语义组合问题的分析中.可以说,在Montague把λ\lambdaλ-演算引进到自然语言语义学的研究之前, 是不存在现在广为人知的形式语义学这一学科领域.但是,λ\lambdaλ-演算在自然语言问题中的引进, 却带来了语义学研究的革命,并为形式语义学的形成和发展奠定了基础.由此也可知,lambda-演算在形式语义学中有非常重要的地位.

下面将具体介绍λ\lambdaλ-演算中的几个关键概念和步骤,即λ\lambdaλ-抽象(λ\lambdaλ-abstraction)规则、λ\lambdaλ还原(λ\lambdaλ-reduction 或者说λ\lambdaλ-contraction)以及λ\lambdaλ-转换(\lambda-conversion).这又分为PC上简单的λ\lambdaλ-演算和类型论上的λ\lambdaλ-演算.

PC 上的λ\lambdaλ-演算

简单的λ\lambdaλ-抽象规则

从实质上讲,λ\lambdaλ-抽象一个通过λ\lambdaλ-算子从已给定的谓词或者公式中产生新的复杂谓词的过程.通过增加λ\lambdaλ-抽象规则,PC就可以对表示前面提到的各种词组进行处理.当然,这里的有些词组是需要更复杂的λ\lambdaλ-抽象规则(即用到类型论的抽象规则)才可以表示的.简单的λ\lambdaλ抽象具体如下:

R9:如果 φ∈\varphi \inφ∈Form且vvv是一个变元,那么λv[φ]∈\lambda v[\varphi] \inλv[φ]∈Pred-1.
S9:∥λv[φ]∥M,g\|\lambda v[\varphi]\|^{M, g}∥λv[φ]∥M,g 是集合S,DDD中所有使得 ∥φ∥M,g[d/v]=1\|\varphi\|^{M, g[d/v]}=1∥φ∥M,g[d/v]=1成立的d所组成的集合.

这里的λv[φ]\lambda v[\varphi]λv[φ]也可以读成“the property of being an v such that φ\varphiφ”,即指使得φ\varphiφ成立的那些个体所具有的性质.当λ\lambdaλ-算子作用的辖域非常清楚时,也可以省略[ ]而记作λvφ\lambda v \varphiλvφ .在 Chruch(1941)中,则记为λv.φ\lambda v . \varphiλv.φ;

注意这里的λ\lambdaλ-算子是应用在个体上的,而它对变元的约束方式也类似于全称量词和存 在量词.同一个λ\lambdaλ-算子不可以同时约束两个不同的变元,而应该再重新引进新的λ\lambdaλ-算子. 如λxP(x,y)\lambda x {P}(x, y)λxP(x,y)只对xxx进行约束,如想对y{y}y也进行约束,则应该再引入一个λ\lambdaλ-算子,如

λy[λx[P(x,y)]]\lambda y[\lambda x[{P}(x, y)]]λy[λx[P(x,y)]]

:在下面所有的例子中,我们假定有赋值g(y)=Johng({y})=\text{John}g(y)=John和解释I(b)=Bill,I(m)=MaryI({b})=\text{Bill},I({m})=\text{Mary}I(b)=Bill,I(m)=Mary;

i) ∥λx[run⁡(x)]∥M,g=\|\lambda x[\operatorname{run}(x)]\|^{{M}, {g}}=∥λx[run(x)]∥M,g= 由所有有跑这个动作的个体所组成的集合;
ii) ∥λx[like⁡(x,b)]∥M,g=\|\lambda x[\operatorname{like}(x, {b})]\|^{{M}, {g}}=∥λx[like(x,b)]∥M,g= 由所有喜欢∥b∥M,g[dx](\|{b}\|^{{M}, {g}[{d} x]}(∥b∥M,g[dx]( 即 I(b),{I}({b}),I(b), 即Bill ))) 的个体所组成的集合;
iii) ∥λx[like⁡(x,y)]∥M,g=\| \lambda x[ \operatorname{like} (x, y)] \|^{{M}, {g}}=∥λx[like(x,y)]∥M,g= 由所有喜欢 ∥y∥M,g[dx](\|\boldsymbol{y}\|^{{M}, {g}[{d} x]}(∥y∥M,g[dx]( 即 g(y),{g}(\boldsymbol{y}),g(y), 即John ))) 的个体所组成的集合;
iv) ∥λx[\| \lambda x[∥λx[ fish (x)∧like⁡(x,b)]∥M,g=(x) \land \operatorname{like} (x, {b})] \|^{{M}, {g}}=(x)∧like(x,b)]∥M,g= 由所有喜欢Bill的鱼所组成的集合;
v) 表示 walks and talks": λy[(\lambda y[(λy[( walk (y)∧talk⁡(y))](y) \land \operatorname{talk}(y))](y)∧talk(y))];
**vi)**用与表层语法对应的成分表示“Mary walks and talks”:

λy[(walk⁡(y)∧talk⁡(y))](m)\lambda y[(\operatorname{walk}(y) \land \operatorname{talk}(y))]({m})λy[(walk(y)∧talk(y))](m)

vii) 表示CNP(通名的名词短语)“man who likes Mary”,语法结构如下:


结合CNP与REL(关系从句)的规则:λy[CNP′(y)∧REL′(y)]\lambda y[{CNP}^{\prime}(\boldsymbol{y}) \land {REL}^{\prime}(\boldsymbol{y})]λy[CNP′(y)∧REL′(y)],把上面的语法结构组合地翻译成λ\lambdaλ-演算(自下而上):

λ\lambdaλ-还原和λ\lambdaλ-转换

λ\lambdaλ-还原是指用定义域中的项代人受λ\lambdaλ-算子约束的变元并消去λ\lambdaλ-算子的过程,这是与λ\lambdaλ抽象相对应的概念.例如,从 λv[φ](t)\lambda v[\varphi](t)λv[φ](t)得到φ[t/v]\varphi[t / v]φ[t/v]就是一个λ\lambdaλ-还原过程,是把ttt代入φ\varphiφ中每一个自由的vvv,而这些vvv又受到λ\lambdaλ-算子的约束. 有了λ\lambdaλ-还原我们就可以直接定义λ\lambdaλ-转换(λ\lambdaλ-conversion):

λv[φ](t)↔φ[t/v]\lambda v[\varphi](t) \leftrightarrow \varphi[t/v]λv[φ](t)↔φ[t/v]

其中从左到右是一个λ\lambdaλ-还原的过程,而从右到左是一个λ\lambdaλ-抽象的过程.注意,t必须替换φ\varphiφ中的每一个vvv.根据 λ\lambdaλ-转换,我们有:

λy[(walk⁡(y)∧talk⁡(y))](m)↔(walk⁡(m)∧talk⁡(m))\lambda y[(\operatorname{walk}(y) \land \operatorname{talk}(y))](m) \leftrightarrow(\operatorname{walk}(m) \land \operatorname{talk}(m))λy[(walk(y)∧talk(y))](m)↔(walk(m)∧talk(m))

λy[man⁡(y)∧λz[like⁡(z,m)](y)]↔λy[man⁡(y)∧like⁡(y,m)]\lambda y[\operatorname{man}(y) \land \lambda z[\operatorname{like}(z, m)](y)] \leftrightarrow \lambda y[\operatorname{man}(y) \land \operatorname{like}(y, m)]λy[man(y)∧λz[like(z,m)](y)]↔λy[man(y)∧like(y,m)]

另外,这里所给的个体上的λ\lambdaλ-表达都十分简单,对于复杂的λ\lambdaλ-表达,其演算规则是类
似的.例如:

λx[λy[λz[ϕ(x,y,z)]]](a)(b)(c)↔λy[λz[ϕ(a,y,z)]](b)(c)↔λz[ϕ(a,b,z)](c)↔ϕ(a,b,c)\begin{array}{l} \lambda x[\lambda y[\lambda z[\phi(x, y, z)]]]({a})({b})({c}) \\ \leftrightarrow \lambda y[\lambda z[\phi(a, y, z)]](b)(c) \\ \leftrightarrow \lambda z[\phi(a, b, z)](c) \\ \leftrightarrow \phi(a, b, c) \end{array}λx[λy[λz[ϕ(x,y,z)]]](a)(b)(c)↔λy[λz[ϕ(a,y,z)]](b)(c)↔λz[ϕ(a,b,z)](c)↔ϕ(a,b,c)​

需要注意的是,这个式子中的λ\lambdaλ-还原是按从左至右的顺序依次还原的.这也表明“最先经 过λ\lambdaλ-抽象得到的λ\lambdaλ-抽象式在对应的λ\lambdaλ-还原中最后得到还原.其原因是最先得到的λ\lambdaλ-抽象式必定是整个逻辑式中内嵌最深的部分,而λ\lambdaλ-还原总是从最外层的λ\lambdaλ-约束式着手.(参考:蒋严,潘海华,2005,p193)这类似于自动机中一个堆栈(stack)的工作情况,即“先进先出,后入后出”.

在介绍Montague的内涵逻辑(IL)之前,让我们先看一下它与PC的儿个主要不同点:

i) IL有更丰富的类型结构.
ii) 表示函数的表达(function-denoting expressions)在IL中起着非常重要的作用.除基本类型eee和ttt以外的所有类型都是函数类型(functional types),IL中除eee和ttt以外的所有表达都指代函数.函数可以不断地进行复合运算,即函数可以是其它函数的变元和函数值.(Functions may serve as the arguments and as the values of other functions. In particular, all relations are also represented as functions.)
iii) IL包含函数的应用(functional application),或者说函数-变元的应用(function-argument application).这在后面的规则中会有具体的例子.
iv) λ\lambdaλ-表达的使用.λ\lambdaλ-算子可以作为构建表示函数的表达的基本工具.
v) 与PC中的一个世界(一个世界或一个模型之间没有什么区别)不同,IL的模型包含一个可能世界集.可能世界在区分内涵和外延中起着重要作用, 且与内涵的类型密切相关.特别是在解释模态算子和指称的模糊性方面,可能世界有重要作用.
vi) IL还包括某种时间结构,这主要用于解释英语中的时态,如在下面描述的过去时态(PAST).

类型和模型结构

类型:

基本类型:e,t{e},{t}e,t;
函数类型:如果aaa和bbb是类型,那么<a,b><{a},{b}><a,b>是一个类型(即一个从类型aaa到类型b{b}b的函数类型)注意,在文献中,<a,b><{a},{b}><a,b>和a→b{a} \rightarrow {b}a→b是等价的标记.
内涵类型:如果aaa是一个类型,那么<s,a><s,a><s,a>是一个类型(一个从可能世界到类型aaa的表达的函数类型);

模型结构:

IL的模型结构:M=<D,W,≤,I>{M}=<{D}, {W},\leq, {I}>M=<D,W,≤,I>.每个模型必须包含如下四个成分:

  • 一个由个体组成的定义域DDD;
  • 可能世界集WWW;
  • ≤:W\leq: W≤:W上的关系(也可以理解成是一个时间关系);
  • III:对所有常元进行赋值的解释函数

类型aaa的表达(相对于D,W{D},{W}D,W)的可能指示集可以递归地定义如下:

De=D{D}_{e}={D}De​=D;
Dt={0,1}{D}_{t}=\{0,1\}Dt​={0,1};
D<a,b>={f∣f:Da→Db}{D}_{<a, b>}=\{f \mid f: {D}_{a} \rightarrow {D}_{b}\}D<a,b>​={f∣f:Da​→Db​},即所有从Da{D}_{a}Da​到Db{D}_{b}Db​函数fff所组成的集合;
D<,a>={f∣f:W→Da}{D}_{<, a>}=\{f \mid f: {W} \rightarrow {D}_{a}\}D<,a>​={f∣f:W→Da​},即所有从W{W}W到 Da{D}_{a}Da​函数fff所组成的集合;

IL的语义解释也使用赋值函数ggg的集合G:{g:G:\{g:G:{g:任何类型的变元→\rightarrow→相应的定义域值}\}}注意:每一个IL的表达都有一个内涵(intension), 内涵是相对应于M{M}M和ggg而言的;相应的外延(extension)则是相对于M,w{M},wM,w和ggg.

原子表达、符号和解释

IL的原子表达是常元和变元;每一种类型中都有无穷的常元和变元.Montague引进了一种定义所给定类型的常元和变元的术语,即ccc和vvv,并在下方标记类型和指标.但是,在实际中,人们一般使用更易于记忆的术语.在这里的约定是这样的:

IL的常元用非斜体的黑体字,它们的名称通常表达从被翻译的英语表达如:man,like,等.IL中的变元用斜体的黑体字.这同前面在PC中的符号语言的使用习惯是一样的.其中的类型约定标记如下:

类型e:w,x,y,z{w}, {x}, {y}, zw,x,y,z,以及所有带有上标或下标的类型
类型<e,t>:P,Q<{e}, {t}>: {P}, {Q}<e,t>:P,Q;
各种关系类型 <e,<e,t>>:R<{e},<{e},{t}>>: {R}<e,<e,t>>:R;
广义量词类型:T{T}T常元由模型中的解释函数III解释,变元由赋值ggg解释,如规则1.

语法规则和它们的模型论语义解释

IL的语法形式是一个递归定义集,即对所有的类型aaa,"类型a的有意义的表达"的集合MEaME_{a}MEa​是IL的语法形式.语义则是给每一个语法规则一个解释;注意: 这里同PC{PC}PC一样,其对常元和变元的元语言标记用非斜体的符号.下面是具体的七条语法和相应的语义规则:

原子表达的语法和语义规则

语法规则.1:类型aaa的每一个常元和变元是在MEaME_{a}MEa​中的.
语义规则.1:
**(a)**如果α\alphaα是一个常元,那么∥α∥M,w,g=I(α)(w).\|\alpha\|^{{M},w,g}={I}(\alpha)(w).∥α∥M,w,g=I(α)(w).
**(b)**如果α\alphaα是一个变元,那么∥α∥M,w,g=g(α)\|\alpha\|^{{M},w, g}=g(\alpha)∥α∥M,w,g=g(α).

注意:递归的语义规则会在给定的模型、世界和赋值下给出每一个表达的外延.如对∥α∥M,w,g\|\alpha\|^{{M},w,g}∥α∥M,w,g的解释是在MMM,www,和ggg下的,α\alphaα的语义值(外延的);解释函数III给每个常元赋予一个内涵,即一个从可能世界到外延的函数;而把这个表示内涵的函数应用到一个可能世界www上,则得出了相应的外延.

语法规则.2:(逻辑连接词和算子在公式上的应用,这个同PC类似):

如果φ,ψMEt\varphi,\psi {ME}_{t}φ,ψMEt​,且uuu任一类型的变元,那么¬φ,φ&ψ,φ∨ψ,φ→ψ,φ↔ψ\neg \varphi,\varphi \& \psi,\varphi \vee \psi,\varphi \rightarrow \psi,\varphi \leftrightarrow \psi¬φ,φ&ψ,φ∨ψ,φ→ψ,φ↔ψ(也写作φ≡ψ\varphi \equiv \psiφ≡ψ),∃uφ,∀uφ,□φ,PAST⁡φ∈MEt\exists u \varphi, \forall u \varphi, \square \varphi, \operatorname{PAST} \varphi \in {ME}_{t}∃uφ,∀uφ,□φ,PASTφ∈MEt​;

语义规则.2:
a)¬φ,φ&ψ,φ∨ψ,φ→ψ,φ↔ψ\neg \varphi, \varphi \& \psi, \varphi \vee \psi,\varphi \rightarrow \psi,\varphi \leftrightarrow \psi¬φ,φ&ψ,φ∨ψ,φ→ψ,φ↔ψ,∃uφ,∀uφ\exists u \varphi, \forall u \varphi∃uφ,∀uφ同谓词演算一样;
b)∥□φ∥M,w,g=1\|\square \varphi\|^{{M}, w, g}=1∥□φ∥M,w,g=1当且仅当对所有的w′∈Ww^{\prime} \in {W}w′∈W,有∥φ∥M,w′,g=1\|\varphi\|^{{M}, w^{\prime}, g}=1∥φ∥M,w′,g=1;
c)∥\|∥ PAST φ∥M,w,g=1\varphi \|^{{M}, w, g}=1φ∥M,w,g=1当且仅当存在w′≤ww^{\prime} \leq ww′≤w使得∥φ∥M,w′,g=1\|\varphi\|^{{M}, w^{\prime}, g}=1∥φ∥M,w′,g=1;

语法规则.3:(=):如果α,β∈MEa\alpha, \beta \in {ME}_{a}α,β∈MEa​,那么α=β∈MEt\alpha=\beta \in {ME}_{t}α=β∈MEt​;

语义规则.3:∥α=β∥M,w,g=1\|\alpha=\beta\|^{{M}, w, g}=1∥α=β∥M,w,g=1当且仅当∥α∥M,w,g=∥β∥M,w,g\|\alpha\|^{{M}, w, g}=\|\beta\|^{{M}, w, g}∥α∥M,w,g=∥β∥M,w,g;

下面这两对规则即4和5是针对"up"和"down"算子的,它们对于内涵的理解是非常关键的,简单说明一下;因为这里不打算深入讨论内涵和外延的区分;

从内涵得到外延的规则

语法规则.4(“uр”-operator):如果α∈MEa\alpha \in {ME}_{a}α∈MEa​,那么[∧α]∈ME<s,a>[{}^{\wedge}\alpha] \in {ME}_{<s, a>}[∧α]∈ME<s,a>​;
语义规则.4:KaTeX parse error: Expected '}', got 'EOF' at end of input: …pha]\|^{{M,w,g}是类型<s,a><s, a><s,a>的一个函数hhh使得任何w′∈Ww^{\prime} \in {W}w′∈W,有h(w′)=∥α∥M,w′,gh(w^{\prime})=\|\alpha\|^{{M}, w^{\prime}, g}h(w′)=∥α∥M,w′,g;

从外延得到内涵的规则

语法规则.5(“down”-operator):如果α∈ME⟨s,a>\alpha \in {ME}_{\langle s,a>}α∈ME⟨s,a>​,那么[∨α]∈MEa\left[{ }^{\vee} \alpha\right] \in {ME}_{a}[∨α]∈MEa​;
语义规则.5:∥[∨α]∥M,w,g\|[{ }^{\vee} \alpha]\|^{{M},w,g}∥[∨α]∥M,w,g是∥α∥M,w,g(w)\|\alpha\|^{{M},w,g}(w)∥α∥M,w,g(w);

函数变元应用规则(Function-argument application)

语法规则.6:如果α∈ME<a,b>\alpha \in {ME}_{<a, b>}α∈ME<a,b>​且β∈MEa\beta \in {ME}_{a}β∈MEa​,那么α(β)∈MEb\alpha(\beta) \in {ME}_{b}α(β)∈MEb​;
语义规则.6:∥α(β)∥M,w,g=∥α∥M,w,g(∥β∥M,w,g)\|\alpha(\beta)\|^{{M}, w, g}=\|\alpha\|^{{M}, w, g}(\|\beta\|^{{M}, w, g})∥α(β)∥M,w,g=∥α∥M,w,g(∥β∥M,w,g);

Lambda-抽象规则(Lambda-abstraction)

语法规则.7: 如果 α∈MEa\alpha \in {ME}_{a}α∈MEa​且uuu是类型bbb的一个自由变元,那么λu[α]∈ME<b,a>\lambda u[\alpha] \in {ME}_{<b, a>}λu[α]∈ME<b,a>​;
语义规则.7:∥λu[α]∥M,w,g\|\lambda u[\alpha]\|^{{M}, w, g}∥λu[α]∥M,w,g是类型b→ab \rightarrow ab→a的一个函数fff使得类型bbb的任一对象ddd,有f(d)=∥α∥M,w,g[d/u]f({~d})=\|\alpha\|^{{M}, w, g[{~d} / u]}f( d)=∥α∥M,w,g[ d/u];

简单的λ\lambdaλ-抽象规则是应用在个体上的.相比较而言,这里的λ\lambdaλ-抽象规则是应用在类型上的,而且可以是任意复杂度的类型,这大大地增强了用λ\lambdaλ-算子构造复杂的谓词的能力.事实上,我们可以看出,λ\lambdaλ-表达式在某种程度上就是一个函数,如λv[α]\lambda v[\alpha]λv[α]就是一个函数,其变元是v,{v},v,而其函数值就是通过v{v}v的值而具体化的α\alphaα表达式;

例如:λx[x2+1]\lambda x\left[x^{2}+1\right]λx[x2+1]表示函数x→x2+1x \rightarrow x^{2}+1x→x2+1;

例如:函数变元应用(Function-argument application):λx[x2+1](5)=26\lambda x\left[x^{2}+1\right](5)=26λx[x2+1](5)=26;

与其它函数符号不同的是,λ\lambdaλ-表达式给出了函数的具体名称,而不仅是某个符号,如f,gf, gf,g;就λ\lambdaλ-转换而言,其规则同简单λ\lambdaλ-演算中的规则是一样的;


参考文献

[1] Chierchia, Gennaro, and McConnell-Ginet, Sally.2000. Meaning and Grammar: An Introduction to Semantics. Cambridge: MIT Press.
[2] Lambda-演算在形式语义学的中应用I.傅庆芳.
[3] Partee, Barbara H. 2007.2007 .2007. Formal Semantics and Current Problems of Semantics.

【代数语言学巡礼】Lambda-演算在形式语义学的中应用II相关推荐

  1. 【逻辑与计算理论】Lambda 演算的类型与其 Lambda 演算建模

    Lambda演算的类型 我们已经掌握了直觉逻辑(Intuitionistic Logic,IL), -------------------------------------------------- ...

  2. Lambda演算学习笔记

    前言 blog好久没有更新了,上次更新还是4月28号.这段时间实在是很忙,4月的最后一周为了赶一篇论文,累死累活,最后在tom的帮助下总算在4月30号截稿之前完成了.4月29号的晚上一直改到了第二天凌 ...

  3. 【逻辑与计算理论】Lambda 演算——开篇

    原文来自Good Math/Bad Math的系列连载,全文分7章,本篇是第1章.中文博客负暄琐话对这个系列的前6章做过翻译,强迫症表示忍受不了「下面没有了」,于是自己动手做了全套.这里只对原文做了翻 ...

  4. “后序遍历二叉运算树进行Lambda演算的化简”带来的联系

    今天闲来无事,想到一个自以为绝妙的想法,那就是用后序遍历二叉树Lambda演算的化简. 数据结构与算法中,我们想写个计算器就必须遇到一个问题,表达式求值!其实表达式很多就是我们所谓的现实生活中的问题解 ...

  5. 图灵机的逻辑等价形式——lambda演算简介

    译者述 才疏学浅,非数学专业,翻译尽量尊重原文,如有纰漏,海涵. 论文摘要 这篇论文是一篇简短易懂的lambda演算介绍.λ-calculus(lambda演算)是Alonzo Church开创,最初 ...

  6. ES6函数与Lambda演算

    缘起 造了一个轮子,根据GitHub项目地址,生成项目目录树,直观的展现项目结构,以便于介绍项目.欢迎Star. repository-tree 技术栈: ES6 Vue.js Webpack Vue ...

  7. λ演算(lambda演算)原理通俗易懂的详细总结

    λ演算 中午我做了一个梦,梦里我写了一篇叫做"λ演算"的文章,我怕忘了所以一边做梦一边写了下来.所以下面的内容全部都是胡扯,一个字都别信. 总有文章会选择在开篇说一段废话 λ演算本 ...

  8. lambda演算解释器java,λ演算(Lambda Calculus)入门基础(二):丘奇编码(Church Encoding)...

    上一篇我们已经建好了lambda演算大厦的地基,接下来需要了解的就是如何在此基础上构造用于计算的一些通用工具了,比如自然数.布尔值.基本运算和布尔运算等等. 丘奇数(Church Numerals) ...

  9. 使用NetBeans Lambda支持在Java 8中使用Lambda表达式对列表进行排序

    作为JSR 335的一部分, Lambda表达式已从Java 8开始引入Java语言,这是Java语言的一个重大变化. 如果您想了解更多关于Lambda表达式以及JSR 335的信息,可以访问以下资源 ...

最新文章

  1. 上课讲到的设计模式总结
  2. 对计算机上的浏览器的介绍,Edge浏览器的前世今生 史上最全Edge浏览器介绍
  3. webdiyer aspnet pager最近又用这个。还是记录下。
  4. 一个专业搜索公司关于lucene+solar资料
  5. Nginx代理webSocket经常中断的解决方案, 如何保持长连接
  6. QT QTransform与QMatrix 有啥区别?
  7. 第十九节:终于,JavaScript也有了类(class)的概念
  8. Laravel最佳实践--API请求频率限制(Throttle中间件)
  9. python 获取文件夹所有文件列表_python获取文件夹下所有文件及os模块方法
  10. BZOJ 2843 极地旅行社
  11. 该网站可能含有恶意软件,有可能会危害您的电脑 清除办法
  12. Bilateral Filters(双边滤波算法)原理及实现
  13. 深入浅出设计模式,跟着思路快速理解
  14. RTSP视频流直播实现(海康)
  15. AGV机器人RFID传感器CK-G06A与西门子1200PLC应用手册
  16. WIN2016远程桌面服务配置和授权激活
  17. Open vSwitch(OVS)相关问题
  18. CSS菜鸟教程自学2,Text文本
  19. 职场新人如何成为沟通高手
  20. 狐狸逮兔子实验 c++

热门文章

  1. 最新SCI影响因子公布:国产期刊最高破46分!网友:算是把IF玩明白了
  2. java webservice测试_搭建Soap webservice api接口测试案例系统
  3. Maven:A cycle was detected in the build path of project 'xxx'. The cycle consists of projects {xx}
  4. 从产业互联网的角度,解读360智慧商业发布“春雨计划”
  5. 栈的压入、弹出序列和栈所有可能的弹出顺序
  6. ps中扩展画布的时候,不能选择扩展画布部分的颜色解决方法
  7. matplotlib 绘图非洲国家GDP排行前12的国家python
  8. 泽风大过:改过自新;坎为水:坦然面对
  9. 三星高价卖苹果iPhone X OLED屏幕, 苹果或寻新队友
  10. java编程根据订单编号查询订单状态_Java微信订单查询