首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Prolog是一种非类型化语言吗?Prolog和动态类型化语言有什么区别?

Prolog是一种非类型化语言吗?Prolog和动态类型化语言有什么区别?
EN

Stack Overflow用户
提问于 2011-06-10 10:02:09
回答 2查看 2.5K关注 0票数 10

如果Prolog在字符串、数字、原子、列表和复合结构之间有明确的区别,那么它如何被称为非类型化。它与像Lisp这样的动态类型化语言有什么不同。

Prolog与“动态类型化语言”定义的哪一部分相冲突?李斯特的“非类型化语言”定义的哪一部分与之冲突?

任何洞察力都是值得赞赏的。

更新

我已经知道了动态、静态、强和弱打字之间的区别。我的问题是关于一个特例,那就是Prolog。我只想了解Prolog是如何被认为是非类型化的,尽管它似乎与动态类型化语言并没有明显的区别。

下面是Prolog是非类型化http://en.wikipedia.org/wiki/Prolog#Types的引用

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-10 11:48:52

Prolog大多是非类型化的,因为您可以将任何类型的术语传递给任何谓词,而且通常最糟糕的情况是谓词不会成功。但是,算术谓词(如is=:= )期望使用数值参数,并且可能会失败--因此存在一个类型的概念。

非纯谓词也可能期望类型为“文件句柄”的对象,否则就会爆炸。

因此,将Prolog称为"untyped“并不是严格意义上的。

票数 4
EN

Stack Overflow用户

发布于 2011-06-10 11:30:02

当您编写一个谓词时,如

代码语言:javascript
运行
AI代码解释
复制
head([H|_], H).

您没有在任何地方指定任何类型。您可以调用head([1,2,3], X),也可以调用head("foo", X),甚至可以调用head(1, [1,2,3])。他们都跑得很好。最后一个不会导致任何错误,它只会返回false.。我想这就是“未打字”的意思。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6310330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档