Skip to content

proposal: effect #332

@Chronostasys

Description

@Chronostasys

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交给用户自定义显然是更好的

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions