当前位置:  开发笔记 > 小程序 > 正文

如何在镜头中获得功能类型检查

如何解决《如何在镜头中获得功能类型检查》经验,为你挑选了1个好方法。

我一直在读这篇文章以了解镜头.他们最初定义一个类型同义词,如下所示:

type RefF a b = forall f. Functor f => (b -> f b) -> (a -> f a)

Const的定义如下:

newtype Const a b = Const { getConst :: a }

get功能类型检查如何:

get :: RefF a b -> a -> b
get r = getConst . r Const

getConst的类型是这样的:

getConst :: Const a b -> a

r Const我猜的类型是这样的:

r Const = (b -> f b) -> (Const -> f Const)

那么如何既getConstr Const获得的由给a -> b



1> leftaroundab..:

r通过用const仿函数代替得到的类型f; 因为我们需要一个b必须是第一个参数的结果(x实际上只在Const x y类型中找到)

    r :: (b -> Const b b) -> (a -> Const b a)

现在论证很简单:那只是Const构造函数.

    r Const :: a -> Const b a

如果你用后期撰写,getConst :: Const b a -> b最终会得到

    getConst . r Const :: a -> b

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有