哪种是强类型语言:Python还是Prolog?

时间:2010-05-07 00:28:42

标签: typing

我是Python和prolog的新手。根据我的理解,Python是一种强类型语言。 Prolog是一种强类型语言吗?

4 个答案:

答案 0 :(得分:8)

与Python一样,如果您尝试添加非整数的东西,Prolog会给您一个类型错误。但这只是Prolog将为您做的限制。说Prolog是否是“强类型”并不是非常有用 - 我已经写了很多关于“强类型”的问题的答案,并且重写了其他人对“强类型”问题的错误答案,我从来不想要再次听到这些话。然而somewhere, someone on the Internet is wrong

以下是有用的信息:

  • Prolog和Python都是动态类型,也就是说在运行时之前不会检查程序是否存在“类型错误”。在这种情况下,典型的“类型错误”是应用于“错误”类型的值的函数/方法(Python)或关系(Prolog)。并且Python将检测您将某些内容应用于错误的 number 参数的情况。

  • 在Python中,有很多术语(表达式)是错误类型的,即由于类型错误而在运行时被拒绝。

  • 在Prolog中,根据定义,几乎每个术语都是类型正确的。例如,用户定义的仿函数可以应用于 任何长度的任何条款列表,而Prolog会高兴地尝试将其解释为格式良好的关系。如果你得到关系的“错误”数量的参数,Prolog不会将其视为类型错误;它只是假设你有两个不同的关系与不同的同名的arities。 (这种行为是否有用可能会受到争议,但这就是Prolog的行为方式。)Prolog对内置关系(如IS)更为严格,如

    X is Y + Z
    

真正有用的是,在Prolog中,动态类型系统拒绝很少的术语 - 比Python的动态类型系统少得多。如果在这个帐户上你选择称Prolog“较弱”而Python“更强”,你可以这样做,因为术语“强”和“弱”没有任何普遍认同的技术含义。但是你最好不要思考,并说,Prolog的动态类型系统接受几乎所有关系和术语以及类型 - 不像Python的。这样你就会传达实际发生的事情。

答案 1 :(得分:5)

Python是强类型的。

即:

"1" + 1

提高TypeError

我相信Prolog并不是强类型的。

答案 2 :(得分:2)

Prolog 强类型语言。

参考:http://scom.hud.ac.uk/scomtlm/book/node187.html

答案 3 :(得分:0)

  

[...] Prolog是一种强类型语言吗?

没有