Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 镜头生成应该像实例一样处理吗_Haskell_Lenses - Fatal编程技术网

Haskell 镜头生成应该像实例一样处理吗

Haskell 镜头生成应该像实例一样处理吗,haskell,lenses,Haskell,Lenses,我在另一个库中定义了一个数据类型。我想用Control.lens库生成的镜头连接到该数据类型 我是否需要在代码中重新键入我的类型,还是认为使用已定义的数据类型是安全的?您不需要新类型。实际上,hackage上有许多包为现有类型(例如,甚至是lens本身)定义了镜头 定义实例的问题在于无法隐藏它们。如果定义了镜头,则可以在导入时将其隐藏,就像任何其他功能一样: 导入模块。镜头隐藏(someGeneratedLens,…) 对于实例,这是不可能的(有关原因,请参阅)。与实例不同,镜头也不要求全局唯

我在另一个库中定义了一个数据类型。我想用Control.lens库生成的镜头连接到该数据类型


我是否需要在代码中重新键入我的类型,还是认为使用已定义的数据类型是安全的?

您不需要新类型。实际上,hackage上有许多包为现有类型(例如,甚至是
lens
本身)定义了镜头

定义实例的问题在于无法隐藏它们。如果定义了镜头,则可以在导入时将其隐藏,就像任何其他功能一样:

导入模块。镜头隐藏(someGeneratedLens,…)

对于实例,这是不可能的(有关原因,请参阅)。与实例不同,镜头也不要求全局唯一

我想说,为已经定义的类型提供镜头(以及其他相关的东西)是安全的。事实上,lens库可以做到这一点(
[]
可能
,等等)。使用实例不安全的唯一原因是实例是全局的,并且必须是唯一的。透镜既不是全局性的,也不要求是唯一符合其类型的透镜。