Haskell 身份镜头

Haskell Identity Lens

我想知道 Haskell 中是否有身份镜头。一个镜头identity,如果我有一个类型data MyType = MyType { _myField :: Int },那么我可以myType ^. identity . myField .~ 2 lens-1.1.1里好像有,但是lens-4.19.2里找不到了。

lens 式镜头的优点之一是它们真的只是功能。因此,就像您可以在镜头上使用函数组合运算符 . 一样,您也可以将恒等函数 id 用作镜头,并且在“聚焦”的意义上它确实充当恒等镜头在整个数据结构上。

{-# LANGUAGE TemplateHaskell #-}

import Control.Lens

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

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