镜头构成

如果你有一个 f::Lens' a b 和一个 g::Lens' b c 那么 f . g 是通过首先跟随 f 然后 g 获得的 Lens' a c。值得注意的是:

  • 镜头构成为功能(实际上他们只是功能)
  • 如果你想到 Lensview 功能,似乎数据流从左到右 - 这可能会让你感觉倒退到你对函数组合的正常直觉。另一方面,如果你认为 .-notation 就像在 OO 语言中发生的那样,它应该感觉很自然。

不仅仅是用 Lens 组成 Lens(.) 可以用来组成几乎任何“Lens-like”类型。由于类型变得越来越难以理解结果并不总是很容易,但你可以使用 lens 图表来计算出来。组合物 x . y 具有该图表中 xy 的类型的最小上限类型。