Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何为导入或输出列表的谓词声明pred?_List_Declaration_Predicate_Mercury - Fatal编程技术网

List 如何为导入或输出列表的谓词声明pred?

List 如何为导入或输出列表的谓词声明pred?,list,declaration,predicate,mercury,List,Declaration,Predicate,Mercury,正在寻找为导入或输出列表的谓词声明pred的帮助。我试过:-pred名称(list::in,integer::out)是multi。编译器错误消息表示无法识别列表/0。检查了库模块列表,发现我应该写一些类似于…(列表(T)::in…,但不完全理解该做什么。我尝试过:-pred name(…列表(T),…)是。。。编译器不再报告与pred声明相关的错误。现在还不知道结果是否正确,但更进一步。列表是参数化类型,参数化类型接受一个或多个参数。在列表的情况下,参数表示这是一个列表。您可能有一个数字列表、

正在寻找为导入或输出列表的谓词声明pred的帮助。我试过:-pred名称(list::in,integer::out)是multi。编译器错误消息表示无法识别列表/0。检查了库模块列表,发现我应该写一些类似于…(列表(T)::in…,但不完全理解该做什么。

我尝试过:-pred name(…列表(T),…)是。。。编译器不再报告与pred声明相关的错误。现在还不知道结果是否正确,但更进一步。

列表是参数化类型,参数化类型接受一个或多个参数。在列表的情况下,参数表示这是一个列表。您可能有一个数字列表、一个字符串列表、一个南瓜列表或一个数字列表(任何有效类型)。因此,如果我创建一个函数,例如:

:- func max(list(int)) = int.
此函数获取整数列表并返回整数(列表中的最大值)

那么,列表(T)是什么?以大写字母开头的标记是一个变量,即使在类型中,它也可以代表任何其他类型(通常)。所以“list(T)”是指任何东西的列表,比如数字或字符串的列表。下一个谓词是多态的,根据其类型变量的实际值,它适用于不同的类型

:- pred first(list(T)::in, T::out) is semidet.
任何内容的列表都可以传递,因为列表中的第一项将被返回(如果有)。如果它与字符串列表“list(string)”一起使用,那么T将(在编译期间)替换为“string”

这里是Mercury类型系统的这部分参考。