支持effect

搞个易用的effect语法,类似koka;利用effect实现try/catch、async等功能

async 我们未来是肯定会做的,但具体怎么做还在研究。也许会做成一种比较通用的形式而不是写死的 async。

Algebraic effect 的话,比起自定义 effect,我们会更倾向于给几个重要的 effect 提供原生支持。毕竟主要就是 state/exception/async,其中 state 还需要内建支持(ref)才好用。

Type-and-effect system 的话,是个好东西,但短期内可能不会加。因为它和 higher order function 结合之后还是有一些使用上的不便(类型签名会多出大量的 effect polymorphism 的参数,变得 bloated)。不过如果有特别轻量和简单的方案的话那很值得考虑。

2 个赞