Pivot-Studio/pivot-lang

proposal: effect

Closed this issue · 0 comments

https://zhuanlan.zhihu.com/p/603496729?utm_source=qq&utm_medium=social&utm_oi=1076125508198244352

灵感来自于该博客,但是该博客原本的方案存在一些问题:

  1. effect隐式的起作用,显式写出来反而不起作用,不符合直觉
  2. 原文中的语法和取字段一样,让人困惑,而且会出现let a = task.future正确,let a = task;let b = a.future的奇怪情况
  3. effect隐式起作用,很可能导致作用域混乱。在同一个作用域中有同一类型的多个effect的时候,该使用哪一个?

针对以上问题进行改进,主要有以下两点:

  1. 函数申明的时候指定effect,调用的时候自动用该effect
  2. 增加特殊关键字来表达不使用effect

对于第1点,还有一种等效的改进方案可能更好:

编码者在项目级别或者文件级别指定特定类型默认的effect,在作用域内所有返回该类型的函数都默认使用该effect

不同的人可能有不同的编码习惯,所以使用effect交给用户自定义显然是更好的