问题标签 [bifunctor]
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.
scala - 什么是 ZIO 错误通道以及如何了解其中的内容?
ZIO( https://zio.dev/ ) 是一个 scala 框架,其核心是ZIO[R, E, A]数据结构,其站点为三个参数提供以下信息:
齐奥
数据类型具有
ZIO[R, E, A]三个类型参数:
R- 环境类型。效果需要 type 的环境R。如果此类型参数为Any,则表示效果没有要求,因为您可以使用任何值(例如,单位值())运行效果。E- 故障类型。效果可能会因 type 的值而失败E。一些应用程序将使用Throwable. 如果此类型参数为Nothing,则表示效果不会失败,因为没有 Nothing 类型的值。A- 成功类型。效果可能会以 type 的值成功A。如果此类型参数为Unit,则表示效果不会产生有用的信息,如果是Nothing,则表示效果将永远运行(或直到失败)。
很容易得到什么A是:它是函数在名义情况下返回的值,即我们编写函数的原因。
R是一种依赖注入 - 一个有趣的话题,但我们可以忽略它,始终ZIO将其设置为Any(实际上IO[E, A] = ZIO[Any, E, A]在 lib 中有一个别名)。
因此,它仍然E是用于错误的类型(著名的错误通道)。我大概明白这IO[E, A]是一种Either[E, A],但处理效果(这很棒)。
我的问题是:为什么我应该在我的应用程序中到处使用错误通道,我如何决定错误通道中应该包含什么?
haskell - 程序员从范畴论理解双函子 - Ch. 8
在 8.3 节中,Bartosz 定义了这种类型
在这里,如果我对 Haskell有所了解bf,fu, 和gu是类型构造函数,类型为bfkind(* -> *) -> (* -> *) -> * -> * -> *和fuand (就像or一样),而, 和是 kind 的一般类型;左边是一个类型构造函数,写起来很长,而右边是一个值构造函数,所以它是 type 。gu* -> *Maybe[]ab*BiComp =BiComp (bf (fu a) (gu b)) -> BiComp bf fu gu a b
然后作者在and中做BiComp了一个双函子,前提是类型构造函数参数也是 a ,并且类型构造函数and是s:abbfBifunctorfuguFunctor
到目前为止一切顺利,在这一点上对我来说一切似乎都是合理的。除了对类型构造函数和值构造函数使用相同的名称可能会让我迷失方向。
现在我很想提出以下意见:
bimap定义右侧的那个是利用约束的那个:它是bimap假定在Bifunctor任何类型的构造函数的实例中定义的那个bf,因此它bimap有 type(a -> a') -> (b -> b') -> bf a b -> bf a' b';我认为这没有下面的那么有趣,因为它毕竟只是8.1 中呈现bimap的Bifunctor类型的签名;class- 相反,
bimap左边的 是我们在其第 4 和第 5 个参数中定义BiComp的;Bifunctor以及参数f1和f2是必须作用于类型实体的函数,这些实体是 的第 4 个和第 5 个参数BiComp;因此, thisbimap的类型是(a -> a') -> (b -> b') -> BiComp bf fu gu a b -> BiComp bf fu gu a' b'。
它是否正确?
如果是这样,那么我不明白以下内容
因为这是bimap右边的类型,我在上面的要点中写的那个,除了它是用a= fu a,a'=等写fu a'的。
我是否遗漏了什么(或过度思考......)?
dictionary - 为什么 Data.Map.Map 不是双函子?
在 a 中存储数据时Map,我最近在寻找一个Bitraversable实例,因为我想遍历键和值。令我惊讶的是,我发现它Map甚至没有Bifunctor实例,即使first( mapKeys) 和second( map) 的实现都存在。
是否有特定的原因,或者这个决定只是为了最小化依赖关系?
谢谢
haskell - 这个双函子子集有名字吗?
双函子有一个带有这个签名的 map 函数:
你也可以有这样的地图:
具有此函数的类型是双函子的严格子集(您始终可以定义bimapusing othermap,但反之则不行)。第二个签名有名字吗?
追问:这个中间函数呢?