学习语言
异步任务
以异步函数、等待、取消和结构化并候组织确定性的协作任务。
异 法声明异步函数。调用异步函数不会立刻执行函数体,而是得到任务<返回类型>;第一次候会启动任务并取得结果。
异 法 倍增(值:数):数 则
归 值 乘 2;
终
定 甲:任务<数> 为 倍增(21);
言 任务状态(甲); # 待行
言 候 甲; # 42
言 任务状态(甲); # 完成结果或错误会缓存在任务中,因此已完成任务可重复候。取消(任务)只会取消尚处于“待行”的任务,并返回是否确实取消;已取消任务不可再等候。任务状态是待行、运行、完成、失败或取消之一。任务在自身执行期间再次等候自己,会得到明确的“不可自相等候”错误。
结构化并候
并候(任务列)按列中顺序等待任务并返回结果列。任一任务失败时,尚未开始的同组任务会被取消,错误会增加“结构化并候”踪迹。
定 甲 为 倍增(2);
定 乙 为 倍增(3);
言 并候(【甲,乙】); # 【4,6】0.8 的任务是单线程、确定性的协作式模型,而非线程并行模型。共享变量仍遵循普通词法作用域;任务只在候或并候处推进,不会在语句之间抢占执行。这个约束让树解释器、字节码 VM、测试和嵌入宿主拥有相同的可观察顺序。