gpt4 book ai didi

haskell - 仅从模块中导出 getter 或 setter

转载 作者:行者123 更新时间:2023-12-04 10:37:30 25 4
gpt4 key购买 nike

有没有办法让我只从带有镜头的模块中导出特定的 getter xor setter?

例如,假设一个数据结构具有始终为 >= 0 的不变量。 ,仅通过增加它进行修改,并且仅使用初始值 0 创建:

module Something
( Counter
-- export only `count` getter
, make
, increment
) where

data Counter = Counter { _count :: Int } deriving (Eq)
makeLenses ''Positive

make :: Counter
make = Counter 0

increment :: Counter -> Counter
increment c = c ^. count %~ (+1)

我怎么能只导出 count setter/getter ?

最佳答案

实际上,镜头并不是“getter 和 setter”,它恰好与这样的一对同构。所以你不能只导出其中一个,而是必须定义一些新的东西并导出它。幸运的是,这非常简单:

data Counter = Counter { _count' :: Int } deriving (Eq)
makeLenses ''Counter

count :: Getter Counter Int
count = count'

关于haskell - 仅从模块中导出 getter 或 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27475212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com