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

10-13 06:04