gpt4 book ai didi

language-agnostic - 为什么支持基于(看似)任意规则的不同数据类型之间的比较?

转载 作者:行者123 更新时间:2023-12-04 07:49:26 31 4
gpt4 key购买 nike

我的问题是:“语言设计者为什么要考虑允许在不同数据类型之间进行比较?”。另外,这在功能语言中是否更有意义?

例如,在erlang中,可以执行以下比较:

%% Tuples are greater than numbers
999999 < {1,2}.
true

%% Lists are greater than tuples
{90000} < [1].
true

%% Atoms are greater than numbers
1 < false.
true


在python 2.x中,

p = lambda x,y: x+y

p > (1)
True

p < (1)
False

p == (1)
False


尽管看起来python社区认为这毕竟不是一个好主意:


总是不同类型的对象
比较不相等,并被命令
一贯但任意地
[...]
这种不寻常的比较定义
用于简化定义
排序和in和
不在运算符中。
source


从Python 3发行说明中:


排序比较运算符(<,
<=,> =,>)引发TypeError异常
当操作数没有
有意义的自然排序。从而,
像1 <'',0> None或
len <= len不再有效,并且
例如无<无引发TypeError
而不是返回False。一个
必然是对一个
异构列表不再使
意识–所有元素都必须
彼此可比。
source


这种解释可以解释为什么,但是我想知道是否还有其他原因允许这样做,尤其是在函数式语言中。

最佳答案

在动态语言中,它具有一定的意义,因为能够对异构列表进行排序并构建异构树非常好。我想我想说的是,出于明显的原因,它不是功能性语言,而是强类型语言,因此它不是可疑的。

关于language-agnostic - 为什么支持基于(看似)任意规则的不同数据类型之间的比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5360315/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com