gre*_*ake 7 haskell haskell-lens
假设我有一个简单的 GADT。
\ndata Expr a where\n Int\' :: Integer -> Expr Int\n Fun :: Text -> Expr a\n (:*) :: Expr (a -> b) -> Expr a -> Expr b\nRun Code Online (Sandbox Code Playgroud)\n现在,我可以定义以下遍历:
\ntransform :: Applicative f => (forall b. Expr b -> f (Expr b)) -> Expr a -> f (Expr a)\ntransform f (a :* b) = (:*) <$> transform f a <*> transform f b\ntransform f v = f v\nRun Code Online (Sandbox Code Playgroud)\n奇怪的是,从镜头上看,这种类型很像Traversal。然而,不完全是,它的排名更高。
我仍然可以定义 \xc2\xabconventional\xc2\ setxbb over。view更复杂,有一些障碍需要避免(命令式类型),但可行。
这个建筑有名字吗?现有镜头库是否以任何方式支持或研究过它?
\n并不是真正的答案,只是额外的相关指针:
transform的情况。traversehtraverse| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |