主要观点:Bellroy 的技术团队精心挑选用于代码库的库和技术,本文聚焦于effectful
效应系统库和persistent
数据库访问库的实验交互。
关键信息:
effectful
可定义“效应”,如Console
效应,通过makeEffect
生成相关函数,程序员可利用这些函数编写代码并跟踪使用的效应,还可提供多个效应处理程序。- 实验在新项目中进行,
persistent
与effectful
结合有挑战,因其类型类与MonadIO
耦合,而效应系统的价值在于跟踪执行的效应。 - 定义了
Persist
效应,其参数为后端,仅用于持有persistent
操作,还提供了直接提供后端和从资源池获取后端的处理程序。 - 使用
Persist backend
效应很简单,如插入数据。
重要细节: Console
效应的定义及相关函数生成示例。effectful
实验中对Persist
效应的需求及特性。Persist
效应的定义及生成函数的代码。runPersistDirect
和runPersistFromPool
的实现代码。- 使用
Persist backend
效应的示例代码。
结论:此方法在实验中效果较好,能较好捕捉程序员意图、快速设置等,但也有明显不足,如可能混入任意IO
操作、效应本身不透明、易忽略资源池共享等,作为实验技术总体较满意,可随时细化效应定义。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。