首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有“`Optional`”的van Laarhoven表示

是否有“`Optional`”的van Laarhoven表示
EN

Stack Overflow用户
提问于 2019-10-27 21:19:38
回答 1查看 853关注 0票数 16

许多类型的光学都有范拉霍温表示。

例如,类型为LensLens s t a b可以表示为:

代码语言:javascript
复制
 Functor f => (a -> f b) -> s -> f t

类似地,可以用类似的方式表示Traversal,将Functor约束替换为Applicative

代码语言:javascript
复制
 Applicative f => (a -> f b) -> s -> f t

几个光学框架,如单片箭头,定义了一种名为Optional的类型。

“一元论”中的光学传家宝 Optional介于LensTraversal之间

据我所知:如果一个Traversal就像一个可能有零到多个目标的Lens,那么Optional就像一个可能有零到一个目标的Lens

在Monocle中,Optional被定义为一对函数:

代码语言:javascript
复制
getOrModify :: s -> Either t a 
set :: (b, s) -> t

Monocle源代码中的注释认为,也有可能将Optional表示为“弱PLens,弱PPrism

是否可以将Optional表示为van函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-27 21:59:32

如果函子/应用程序/Monad层次结构更细粒度,就有一种方法来表示它。特别是:

代码语言:javascript
复制
class Functor f => Pointed f where
    pure :: a -> f a

type Optional s t a b = forall f. Pointed f => (a -> f b) -> s -> f t

请注意,如果该类型在类层次结构中整洁,则可能会在透镜库中命名为Affine

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58583458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档