问题标签 [distributive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 有没有像双向分配这样的东西?我在这里需要什么功能?
我在Either a b
. 然后,我bind
使用 Haskell-speak 中带有签名的函数是b -> (c, d)
,之后我想将其拉到c
外部并在左侧情况下默认它,即我想要(c, Either a d)
。现在这种模式多次出现在我正在编写的一个特定服务中,所以我提出了一种方法来实现它。然而,每当我在不理解正确的理论基础的情况下“编造”这样的方法时,我都会感到困扰。换句话说,我们在这里处理的是什么抽象?
我在一些 F# 代码中遇到了类似的情况,其中我的对和我的任何一个都被颠倒了:(a, b) -> (b -> Either c d) -> Either c (a, d)
. 我问一个朋友这是什么,他让我开始遍历,这让我非常高兴,尽管由于缺少类型类,我不得不在 F# 中进行可怕的单态实现。(我希望我可以F1在 Visual Studio 中重新映射到 Hackage;它是我编写 .NET 代码的主要资源之一)。但问题是遍历是:
这意味着当您从一对开始并想要将其“绑定”到它时它会很好用,但是当您从一个开始并希望以一对结束时它不起作用,因为 pair 不是Applicative。
但是,我更多地考虑了我的第一个案例,那个不是traverse
,并意识到“c
在左案例中默认”可以通过映射左案例来完成,这将问题改变为具有这种形状:Either (c, a) (c, d) -> (c, Either a d)
我认为这是我们在算术中看到的乘法和加法模式:a(b + c) = ab + ac
. 我还记得布尔代数和集合论中存在相同的模式(如果没记错的话A intersect (B union C) = (A intersect B) union (A intersect C)
)。显然这里有一些抽象的代数结构。然而,记忆不起作用,我不记得它叫什么了。在 Wikipedia 上浏览一下很快就解决了这个问题:这些是分配法则。快乐,哦,快乐,Kmett 给了我们分发:
它甚至有一个cotraverse
,因为它是双重的Travsersable
!迷人的!!但是,我注意到没有(,)
实例。哦哦。因为,是的,“默认c
值”在哪里出现?然后我意识到,哦,我可能需要基于双函子的双向分配器之类的东西?也许双重到可比特遍历?从概念上讲:
这似乎就是我所说的分配律的结构。我在 Haskell 中找不到这样的东西,它本身对我来说并不重要,因为我实际上正在编写 C#。但是,对我来说重要的是不要提出虚假的抽象,并且要尽可能多地在我的代码中识别出合法的抽象,无论它们是否表达为我自己的理解。
我目前.InsideOut(<default>)
在我的 C# 代码中有一个函数(扩展方法)(真是个 hack,对!)。我会完全偏离基础来创建一个(是的,可悲的是单态).Bidistribute(...)
函数(扩展方法)来替换它并在调用它之前将左案例的“默认”映射到左案例(或者只是识别“双向分配”字符“由内而外”)?
haskell - 如何仅使用分布式属性编写 Representable 实例?
假设我Distributive
为某些复杂的自定义类型编写了一个实例,Foo
. 是否可以仅使用其实例中可用的属性来编写Foo
's实例?而且,如果不是,那么为什么是的超类?Representable
Distributive
Distributive
Representable
embedded - 如何在大数据的拆分和缓冲块上计算 CRC32?
假设我有一个 1024kb 的数据,它被 1kB 缓冲并从发送器传输到接收器 1024 次。
最后一个缓冲区包含计算的 CRC32 值作为最后 4 个字节。
但是,由于 RAM 的限制,接收器必须逐个缓冲区计算 CRC32 缓冲区。
我想知道如何应用 CRC32 计算的线性分布式加法来匹配总 CRC32 值。
我查看了 CRC 计算及其分配偏好。计算及其线性度实现起来不是很清楚。
那么,是否有一个数学表达式可以在缓冲区上添加计算出的 CRC32,以与总计计算出的 CRC32 结果相匹配?
如:
亲切的问候
typescript - 将分布式条件类型与泛型方法结合使用时的问题
我一直在尝试制作一个通用函数,它接收对象 T 并接收该对象 T 的字符串属性名称。
我以https://www.typescriptlang.org/docs/handbook/advanced-types.html为例(部分:分布式条件类型)
我想出了一个没有泛型的解决方案,但是当我将显式类型更改为泛型类型时,打字稿将无法编译。
这是非通用版本:
这行得通。
现在,当我将 Test 接口更改为通用参数时,它将不再编译。
这是预期的行为吗?或者这是一个打字稿错误?谁能指出我使通用版本工作的方向(没有任何黑客)
更新1:
编译错误: