我想知道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 - Haskell身份镜头,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62530807/