主要观点:Bluefin 是一种 Haskell 效果系统,具有新的 API 风格,效果通过值级句柄访问,不同类型效果可在同一作用域,异常通过Exception
句柄处理,有效果作用域限制,类型签名遵循特定模式,与其他效果系统有区别,实现风格类似 effectful 等。
关键信息:
- 效果通过值级句柄访问,如
State
句柄用于访问可变状态。 - 可在同一作用域有多种相同类型效果,方便区分。
- 异常通过
Exception
句柄处理,每个异常会被处理且只能在一处处理。 - 类型签名遵循常见模式,约束效果标签。
- 与 effectful 的主要区别在于效果的表示方式。
- 实现风格类似 effectful,
Eff
等是IO
等的包装。
重要细节: - 示例
example1
展示了可变状态效果句柄的使用。 - 示例
example2
有两个可变Int
状态效果在作用域。 - 示例
example3
利用 Bluefin 计算数字和并处理异常。 incrementReadLine
函数使用多种效果句柄。- 运行函数需对应处理效果,如
runState
等。 - 提供使用 tips 如使用
NoMonoLocalBinds
等。 - 创建自定义效果的示例
countPositivesNegatives
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。