使用Prism作为智能构造函数

时间:2014-11-30 10:44:13

标签: haskell lens

我正在浏览镜头'有关棱镜的文档,我注意到Control.Lens.Review中有一行说明在使用Prism作为智能构造函数时,中缀查看操作符#'常用。'。

这让我有点兴趣,因为_Left的例子,是' Either'的构造函数之一。就我理解的智能构造函数(对参数值添加额外限制)而言,数据类型似乎并不像智能构造函数。所以我用Google搜索了一些作为智能构造函数的棱镜,但我并没有找到任何例子。

是否有人知道这句话的确切含义并可能举例?或者也许告诉我,我对智能构造函数的定义当然不正确。

1 个答案:

答案 0 :(得分:2)

Prism类型的一个视图是近同构。事实上,lens documentation"It may help to think of this as a Iso that can be partial in one direction."

对于智能构造函数而言,部分方向不是一个很好的类比吗?您可以将任何参数集(与该类型匹配)交给它,但其中一些参数将无法创建值。