Haskell 如何替换';makeIso';新版本(4.3)中的旧镜头版本?

Haskell 如何替换';makeIso';新版本(4.3)中的旧镜头版本?,haskell,haskell-lens,Haskell,Haskell Lens,我有一些代码使用lens包中的makeIso: newtype Foo = Foo Integer makeIso Foo' incrementFoo :: Foo -> Foo incrementFoo = foo +~ 1 现在我想在4.3版的lens软件包中使用这段代码。 此版本缺少makeIso,更改日志显示: 删除了makeIsos,支持makePrisms和makelens。适当时,这些函数中的每一个都将构造Isos 因为从来没有像makeIsos这样的函数,我认为这是一个

我有一些代码使用
lens
包中的
makeIso

newtype Foo = Foo Integer
makeIso Foo'

incrementFoo :: Foo -> Foo
incrementFoo = foo +~ 1
现在我想在4.3版的
lens
软件包中使用这段代码。 此版本缺少
makeIso
,更改日志显示:

删除了
makeIsos
,支持
makePrisms
makelens
。适当时,这些函数中的每一个都将构造Isos

因为从来没有像
makeIsos
这样的函数,我认为这是一个拼写错误,它们的意思是
makeIso
。因此,我试图用
makelents
替换
makeIso
,但这并没有创建一个foo
Iso

替换
makeIso
的正确方法是什么


感谢您的帮助

使用下划线定义访问者:

{-# LANGUAGE TemplateHaskell #-}

import Control.Lens

newtype Foo = Foo { _getFoo :: Integer } deriving Show
$(makeLenses ''Foo)
这将创建一个
getFoo
iso:

getFoo :: (Profunctor p, Functor f) => p Integer (f Integer) -> p Foo (f Foo)

使用下划线定义访问器:

{-# LANGUAGE TemplateHaskell #-}

import Control.Lens

newtype Foo = Foo { _getFoo :: Integer } deriving Show
$(makeLenses ''Foo)
这将创建一个
getFoo
iso:

getFoo :: (Profunctor p, Functor f) => p Integer (f Integer) -> p Foo (f Foo)

大概
makePrisms
将改为
\u Foo
。大概
makePrisms
将改为
\u Foo