什么是谓词?

作为一个业余爱好者,我缺乏一些基础知识。 在过去的几天里,我一直在阅读一些东西,“谓语”这个词不断重现。 我非常感谢关于这个问题的解释。

一个谓词的定义,可以在这里find各种来源,如:

一个逻辑expression式,其值为TRUE或FALSE,通常用于指示代码中的执行path。

参考: 软件testing。 由马修·海登

这个陈述是真的还是假的。 在编程中,它通常是一个函数,它为某些input返回一个布尔值。

最常见的(我猜)在高阶函数的情况下使用。 例如filter是许多语言中的一个函数,它将谓词列表作为参数,并返回谓词为true的列表中的项目。

javascript中的示例:

 lessThanTen = function(x) { return x < 10; } [1,7,15,22].filter(lessThanTen) --> [1,7] 

函数lessThanTen是这里的谓词,它应用于列表中的每个项目。 当然,布尔expression式可以用作谓词来代替函数,例如filter(true)将返回完整列表, filter(false)空列表。

谓词不仅仅是一个expression式,它的计算结果是真或假,还有更多。 术语“谓词”用来指代一个expression式来决定是否是真或假。 或者换句话说,它会作出断言并基于此来返回真或假。

例如(在C#中):

 /*this is a predicate, as it's sole purpose is to make some assertion about something.*/ bool IsNameBob(string name) { return name == "Bob"; } /*Whereas this is not a predicate, as it's performing an action then evaluating to true if it succeeds. */ bool DoSomethingCool() { try { ImDoingSomethingCool(); } catch { return false; } return true; } 

我明白我在这里所说的纯粹是语义上的差异,但是这就是这个问题的关键所在吗? 语义?

一个基本的评估结果为一个布尔值1 。 它通常是指代表这种types评估的函数或对象。

1:使用宽松的布尔值,不一定是指boolbooleanvariables。

在非编程方面; 一个问题 。 一般来说,一个普遍的问题与地方持有人(如他们 ),可以被要求许多事情。

  • 是红色的吗?
  • 是一只狗吗?
  • 是由他们拥有的吗?

我不知道我是否在正确的背景下讲话,但是C#中有一个Predicate类,它基本上是一个委托,它给定一个项目,确定对象是否符合一组标准。

例如,可以使用以下types为Predicate<int>方法来select大于5的所有整数:

 public bool MyPredicate(int x) { return x > 5; } 

我不确定这是如何转化为更一般的情况,但这是一个开始。 欲了解更多信息, 请点击这里 。

考虑概念的语法意义来推断编程概念可能是有用的。

从维基百科 :

在传统的语法中,谓语是句子的两个主要部分之一(另一个是谓语修饰的主语)。 对于简单的句子“约翰(是黄色的)”,约翰作为主语,而黄色作为谓语,随后以动词为首的主题的描述。

在当前的语言语义学中,谓词是一个可以是事实的expression。 因此,表述“黄色”或“像西兰花”对于那些黄色或类似西兰花的东西分别是真实的。 这个概念与forms逻辑中谓语的概念密切相关,其中forms逻辑包含了比前者更多的expression,比如名词和某些形容词。

从逻辑上来说:

逻辑运算符返回true或false。

来自MathWorld

首先让我们来看看一个普通的字典,看看它是什么说的:

牛津美国词典(1980):

ñ。 作为一个关于语法主题的句子的一部分,“生命短”中的“短”

这是另一个句子:“约翰很高” 谓词“很高”。 正如你可以看到它修改或描述主题,另一个与predicate相似的术语是adjective 。 本质上它是一个修饰符。

IBM的技术词汇表提供了几个定义,但最适合的是这一个:

用作filter一部分的expression式,由数据项,运算符和值组成

这里是一个使用SQL的例子:

 SELECT name FROM tableA WHERE name = "john"; 

这个代码中的谓词是name = "john" 。 它具有IBM定义的所有组件,也符合谓词的常规定义。 主题是name和谓词是name = "john"

也有些相关,有数据库相关的谓词:

http://www.tizag.com/sqlTutorial/sqlpredicates.php

一个返回布尔值的函数。 谓词在function和面向对象程序devise中被用来从数据结构中select值的子集 ,特别是列表和其他集合。 在Haskell和Smalltalk的标准库中你会find很多的例子。