Haskell 将棱柱体用作智能构造函数

Haskell 将棱柱体用作智能构造函数,haskell,haskell-lens,Haskell,Haskell Lens,我在浏览有关棱镜的“镜头”文档时,注意到Control.lens.Review中有一行,指出在将棱镜用作智能构造器时,通常使用infix Review操作符 这让我有点好奇,因为在左_的例子中,就我所理解的智能构造函数而言,“任意”数据类型的一个构造函数似乎不是一个智能构造函数(对参数值添加了额外的限制)。所以我在谷歌上搜索了一下棱镜作为智能构造器,但我没有找到任何例子 是否有人知道这句话的确切含义,并可以举个例子?当然,也可能告诉我,我对智能构造函数的定义是不正确的。Prism类型的一个视图是

我在浏览有关棱镜的“镜头”文档时,注意到Control.lens.Review中有一行,指出在将棱镜用作智能构造器时,通常使用infix Review操作符

这让我有点好奇,因为在左_的例子中,就我所理解的智能构造函数而言,“任意”数据类型的一个构造函数似乎不是一个智能构造函数(对参数值添加了额外的限制)。所以我在谷歌上搜索了一下棱镜作为智能构造器,但我没有找到任何例子


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

Prism类型的一个视图是近似同构的。事实上,
“将其视为一个可以在一个方向上部分的Iso可能会有所帮助。”


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

我想我遗漏了一些东西。例如,在任意字符串Int类型中,只要您将正确的字符串类型交给_leftprism,它就永远不会失败。我认为,他们总能创造价值。我不知道_Left如何防止无效的参数值,所以我也不知道某些参数值如何无法创建正确的参数值。还是我不应该把注意力集中在左?还是我误解了你对“值”的使用?@Kasper你是对的,
Prism
s中的偏好方向与使用
review
作为可能失败的构造函数不一致。也许最好说它使用了更广泛的智能构造函数定义,只是返回特定类型值的函数的定义。这意味着几乎毫无用处,但这并非前所未闻。