Haskell:在Getter中使用或使用
在Control.Lens中,我们有可以访问嵌套结构的Getter。Getter有很多用途,但我不清楚它们是如何工作的。因此,如果有人能提供一些简单的例子来说明使用或使用是被使用的,那就太好了 为什么我需要知道它?因为我在Haskell中读到了一些,其中使用了“use”和“use”。特别是它说:Haskell:在Getter中使用或使用,haskell,haskell-lens,lenses,Haskell,Haskell Lens,Lenses,在Control.Lens中,我们有可以访问嵌套结构的Getter。Getter有很多用途,但我不清楚它们是如何工作的。因此,如果有人能提供一些简单的例子来说明使用或使用是被使用的,那就太好了 为什么我需要知道它?因为我在Haskell中读到了一些,其中使用了“use”和“use”。特别是它说: inRange <- uses fsCurrentCoinRangeUpperBound (coinIndex <=) inRange正如我在回答你的另一个问题时试图澄清的那样,在你理解这
inRange <- uses fsCurrentCoinRangeUpperBound (coinIndex <=)
inRange正如我在回答你的另一个问题时试图澄清的那样,在你理解这一点之前,有很多必要的知识
首先,你必须很好地理解镜头。从你的另一个问题来看,你才刚刚开始。这太棒了!他们非常酷,处理这些事情非常棒
然而,在此我要提醒大家,Haskell的危险之一是它的非常强大,并且可以非常表达和简洁,因此似乎很容易跳过内容
例如,如果您没有很好地理解代数数据类型,那么您就可以轻松地阅读代码,并且认为您已经理解了它,而您根本就不理解它。这可能会导致复杂的困惑,你会觉得自己一点也不懂,这可能是真的,但在学习Haskell时,这种感觉不是一种好的感觉
我不想让你有那种感觉
所以我鼓励你学习镜头,但如果你不具备镜头的必要知识,那么我鼓励你先去学习。在某种程度上理解这些东西并不难,但是对于那些不太熟悉简单类型、参数化类型、代数数据类型、类型类、函子类型类以及真正理解它的程序员来说,Lens的编写方式并不琐碎,也不容易理解,您需要了解函子的几个实例
同样,如果您试图理解使用
和使用
,这只有在处理状态
值时才有意义,那么我建议您在不知道状态
是什么以及镜头
是什么的情况下,几乎不可能理解发生了什么
使用
和使用
用于获取镜头和状态值,并查看状态
值中的当前状态。因此,在某种程度上,您还需要理解所做的
语法在做什么,因此在一定程度上理解Monad
类型类,以及状态
/MonadState
如何从该角度工作
如果跳过这些准备工作中的任何一项,你会感到困惑
我希望这有帮助!我祝你一切顺利。使用l
是询问(视图l)
,使用l f
是询问(视图l f)
使用l f=f使用l
,如果有帮助的话?谢谢你的回答,我可以看出你建议先学习镜头。我的问题是:有没有关于隐形眼镜的教科书和一些例子?遗憾的是,我所知道的关于隐形眼镜的教科书还没有。我想把它们添加到我的教程的未来一卷中,但正如你所看到的,这一点上它更注重初学者。我的建议是学习镜头,学习页面上的内容,制作一些自己的玩具,并提出尽可能多的关于它们的问题。也要真正研究类型,还有这个系列:非常好。(可能先从这个开始)