我正在浏览镜头'有关棱镜的文档,我注意到Control.Lens.Review中有一行说明在使用Prism作为智能构造函数时,中缀查看操作符#'常用。'。
这让我有点兴趣,因为_Left的例子,是' Either'的构造函数之一。就我理解的智能构造函数(对参数值添加额外限制)而言,数据类型似乎并不像智能构造函数。所以我用Google搜索了一些作为智能构造函数的棱镜,但我并没有找到任何例子。
是否有人知道这句话的确切含义并可能举例?或者也许告诉我,我对智能构造函数的定义当然不正确。
答案 0 :(得分:2)
Prism
类型的一个视图是近同构。事实上,lens documentation说"It may help to think of this as a Iso that can be partial in one direction."
对于智能构造函数而言,部分方向不是一个很好的类比吗?您可以将任何参数集(与该类型匹配)交给它,但其中一些参数将无法创建值。