24得票3回答
放宽单子计算中的顺序约束

以下是一些值得思考的内容。 当我编写单子代码时,单子会对所执行的操作进行排序。例如,如果我在IO单子中编写:do a <- doSomething b <- doSomethingElse return (a + b) 我知道doSomething会在doSometh...

9得票3回答
两个不同对象的可交换运算符重载+

我有两个类代表一个矩阵: 1. RegularMatrix - O(n^2) 表示 2. SparseMatrix - 一个用链表表示的矩阵(没有零元素)。 假设我有: RegularMatrix a; SparseMatrix b; 我希望能够做到以下几点: a+b; and ...

8得票2回答
自动和确定性地测试函数的结合律、交换律等性质。

是否可能构建一个高阶函数isAssociative,该函数接受另一个具有两个参数的函数,并确定该函数是否是结合性的? 类似的问题也可以用于其他属性,例如交换律。 如果这是不可能的,是否有任何一种语言可以自动化实现?如果有Agda,Coq或Prolog解决方案,我很感兴趣。 我可以设想一种...

22得票4回答
3等于号或案例相等运算符

在Ruby中,Integer === 5返回true。同样地,String === "karthik"也返回true。 然而,5 === Integer却返回false,"karthik" === String也是如此。 为什么这个运算符不是交换律的呢?

21得票2回答
Nullable<T>的'=='的参数顺序

以下两个 C# 函数仅在交换参数的左/右顺序时使用 equals 运算符 == 有所不同。(IsInitialized 的类型为 bool)。使用 C# 7.1 和 .NET 4.7。 static void A(ISupportInitialize x) { if ((x as I...

18得票2回答
我如何确定一个单子是否是可交换的?

Control.Monad.List.ListT 的文档说明:“除非参数单子循环,否则不会产生单子。” 如何确定单子是否具有交换性? 是否有 CommmutativeMonad 类型类? 是否应该有? 特别地,Control.Monad.RWS.Lazy.RWS 是一种可交换的单子吗?

10得票4回答
如何在类型类中指定两个操作可交换?

我开始阅读这篇关于CRDT的论文,它是一种通过确保修改数据的操作可交换来同时共享可修改数据的方法。在我看来,这将成为Haskell中抽象的好选择-提供一个CRDTs类型类,指定可交换的数据类型和操作,然后努力制作库以在并发进程之间实际共享更新。 我无法确定如何在类型类的规范中表达操作必须可交...

12得票2回答
Haskell 运算符的交换律?

有没有一种方法可以说明一个运算符是可交换的,这样我就不必为两个方向都给出相同的定义了吗?例如:data Nat = Zero | Succ Nat (+) :: Nat -&gt; Nat -&gt; Nat Zero + x = x x + Zero = x ... 这里,是否有一种方法可...

18得票2回答
Babel插件运行顺序

TL;DR: 如何指定 Babel 插件运行的顺序?Babel 如何确定插件的顺序?除了查看 Babel 源代码,还有没有规范说明它的工作原理? 我正在开发自己的 Babel 插件。我注意到,当我运行它时,我的插件会在其他 es2015 插件之前运行。例如,有以下代码: const a =...

8得票2回答
Prolog中表达“可交换性”的替代方法是什么?

作为Prolog的初学者,我发现Prolog中的可交换表达式相当不直观。例如,如果我想表达X和Y在同一个家庭中,如下所示: family(X,Y) :- married(X,Y); relative(X,Y); father_son(X,Y). 我应该...