Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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 与“u 1”样式的元组镜头快捷方式等效的数据类?_Haskell_Haskell Lens_Lenses - Fatal编程技术网

Haskell 与“u 1”样式的元组镜头快捷方式等效的数据类?

Haskell 与“u 1”样式的元组镜头快捷方式等效的数据类?,haskell,haskell-lens,lenses,Haskell,Haskell Lens,Lenses,根据its,Haskell的lens库的\u1为元组提供了一个镜头 对于数据记录,有几个其他功能,例如makelents,根据记录的字段名自动生成镜头 不幸的是,我处理的是没有命名字段的数据类,这意味着makelents对我来说已经过时了。 这让我感到奇怪\u 1似乎非常方便,但正如其文档中所暗示的,似乎不适用于数据类。是否有类似程度的便利性 >:设置-包装镜头 >进口管制.镜头 > (1,2) ^. _1. 1. >数据条=导出显示的条字符串 >条形=条形“abc” >酒吧^_1. :271:

根据its,Haskell的
lens
库的
\u1
为元组提供了一个镜头

对于数据记录,有几个其他功能,例如
makelents
,根据记录的字段名自动生成镜头

不幸的是,我处理的是没有命名字段的数据类,这意味着
makelents
对我来说已经过时了。 这让我感到奇怪<代码>\u 1似乎非常方便,但正如其文档中所暗示的,似乎不适用于数据类。是否有类似程度的便利性

>:设置-包装镜头
>进口管制.镜头
> (1,2) ^. _1.
1.
>数据条=导出显示的条字符串
>条形=条形“abc”
>酒吧^_1.
:271:1:错误:
•约束中的非类型变量参数:Field1 Bar
(使用flexibleContext允许此操作)
•检查推断类型时
这是全部b。字段1栏b=>b
添加
FlexibleContexts
扩展,我将面临另一个错误:

bar^_1.
:6:1:错误:
•没有因使用“it”而产生的(Field1 Bar()())实例
•在“print”的第一个参数中,即“it”
在交互式GHCi命令的stmt中:打印它

Field1
有一个默认的通用实现,因此您可以自己添加一个实例:

{-#派生通用语言}
进口GHC.仿制药(仿制药)
数据条=条字符串派生(显示,通用)
实例字段1条形字符串

通用镜头也提供相同的功能,而不需要样板实例<代码>\u 1称为
position@1
(from)。

makelens
可以实例化
Fieldn
类。奇怪的是它没有。可能会打开错误报告和/或请求。如果您想按位置访问字段,还有一个。@luqui谢谢,听起来很酷!实际上,我还没有在这里尝试过
makelents
,但还没有完全弄明白。这可能是我的错,因为我发现haskell生成的模板语句调试起来有点不透明,但另一个库似乎已经为我完成了!谢谢为我工作--
通用镜头
看起来不错!:)小家伙,在我涉及多个非重叠构造函数的实际用例中,猜测一下,这不再有效。哦,好吧!