镜头构成
如果你有一个 f::Lens' a b
和一个 g::Lens' b c
那么 f . g
是通过首先跟随 f
然后 g
获得的 Lens' a c
。值得注意的是:
- 镜头构成为功能(实际上他们只是在功能)
- 如果你想到
Lens
的view
功能,似乎数据流从左到右 - 这可能会让你感觉倒退到你对函数组合的正常直觉。另一方面,如果你认为.
-notation 就像在 OO 语言中发生的那样,它应该感觉很自然。
不仅仅是用 Lens
组成 Lens
,(.)
可以用来组成几乎任何“Lens
-like”类型。由于类型变得越来越难以理解结果并不总是很容易,但你可以使用 lens
图表来计算出来。组合物 x . y
具有该图表中 x
和 y
的类型的最小上限类型。