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

Use*_*er1 7 typing

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

Nor*_*sey 8

与Python一样,如果您尝试添加非整数的东西,Prolog会给您一个类型错误.但这只是Prolog将为您做的限制.说Prolog是否是"强类型"并不是非常有用 - 我已经写了很多关于"强类型"的问题的答案,并重写了其他人对"强类型"问题的错误答案,我从来不想要再次听到这些话.然而在某个地方,互联网上有人是错的.

以下是有用的知识:

  • Prolog和Python都是动态类型的,也就是说直到运行时才检查程序的"类型错误".在这种情况下,典型的"类型错误"是应用于"错误"类型的值的函数/方法(Python)或关系(Prolog).并且Python将检测您将某些内容应用于错误数量的参数的情况.

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

  • 在Prolog中,根据定义,几乎每个术语都是类型正确的.例如,用户定义的函子可以被应用到任何的术语的列表中的任何长度和前导将愉快地尝试把它解释为一个结构良好的关系.如果你得到关系的"错误"数量的参数,Prolog不会将其视为类型错误; 它只是假设你有两个不同的关系与不同的同名的arities.(这种行为是否有用是有争议的,但这就是Prolog的行为方式.)Prolog对内置关系(如IS)有点严格,如

    X is Y + Z
    
    Run Code Online (Sandbox Code Playgroud)

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


dla*_*tte 5

Python是强类型的.

即:

"1" + 1
Run Code Online (Sandbox Code Playgroud)

加薪 TypeError

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


YOU*_*YOU 3

Prolog不是强类型语言。

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