pointers - Haskell 运行时如何表示惰性值?
问题描述
我什至不知道如何表达这个问题。A 假设有一个指向非评估表达式的指针。如果它被请求(通过一些强制它的严格函数),那么指针值将被评估的值替换。对?我错了吗?
所以我假设每个指针都有一个标志,说明它是否已被评估。
如果评估是未定义的,比如空列表的头部怎么办?“指针”中存储了什么?
解决方案
我假设有一个指向非评估表达式的指针。如果它被请求(通过一些强制它的严格函数),那么指针值将被评估的值替换。对?我错了吗?
这就是它的要点。
所以我假设每个指针都有一个标志,说明它是否已被评估。
每个指针都指向某个结构,您可以在其中找到此类信息。
如果评估是未定义的,比如空列表的头部怎么办?“指针”中存储了什么?
指针指向一个表达式,其求值会引发异常。
详细信息在 GHC wiki 的以下页面中;特别参见“对象类型”:https ://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/rts/storage/heap-objects
数据构造函数、函数闭包、thunk(“未计算的表达式”)是主要的。
推荐阅读
- javascript - Latex Wysiwig 方程编辑器嵌入网页
- flutter - 验证您的互联网连接 Flutter
- java - 有没有办法从内部方法更改类变量
- python - 在 Django Admin 中的一对多关系中更改“一个”模型的默认功能
- swift - 在 SwiftUI 中重置绑定变量
- heroku - Heroku 中生成的自定义 dns 目标是做什么用的?
- mongodb - 在 MongoDB 中构建搜索查询时嵌入和 dbRef 字段之间的区别
- assembly - 写一个相当于mul/imul的VOP
- python - 我怎样才能提取内容
- imagej - LAB色彩空间中的阈值图像