我什至不知道如何表达这个问题。A 假设有一个指向非评估表达式的指针。如果它被请求(通过一些强制它的严格函数),那么指针值将被评估的值替换。对?我错了吗?
所以我假设每个指针都有一个标志,说明它是否已被评估。
如果评估是未定义的,比如空列表的头部怎么办?“指针”中存储了什么?
我什至不知道如何表达这个问题。A 假设有一个指向非评估表达式的指针。如果它被请求(通过一些强制它的严格函数),那么指针值将被评估的值替换。对?我错了吗?
所以我假设每个指针都有一个标志,说明它是否已被评估。
如果评估是未定义的,比如空列表的头部怎么办?“指针”中存储了什么?
我假设有一个指向非评估表达式的指针。如果它被请求(通过一些强制它的严格函数),那么指针值将被评估的值替换。对?我错了吗?
这就是它的要点。
所以我假设每个指针都有一个标志,说明它是否已被评估。
每个指针都指向某个结构,您可以在其中找到此类信息。
如果评估是未定义的,比如空列表的头部怎么办?“指针”中存储了什么?
指针指向一个表达式,其求值会引发异常。
详细信息在 GHC wiki 的以下页面中;特别参见“对象类型”:https ://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/rts/storage/heap-objects
数据构造函数、函数闭包、thunk(“未计算的表达式”)是主要的。