Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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:在Getter中使用或使用_Haskell_Haskell Lens_Lenses - Fatal编程技术网

Haskell:在Getter中使用或使用

Haskell:在Getter中使用或使用,haskell,haskell-lens,lenses,Haskell,Haskell Lens,Lenses,在Control.Lens中,我们有可以访问嵌套结构的Getter。Getter有很多用途,但我不清楚它们是如何工作的。因此,如果有人能提供一些简单的例子来说明使用或使用是被使用的,那就太好了 为什么我需要知道它?因为我在Haskell中读到了一些,其中使用了“use”和“use”。特别是它说: inRange <- uses fsCurrentCoinRangeUpperBound (coinIndex <=) inRange正如我在回答你的另一个问题时试图澄清的那样,在你理解这

在Control.Lens中,我们有可以访问嵌套结构的Getter。Getter有很多用途,但我不清楚它们是如何工作的。因此,如果有人能提供一些简单的例子来说明使用或使用是被使用的,那就太好了

为什么我需要知道它?因为我在Haskell中读到了一些,其中使用了“use”和“use”。特别是它说:

inRange <- uses fsCurrentCoinRangeUpperBound (coinIndex <=)

inRange正如我在回答你的另一个问题时试图澄清的那样,在你理解这一点之前,有很多必要的知识

首先,你必须很好地理解镜头。从你的另一个问题来看,你才刚刚开始。这太棒了!他们非常酷,处理这些事情非常棒

然而,在此我要提醒大家,Haskell的危险之一是它的非常强大,并且可以非常表达和简洁,因此似乎很容易跳过内容

例如,如果您没有很好地理解代数数据类型,那么您就可以轻松地阅读代码,并且认为您已经理解了它,而您根本就不理解它。这可能会导致复杂的困惑,你会觉得自己一点也不懂,这可能是真的,但在学习Haskell时,这种感觉不是一种好的感觉

我不想让你有那种感觉

所以我鼓励你学习镜头,但如果你不具备镜头的必要知识,那么我鼓励你先去学习。在某种程度上理解这些东西并不难,但是对于那些不太熟悉简单类型、参数化类型、代数数据类型、类型类、函子类型类以及真正理解它的程序员来说,Lens的编写方式并不琐碎,也不容易理解,您需要了解函子的几个实例

同样,如果您试图理解
使用
使用
,这只有在处理
状态
值时才有意义,那么我建议您在不知道
状态
是什么以及
镜头
是什么的情况下,几乎不可能理解发生了什么

使用
使用
用于获取镜头和状态值,并查看
状态
值中的当前状态。因此,在某种程度上,您还需要理解
所做的
语法在做什么,因此在一定程度上理解
Monad
类型类,以及
状态
/
MonadState
如何从该角度工作

如果跳过这些准备工作中的任何一项,你会感到困惑


我希望这有帮助!我祝你一切顺利。

使用l
询问(视图l)
使用l f
询问(视图l f)
使用l f=f使用l
,如果有帮助的话?谢谢你的回答,我可以看出你建议先学习镜头。我的问题是:有没有关于隐形眼镜的教科书和一些例子?遗憾的是,我所知道的关于隐形眼镜的教科书还没有。我想把它们添加到我的教程的未来一卷中,但正如你所看到的,这一点上它更注重初学者。我的建议是学习镜头,学习页面上的内容,制作一些自己的玩具,并提出尽可能多的关于它们的问题。也要真正研究类型,还有这个系列:非常好。(可能先从这个开始)