2

在代数中,如果我声明 x + y = 3,我使用的变量将保存值 2 和 1 或 1 和 2。我知道编程中的赋值不是一回事,但我想知道。如果我想表示一个量子怪异粒子的值,我希望我的变量同时具有两个值,然后让它分解为一个或另一个。或者我只是在做梦?

可以说类似的话i = 3 or 2;吗?

4

8 回答 8

9

这是为 Perl 6(联结)计划的功能之一,其语法应如下所示my $a = 1|2|3

如果曾经实施,它将直观地工作,就像$a==1同时为真$a==2。此外,例如,$a+1会给你一个值2|3|4

这个特性实际上在 Perl5 中也可以通过Perl6::JunctionQuantum::Superpositions模块使用,但没有语法糖(通过 'functions'allany)。

至少为了比较 ( b < any(1,2,3)) 它也可以在 Microsoft 实验语言中使用,但是它没有在任何地方记录(我只是在查看 Cω 时尝试过它,它确实有效)。

于 2008-11-20T08:07:21.053 回答
7

您不能使用本机类型执行此操作,但没有什么能阻止您创建一个变量对象(假设您使用的是 OO 语言),该对象具有一系列值甚至是概率密度函数而不是实际值。

您还需要定义变量与变量和本机标量之间的所有数学运算符。相等和赋值运算符也是如此。

numpy 数组对向量和矩阵执行类似的操作。

于 2008-11-20T07:46:37.913 回答
2

Damien Conways Quantum::Superpositions 可以做你想做的事,

https://metacpan.org/pod/Quantum::Superpositions

但是,您可能需要您的裂纹管。

于 2008-11-20T08:06:15.300 回答
2

这也是你可以在 Prolog 中做的事情。您定义约束变量的规则,然后让 Prolog 解决它们......

习惯它需要一些时间,但是一旦你知道如何使用它,它对于某些问题来说是很棒的......

于 2008-11-20T08:40:59.143 回答
1

您要问的似乎是如何实现模糊逻辑系统。这些已经存在了一段时间,毫无疑问,您可以很容易地为常用编程语言挑选一个库。

于 2008-11-20T07:55:01.763 回答
0

您可以使用结构并手动处理操作。否则,没有一个变量一次只有 1 个值。

于 2008-11-20T07:46:20.940 回答
0

变量只不过是内存中的地址。这意味着一个变量恰好描述了内存中的一个位置(长度取决于类型)。因此,只要我们没有“量子记忆”(而且我们没有,而且看起来我们在不久的将来不会拥有它),答案就是“” 。如果您想对此行为进行编程和建模,您的方法是使用一个数组(长度等于最大多个值的数量)。随之而来的是增加的运行时间,因此必须对每个值进行计算(例如 x+y,必须使用 2 个不同的值 x1+y1、x2+y2、x1+y2 和 x2+y1 进行计算)。

于 2008-11-20T07:47:15.150 回答
0

在 Perl 中,您可以 . 如果你使用Scalar::Util,你可以让一个 var 取 2 个值。如果在字符串上下文中使用一个,如果在数字上下文中使用另一个。

于 2008-11-20T07:51:52.333 回答