icon-language - 基本图标:while 和every 之间的区别?
问题描述
显然,我手头有太多时间,所以我开始阅读有关图标语言的内容(注意:页面似乎有问题)。我肯定错过了关于生成器的一些非常明显的东西。我可以在两个地方看到这一点。
在此示例代码中可以看到为什么 Icon 很酷的典型示例:
while (write(read())
...while
继续调用write
,一直调用read
,直到read
从文件末尾掉出并返回fail
,此时write
失败然后while
退出。非常聪明!但这不起作用:
every (write(read())
我不知道为什么。常见问题解答说“它是消费者”,但没有解释什么是“消费者”。我认为它是“类似于不是真正发电机的发电机”。好的,很好,但为什么它不是生成器?这不正是您想要使用生成器的目的吗?
而同一个问题的另一面是为什么你必须拥有every
。例如,考虑这个生成器的例子:
procedure ItoJ(i, j)
while i <= j do {
suspend i
i +:= 1
}
fail
end
在这种情况下,您必须使用every
:
every i := ItoJ(1,5) do write(x)
但为什么我不能:
while i := ItoJ(1,5) do write(i)
这两个陈述看起来和我很相似。我假设我在这里遗漏了一些关键概念。
解决方案
推荐阅读
- php - Google Drive PHP v3 API 文件元数据
- ubuntu-18.04 - KNIME 可以像 React 项目一样在 DevSpace 中使用吗?
- github - 发布到 Artifact 中的单独文件夹(GitHub 操作)
- json - 如何在没有 alamofire 的情况下从登录中获取 JSON 数据
- django - Django 在同一查询中获得一对多
- c - 每年复利并取出资金
- php - PHP:我想通过 CURL 一起发送 json 和二进制数据
- sp-send-dbmail - sp_send_dbmail - 为 998 KB 文件引发以下错误。文件附件或查询结果大小超过 1000000 字节的允许值
- java - 为什么我的应用程序总是连接到“公共”模式?
- git - 无法使用 jenkin 管道构建 docker 文件