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
我想知道 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