繁体   English   中英

Haskell 身份镜头

[英]Haskell Identity Lens

我想知道 Haskell 中是否有识别镜头。 一个镜头identity ,如果我有一个类型data MyType = MyType { _myField:: Int } ,那么我可以做myType ^. identity. myField.~ 2 myType ^. identity. myField.~ 2 myType ^. identity. myField.~ 2 . lens-1.1.1中似乎有一个,但我在lens-4.19.2中找不到一个。

lens式镜头的优点之一是它们实际上只是功能。 因此,就像您可以使用 function 组合运算符一样. 在镜头上,您还可以将身份 function id作为镜头,它确实充当身份镜头,因为它“专注”于整个数据结构。

{-# LANGUAGE TemplateHaskell #-}

import Control.Lens

data MyType = MyType { _myField :: Int }
makeLenses ''MyType

main :: IO ()
main = print $ MyType 37 ^. id . myField

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM