主要观点:探讨在 Haskell 中利用lens
库对 Moore 机和布线图进行建模,介绍了Poly
范畴中的态射(poly 映射)、透镜(lenses)、Moore 机、布线图及它们的相关操作,如张量积(tensor product)等,并以 Fibonacci 为例展示了如何通过组合 Moore 机和布线图来构建 Fibonacci 算法。
关键信息:
Poly
中对象定义为可表示函子的和,态射定义为从一个Poly
的Base
到另一个Poly
的Base
以及特定Base
下的纤维映射。- 透镜定义与 poly 映射相似,poly 映射可视为(依赖的)透镜。
- Moore 机形式为
Syˢ ⇒ Oyᴵ
,布线图是从一个Poly
到另一个Poly
的映射。 Poly
具有无限幺半结构,其中张量积_⊗_
在布线图中很有用。- 通过选择合适的 Moore 机并进行张量积和组合,可以构建 Fibonacci 算法。
重要细节: - 在
Poly
中,不同的 poly 映射和透镜的定义及实现方式,如Lens
类型类的定义和相关函数view
、over
、set
等。 - Moore 机的定义及示例,如
latchMachine
、mds
、counter
、plus
、delay
等。 - 张量积在
Moore
中的定义及实现,如tensor
函数。 - Fibonacci 布线图的定义及如何通过选择合适的 Moore 机(
plus
和delay
)来构建 Fibonacci Moore 机并运行得到预期结果。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。