我是Python和prolog的新手。根据我的理解,Python是一种强类型语言。 Prolog是一种强类型语言吗?
答案 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 不强类型语言。
答案 3 :(得分:0)
[...] Prolog是一种强类型语言吗?
没有