主要观点:探讨在 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) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。