haskell - 回答这个 Haskell 表达式
问题描述
下面的表达式[y | x <- [1..3], y <- [x..x*2]]
产生答案[1, 2, 2, 3, 4, 3, 4, 5, 6]
。
有人可以解释一下达到这个答案所涉及的步骤吗?
解决方案
它就像一个 foreach 循环一样工作,所以
foreach (x in [1..3]) {
foreach (y in [x .. x * 2]) {
yield y;
}
}
首先 x 是 1,所以 [1 .. 2] 中的 y
那么 x 是 2,所以 y 在 [2 .. 4]
那么 x 是 3,所以 y 在 [3 .. 6]
将这些结果连接在一起,即可得到最终结果。
推荐阅读
- modelica - 将 ClaRaLib 与 OMEdit 一起使用
- ios - 如果我使用 Firebase/Firestore 查询返回值,如何返回 TableView 数据源值?
- javascript - Angular 404(未找到)- 无法从 Angular 应用程序中的“index.html”页面加载 Javascript 文件
- python - Discord webhook 与嵌入
- php - 在模型 yii 1.1 的其他关系上调用关系
- python - 如何将每个 for 循环中的新行添加到数组中以便在 python 中创建矩阵 (m,n)?
- c# - Azure 文件存储在删除本地副本之前上传后验证文件
- c# - 从下拉列表中选择项目,然后获取项目的 ID C#
- windows - 使用 Visual Studio、Chrome 引擎为 Web 应用程序创建安装程序?
- python - 在 pyglet 中使用 opengl 渲染没有事件循环的 3d 场景