Prolog中的数据类型是什么?

根据维基百科,Prolog is the term. This文本中的单个数据类型还提到“Prolog的单数据taype是术语”,但是继续解释“Prolog中数据类型的分类”(但是我认为只有一种类型…)
现在, these slides提到不同的数据类型:“数字,字符和字符串”.

那么Prolog中的数据类型究竟是什么呢?

我会咬:Prolog有一个单一的数据类型术语.不是很有用的答案,呃

术语被细分

>变量.占位符,不统一到任何具体术语.变量由符合正则表达式[A-Z _] [A-Za-z_0-9] *的符号识别.变量_是特殊的:它是匿名变量.每一次_表示一个不同的变量.例如,鉴于事实,

foo(1,2,3).

一个像foo(_,_,_)的测试.将会成功,而像foo(A,A,A)这样的测试.将失败.

一旦一个变量统一(绑定)一个值,然而,它不再是可变的:除非通过回溯它永远是永远和它统一起来的.
>数字是浮点数或整数.通常的规则适用(例如-321是一个整数,-321.0或者像-3.21e这样的东西02是一个浮点数.
>原子是名字,通常由小写字母(例如原子)开头的单词表示,与常规重新表达[a-z] [A-Za-z0-9 _] *匹配.或者,原子可以由撇号(例如,“原子”)界定,其方便地允许使用不允许的字符.原子的语法比这更复杂:基本上不属于另一个类别的东西将形成一个原子(例如,表示空列表的特殊atom [],表示连接的逗号(,)都是原子.
>其他所有内容本质上是一个结构,即术语的元组,由一个函子(一个与原子的规则相匹配的名称)与一个空格(参数数)标记.人们甚至可以将原子视为非常的结构0.

在prolog的其他“数据类型”之上有句法糖:

>列表由结构./2表示,左侧参数是列表的头部,右侧是其尾部.空列表由atom []表示.例如,

列表[a]内部表示为.(a,[]),
>列表[a,b] as.(a,.(b,[]))和
>列表[a,b | [c]] as.(a,.(b,.(c,[]))).

应该注意的是,可以使用符号来写一个列表:它们将合适地统一.但是,您可以看到使用括号的列表符号的吸引力.>类似的句法糖应用于字符串.一个字符串可以写成一个由双引号分隔的文本字符串:“猫和帽子”.然而,在内部,字符串表示为表示实现内部编码中每个字符的代码点的整数列表.例如,字符串“cat”在内部表示(ASCII / UTF-8)作为列表[99,97,116]. “猫”更容易阅读,呃?

相关文章
相关标签/搜索